////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // CallerAndCommenterImpl ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// export const callerAndCommenterImplABI = [ { type: 'constructor', inputs: [ { name: '_comments', internalType: 'address', type: 'address' }, { name: '_zoraTimedSale', internalType: 'address', type: 'address' }, { name: '_swapHelper', internalType: 'address', type: 'address' }, { name: '_sparksValue', internalType: 'uint256', type: 'uint256' }, ], stateMutability: 'nonpayable', }, { type: 'function', inputs: [], name: 'UPGRADE_INTERFACE_VERSION', outputs: [{ name: '', internalType: 'string', type: 'string' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'acceptOwnership', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'quantity', internalType: 'uint256', type: 'uint256' }, { name: 'collection', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'excessRefundRecipient', internalType: 'address payable', type: 'address', }, { name: 'maxEthToSpend', internalType: 'uint256', type: 'uint256' }, { name: 'sqrtPriceLimitX96', internalType: 'uint160', type: 'uint160' }, { name: 'comment', internalType: 'string', type: 'string' }, ], name: 'buyOnSecondaryAndComment', outputs: [ { name: '', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, ], stateMutability: 'payable', }, { type: 'function', inputs: [], name: 'comments', outputs: [ { name: '', internalType: 'contract IComments', type: 'address' }, ], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'contractName', outputs: [{ name: '', internalType: 'string', type: 'string' }], stateMutability: 'pure', }, { type: 'function', inputs: [], name: 'contractVersion', outputs: [{ name: '', internalType: 'string', type: 'string' }], stateMutability: 'pure', }, { type: 'function', inputs: [], name: 'eip712Domain', outputs: [ { name: 'fields', internalType: 'bytes1', type: 'bytes1' }, { name: 'name', internalType: 'string', type: 'string' }, { name: 'version', internalType: 'string', type: 'string' }, { name: 'chainId', internalType: 'uint256', type: 'uint256' }, { name: 'verifyingContract', internalType: 'address', type: 'address' }, { name: 'salt', internalType: 'bytes32', type: 'bytes32' }, { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' }, ], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'permit', internalType: 'struct ICallerAndCommenter.PermitBuyOnSecondaryAndComment', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'quantity', internalType: 'uint256', type: 'uint256' }, { name: 'collection', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'maxEthToSpend', internalType: 'uint256', type: 'uint256' }, { name: 'sqrtPriceLimitX96', internalType: 'uint160', type: 'uint160', }, { name: 'comment', internalType: 'string', type: 'string' }, { name: 'deadline', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, { name: 'sourceChainId', internalType: 'uint32', type: 'uint32' }, { name: 'destinationChainId', internalType: 'uint32', type: 'uint32', }, ], }, ], name: 'hashPermitBuyOnSecondaryAndComment', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'permit', internalType: 'struct ICallerAndCommenter.PermitTimedSaleMintAndComment', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'quantity', internalType: 'uint256', type: 'uint256' }, { name: 'collection', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'mintReferral', internalType: 'address', type: 'address' }, { name: 'comment', internalType: 'string', type: 'string' }, { name: 'deadline', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, { name: 'sourceChainId', internalType: 'uint32', type: 'uint32' }, { name: 'destinationChainId', internalType: 'uint32', type: 'uint32', }, ], }, ], name: 'hashPermitTimedSaleMintAndComment', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [{ name: 'owner', internalType: 'address', type: 'address' }], name: 'initialize', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'owner', internalType: 'address', type: 'address' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], name: 'nonceUsed', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'owner', outputs: [{ name: '', internalType: 'address', type: 'address' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'pendingOwner', outputs: [{ name: '', internalType: 'address', type: 'address' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'permit', internalType: 'struct ICallerAndCommenter.PermitBuyOnSecondaryAndComment', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'quantity', internalType: 'uint256', type: 'uint256' }, { name: 'collection', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'maxEthToSpend', internalType: 'uint256', type: 'uint256' }, { name: 'sqrtPriceLimitX96', internalType: 'uint160', type: 'uint160', }, { name: 'comment', internalType: 'string', type: 'string' }, { name: 'deadline', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, { name: 'sourceChainId', internalType: 'uint32', type: 'uint32' }, { name: 'destinationChainId', internalType: 'uint32', type: 'uint32', }, ], }, { name: 'signature', internalType: 'bytes', type: 'bytes' }, ], name: 'permitBuyOnSecondaryAndComment', outputs: [ { name: '', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, ], stateMutability: 'payable', }, { type: 'function', inputs: [ { name: 'permit', internalType: 'struct ICallerAndCommenter.PermitTimedSaleMintAndComment', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'quantity', internalType: 'uint256', type: 'uint256' }, { name: 'collection', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'mintReferral', internalType: 'address', type: 'address' }, { name: 'comment', internalType: 'string', type: 'string' }, { name: 'deadline', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, { name: 'sourceChainId', internalType: 'uint32', type: 'uint32' }, { name: 'destinationChainId', internalType: 'uint32', type: 'uint32', }, ], }, { name: 'signature', internalType: 'bytes', type: 'bytes' }, ], name: 'permitTimedSaleMintAndComment', outputs: [ { name: '', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, ], stateMutability: 'payable', }, { type: 'function', inputs: [], name: 'proxiableUUID', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [], name: 'secondarySwap', outputs: [ { name: '', internalType: 'contract ISecondarySwap', type: 'address' }, ], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'quantity', internalType: 'uint256', type: 'uint256' }, { name: 'collection', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'recipient', internalType: 'address payable', type: 'address' }, { name: 'minEthToAcquire', internalType: 'uint256', type: 'uint256' }, { name: 'sqrtPriceLimitX96', internalType: 'uint160', type: 'uint160' }, { name: 'comment', internalType: 'string', type: 'string' }, ], name: 'sellOnSecondaryAndComment', outputs: [ { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, ], stateMutability: 'payable', }, { type: 'function', inputs: [], name: 'sparkValue', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'quantity', internalType: 'uint256', type: 'uint256' }, { name: 'collection', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'mintReferral', internalType: 'address', type: 'address' }, { name: 'comment', internalType: 'string', type: 'string' }, ], name: 'timedSaleMintAndComment', outputs: [ { name: '', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, ], stateMutability: 'payable', }, { type: 'function', inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }], name: 'transferOwnership', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, { name: 'data', internalType: 'bytes', type: 'bytes' }, ], name: 'upgradeToAndCall', outputs: [], stateMutability: 'payable', }, { type: 'function', inputs: [], name: 'zoraTimedSale', outputs: [ { name: '', internalType: 'contract IZoraTimedSaleStrategy', type: 'address', }, ], stateMutability: 'view', }, { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' }, { type: 'event', anonymous: false, inputs: [ { name: 'version', internalType: 'uint64', type: 'uint64', indexed: false, }, ], name: 'Initialized', }, { type: 'event', anonymous: false, inputs: [ { name: 'commentId', internalType: 'bytes32', type: 'bytes32', indexed: true, }, { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], indexed: false, }, { name: 'quantity', internalType: 'uint256', type: 'uint256', indexed: false, }, { name: 'text', internalType: 'string', type: 'string', indexed: false }, ], name: 'MintedAndCommented', }, { type: 'event', anonymous: false, inputs: [ { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true, }, { name: 'newOwner', internalType: 'address', type: 'address', indexed: true, }, ], name: 'OwnershipTransferStarted', }, { type: 'event', anonymous: false, inputs: [ { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true, }, { name: 'newOwner', internalType: 'address', type: 'address', indexed: true, }, ], name: 'OwnershipTransferred', }, { type: 'event', anonymous: false, inputs: [ { name: 'commentId', internalType: 'bytes32', type: 'bytes32', indexed: true, }, { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], indexed: false, }, { name: 'quantity', internalType: 'uint256', type: 'uint256', indexed: true, }, { name: 'comment', internalType: 'string', type: 'string', indexed: false, }, { name: 'swapDirection', internalType: 'enum ICallerAndCommenter.SwapDirection', type: 'uint8', indexed: true, }, ], name: 'SwappedOnSecondaryAndCommented', }, { type: 'event', anonymous: false, inputs: [ { name: 'implementation', internalType: 'address', type: 'address', indexed: true, }, ], name: 'Upgraded', }, { type: 'error', inputs: [{ name: 'target', internalType: 'address', type: 'address' }], name: 'AddressEmptyCode', }, { type: 'error', inputs: [ { name: 'expected', internalType: 'address', type: 'address' }, { name: 'actual', internalType: 'address', type: 'address' }, ], name: 'CommenterMismatch', }, { type: 'error', inputs: [ { name: 'implementation', internalType: 'address', type: 'address' }, ], name: 'ERC1967InvalidImplementation', }, { type: 'error', inputs: [], name: 'ERC1967NonPayable' }, { type: 'error', inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }], name: 'ERC2612ExpiredSignature', }, { type: 'error', inputs: [], name: 'FailedInnerCall' }, { type: 'error', inputs: [ { name: 'wrongDestinationChainId', internalType: 'uint256', type: 'uint256', }, ], name: 'IncorrectDestinationChain', }, { type: 'error', inputs: [ { name: 'account', internalType: 'address', type: 'address' }, { name: 'currentNonce', internalType: 'bytes32', type: 'bytes32' }, ], name: 'InvalidAccountNonce', }, { type: 'error', inputs: [], name: 'InvalidInitialization' }, { type: 'error', inputs: [], name: 'InvalidSignature' }, { type: 'error', inputs: [], name: 'NotInitializing' }, { type: 'error', inputs: [{ name: 'owner', internalType: 'address', type: 'address' }], name: 'OwnableInvalidOwner', }, { type: 'error', inputs: [{ name: 'account', internalType: 'address', type: 'address' }], name: 'OwnableUnauthorizedAccount', }, { type: 'error', inputs: [ { name: 'collection', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, ], name: 'SaleNotSet', }, { type: 'error', inputs: [], name: 'UUPSUnauthorizedCallContext' }, { type: 'error', inputs: [{ name: 'slot', internalType: 'bytes32', type: 'bytes32' }], name: 'UUPSUnsupportedProxiableUUID', }, { type: 'error', inputs: [ { name: 'currentName', internalType: 'string', type: 'string' }, { name: 'newName', internalType: 'string', type: 'string' }, ], name: 'UpgradeToMismatchedContractName', }, { type: 'error', inputs: [ { name: 'expected', internalType: 'uint256', type: 'uint256' }, { name: 'actual', internalType: 'uint256', type: 'uint256' }, ], name: 'WrongValueSent', }, ] as const ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // CommentsImpl ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// export const commentsImplABI = [ { type: 'constructor', inputs: [ { name: '_sparkValue', internalType: 'uint256', type: 'uint256' }, { name: '_protocolRewards', internalType: 'address', type: 'address' }, { name: '_zoraRecipient', internalType: 'address', type: 'address' }, ], stateMutability: 'nonpayable', }, { type: 'function', inputs: [], name: 'BACKFILLER_ROLE', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'DEFAULT_ADMIN_ROLE', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'DELEGATE_COMMENTER', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'DOMAIN_NAME', outputs: [{ name: '', internalType: 'string', type: 'string' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'DOMAIN_VERSION', outputs: [{ name: '', internalType: 'string', type: 'string' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'PERMISSION_BIT_ADMIN', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'REFERRER_REWARD_PCT', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'UPGRADE_INTERFACE_VERSION', outputs: [{ name: '', internalType: 'string', type: 'string' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'ZORA_REWARD_NO_REFERRER_PCT', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'ZORA_REWARD_PCT', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'commentIdentifiers', internalType: 'struct IComments.CommentIdentifier[]', type: 'tuple[]', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, { name: 'texts', internalType: 'string[]', type: 'string[]' }, { name: 'timestamps', internalType: 'uint256[]', type: 'uint256[]' }, { name: 'originalTransactionHashes', internalType: 'bytes32[]', type: 'bytes32[]', }, ], name: 'backfillBatchAddComment', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'text', internalType: 'string', type: 'string' }, { name: 'replyTo', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, { name: 'commenterSmartWallet', internalType: 'address', type: 'address', }, { name: 'referrer', internalType: 'address', type: 'address' }, ], name: 'comment', outputs: [ { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, ], stateMutability: 'payable', }, { type: 'function', inputs: [ { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, ], name: 'commentSparksQuantity', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'contractName', outputs: [{ name: '', internalType: 'string', type: 'string' }], stateMutability: 'pure', }, { type: 'function', inputs: [], name: 'contractVersion', outputs: [{ name: '', internalType: 'string', type: 'string' }], stateMutability: 'pure', }, { type: 'function', inputs: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'text', internalType: 'string', type: 'string' }, { name: 'replyTo', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, { name: 'commenterSmartWalletOwner', internalType: 'address', type: 'address', }, { name: 'referrer', internalType: 'address', type: 'address' }, ], name: 'delegateComment', outputs: [ { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, { name: 'commentId', internalType: 'bytes32', type: 'bytes32' }, ], stateMutability: 'payable', }, { type: 'function', inputs: [], name: 'eip712Domain', outputs: [ { name: 'fields', internalType: 'bytes1', type: 'bytes1' }, { name: 'name', internalType: 'string', type: 'string' }, { name: 'version', internalType: 'string', type: 'string' }, { name: 'chainId', internalType: 'uint256', type: 'uint256' }, { name: 'verifyingContract', internalType: 'address', type: 'address' }, { name: 'salt', internalType: 'bytes32', type: 'bytes32' }, { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' }, ], stateMutability: 'view', }, { type: 'function', inputs: [{ name: 'role', internalType: 'bytes32', type: 'bytes32' }], name: 'getRoleAdmin', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'role', internalType: 'bytes32', type: 'bytes32' }, { name: 'account', internalType: 'address', type: 'address' }, ], name: 'grantRole', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'role', internalType: 'bytes32', type: 'bytes32' }, { name: 'account', internalType: 'address', type: 'address' }, ], name: 'hasRole', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, ], name: 'hashAndCheckCommentExists', outputs: [ { name: 'commentId', internalType: 'bytes32', type: 'bytes32' }, { name: 'exists', internalType: 'bool', type: 'bool' }, ], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, ], name: 'hashAndValidateCommentExists', outputs: [{ name: 'commentId', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, ], name: 'hashCommentIdentifier', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'pure', }, { type: 'function', inputs: [ { name: 'permit', internalType: 'struct IComments.PermitComment', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'commenterSmartWallet', internalType: 'address', type: 'address', }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'replyTo', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address', }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, { name: 'text', internalType: 'string', type: 'string' }, { name: 'referrer', internalType: 'address', type: 'address' }, { name: 'deadline', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, { name: 'sourceChainId', internalType: 'uint32', type: 'uint32' }, { name: 'destinationChainId', internalType: 'uint32', type: 'uint32', }, ], }, ], name: 'hashPermitComment', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'permit', internalType: 'struct IComments.PermitSparkComment', type: 'tuple', components: [ { name: 'comment', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address', }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, { name: 'sparker', internalType: 'address', type: 'address' }, { name: 'sparksQuantity', internalType: 'uint256', type: 'uint256' }, { name: 'deadline', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, { name: 'referrer', internalType: 'address', type: 'address' }, { name: 'sourceChainId', internalType: 'uint32', type: 'uint32' }, { name: 'destinationChainId', internalType: 'uint32', type: 'uint32', }, ], }, ], name: 'hashPermitSparkComment', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'implementation', outputs: [{ name: '', internalType: 'address', type: 'address' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'defaultAdmin', internalType: 'address', type: 'address' }, { name: 'backfiller', internalType: 'address', type: 'address' }, { name: 'delegateCommenters', internalType: 'address[]', type: 'address[]', }, ], name: 'initialize', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [], name: 'nextNonce', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'owner', internalType: 'address', type: 'address' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], name: 'nonceUsed', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'permit', internalType: 'struct IComments.PermitComment', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'commenterSmartWallet', internalType: 'address', type: 'address', }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'replyTo', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address', }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, { name: 'text', internalType: 'string', type: 'string' }, { name: 'referrer', internalType: 'address', type: 'address' }, { name: 'deadline', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, { name: 'sourceChainId', internalType: 'uint32', type: 'uint32' }, { name: 'destinationChainId', internalType: 'uint32', type: 'uint32', }, ], }, { name: 'signature', internalType: 'bytes', type: 'bytes' }, ], name: 'permitComment', outputs: [], stateMutability: 'payable', }, { type: 'function', inputs: [ { name: 'permit', internalType: 'struct IComments.PermitSparkComment', type: 'tuple', components: [ { name: 'comment', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address', }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, { name: 'sparker', internalType: 'address', type: 'address' }, { name: 'sparksQuantity', internalType: 'uint256', type: 'uint256' }, { name: 'deadline', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, { name: 'referrer', internalType: 'address', type: 'address' }, { name: 'sourceChainId', internalType: 'uint32', type: 'uint32' }, { name: 'destinationChainId', internalType: 'uint32', type: 'uint32', }, ], }, { name: 'signature', internalType: 'bytes', type: 'bytes' }, ], name: 'permitSparkComment', outputs: [], stateMutability: 'payable', }, { type: 'function', inputs: [], name: 'protocolRewards', outputs: [ { name: '', internalType: 'contract IProtocolRewards', type: 'address' }, ], stateMutability: 'view', }, { type: 'function', inputs: [], name: 'proxiableUUID', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'role', internalType: 'bytes32', type: 'bytes32' }, { name: 'callerConfirmation', internalType: 'address', type: 'address' }, ], name: 'renounceRole', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'role', internalType: 'bytes32', type: 'bytes32' }, { name: 'account', internalType: 'address', type: 'address' }, ], name: 'revokeRole', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], }, { name: 'sparksQuantity', internalType: 'uint256', type: 'uint256' }, { name: 'referrer', internalType: 'address', type: 'address' }, ], name: 'sparkComment', outputs: [], stateMutability: 'payable', }, { type: 'function', inputs: [], name: 'sparkValue', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }], name: 'supportsInterface', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], stateMutability: 'view', }, { type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, { name: 'data', internalType: 'bytes', type: 'bytes' }, ], name: 'upgradeToAndCall', outputs: [], stateMutability: 'payable', }, { type: 'event', anonymous: false, inputs: [ { name: 'commentId', internalType: 'bytes32', type: 'bytes32', indexed: true, }, { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], indexed: false, }, { name: 'text', internalType: 'string', type: 'string', indexed: false }, { name: 'timestamp', internalType: 'uint256', type: 'uint256', indexed: false, }, { name: 'originalTransactionId', internalType: 'bytes32', type: 'bytes32', indexed: false, }, ], name: 'BackfilledComment', }, { type: 'event', anonymous: false, inputs: [ { name: 'commentId', internalType: 'bytes32', type: 'bytes32', indexed: true, }, { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], indexed: false, }, { name: 'replyToId', internalType: 'bytes32', type: 'bytes32', indexed: false, }, { name: 'replyTo', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], indexed: false, }, { name: 'sparksQuantity', internalType: 'uint256', type: 'uint256', indexed: false, }, { name: 'text', internalType: 'string', type: 'string', indexed: false }, { name: 'timestamp', internalType: 'uint256', type: 'uint256', indexed: false, }, { name: 'referrer', internalType: 'address', type: 'address', indexed: false, }, ], name: 'Commented', }, { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' }, { type: 'event', anonymous: false, inputs: [ { name: 'version', internalType: 'uint64', type: 'uint64', indexed: false, }, ], name: 'Initialized', }, { type: 'event', anonymous: false, inputs: [ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true }, { name: 'previousAdminRole', internalType: 'bytes32', type: 'bytes32', indexed: true, }, { name: 'newAdminRole', internalType: 'bytes32', type: 'bytes32', indexed: true, }, ], name: 'RoleAdminChanged', }, { type: 'event', anonymous: false, inputs: [ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true }, { name: 'account', internalType: 'address', type: 'address', indexed: true, }, { name: 'sender', internalType: 'address', type: 'address', indexed: true, }, ], name: 'RoleGranted', }, { type: 'event', anonymous: false, inputs: [ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true }, { name: 'account', internalType: 'address', type: 'address', indexed: true, }, { name: 'sender', internalType: 'address', type: 'address', indexed: true, }, ], name: 'RoleRevoked', }, { type: 'event', anonymous: false, inputs: [ { name: 'commentId', internalType: 'bytes32', type: 'bytes32', indexed: true, }, { name: 'commentIdentifier', internalType: 'struct IComments.CommentIdentifier', type: 'tuple', components: [ { name: 'commenter', internalType: 'address', type: 'address' }, { name: 'contractAddress', internalType: 'address', type: 'address' }, { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, { name: 'nonce', internalType: 'bytes32', type: 'bytes32' }, ], indexed: false, }, { name: 'sparksQuantity', internalType: 'uint256', type: 'uint256', indexed: false, }, { name: 'sparker', internalType: 'address', type: 'address', indexed: false, }, { name: 'timestamp', internalType: 'uint256', type: 'uint256', indexed: false, }, { name: 'referrer', internalType: 'address', type: 'address', indexed: false, }, ], name: 'SparkedComment', }, { type: 'event', anonymous: false, inputs: [ { name: 'implementation', internalType: 'address', type: 'address', indexed: true, }, ], name: 'Upgraded', }, { type: 'error', inputs: [], name: 'AccessControlBadConfirmation' }, { type: 'error', inputs: [ { name: 'account', internalType: 'address', type: 'address' }, { name: 'neededRole', internalType: 'bytes32', type: 'bytes32' }, ], name: 'AccessControlUnauthorizedAccount', }, { type: 'error', inputs: [{ name: 'target', internalType: 'address', type: 'address' }], name: 'AddressEmptyCode', }, { type: 'error', inputs: [], name: 'AddressZero' }, { type: 'error', inputs: [], name: 'ArrayLengthMismatch' }, { type: 'error', inputs: [], name: 'CannotSparkOwnComment' }, { type: 'error', inputs: [ { name: 'commentAddress', internalType: 'address', type: 'address' }, { name: 'commentTokenId', internalType: 'uint256', type: 'uint256' }, { name: 'replyAddress', internalType: 'address', type: 'address' }, { name: 'replyTokenId', internalType: 'uint256', type: 'uint256' }, ], name: 'CommentAddressOrTokenIdsDoNotMatch', }, { type: 'error', inputs: [], name: 'CommentDoesntExist' }, { type: 'error', inputs: [ { name: 'expected', internalType: 'address', type: 'address' }, { name: 'actual', internalType: 'address', type: 'address' }, ], name: 'CommenterMismatch', }, { type: 'error', inputs: [{ name: 'commentId', internalType: 'bytes32', type: 'bytes32' }], name: 'DuplicateComment', }, { type: 'error', inputs: [ { name: 'implementation', internalType: 'address', type: 'address' }, ], name: 'ERC1967InvalidImplementation', }, { type: 'error', inputs: [], name: 'ERC1967NonPayable' }, { type: 'error', inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }], name: 'ERC2612ExpiredSignature', }, { type: 'error', inputs: [], name: 'EmptyComment' }, { type: 'error', inputs: [], name: 'FailedInnerCall' }, { type: 'error', inputs: [ { name: 'wrongDestinationChainId', internalType: 'uint256', type: 'uint256', }, ], name: 'IncorrectDestinationChain', }, { type: 'error', inputs: [ { name: 'actual', internalType: 'uint256', type: 'uint256' }, { name: 'expected', internalType: 'uint256', type: 'uint256' }, ], name: 'IncorrectETHAmountForSparks', }, { type: 'error', inputs: [ { name: 'account', internalType: 'address', type: 'address' }, { name: 'currentNonce', internalType: 'bytes32', type: 'bytes32' }, ], name: 'InvalidAccountNonce', }, { type: 'error', inputs: [], name: 'InvalidInitialization' }, { type: 'error', inputs: [], name: 'InvalidSignature' }, { type: 'error', inputs: [], name: 'MustSendAtLeastOneSpark' }, { type: 'error', inputs: [], name: 'NoFundsRecipient' }, { type: 'error', inputs: [], name: 'NotInitializing' }, { type: 'error', inputs: [], name: 'NotSmartWallet' }, { type: 'error', inputs: [], name: 'NotSmartWalletOwner' }, { type: 'error', inputs: [], name: 'OnlySparksContract' }, { type: 'error', inputs: [], name: 'TransferFailed' }, { type: 'error', inputs: [], name: 'UUPSUnauthorizedCallContext' }, { type: 'error', inputs: [{ name: 'slot', internalType: 'bytes32', type: 'bytes32' }], name: 'UUPSUnsupportedProxiableUUID', }, { type: 'error', inputs: [ { name: 'currentName', internalType: 'string', type: 'string' }, { name: 'newName', internalType: 'string', type: 'string' }, ], name: 'UpgradeToMismatchedContractName', }, ] as const