// Generated with `pnpm gen:abis`. Do not modify manually. export const tip20 = [ { name: 'name', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'string' }], }, { name: 'symbol', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'string' }], }, { name: 'decimals', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint8' }], }, { name: 'totalSupply', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }], }, { name: 'quoteToken', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'address' }], }, { name: 'nextQuoteToken', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'address' }], }, { name: 'balanceOf', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'account' }], outputs: [{ type: 'uint256' }], }, { name: 'transfer', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'to' }, { type: 'uint256', name: 'amount' }, ], outputs: [{ type: 'bool' }], }, { name: 'approve', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'spender' }, { type: 'uint256', name: 'amount' }, ], outputs: [{ type: 'bool' }], }, { name: 'allowance', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'owner' }, { type: 'address', name: 'spender' }, ], outputs: [{ type: 'uint256' }], }, { name: 'transferFrom', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'from' }, { type: 'address', name: 'to' }, { type: 'uint256', name: 'amount' }, ], outputs: [{ type: 'bool' }], }, { name: 'mint', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'to' }, { type: 'uint256', name: 'amount' }, ], outputs: [], }, { name: 'burn', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'uint256', name: 'amount' }], outputs: [], }, { name: 'currency', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'string' }], }, { name: 'supplyCap', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }], }, { name: 'paused', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'bool' }], }, { name: 'transferPolicyId', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint64' }], }, { name: 'burnBlocked', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'from' }, { type: 'uint256', name: 'amount' }, ], outputs: [], }, { name: 'mintWithMemo', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'to' }, { type: 'uint256', name: 'amount' }, { type: 'bytes32', name: 'memo' }, ], outputs: [], }, { name: 'burnWithMemo', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'uint256', name: 'amount' }, { type: 'bytes32', name: 'memo' }, ], outputs: [], }, { name: 'transferWithMemo', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'to' }, { type: 'uint256', name: 'amount' }, { type: 'bytes32', name: 'memo' }, ], outputs: [], }, { name: 'transferFromWithMemo', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'from' }, { type: 'address', name: 'to' }, { type: 'uint256', name: 'amount' }, { type: 'bytes32', name: 'memo' }, ], outputs: [{ type: 'bool' }], }, { name: 'changeTransferPolicyId', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'uint64', name: 'newPolicyId' }], outputs: [], }, { name: 'setSupplyCap', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'uint256', name: 'newSupplyCap' }], outputs: [], }, { name: 'pause', type: 'function', stateMutability: 'nonpayable', inputs: [], outputs: [], }, { name: 'unpause', type: 'function', stateMutability: 'nonpayable', inputs: [], outputs: [], }, { name: 'setNextQuoteToken', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'address', name: 'newQuoteToken' }], outputs: [], }, { name: 'completeQuoteTokenUpdate', type: 'function', stateMutability: 'nonpayable', inputs: [], outputs: [], }, { name: 'PAUSE_ROLE', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'bytes32' }], }, { name: 'UNPAUSE_ROLE', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'bytes32' }], }, { name: 'ISSUER_ROLE', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'bytes32' }], }, { name: 'BURN_BLOCKED_ROLE', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'bytes32' }], }, { name: 'permit', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'owner' }, { type: 'address', name: 'spender' }, { type: 'uint256', name: 'value' }, { type: 'uint256', name: 'deadline' }, { type: 'uint8', name: 'v' }, { type: 'bytes32', name: 'r' }, { type: 'bytes32', name: 's' }, ], outputs: [], }, { name: 'nonces', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'owner' }], outputs: [{ type: 'uint256' }], }, { name: 'DOMAIN_SEPARATOR', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'bytes32' }], }, { name: 'distributeReward', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'uint256', name: 'amount' }], outputs: [], }, { name: 'setRewardRecipient', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'address', name: 'recipient' }], outputs: [], }, { name: 'claimRewards', type: 'function', stateMutability: 'nonpayable', inputs: [], outputs: [{ type: 'uint256' }], }, { name: 'optedInSupply', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint128' }], }, { name: 'globalRewardPerToken', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }], }, { name: 'userRewardInfo', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'account' }], outputs: [ { type: 'tuple', components: [ { type: 'address', name: 'rewardRecipient' }, { type: 'uint256', name: 'rewardPerToken' }, { type: 'uint256', name: 'rewardBalance' }, ], }, ], }, { name: 'getPendingRewards', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'account' }], outputs: [{ type: 'uint128' }], }, { name: 'Transfer', type: 'event', inputs: [ { type: 'address', name: 'from', indexed: true }, { type: 'address', name: 'to', indexed: true }, { type: 'uint256', name: 'amount' }, ], }, { name: 'Approval', type: 'event', inputs: [ { type: 'address', name: 'owner', indexed: true }, { type: 'address', name: 'spender', indexed: true }, { type: 'uint256', name: 'amount' }, ], }, { name: 'Mint', type: 'event', inputs: [ { type: 'address', name: 'to', indexed: true }, { type: 'uint256', name: 'amount' }, ], }, { name: 'Burn', type: 'event', inputs: [ { type: 'address', name: 'from', indexed: true }, { type: 'uint256', name: 'amount' }, ], }, { name: 'BurnBlocked', type: 'event', inputs: [ { type: 'address', name: 'from', indexed: true }, { type: 'uint256', name: 'amount' }, ], }, { name: 'TransferWithMemo', type: 'event', inputs: [ { type: 'address', name: 'from', indexed: true }, { type: 'address', name: 'to', indexed: true }, { type: 'uint256', name: 'amount' }, { type: 'bytes32', name: 'memo', indexed: true }, ], }, { name: 'TransferPolicyUpdate', type: 'event', inputs: [ { type: 'address', name: 'updater', indexed: true }, { type: 'uint64', name: 'newPolicyId', indexed: true }, ], }, { name: 'SupplyCapUpdate', type: 'event', inputs: [ { type: 'address', name: 'updater', indexed: true }, { type: 'uint256', name: 'newSupplyCap', indexed: true }, ], }, { name: 'PauseStateUpdate', type: 'event', inputs: [ { type: 'address', name: 'updater', indexed: true }, { type: 'bool', name: 'isPaused' }, ], }, { name: 'NextQuoteTokenSet', type: 'event', inputs: [ { type: 'address', name: 'updater', indexed: true }, { type: 'address', name: 'nextQuoteToken', indexed: true }, ], }, { name: 'QuoteTokenUpdate', type: 'event', inputs: [ { type: 'address', name: 'updater', indexed: true }, { type: 'address', name: 'newQuoteToken', indexed: true }, ], }, { name: 'RewardDistributed', type: 'event', inputs: [ { type: 'address', name: 'funder', indexed: true }, { type: 'uint256', name: 'amount' }, ], }, { name: 'RewardRecipientSet', type: 'event', inputs: [ { type: 'address', name: 'holder', indexed: true }, { type: 'address', name: 'recipient', indexed: true }, ], }, { name: 'InsufficientBalance', type: 'error', inputs: [ { type: 'uint256', name: 'available' }, { type: 'uint256', name: 'required' }, { type: 'address', name: 'token' }, ], }, { name: 'InsufficientAllowance', type: 'error', inputs: [] }, { name: 'SupplyCapExceeded', type: 'error', inputs: [] }, { name: 'InvalidSupplyCap', type: 'error', inputs: [] }, { name: 'InvalidPayload', type: 'error', inputs: [] }, { name: 'StringTooLong', type: 'error', inputs: [] }, { name: 'PolicyForbids', type: 'error', inputs: [] }, { name: 'InvalidRecipient', type: 'error', inputs: [] }, { name: 'ContractPaused', type: 'error', inputs: [] }, { name: 'InvalidCurrency', type: 'error', inputs: [] }, { name: 'InvalidQuoteToken', type: 'error', inputs: [] }, { name: 'TransfersDisabled', type: 'error', inputs: [] }, { name: 'InvalidAmount', type: 'error', inputs: [] }, { name: 'NoOptedInSupply', type: 'error', inputs: [] }, { name: 'Unauthorized', type: 'error', inputs: [] }, { name: 'ProtectedAddress', type: 'error', inputs: [] }, { name: 'InvalidToken', type: 'error', inputs: [] }, { name: 'Uninitialized', type: 'error', inputs: [] }, { name: 'InvalidTransferPolicyId', type: 'error', inputs: [] }, { name: 'PermitExpired', type: 'error', inputs: [] }, { name: 'InvalidSignature', type: 'error', inputs: [] }, { name: 'hasRole', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'account' }, { type: 'bytes32', name: 'role' }, ], outputs: [{ type: 'bool' }], }, { name: 'getRoleAdmin', type: 'function', stateMutability: 'view', inputs: [{ type: 'bytes32', name: 'role' }], outputs: [{ type: 'bytes32' }], }, { name: 'grantRole', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'bytes32', name: 'role' }, { type: 'address', name: 'account' }, ], outputs: [], }, { name: 'revokeRole', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'bytes32', name: 'role' }, { type: 'address', name: 'account' }, ], outputs: [], }, { name: 'renounceRole', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'bytes32', name: 'role' }], outputs: [], }, { name: 'setRoleAdmin', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'bytes32', name: 'role' }, { type: 'bytes32', name: 'adminRole' }, ], outputs: [], }, { name: 'RoleMembershipUpdated', type: 'event', inputs: [ { type: 'bytes32', name: 'role', indexed: true }, { type: 'address', name: 'account', indexed: true }, { type: 'address', name: 'sender', indexed: true }, { type: 'bool', name: 'hasRole' }, ], }, { name: 'RoleAdminUpdated', type: 'event', inputs: [ { type: 'bytes32', name: 'role', indexed: true }, { type: 'bytes32', name: 'newAdminRole', indexed: true }, { type: 'address', name: 'sender', indexed: true }, ], }, { name: 'Unauthorized', type: 'error', inputs: [] }, ] as const export const validatorConfigV2 = [ { name: 'getActiveValidators', type: 'function', stateMutability: 'view', inputs: [], outputs: [ { type: 'tuple[]', name: 'validators', components: [ { type: 'bytes32', name: 'publicKey' }, { type: 'address', name: 'validatorAddress' }, { type: 'string', name: 'ingress' }, { type: 'string', name: 'egress' }, { type: 'address', name: 'feeRecipient' }, { type: 'uint64', name: 'index' }, { type: 'uint64', name: 'addedAtHeight' }, { type: 'uint64', name: 'deactivatedAtHeight' }, ], }, ], }, { name: 'getInitializedAtHeight', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint64' }], }, { name: 'owner', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'address' }], }, { name: 'validatorCount', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint64' }], }, { name: 'validatorByIndex', type: 'function', stateMutability: 'view', inputs: [{ type: 'uint64', name: 'index' }], outputs: [ { type: 'tuple', components: [ { type: 'bytes32', name: 'publicKey' }, { type: 'address', name: 'validatorAddress' }, { type: 'string', name: 'ingress' }, { type: 'string', name: 'egress' }, { type: 'address', name: 'feeRecipient' }, { type: 'uint64', name: 'index' }, { type: 'uint64', name: 'addedAtHeight' }, { type: 'uint64', name: 'deactivatedAtHeight' }, ], }, ], }, { name: 'validatorByAddress', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'validatorAddress' }], outputs: [ { type: 'tuple', components: [ { type: 'bytes32', name: 'publicKey' }, { type: 'address', name: 'validatorAddress' }, { type: 'string', name: 'ingress' }, { type: 'string', name: 'egress' }, { type: 'address', name: 'feeRecipient' }, { type: 'uint64', name: 'index' }, { type: 'uint64', name: 'addedAtHeight' }, { type: 'uint64', name: 'deactivatedAtHeight' }, ], }, ], }, { name: 'validatorByPublicKey', type: 'function', stateMutability: 'view', inputs: [{ type: 'bytes32', name: 'publicKey' }], outputs: [ { type: 'tuple', components: [ { type: 'bytes32', name: 'publicKey' }, { type: 'address', name: 'validatorAddress' }, { type: 'string', name: 'ingress' }, { type: 'string', name: 'egress' }, { type: 'address', name: 'feeRecipient' }, { type: 'uint64', name: 'index' }, { type: 'uint64', name: 'addedAtHeight' }, { type: 'uint64', name: 'deactivatedAtHeight' }, ], }, ], }, { name: 'getNextNetworkIdentityRotationEpoch', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint64' }], }, { name: 'isInitialized', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'bool' }], }, { name: 'addValidator', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'validatorAddress' }, { type: 'bytes32', name: 'publicKey' }, { type: 'string', name: 'ingress' }, { type: 'string', name: 'egress' }, { type: 'address', name: 'feeRecipient' }, { type: 'bytes', name: 'signature' }, ], outputs: [{ type: 'uint64', name: 'index' }], }, { name: 'deactivateValidator', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'uint64', name: 'idx' }], outputs: [], }, { name: 'rotateValidator', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'uint64', name: 'idx' }, { type: 'bytes32', name: 'publicKey' }, { type: 'string', name: 'ingress' }, { type: 'string', name: 'egress' }, { type: 'bytes', name: 'signature' }, ], outputs: [], }, { name: 'setFeeRecipient', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'uint64', name: 'idx' }, { type: 'address', name: 'feeRecipient' }, ], outputs: [], }, { name: 'setIpAddresses', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'uint64', name: 'idx' }, { type: 'string', name: 'ingress' }, { type: 'string', name: 'egress' }, ], outputs: [], }, { name: 'transferValidatorOwnership', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'uint64', name: 'idx' }, { type: 'address', name: 'newAddress' }, ], outputs: [], }, { name: 'transferOwnership', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'address', name: 'newOwner' }], outputs: [], }, { name: 'setNetworkIdentityRotationEpoch', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'uint64', name: 'epoch' }], outputs: [], }, { name: 'migrateValidator', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'uint64', name: 'idx' }], outputs: [], }, { name: 'initializeIfMigrated', type: 'function', stateMutability: 'nonpayable', inputs: [], outputs: [], }, { name: 'ValidatorAdded', type: 'event', inputs: [ { type: 'uint64', name: 'index', indexed: true }, { type: 'address', name: 'validatorAddress', indexed: true }, { type: 'bytes32', name: 'publicKey' }, { type: 'string', name: 'ingress' }, { type: 'string', name: 'egress' }, { type: 'address', name: 'feeRecipient' }, ], }, { name: 'ValidatorDeactivated', type: 'event', inputs: [ { type: 'uint64', name: 'index', indexed: true }, { type: 'address', name: 'validatorAddress', indexed: true }, ], }, { name: 'ValidatorRotated', type: 'event', inputs: [ { type: 'uint64', name: 'index', indexed: true }, { type: 'uint64', name: 'deactivatedIndex', indexed: true }, { type: 'address', name: 'validatorAddress', indexed: true }, { type: 'bytes32', name: 'oldPublicKey' }, { type: 'bytes32', name: 'newPublicKey' }, { type: 'string', name: 'ingress' }, { type: 'string', name: 'egress' }, { type: 'address', name: 'caller' }, ], }, { name: 'FeeRecipientUpdated', type: 'event', inputs: [ { type: 'uint64', name: 'index', indexed: true }, { type: 'address', name: 'feeRecipient' }, { type: 'address', name: 'caller' }, ], }, { name: 'IpAddressesUpdated', type: 'event', inputs: [ { type: 'uint64', name: 'index', indexed: true }, { type: 'string', name: 'ingress' }, { type: 'string', name: 'egress' }, { type: 'address', name: 'caller' }, ], }, { name: 'ValidatorOwnershipTransferred', type: 'event', inputs: [ { type: 'uint64', name: 'index', indexed: true }, { type: 'address', name: 'oldAddress', indexed: true }, { type: 'address', name: 'newAddress', indexed: true }, { type: 'address', name: 'caller' }, ], }, { name: 'OwnershipTransferred', type: 'event', inputs: [ { type: 'address', name: 'oldOwner', indexed: true }, { type: 'address', name: 'newOwner', indexed: true }, ], }, { name: 'ValidatorMigrated', type: 'event', inputs: [ { type: 'uint64', name: 'index', indexed: true }, { type: 'address', name: 'validatorAddress', indexed: true }, { type: 'bytes32', name: 'publicKey' }, ], }, { name: 'NetworkIdentityRotationEpochSet', type: 'event', inputs: [ { type: 'uint64', name: 'previousEpoch', indexed: true }, { type: 'uint64', name: 'nextEpoch', indexed: true }, ], }, { name: 'Initialized', type: 'event', inputs: [{ type: 'uint64', name: 'height' }], }, { name: 'SkippedValidatorMigration', type: 'event', inputs: [ { type: 'uint64', name: 'index', indexed: true }, { type: 'address', name: 'validatorAddress', indexed: true }, { type: 'bytes32', name: 'publicKey' }, ], }, { name: 'AlreadyInitialized', type: 'error', inputs: [] }, { name: 'IngressAlreadyExists', type: 'error', inputs: [{ type: 'string', name: 'ingress' }], }, { name: 'EmptyV1ValidatorSet', type: 'error', inputs: [] }, { name: 'InvalidMigrationIndex', type: 'error', inputs: [] }, { name: 'InvalidOwner', type: 'error', inputs: [] }, { name: 'InvalidPublicKey', type: 'error', inputs: [] }, { name: 'InvalidSignature', type: 'error', inputs: [] }, { name: 'InvalidSignatureFormat', type: 'error', inputs: [] }, { name: 'InvalidValidatorAddress', type: 'error', inputs: [] }, { name: 'MigrationNotComplete', type: 'error', inputs: [] }, { name: 'NotInitialized', type: 'error', inputs: [] }, { name: 'NotIp', type: 'error', inputs: [ { type: 'string', name: 'input' }, { type: 'string', name: 'backtrace' }, ], }, { name: 'NotIpPort', type: 'error', inputs: [ { type: 'string', name: 'input' }, { type: 'string', name: 'backtrace' }, ], }, { name: 'PublicKeyAlreadyExists', type: 'error', inputs: [] }, { name: 'Unauthorized', type: 'error', inputs: [] }, { name: 'AddressAlreadyHasValidator', type: 'error', inputs: [] }, { name: 'ValidatorAlreadyDeactivated', type: 'error', inputs: [] }, { name: 'ValidatorNotFound', type: 'error', inputs: [] }, ] as const export const signatureVerifier = [ { name: 'recover', type: 'function', stateMutability: 'view', inputs: [ { type: 'bytes32', name: 'hash' }, { type: 'bytes', name: 'signature' }, ], outputs: [{ type: 'address', name: 'signer' }], }, { name: 'verify', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'signer' }, { type: 'bytes32', name: 'hash' }, { type: 'bytes', name: 'signature' }, ], outputs: [{ type: 'bool' }], }, { name: 'InvalidFormat', type: 'error', inputs: [] }, { name: 'InvalidSignature', type: 'error', inputs: [] }, ] as const export const stablecoinDex = [ { name: 'createPair', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'address', name: 'base' }], outputs: [{ type: 'bytes32', name: 'key' }], }, { name: 'place', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'token' }, { type: 'uint128', name: 'amount' }, { type: 'bool', name: 'isBid' }, { type: 'int16', name: 'tick' }, ], outputs: [{ type: 'uint128', name: 'orderId' }], }, { name: 'placeFlip', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'token' }, { type: 'uint128', name: 'amount' }, { type: 'bool', name: 'isBid' }, { type: 'int16', name: 'tick' }, { type: 'int16', name: 'flipTick' }, ], outputs: [{ type: 'uint128', name: 'orderId' }], }, { name: 'cancel', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'uint128', name: 'orderId' }], outputs: [], }, { name: 'cancelStaleOrder', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'uint128', name: 'orderId' }], outputs: [], }, { name: 'swapExactAmountIn', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'tokenIn' }, { type: 'address', name: 'tokenOut' }, { type: 'uint128', name: 'amountIn' }, { type: 'uint128', name: 'minAmountOut' }, ], outputs: [{ type: 'uint128', name: 'amountOut' }], }, { name: 'swapExactAmountOut', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'tokenIn' }, { type: 'address', name: 'tokenOut' }, { type: 'uint128', name: 'amountOut' }, { type: 'uint128', name: 'maxAmountIn' }, ], outputs: [{ type: 'uint128', name: 'amountIn' }], }, { name: 'quoteSwapExactAmountIn', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'tokenIn' }, { type: 'address', name: 'tokenOut' }, { type: 'uint128', name: 'amountIn' }, ], outputs: [{ type: 'uint128', name: 'amountOut' }], }, { name: 'quoteSwapExactAmountOut', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'tokenIn' }, { type: 'address', name: 'tokenOut' }, { type: 'uint128', name: 'amountOut' }, ], outputs: [{ type: 'uint128', name: 'amountIn' }], }, { name: 'balanceOf', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'user' }, { type: 'address', name: 'token' }, ], outputs: [{ type: 'uint128' }], }, { name: 'withdraw', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'token' }, { type: 'uint128', name: 'amount' }, ], outputs: [], }, { name: 'getOrder', type: 'function', stateMutability: 'view', inputs: [{ type: 'uint128', name: 'orderId' }], outputs: [ { type: 'tuple', components: [ { type: 'uint128', name: 'orderId' }, { type: 'address', name: 'maker' }, { type: 'bytes32', name: 'bookKey' }, { type: 'bool', name: 'isBid' }, { type: 'int16', name: 'tick' }, { type: 'uint128', name: 'amount' }, { type: 'uint128', name: 'remaining' }, { type: 'uint128', name: 'prev' }, { type: 'uint128', name: 'next' }, { type: 'bool', name: 'isFlip' }, { type: 'int16', name: 'flipTick' }, ], }, ], }, { name: 'getTickLevel', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'base' }, { type: 'int16', name: 'tick' }, { type: 'bool', name: 'isBid' }, ], outputs: [ { type: 'uint128', name: 'head' }, { type: 'uint128', name: 'tail' }, { type: 'uint128', name: 'totalLiquidity' }, ], }, { name: 'pairKey', type: 'function', stateMutability: 'pure', inputs: [ { type: 'address', name: 'tokenA' }, { type: 'address', name: 'tokenB' }, ], outputs: [{ type: 'bytes32' }], }, { name: 'nextOrderId', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint128' }], }, { name: 'books', type: 'function', stateMutability: 'view', inputs: [{ type: 'bytes32', name: 'pairKey' }], outputs: [ { type: 'tuple', components: [ { type: 'address', name: 'base' }, { type: 'address', name: 'quote' }, { type: 'int16', name: 'bestBidTick' }, { type: 'int16', name: 'bestAskTick' }, ], }, ], }, { name: 'MIN_TICK', type: 'function', stateMutability: 'pure', inputs: [], outputs: [{ type: 'int16' }], }, { name: 'MAX_TICK', type: 'function', stateMutability: 'pure', inputs: [], outputs: [{ type: 'int16' }], }, { name: 'TICK_SPACING', type: 'function', stateMutability: 'pure', inputs: [], outputs: [{ type: 'int16' }], }, { name: 'PRICE_SCALE', type: 'function', stateMutability: 'pure', inputs: [], outputs: [{ type: 'uint32' }], }, { name: 'MIN_ORDER_AMOUNT', type: 'function', stateMutability: 'pure', inputs: [], outputs: [{ type: 'uint128' }], }, { name: 'MIN_PRICE', type: 'function', stateMutability: 'pure', inputs: [], outputs: [{ type: 'uint32' }], }, { name: 'MAX_PRICE', type: 'function', stateMutability: 'pure', inputs: [], outputs: [{ type: 'uint32' }], }, { name: 'tickToPrice', type: 'function', stateMutability: 'pure', inputs: [{ type: 'int16', name: 'tick' }], outputs: [{ type: 'uint32', name: 'price' }], }, { name: 'priceToTick', type: 'function', stateMutability: 'pure', inputs: [{ type: 'uint32', name: 'price' }], outputs: [{ type: 'int16', name: 'tick' }], }, { name: 'PairCreated', type: 'event', inputs: [ { type: 'bytes32', name: 'key', indexed: true }, { type: 'address', name: 'base', indexed: true }, { type: 'address', name: 'quote', indexed: true }, ], }, { name: 'OrderPlaced', type: 'event', inputs: [ { type: 'uint128', name: 'orderId', indexed: true }, { type: 'address', name: 'maker', indexed: true }, { type: 'address', name: 'token', indexed: true }, { type: 'uint128', name: 'amount' }, { type: 'bool', name: 'isBid' }, { type: 'int16', name: 'tick' }, { type: 'bool', name: 'isFlipOrder' }, { type: 'int16', name: 'flipTick' }, ], }, { name: 'OrderFilled', type: 'event', inputs: [ { type: 'uint128', name: 'orderId', indexed: true }, { type: 'address', name: 'maker', indexed: true }, { type: 'address', name: 'taker', indexed: true }, { type: 'uint128', name: 'amountFilled' }, { type: 'bool', name: 'partialFill' }, ], }, { name: 'OrderCancelled', type: 'event', inputs: [{ type: 'uint128', name: 'orderId', indexed: true }], }, { name: 'Unauthorized', type: 'error', inputs: [] }, { name: 'PairDoesNotExist', type: 'error', inputs: [] }, { name: 'PairAlreadyExists', type: 'error', inputs: [] }, { name: 'OrderDoesNotExist', type: 'error', inputs: [] }, { name: 'IdenticalTokens', type: 'error', inputs: [] }, { name: 'InvalidToken', type: 'error', inputs: [] }, { name: 'TickOutOfBounds', type: 'error', inputs: [{ type: 'int16', name: 'tick' }], }, { name: 'InvalidTick', type: 'error', inputs: [] }, { name: 'InvalidFlipTick', type: 'error', inputs: [] }, { name: 'InsufficientBalance', type: 'error', inputs: [] }, { name: 'InsufficientLiquidity', type: 'error', inputs: [] }, { name: 'InsufficientOutput', type: 'error', inputs: [] }, { name: 'MaxInputExceeded', type: 'error', inputs: [] }, { name: 'BelowMinimumOrderSize', type: 'error', inputs: [{ type: 'uint128', name: 'amount' }], }, { name: 'InvalidBaseToken', type: 'error', inputs: [] }, { name: 'OrderNotStale', type: 'error', inputs: [] }, ] as const export const addressRegistry = [ { name: 'registerVirtualMaster', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'bytes32', name: 'salt' }], outputs: [{ type: 'bytes4', name: 'masterId' }], }, { name: 'getMaster', type: 'function', stateMutability: 'view', inputs: [{ type: 'bytes4', name: 'masterId' }], outputs: [{ type: 'address' }], }, { name: 'resolveRecipient', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'to' }], outputs: [{ type: 'address', name: 'effectiveRecipient' }], }, { name: 'resolveVirtualAddress', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'virtualAddr' }], outputs: [{ type: 'address', name: 'master' }], }, { name: 'isVirtualAddress', type: 'function', stateMutability: 'pure', inputs: [{ type: 'address', name: 'addr' }], outputs: [{ type: 'bool' }], }, { name: 'decodeVirtualAddress', type: 'function', stateMutability: 'pure', inputs: [{ type: 'address', name: 'addr' }], outputs: [ { type: 'bool', name: 'isVirtual' }, { type: 'bytes4', name: 'masterId' }, { type: 'bytes6', name: 'userTag' }, ], }, { name: 'MasterRegistered', type: 'event', inputs: [ { type: 'bytes4', name: 'masterId', indexed: true }, { type: 'address', name: 'masterAddress', indexed: true }, ], }, { name: 'MasterIdCollision', type: 'error', inputs: [{ type: 'address', name: 'master' }], }, { name: 'InvalidMasterAddress', type: 'error', inputs: [] }, { name: 'ProofOfWorkFailed', type: 'error', inputs: [] }, { name: 'VirtualAddressUnregistered', type: 'error', inputs: [] }, ] as const export const feeManager = [ { name: 'userTokens', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'user' }], outputs: [{ type: 'address' }], }, { name: 'validatorTokens', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'validator' }], outputs: [{ type: 'address' }], }, { name: 'setUserToken', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'address', name: 'token' }], outputs: [], }, { name: 'setValidatorToken', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'address', name: 'token' }], outputs: [], }, { name: 'distributeFees', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'validator' }, { type: 'address', name: 'token' }, ], outputs: [], }, { name: 'collectedFees', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'validator' }, { type: 'address', name: 'token' }, ], outputs: [{ type: 'uint256' }], }, { name: 'UserTokenSet', type: 'event', inputs: [ { type: 'address', name: 'user', indexed: true }, { type: 'address', name: 'token', indexed: true }, ], }, { name: 'ValidatorTokenSet', type: 'event', inputs: [ { type: 'address', name: 'validator', indexed: true }, { type: 'address', name: 'token', indexed: true }, ], }, { name: 'FeesDistributed', type: 'event', inputs: [ { type: 'address', name: 'validator', indexed: true }, { type: 'address', name: 'token', indexed: true }, { type: 'uint256', name: 'amount' }, ], }, { name: 'OnlyValidator', type: 'error', inputs: [] }, { name: 'OnlySystemContract', type: 'error', inputs: [] }, { name: 'InvalidToken', type: 'error', inputs: [] }, { name: 'PoolDoesNotExist', type: 'error', inputs: [] }, { name: 'InsufficientFeeTokenBalance', type: 'error', inputs: [] }, { name: 'InternalError', type: 'error', inputs: [] }, { name: 'CannotChangeWithinBlock', type: 'error', inputs: [] }, { name: 'CannotChangeWithPendingFees', type: 'error', inputs: [] }, { name: 'TokenPolicyForbids', type: 'error', inputs: [] }, ] as const export const feeAmm = [ { name: 'M', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }], }, { name: 'N', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }], }, { name: 'SCALE', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }], }, { name: 'MIN_LIQUIDITY', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }], }, { name: 'getPoolId', type: 'function', stateMutability: 'pure', inputs: [ { type: 'address', name: 'userToken' }, { type: 'address', name: 'validatorToken' }, ], outputs: [{ type: 'bytes32' }], }, { name: 'getPool', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'userToken' }, { type: 'address', name: 'validatorToken' }, ], outputs: [ { type: 'tuple', components: [ { type: 'uint128', name: 'reserveUserToken' }, { type: 'uint128', name: 'reserveValidatorToken' }, ], }, ], }, { name: 'pools', type: 'function', stateMutability: 'view', inputs: [{ type: 'bytes32', name: 'poolId' }], outputs: [ { type: 'tuple', components: [ { type: 'uint128', name: 'reserveUserToken' }, { type: 'uint128', name: 'reserveValidatorToken' }, ], }, ], }, { name: 'mint', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'userToken' }, { type: 'address', name: 'validatorToken' }, { type: 'uint256', name: 'amountValidatorToken' }, { type: 'address', name: 'to' }, ], outputs: [{ type: 'uint256', name: 'liquidity' }], }, { name: 'burn', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'userToken' }, { type: 'address', name: 'validatorToken' }, { type: 'uint256', name: 'liquidity' }, { type: 'address', name: 'to' }, ], outputs: [ { type: 'uint256', name: 'amountUserToken' }, { type: 'uint256', name: 'amountValidatorToken' }, ], }, { name: 'totalSupply', type: 'function', stateMutability: 'view', inputs: [{ type: 'bytes32', name: 'poolId' }], outputs: [{ type: 'uint256' }], }, { name: 'liquidityBalances', type: 'function', stateMutability: 'view', inputs: [ { type: 'bytes32', name: 'poolId' }, { type: 'address', name: 'user' }, ], outputs: [{ type: 'uint256' }], }, { name: 'rebalanceSwap', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'userToken' }, { type: 'address', name: 'validatorToken' }, { type: 'uint256', name: 'amountOut' }, { type: 'address', name: 'to' }, ], outputs: [{ type: 'uint256', name: 'amountIn' }], }, { name: 'Mint', type: 'event', inputs: [ { type: 'address', name: 'sender' }, { type: 'address', name: 'to', indexed: true }, { type: 'address', name: 'userToken', indexed: true }, { type: 'address', name: 'validatorToken', indexed: true }, { type: 'uint256', name: 'amountValidatorToken' }, { type: 'uint256', name: 'liquidity' }, ], }, { name: 'Burn', type: 'event', inputs: [ { type: 'address', name: 'sender', indexed: true }, { type: 'address', name: 'userToken', indexed: true }, { type: 'address', name: 'validatorToken', indexed: true }, { type: 'uint256', name: 'amountUserToken' }, { type: 'uint256', name: 'amountValidatorToken' }, { type: 'uint256', name: 'liquidity' }, { type: 'address', name: 'to' }, ], }, { name: 'RebalanceSwap', type: 'event', inputs: [ { type: 'address', name: 'userToken', indexed: true }, { type: 'address', name: 'validatorToken', indexed: true }, { type: 'address', name: 'swapper', indexed: true }, { type: 'uint256', name: 'amountIn' }, { type: 'uint256', name: 'amountOut' }, ], }, { name: 'IdenticalAddresses', type: 'error', inputs: [] }, { name: 'InvalidToken', type: 'error', inputs: [] }, { name: 'InsufficientLiquidity', type: 'error', inputs: [] }, { name: 'InsufficientReserves', type: 'error', inputs: [] }, { name: 'InvalidAmount', type: 'error', inputs: [] }, { name: 'DivisionByZero', type: 'error', inputs: [] }, { name: 'InvalidSwapCalculation', type: 'error', inputs: [] }, ] as const export const accountKeychain = [ { name: 'authorizeKey', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'keyId' }, { type: 'uint8', name: 'signatureType' }, { type: 'uint64', name: 'expiry' }, { type: 'bool', name: 'enforceLimits' }, { type: 'tuple[]', name: 'limits', components: [ { type: 'address', name: 'token' }, { type: 'uint256', name: 'amount' }, ], }, ], outputs: [], }, { name: 'authorizeKey', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'keyId' }, { type: 'uint8', name: 'signatureType' }, { type: 'tuple', name: 'config', components: [ { type: 'uint64', name: 'expiry' }, { type: 'bool', name: 'enforceLimits' }, { type: 'tuple[]', name: 'limits', components: [ { type: 'address', name: 'token' }, { type: 'uint256', name: 'amount' }, { type: 'uint64', name: 'period' }, ], }, { type: 'bool', name: 'allowAnyCalls' }, { type: 'tuple[]', name: 'allowedCalls', components: [ { type: 'address', name: 'target' }, { type: 'tuple[]', name: 'selectorRules', components: [ { type: 'bytes4', name: 'selector' }, { type: 'address[]', name: 'recipients' }, ], }, ], }, ], }, ], outputs: [], }, { name: 'revokeKey', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'address', name: 'keyId' }], outputs: [], }, { name: 'updateSpendingLimit', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'keyId' }, { type: 'address', name: 'token' }, { type: 'uint256', name: 'newLimit' }, ], outputs: [], }, { name: 'setAllowedCalls', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'keyId' }, { type: 'tuple[]', name: 'scopes', components: [ { type: 'address', name: 'target' }, { type: 'tuple[]', name: 'selectorRules', components: [ { type: 'bytes4', name: 'selector' }, { type: 'address[]', name: 'recipients' }, ], }, ], }, ], outputs: [], }, { name: 'removeAllowedCalls', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'keyId' }, { type: 'address', name: 'target' }, ], outputs: [], }, { name: 'getKey', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'account' }, { type: 'address', name: 'keyId' }, ], outputs: [ { type: 'tuple', components: [ { type: 'uint8', name: 'signatureType' }, { type: 'address', name: 'keyId' }, { type: 'uint64', name: 'expiry' }, { type: 'bool', name: 'enforceLimits' }, { type: 'bool', name: 'isRevoked' }, ], }, ], }, { name: 'getRemainingLimit', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'account' }, { type: 'address', name: 'keyId' }, { type: 'address', name: 'token' }, ], outputs: [{ type: 'uint256', name: 'remaining' }], }, { name: 'getRemainingLimitWithPeriod', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'account' }, { type: 'address', name: 'keyId' }, { type: 'address', name: 'token' }, ], outputs: [ { type: 'uint256', name: 'remaining' }, { type: 'uint64', name: 'periodEnd' }, ], }, { name: 'getAllowedCalls', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'account' }, { type: 'address', name: 'keyId' }, ], outputs: [ { type: 'bool', name: 'isScoped' }, { type: 'tuple[]', name: 'scopes', components: [ { type: 'address', name: 'target' }, { type: 'tuple[]', name: 'selectorRules', components: [ { type: 'bytes4', name: 'selector' }, { type: 'address[]', name: 'recipients' }, ], }, ], }, ], }, { name: 'getTransactionKey', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'address' }], }, { name: 'KeyAuthorized', type: 'event', inputs: [ { type: 'address', name: 'account', indexed: true }, { type: 'address', name: 'publicKey', indexed: true }, { type: 'uint8', name: 'signatureType' }, { type: 'uint64', name: 'expiry' }, ], }, { name: 'KeyRevoked', type: 'event', inputs: [ { type: 'address', name: 'account', indexed: true }, { type: 'address', name: 'publicKey', indexed: true }, ], }, { name: 'SpendingLimitUpdated', type: 'event', inputs: [ { type: 'address', name: 'account', indexed: true }, { type: 'address', name: 'publicKey', indexed: true }, { type: 'address', name: 'token', indexed: true }, { type: 'uint256', name: 'newLimit' }, ], }, { name: 'AccessKeySpend', type: 'event', inputs: [ { type: 'address', name: 'account', indexed: true }, { type: 'address', name: 'publicKey', indexed: true }, { type: 'address', name: 'token', indexed: true }, { type: 'uint256', name: 'amount' }, { type: 'uint256', name: 'remainingLimit' }, ], }, { name: 'UnauthorizedCaller', type: 'error', inputs: [] }, { name: 'KeyAlreadyExists', type: 'error', inputs: [] }, { name: 'KeyNotFound', type: 'error', inputs: [] }, { name: 'KeyExpired', type: 'error', inputs: [] }, { name: 'SpendingLimitExceeded', type: 'error', inputs: [] }, { name: 'InvalidSpendingLimit', type: 'error', inputs: [] }, { name: 'InvalidSignatureType', type: 'error', inputs: [] }, { name: 'ZeroPublicKey', type: 'error', inputs: [] }, { name: 'ExpiryInPast', type: 'error', inputs: [] }, { name: 'KeyAlreadyRevoked', type: 'error', inputs: [] }, { name: 'SignatureTypeMismatch', type: 'error', inputs: [ { type: 'uint8', name: 'expected' }, { type: 'uint8', name: 'actual' }, ], }, { name: 'CallNotAllowed', type: 'error', inputs: [] }, { name: 'InvalidCallScope', type: 'error', inputs: [] }, { name: 'LegacyAuthorizeKeySelectorChanged', type: 'error', inputs: [{ type: 'bytes4', name: 'newSelector' }], }, ] as const export const nonce = [ { name: 'getNonce', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'account' }, { type: 'uint256', name: 'nonceKey' }, ], outputs: [{ type: 'uint64', name: 'nonce' }], }, { name: 'NonceIncremented', type: 'event', inputs: [ { type: 'address', name: 'account', indexed: true }, { type: 'uint256', name: 'nonceKey', indexed: true }, { type: 'uint64', name: 'newNonce' }, ], }, { name: 'ProtocolNonceNotSupported', type: 'error', inputs: [] }, { name: 'InvalidNonceKey', type: 'error', inputs: [] }, { name: 'NonceOverflow', type: 'error', inputs: [] }, { name: 'ExpiringNonceReplay', type: 'error', inputs: [] }, { name: 'ExpiringNonceSetFull', type: 'error', inputs: [] }, { name: 'InvalidExpiringNonceExpiry', type: 'error', inputs: [] }, ] as const export const tip20Factory = [ { name: 'createToken', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'string', name: 'name' }, { type: 'string', name: 'symbol' }, { type: 'string', name: 'currency' }, { type: 'address', name: 'quoteToken' }, { type: 'address', name: 'admin' }, { type: 'bytes32', name: 'salt' }, ], outputs: [{ type: 'address' }], }, { name: 'isTIP20', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'token' }], outputs: [{ type: 'bool' }], }, { name: 'getTokenAddress', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'sender' }, { type: 'bytes32', name: 'salt' }, ], outputs: [{ type: 'address' }], }, { name: 'TokenCreated', type: 'event', inputs: [ { type: 'address', name: 'token', indexed: true }, { type: 'string', name: 'name' }, { type: 'string', name: 'symbol' }, { type: 'string', name: 'currency' }, { type: 'address', name: 'quoteToken' }, { type: 'address', name: 'admin' }, { type: 'bytes32', name: 'salt' }, ], }, { name: 'AddressReserved', type: 'error', inputs: [] }, { name: 'AddressNotReserved', type: 'error', inputs: [] }, { name: 'InvalidQuoteToken', type: 'error', inputs: [] }, { name: 'TokenAlreadyExists', type: 'error', inputs: [{ type: 'address', name: 'token' }], }, ] as const export const tip403Registry = [ { name: 'policyIdCounter', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint64' }], }, { name: 'policyExists', type: 'function', stateMutability: 'view', inputs: [{ type: 'uint64', name: 'policyId' }], outputs: [{ type: 'bool' }], }, { name: 'policyData', type: 'function', stateMutability: 'view', inputs: [{ type: 'uint64', name: 'policyId' }], outputs: [ { type: 'uint8', name: 'policyType' }, { type: 'address', name: 'admin' }, ], }, { name: 'isAuthorized', type: 'function', stateMutability: 'view', inputs: [ { type: 'uint64', name: 'policyId' }, { type: 'address', name: 'user' }, ], outputs: [{ type: 'bool' }], }, { name: 'isAuthorizedSender', type: 'function', stateMutability: 'view', inputs: [ { type: 'uint64', name: 'policyId' }, { type: 'address', name: 'user' }, ], outputs: [{ type: 'bool' }], }, { name: 'isAuthorizedRecipient', type: 'function', stateMutability: 'view', inputs: [ { type: 'uint64', name: 'policyId' }, { type: 'address', name: 'user' }, ], outputs: [{ type: 'bool' }], }, { name: 'isAuthorizedMintRecipient', type: 'function', stateMutability: 'view', inputs: [ { type: 'uint64', name: 'policyId' }, { type: 'address', name: 'user' }, ], outputs: [{ type: 'bool' }], }, { name: 'compoundPolicyData', type: 'function', stateMutability: 'view', inputs: [{ type: 'uint64', name: 'policyId' }], outputs: [ { type: 'uint64', name: 'senderPolicyId' }, { type: 'uint64', name: 'recipientPolicyId' }, { type: 'uint64', name: 'mintRecipientPolicyId' }, ], }, { name: 'createPolicy', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'admin' }, { type: 'uint8', name: 'policyType' }, ], outputs: [{ type: 'uint64' }], }, { name: 'createPolicyWithAccounts', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'admin' }, { type: 'uint8', name: 'policyType' }, { type: 'address[]', name: 'accounts' }, ], outputs: [{ type: 'uint64' }], }, { name: 'setPolicyAdmin', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'uint64', name: 'policyId' }, { type: 'address', name: 'admin' }, ], outputs: [], }, { name: 'modifyPolicyWhitelist', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'uint64', name: 'policyId' }, { type: 'address', name: 'account' }, { type: 'bool', name: 'allowed' }, ], outputs: [], }, { name: 'modifyPolicyBlacklist', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'uint64', name: 'policyId' }, { type: 'address', name: 'account' }, { type: 'bool', name: 'restricted' }, ], outputs: [], }, { name: 'createCompoundPolicy', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'uint64', name: 'senderPolicyId' }, { type: 'uint64', name: 'recipientPolicyId' }, { type: 'uint64', name: 'mintRecipientPolicyId' }, ], outputs: [{ type: 'uint64' }], }, { name: 'PolicyAdminUpdated', type: 'event', inputs: [ { type: 'uint64', name: 'policyId', indexed: true }, { type: 'address', name: 'updater', indexed: true }, { type: 'address', name: 'admin', indexed: true }, ], }, { name: 'PolicyCreated', type: 'event', inputs: [ { type: 'uint64', name: 'policyId', indexed: true }, { type: 'address', name: 'updater', indexed: true }, { type: 'uint8', name: 'policyType' }, ], }, { name: 'WhitelistUpdated', type: 'event', inputs: [ { type: 'uint64', name: 'policyId', indexed: true }, { type: 'address', name: 'updater', indexed: true }, { type: 'address', name: 'account', indexed: true }, { type: 'bool', name: 'allowed' }, ], }, { name: 'BlacklistUpdated', type: 'event', inputs: [ { type: 'uint64', name: 'policyId', indexed: true }, { type: 'address', name: 'updater', indexed: true }, { type: 'address', name: 'account', indexed: true }, { type: 'bool', name: 'restricted' }, ], }, { name: 'CompoundPolicyCreated', type: 'event', inputs: [ { type: 'uint64', name: 'policyId', indexed: true }, { type: 'address', name: 'creator', indexed: true }, { type: 'uint64', name: 'senderPolicyId' }, { type: 'uint64', name: 'recipientPolicyId' }, { type: 'uint64', name: 'mintRecipientPolicyId' }, ], }, { name: 'Unauthorized', type: 'error', inputs: [] }, { name: 'PolicyNotFound', type: 'error', inputs: [] }, { name: 'PolicyNotSimple', type: 'error', inputs: [] }, { name: 'InvalidPolicyType', type: 'error', inputs: [] }, { name: 'IncompatiblePolicyType', type: 'error', inputs: [] }, { name: 'VirtualAddressNotAllowed', type: 'error', inputs: [] }, ] as const export const validatorConfig = [ { name: 'getValidators', type: 'function', stateMutability: 'view', inputs: [], outputs: [ { type: 'tuple[]', name: 'validators', components: [ { type: 'bytes32', name: 'publicKey' }, { type: 'bool', name: 'active' }, { type: 'uint64', name: 'index' }, { type: 'address', name: 'validatorAddress' }, { type: 'string', name: 'inboundAddress' }, { type: 'string', name: 'outboundAddress' }, ], }, ], }, { name: 'addValidator', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'newValidatorAddress' }, { type: 'bytes32', name: 'publicKey' }, { type: 'bool', name: 'active' }, { type: 'string', name: 'inboundAddress' }, { type: 'string', name: 'outboundAddress' }, ], outputs: [], }, { name: 'updateValidator', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'newValidatorAddress' }, { type: 'bytes32', name: 'publicKey' }, { type: 'string', name: 'inboundAddress' }, { type: 'string', name: 'outboundAddress' }, ], outputs: [], }, { name: 'changeValidatorStatus', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'validator' }, { type: 'bool', name: 'active' }, ], outputs: [], }, { name: 'changeValidatorStatusByIndex', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'uint64', name: 'index' }, { type: 'bool', name: 'active' }, ], outputs: [], }, { name: 'owner', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'address' }], }, { name: 'changeOwner', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'address', name: 'newOwner' }], outputs: [], }, { name: 'getNextFullDkgCeremony', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint64' }], }, { name: 'setNextFullDkgCeremony', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'uint64', name: 'epoch' }], outputs: [], }, { name: 'validatorsArray', type: 'function', stateMutability: 'view', inputs: [{ type: 'uint256', name: 'index' }], outputs: [{ type: 'address' }], }, { name: 'validators', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'validator' }], outputs: [ { type: 'tuple', components: [ { type: 'bytes32', name: 'publicKey' }, { type: 'bool', name: 'active' }, { type: 'uint64', name: 'index' }, { type: 'address', name: 'validatorAddress' }, { type: 'string', name: 'inboundAddress' }, { type: 'string', name: 'outboundAddress' }, ], }, ], }, { name: 'validatorCount', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint64' }], }, { name: 'Unauthorized', type: 'error', inputs: [] }, { name: 'ValidatorAlreadyExists', type: 'error', inputs: [] }, { name: 'ValidatorNotFound', type: 'error', inputs: [] }, { name: 'InvalidPublicKey', type: 'error', inputs: [] }, { name: 'NotHostPort', type: 'error', inputs: [ { type: 'string', name: 'field' }, { type: 'string', name: 'input' }, { type: 'string', name: 'backtrace' }, ], }, { name: 'NotIpPort', type: 'error', inputs: [ { type: 'string', name: 'field' }, { type: 'string', name: 'input' }, { type: 'string', name: 'backtrace' }, ], }, ] as const export const abis = [ ...tip20, ...validatorConfigV2, ...signatureVerifier, ...stablecoinDex, ...addressRegistry, ...feeManager, ...feeAmm, ...accountKeychain, ...nonce, ...tip20Factory, ...tip403Registry, ...validatorConfig, ] as const