diff --git a/typescript/solver/.env.example b/typescript/solver/.env.example index 99e2503c..6c3cd5da 100644 --- a/typescript/solver/.env.example +++ b/typescript/solver/.env.example @@ -1,2 +1,3 @@ PRIVATE_KEY= MNEMONIC= +COMPACT_API_KEY= diff --git a/typescript/solver/index.ts b/typescript/solver/index.ts index 330aaeb6..a59ce830 100644 --- a/typescript/solver/index.ts +++ b/typescript/solver/index.ts @@ -14,16 +14,21 @@ const main = () => { const multiProvider = getMultiProvider(); // TODO: implement a way to choose different listeners and fillers - const ecoListener = solvers["eco"].listener.create(); - const ecoFiller = solvers["eco"].filler.create(multiProvider); + // const ecoListener = solvers["eco"].listener.create(); + // const ecoFiller = solvers["eco"].filler.create(multiProvider); - ecoListener(ecoFiller); + // ecoListener(ecoFiller); - const hyperlane7683Listener = solvers["hyperlane7683"].listener.create(); - const hyperlane7683Filler = - solvers["hyperlane7683"].filler.create(multiProvider); + // const hyperlane7683Listener = solvers["hyperlane7683"].listener.create(); + // const hyperlane7683Filler = + // solvers["hyperlane7683"].filler.create(multiProvider); - hyperlane7683Listener(hyperlane7683Filler); + // hyperlane7683Listener(hyperlane7683Filler); + + const compactListener = solvers["compact"].listener.create(); + const compactFiller = solvers["compact"].filler.create(multiProvider); + + compactListener(compactFiller); }; main(); diff --git a/typescript/solver/solvers/compact/config/allowBlockLists.ts b/typescript/solver/solvers/compact/config/allowBlockLists.ts new file mode 100644 index 00000000..7959392a --- /dev/null +++ b/typescript/solver/solvers/compact/config/allowBlockLists.ts @@ -0,0 +1,32 @@ +import { + AllowBlockLists, + AllowBlockListsSchema, +} from "../../../config/types.js"; + +// Example config +// [ +// { +// senderAddress: "*", +// destinationDomain: ["1"], +// recipientAddress: "*" +// }, +// { +// senderAddress: ["0xca7f632e91B592178D83A70B404f398c0a51581F"], +// destinationDomain: ["42220", "43114"], +// recipientAddress: "*" +// }, +// { +// senderAddress: "*", +// destinationDomain: ["42161", "420"], +// recipientAddress: ["0xca7f632e91B592178D83A70B404f398c0a51581F"] +// } +// ] + +const allowBlockLists: AllowBlockLists = { + allowList: [], + blockList: [], +}; + +AllowBlockListsSchema.parse(allowBlockLists); + +export default allowBlockLists; diff --git a/typescript/solver/solvers/compact/config/index.ts b/typescript/solver/solvers/compact/config/index.ts new file mode 100644 index 00000000..e8b8b0e9 --- /dev/null +++ b/typescript/solver/solvers/compact/config/index.ts @@ -0,0 +1,6 @@ +import allowBlockLists from "./allowBlockLists.js"; +import metadata from "./metadata.js"; + +const COMPACT_API_KEY = process.env.COMPACT_API_KEY; + +export { allowBlockLists, metadata, COMPACT_API_KEY }; diff --git a/typescript/solver/solvers/compact/config/metadata.ts b/typescript/solver/solvers/compact/config/metadata.ts new file mode 100644 index 00000000..f8cb2045 --- /dev/null +++ b/typescript/solver/solvers/compact/config/metadata.ts @@ -0,0 +1,23 @@ +import { type CompactMetadata, CompactMetadataSchema } from "../types.js"; + +const metadata: CompactMetadata = { + protocolName: "The Compact", + arbiters: [ + { + address: "0x088470910056221862d18fF2e65ffaeC96ec6dA4", + chainName: "ethereum" + }, + { + address: "0x57F0638d4fba79DB978c4eE1B73d469ea21014b2", + chainName: "optimism" + }, + { + address: "0x43b60b47764B6460c96349A1B414214BBa7F22c9", + chainName: "base" + } + ] +}; + +CompactMetadataSchema.parse(metadata); + +export default metadata; diff --git a/typescript/solver/solvers/compact/contracts/HyperlaneArbiter.json b/typescript/solver/solvers/compact/contracts/HyperlaneArbiter.json new file mode 100644 index 00000000..37767105 --- /dev/null +++ b/typescript/solver/solvers/compact/contracts/HyperlaneArbiter.json @@ -0,0 +1,299 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "_mailbox", "type": "address" }, + { "internalType": "address", "name": "_theCompact", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_hook", + "type": "address" + } + ], + "name": "HookSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ism", + "type": "address" + } + ], + "name": "IsmSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "PACKAGE_VERSION", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "domains", + "outputs": [{ "internalType": "uint32[]", "name": "", "type": "uint32[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_domain", "type": "uint32" }, + { "internalType": "bytes32", "name": "_router", "type": "bytes32" } + ], + "name": "enrollRemoteRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32[]", "name": "_domains", "type": "uint32[]" }, + { "internalType": "bytes32[]", "name": "_addresses", "type": "bytes32[]" } + ], + "name": "enrollRemoteRouters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "claimChain", "type": "uint32" }, + { + "components": [ + { "internalType": "address", "name": "arbiter", "type": "address" }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct Compact", + "name": "compact", + "type": "tuple" + }, + { + "components": [ + { "internalType": "uint256", "name": "fee", "type": "uint256" }, + { "internalType": "uint32", "name": "chainId", "type": "uint32" }, + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct Intent", + "name": "intent", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { "internalType": "bytes", "name": "sponsorSignature", "type": "bytes" } + ], + "name": "fill", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getCompactWitnessTypestring", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_origin", "type": "uint32" }, + { "internalType": "bytes32", "name": "_sender", "type": "bytes32" }, + { "internalType": "bytes", "name": "_message", "type": "bytes" } + ], + "name": "handle", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "fee", "type": "uint256" }, + { "internalType": "uint32", "name": "chainId", "type": "uint32" }, + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct Intent", + "name": "intent", + "type": "tuple" + } + ], + "name": "hash", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "hook", + "outputs": [ + { + "internalType": "contract IPostDispatchHook", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "interchainSecurityModule", + "outputs": [ + { + "internalType": "contract IInterchainSecurityModule", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "localDomain", + "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "mailbox", + "outputs": [ + { "internalType": "contract IMailbox", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_domain", "type": "uint32" } + ], + "name": "routers", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_hook", "type": "address" } + ], + "name": "setHook", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_module", "type": "address" } + ], + "name": "setInterchainSecurityModule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "theCompact", + "outputs": [ + { "internalType": "contract TheCompact", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "newOwner", "type": "address" } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_domain", "type": "uint32" } + ], + "name": "unenrollRemoteRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32[]", "name": "_domains", "type": "uint32[]" } + ], + "name": "unenrollRemoteRouters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/typescript/solver/solvers/compact/contracts/TheCompact.json b/typescript/solver/solvers/compact/contracts/TheCompact.json new file mode 100644 index 00000000..94bc3792 --- /dev/null +++ b/typescript/solver/solvers/compact/contracts/TheCompact.json @@ -0,0 +1,6913 @@ +[ + { + "inputs": [ + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "providedAmount", "type": "uint256" } + ], + "name": "AllocatedAmountExceeded", + "type": "error" + }, + { "inputs": [], "name": "BalanceOverflow", "type": "error" }, + { + "inputs": [ + { "internalType": "uint256", "name": "expiration", "type": "uint256" } + ], + "name": "Expired", + "type": "error" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "uint256", "name": "id", "type": "uint256" } + ], + "name": "ForcedWithdrawalAlreadyDisabled", + "type": "error" + }, + { "inputs": [], "name": "InsufficientBalance", "type": "error" }, + { "inputs": [], "name": "InsufficientPermission", "type": "error" }, + { "inputs": [], "name": "InvalidBatchAllocation", "type": "error" }, + { "inputs": [], "name": "InvalidBatchDepositStructure", "type": "error" }, + { "inputs": [], "name": "InvalidDepositBalanceChange", "type": "error" }, + { "inputs": [], "name": "InvalidDepositTokenOrdering", "type": "error" }, + { + "inputs": [ + { "internalType": "uint256", "name": "duration", "type": "uint256" } + ], + "name": "InvalidRegistrationDuration", + "type": "error" + }, + { + "inputs": [ + { "internalType": "address", "name": "allocator", "type": "address" } + ], + "name": "InvalidRegistrationProof", + "type": "error" + }, + { + "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }], + "name": "InvalidScope", + "type": "error" + }, + { "inputs": [], "name": "InvalidSignature", "type": "error" }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" } + ], + "name": "InvalidToken", + "type": "error" + }, + { "inputs": [], "name": "OnlyDirectCalls", "type": "error" }, + { "inputs": [], "name": "Permit2CallFailed", "type": "error" }, + { + "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }], + "name": "PrematureWithdrawal", + "type": "error" + }, + { + "inputs": [ + { "internalType": "address", "name": "existingCaller", "type": "address" } + ], + "name": "ReentrantCall", + "type": "error" + }, + { "inputs": [], "name": "TStoreAlreadyActivated", "type": "error" }, + { "inputs": [], "name": "TStoreNotSupported", "type": "error" }, + { + "inputs": [], + "name": "TloadTestContractDeploymentFailed", + "type": "error" + }, + { + "inputs": [ + { "internalType": "address", "name": "operator", "type": "address" }, + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "UnallocatedTransfer", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint96", + "name": "allocatorId", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "address", + "name": "allocator", + "type": "address" + } + ], + "name": "AllocatorRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sponsor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "arbiter", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "claimHash", + "type": "bytes32" + } + ], + "name": "Claim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sponsor", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "claimHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "typehash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "expires", + "type": "uint256" + } + ], + "name": "CompactRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "activating", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "withdrawableAt", + "type": "uint256" + } + ], + "name": "ForcedWithdrawalStatusUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "OperatorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "by", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "__activateTstore", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "allocator", "type": "address" }, + { "internalType": "bytes", "name": "proof", "type": "bytes" } + ], + "name": "__registerAllocator", + "outputs": [{ "internalType": "uint96", "name": "", "type": "uint96" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct TransferComponent[]", + "name": "transfers", + "type": "tuple[]" + }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "internalType": "struct BatchTransfer", + "name": "transfer", + "type": "tuple" + } + ], + "name": "allocatedTransfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitByIdComponent[]", + "name": "transfers", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchTransfer", + "name": "transfer", + "type": "tuple" + } + ], + "name": "allocatedTransfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "recipients", + "type": "tuple[]" + } + ], + "internalType": "struct SplitTransfer", + "name": "transfer", + "type": "tuple" + } + ], + "name": "allocatedTransfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "internalType": "struct BasicTransfer", + "name": "transfer", + "type": "tuple" + } + ], + "name": "allocatedTransfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "internalType": "struct BasicTransfer", + "name": "withdrawal", + "type": "tuple" + } + ], + "name": "allocatedWithdrawal", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitByIdComponent[]", + "name": "transfers", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchTransfer", + "name": "withdrawal", + "type": "tuple" + } + ], + "name": "allocatedWithdrawal", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct TransferComponent[]", + "name": "transfers", + "type": "tuple[]" + }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "internalType": "struct BatchTransfer", + "name": "withdrawal", + "type": "tuple" + } + ], + "name": "allocatedWithdrawal", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "recipients", + "type": "tuple[]" + } + ], + "internalType": "struct SplitTransfer", + "name": "withdrawal", + "type": "tuple" + } + ], + "name": "allocatedWithdrawal", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "id", "type": "uint256" } + ], + "name": "allowance", + "outputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "uint256", "name": "id", "type": "uint256" } + ], + "name": "balanceOf", + "outputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousSplitBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct QualifiedClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct QualifiedBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct QualifiedMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct ExogenousQualifiedBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct QualifiedMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousQualifiedSplitBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ExogenousMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousSplitMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousQualifiedSplitMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousQualifiedSplitMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct BatchClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct ExogenousQualifiedBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ExogenousMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct QualifiedClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ExogenousQualifiedMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BasicClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct BatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct SplitClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct BatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousSplitMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousSplitBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct QualifiedBatchClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct QualifiedBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct BatchClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct SplitMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct SplitClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct QualifiedBatchClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct MultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct MultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousQualifiedSplitBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitBatchClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitBatchClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ExogenousQualifiedMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct ExogenousBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct SplitMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct ExogenousBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct ExogenousQualifiedBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitBatchClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct QualifiedBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitBatchClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct QualifiedClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct QualifiedBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct MultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct QualifiedClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousSplitBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct SplitMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct ExogenousBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousSplitMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct SplitMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ExogenousQualifiedMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct SplitClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct BatchClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousSplitBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousQualifiedSplitMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct SplitClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct BatchClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct MultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousQualifiedSplitMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousQualifiedSplitBatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ExogenousMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct QualifiedBatchClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BasicClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct BatchMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct BatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ExogenousMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct QualifiedMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousQualifiedSplitBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct ExogenousSplitMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ExogenousQualifiedMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct ExogenousBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "address", "name": "claimant", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct QualifiedMultichainClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct SplitComponent[]", + "name": "portions", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct SplitBatchClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct QualifiedBatchClaim", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "claimant", + "type": "address" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct SplitComponent[]", + "name": "claimants", + "type": "tuple[]" + } + ], + "internalType": "struct QualifiedSplitClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "allocatorSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "sponsorSignature", + "type": "bytes" + }, + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" }, + { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, + { + "internalType": "string", + "name": "witnessTypestring", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "qualificationTypehash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "qualificationPayload", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "additionalChains", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "chainIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "notarizedChainId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { + "internalType": "uint256", + "name": "allocatedAmount", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct BatchClaimComponent[]", + "name": "claims", + "type": "tuple[]" + }, + { "internalType": "address", "name": "claimant", "type": "address" } + ], + "internalType": "struct ExogenousQualifiedBatchMultichainClaimWithWitness", + "name": "claimPayload", + "type": "tuple" + } + ], + "name": "claimAndWithdraw", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "nonces", "type": "uint256[]" } + ], + "name": "consume", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }], + "name": "decimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "enum ResetPeriod", "name": "", "type": "uint8" }, + { "internalType": "enum Scope", "name": "", "type": "uint8" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "deposit", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "allocator", "type": "address" }, + { + "internalType": "enum ResetPeriod", + "name": "resetPeriod", + "type": "uint8" + }, + { "internalType": "enum Scope", "name": "scope", "type": "uint8" }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "name": "deposit", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "address", "name": "allocator", "type": "address" }, + { + "internalType": "enum ResetPeriod", + "name": "resetPeriod", + "type": "uint8" + }, + { "internalType": "enum Scope", "name": "scope", "type": "uint8" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "name": "deposit", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "address", "name": "allocator", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "deposit", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "", "type": "address" }, + { + "components": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ISignatureTransfer.TokenPermissions[]", + "name": "permitted", + "type": "tuple[]" + }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "enum ResetPeriod", "name": "", "type": "uint8" }, + { "internalType": "enum Scope", "name": "", "type": "uint8" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "deposit", + "outputs": [ + { "internalType": "uint256[]", "name": "", "type": "uint256[]" } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[2][]", + "name": "idsAndAmounts", + "type": "uint256[2][]" + }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "name": "deposit", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "allocator", "type": "address" } + ], + "name": "deposit", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "address", "name": "depositor", "type": "address" }, + { "internalType": "address", "name": "", "type": "address" }, + { + "internalType": "enum ResetPeriod", + "name": "resetPeriod", + "type": "uint8" + }, + { "internalType": "enum Scope", "name": "", "type": "uint8" }, + { "internalType": "bytes32", "name": "claimHash", "type": "bytes32" }, + { + "internalType": "enum CompactCategory", + "name": "compactCategory", + "type": "uint8" + }, + { "internalType": "string", "name": "witness", "type": "string" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "depositAndRegister", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[2][]", + "name": "idsAndAmounts", + "type": "uint256[2][]" + }, + { + "internalType": "bytes32[2][]", + "name": "claimHashesAndTypehashes", + "type": "bytes32[2][]" + }, + { "internalType": "uint256", "name": "duration", "type": "uint256" } + ], + "name": "depositAndRegister", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "allocator", "type": "address" }, + { "internalType": "bytes32", "name": "claimHash", "type": "bytes32" }, + { "internalType": "bytes32", "name": "typehash", "type": "bytes32" } + ], + "name": "depositAndRegister", + "outputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "depositor", "type": "address" }, + { + "components": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct ISignatureTransfer.TokenPermissions[]", + "name": "permitted", + "type": "tuple[]" + }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "address", "name": "", "type": "address" }, + { + "internalType": "enum ResetPeriod", + "name": "resetPeriod", + "type": "uint8" + }, + { "internalType": "enum Scope", "name": "", "type": "uint8" }, + { "internalType": "bytes32", "name": "claimHash", "type": "bytes32" }, + { + "internalType": "enum CompactCategory", + "name": "compactCategory", + "type": "uint8" + }, + { "internalType": "string", "name": "witness", "type": "string" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "depositAndRegister", + "outputs": [ + { "internalType": "uint256[]", "name": "", "type": "uint256[]" } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "address", "name": "allocator", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "bytes32", "name": "claimHash", "type": "bytes32" }, + { "internalType": "bytes32", "name": "typehash", "type": "bytes32" } + ], + "name": "depositAndRegister", + "outputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }], + "name": "disableForcedWithdrawal", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }], + "name": "enableForcedWithdrawal", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "slot", "type": "bytes32" } + ], + "name": "extsload", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32[]", "name": "slots", "type": "bytes32[]" } + ], + "name": "extsload", + "outputs": [ + { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "slot", "type": "bytes32" } + ], + "name": "exttload", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "forcedWithdrawal", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "uint256", "name": "id", "type": "uint256" } + ], + "name": "getForcedWithdrawalStatus", + "outputs": [ + { + "internalType": "enum ForcedWithdrawalStatus", + "name": "", + "type": "uint8" + }, + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }], + "name": "getLockDetails", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "enum ResetPeriod", "name": "", "type": "uint8" }, + { "internalType": "enum Scope", "name": "", "type": "uint8" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "sponsor", "type": "address" }, + { "internalType": "bytes32", "name": "claimHash", "type": "bytes32" }, + { "internalType": "bytes32", "name": "typehash", "type": "bytes32" } + ], + "name": "getRegistrationStatus", + "outputs": [ + { "internalType": "bool", "name": "isActive", "type": "bool" }, + { "internalType": "uint256", "name": "expires", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "allocator", "type": "address" } + ], + "name": "hasConsumedAllocatorNonce", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" } + ], + "name": "isOperator", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[2][]", + "name": "claimHashesAndTypehashes", + "type": "bytes32[2][]" + }, + { "internalType": "uint256", "name": "duration", "type": "uint256" } + ], + "name": "register", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "claimHash", "type": "bytes32" }, + { "internalType": "bytes32", "name": "typehash", "type": "bytes32" }, + { "internalType": "uint256", "name": "duration", "type": "uint256" } + ], + "name": "register", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "operator", "type": "address" }, + { "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "setOperator", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } + ], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "result", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }], + "name": "tokenURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "id", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "payable", + "type": "function" + } +] diff --git a/typescript/solver/solvers/compact/filler.ts b/typescript/solver/solvers/compact/filler.ts new file mode 100644 index 00000000..2abf0704 --- /dev/null +++ b/typescript/solver/solvers/compact/filler.ts @@ -0,0 +1,185 @@ +import { type MultiProvider } from "@hyperlane-xyz/sdk"; +import { type Result } from "@hyperlane-xyz/utils"; + +import { BigNumber } from "@ethersproject/bignumber"; +import { AddressZero } from "@ethersproject/constants"; +import { HyperlaneArbiter__factory } from "../../typechain/factories/compact/contracts/HyperlaneArbiter__factory.js"; +import { Erc20__factory } from "../../typechain/factories/contracts/Erc20__factory.js"; +import type { Compact, CompactMetadata } from "./types.js"; +import { + log, + retrieveOriginInfo, + retrieveTargetInfo, +} from "./utils.js"; +import { + chainIds +} from "../../config/index.js"; +import { metadata , COMPACT_API_KEY } from "./config/index.js"; + +export const create = (multiProvider: MultiProvider) => { + const { protocolName, arbiters } = setup(); + + return async function compact(intent: Compact) { + const origin = await retrieveOriginInfo(intent, multiProvider); + const target = await retrieveTargetInfo(intent, multiProvider); + + log.info({ + msg: "Intent Indexed", + intent: `${protocolName}-${intent.hash}`, + origin: origin.join(", "), + target: target.join(", "), + }); + + const result = await prepareIntent(intent, arbiters, multiProvider, protocolName); + + if (!result.success) { + log.error( + `${protocolName} Failed evaluating filling Intent: ${result.error}`, + ); + return; + } + + await fill( + intent, + result.data.arbiter, + multiProvider, + protocolName, + ); + + // await withdrawRewards(intent, intentSource, multiProvider, protocolName); + }; +}; + +function setup() { + return metadata; +} + +// We're assuming the filler will pay out of their own stock, but in reality they may have to +// produce the funds before executing each leg. +async function prepareIntent( + intent: Compact, + arbiters: CompactMetadata["arbiters"], + multiProvider: MultiProvider, + protocolName: string, +): Promise> { + log.info({ + msg: "Evaluating filling Intent", + intent: `${protocolName}-${intent.hash}`, + }); + + try { + const destinationChainId = intent.intent.chainId; + const arbiter = arbiters.find( + ({ chainName }) => chainIds[chainName] === destinationChainId, + ); + + if (!arbiter) { + return { + error: "No arbiter found for destination chain", + success: false, + }; + } + + const signer = multiProvider.getSigner(destinationChainId); + + const requiredAmountsByTarget = { + [intent.intent.token]: intent.intent.amount, + }; + + const fillerAddress = + await multiProvider.getSignerAddress(destinationChainId); + + const areTargetFundsAvailable = await Promise.all( + Object.entries(requiredAmountsByTarget).map( + async ([target, requiredAmount]) => { + let balance: BigNumber; + if (target === AddressZero) { + balance = await signer.getBalance(); + } else { + const erc20 = Erc20__factory.connect(target, signer); + balance = await erc20.balanceOf(fillerAddress); + } + + return balance.gte(requiredAmount); + }, + ), + ); + + if (!areTargetFundsAvailable.every(Boolean)) { + return { error: "Not enough tokens", success: false }; + } + + log.debug( + `${protocolName} - Approving tokens: ${intent.hash}, for ${arbiter.address}`, + ); + await Promise.all( + Object.entries(requiredAmountsByTarget).map( + async ([target, requiredAmount]) => { + if (target === AddressZero) { + return; + } + + const erc20 = Erc20__factory.connect(target, signer); + const tx = await erc20.approve(arbiter.address, requiredAmount); + await tx.wait(); + }, + ), + ); + + return { data: { arbiter }, success: true }; + } catch (error: any) { + return { + error: error.message ?? "Failed to prepare Compact Intent.", + success: false, + }; + } +} + +async function fill( + intent: Compact, + arbiterInfo: CompactMetadata["arbiters"][number], + multiProvider: MultiProvider, + protocolName: string, +): Promise { + log.info({ + msg: "Filling Intent", + intent: `${protocolName}-${intent.hash}`, + }); + + const _chainId = intent.intent.chainId; + + const filler = multiProvider.getSigner(_chainId); + const arbiter = HyperlaneArbiter__factory.connect(arbiterInfo.address, filler); + + if (!COMPACT_API_KEY) throw new Error("COMPACT_API_KEY is not set"); + + const compact = JSON.stringify(intent); + const baseUrl = 'https://the-compact-allocator-api.vercel.app/api'; + const apiUrl = `${baseUrl}/quote?compact=${compact}`; + const response = await fetch(apiUrl, {method: "GET", headers: {"X-API-KEY": COMPACT_API_KEY}}); + const { data } = await response.json() as any; + + const value = BigNumber.from(data.fee).add(intent.intent.amount); + + const tx = await arbiter.fill( + intent.claimChain, + intent.compact, + intent.intent, + intent.allocatorSignature, + intent.sponsorSignature, + { value }, + ); + + const receipt = await tx.wait(); + const setFilledUrl = `${baseUrl}/compacts/${intent.id}/setFilled`; + await fetch(setFilledUrl, { method: "POST", headers: {"X-API-KEY": COMPACT_API_KEY} }); + + log.info({ + msg: "Filled Intent", + intent: `${protocolName}-${intent.hash}`, + txDetails: receipt.transactionHash, + txHash: receipt.transactionHash, + }); +} diff --git a/typescript/solver/solvers/compact/index.ts b/typescript/solver/solvers/compact/index.ts new file mode 100644 index 00000000..4be68f40 --- /dev/null +++ b/typescript/solver/solvers/compact/index.ts @@ -0,0 +1,2 @@ +export * as filler from "./filler.js"; +export * as listener from "./listener.js"; diff --git a/typescript/solver/solvers/compact/listener.ts b/typescript/solver/solvers/compact/listener.ts new file mode 100644 index 00000000..160903bd --- /dev/null +++ b/typescript/solver/solvers/compact/listener.ts @@ -0,0 +1,62 @@ +import type { Compact } from "./types.js"; +import { allowBlockLists, COMPACT_API_KEY } from "./config/index.js"; +import { + chainIdsToName, + isAllowedIntent, +} from "../../config/index.js"; + +export const create = () => { + return function (handler: (args: Compact) => void) { + poll( + "https://the-compact-allocator-api.vercel.app/api/compacts/?filled=false", + handler, + ); + }; +}; + +interface PollOptions { + interval?: number; + timeout?: number; +} + +function poll( + url: string, + handler: (args: TResolve) => void, + options: PollOptions = {}, +) { + const { + interval = 4_000, // Default polling interval: 1 second + } = options; + + const poller = async () => { + console.log("Polling..."); + if (!COMPACT_API_KEY) throw new Error("COMPACT_API_KEY is not set"); + const response = await fetch(url, {method: "GET", headers: {"X-API-KEY": COMPACT_API_KEY}}); + + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + + // This is reading all the non-filled compacts + const { + data: { compacts } + } = await response.json() as { data: { compacts: Compact[] } }; + + // This is filtering the compacts to only include the ones that are allowed + compacts.filter((compact: Compact) => + isAllowedIntent(allowBlockLists, { + senderAddress: compact.compact.sponsor, + destinationDomain: chainIdsToName[compact.intent.chainId.toString()], + recipientAddress: compact.intent.recipient, + }) + ); + + for await (const compact of compacts) { + await handler(compact as TResolve); + } + + setTimeout(poller, interval); + }; + + poller(); +} diff --git a/typescript/solver/solvers/compact/types.ts b/typescript/solver/solvers/compact/types.ts new file mode 100644 index 00000000..1c844409 --- /dev/null +++ b/typescript/solver/solvers/compact/types.ts @@ -0,0 +1,40 @@ +import z from "zod"; +import { chainNames } from "../../config/index.js"; + +export const CompactMetadataSchema = z.object({ + protocolName: z.string(), + arbiters: z.array( + z.object({ + address: z.string(), + chainName: z.string().refine((name) => chainNames.includes(name), { + message: "Invalid chainName", + }), + }), + ), +}); + +export type CompactMetadata = z.infer; + +export type Compact = { + id: number; + hash: string; + claimChain: number; + compact: { + arbiter: string; + sponsor: string; + nonce: string; + expires: string; + id: string; + amount: string; + }; + intent: { + token: string; + amount: string; + fee: string; + chainId: number; + recipient: string; + }; + allocatorSignature: string; + sponsorSignature: string; + filled: boolean; +}; diff --git a/typescript/solver/solvers/compact/utils.ts b/typescript/solver/solvers/compact/utils.ts new file mode 100644 index 00000000..43a99676 --- /dev/null +++ b/typescript/solver/solvers/compact/utils.ts @@ -0,0 +1,69 @@ +import { AddressZero } from "@ethersproject/constants"; +import { formatUnits } from "@ethersproject/units"; +import type { MultiProvider } from "@hyperlane-xyz/sdk"; + +import { createLogger } from "../../logger.js"; +import { + HyperlaneArbiter__factory, + TheCompact__factory, +} from "../../typechain/factories/compact/contracts/index.js"; +import { Erc20__factory } from "../../typechain/factories/contracts/Erc20__factory.js"; +import { metadata } from "./config/index.js"; +import { chainIds } from "../../config/index.js"; + +import type { Compact } from "./types.js"; + +export const log = createLogger(metadata.protocolName); + +export async function retrieveOriginInfo( + intent: Compact, + multiProvider: MultiProvider, +): Promise> { + const provider = multiProvider.getProvider(intent.claimChain); + const arbiterData = metadata.arbiters.find( + (a) => chainIds[a.chainName] == intent.claimChain, + )!; + const arbiter = HyperlaneArbiter__factory.connect( + arbiterData.address, + provider, + ); + const compact = TheCompact__factory.connect( + await arbiter.theCompact(), + provider, + ); + const [tokenAddress] = await compact.getLockDetails(intent.compact.id); + + const isNative = tokenAddress === AddressZero; + + const erc20 = Erc20__factory.connect(tokenAddress, provider); + const [decimals, symbol] = await Promise.all([ + isNative ? 18 : erc20.decimals(), + isNative ? 'ETH' : erc20.symbol(), + ]); + const amount = intent.compact.amount; + + return [ + `${formatUnits(amount, decimals)} ${symbol} in on ${arbiterData.chainName}`, + ]; +} + +export async function retrieveTargetInfo( + intent: Compact, + multiProvider: MultiProvider, +): Promise> { + const arbiterData = metadata.arbiters.find( + (a) => chainIds[a.chainName] == intent.intent.chainId, + )!; + const provider = multiProvider.getProvider(intent.intent.chainId); + const erc20 = Erc20__factory.connect(intent.intent.token, provider); + const isNative = intent.intent.token === AddressZero; + const [decimals, symbol] = await Promise.all([ + isNative ? 18 : erc20.decimals(), + isNative ? 'ETH' : erc20.symbol(), + ]); + const amount = intent.intent.amount; + + return [ + `${formatUnits(amount, decimals)} ${symbol} out on ${arbiterData.chainName ?? "UNKNOWN_CHAIN"}`, + ]; +} diff --git a/typescript/solver/solvers/index.ts b/typescript/solver/solvers/index.ts index 4c1ad5c7..472b1046 100644 --- a/typescript/solver/solvers/index.ts +++ b/typescript/solver/solvers/index.ts @@ -1,2 +1,4 @@ +export * as compact from "./compact/index.js"; export * as eco from "./eco/index.js"; export * as hyperlane7683 from "./hyperlane7683/index.js"; +