// Generated with `pnpm gen:abis`. Do not modify manually. 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: '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' }, ], }, ], }, ], }, { type: 'bytes32', name: 'witness' }, ], outputs: [], }, { name: 'authorizeAdminKey', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'keyId' }, { type: 'uint8', name: 'signatureType' }, { type: 'bytes32', name: 'witness' }, ], outputs: [], }, { name: 'burnKeyAuthorizationWitness', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'bytes32', name: 'witness' }], 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: 'isKeyAuthorizationWitnessBurned', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'account' }, { type: 'bytes32', name: 'witness' }, ], outputs: [{ type: 'bool' }], }, { name: 'isAdminKey', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'account' }, { type: 'address', name: 'keyId' }, ], outputs: [{ type: 'bool' }], }, { 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: 'AdminKeyAuthorized', type: 'event', inputs: [ { type: 'address', name: 'account', indexed: true }, { type: 'address', name: 'publicKey', indexed: true }, ], }, { 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: 'KeyAuthorizationWitness', type: 'event', inputs: [ { type: 'address', name: 'account', indexed: true }, { type: 'bytes32', name: 'witness', indexed: true }, ], }, { name: 'KeyAuthorizationWitnessBurned', type: 'event', inputs: [ { type: 'address', name: 'account', indexed: true }, { type: 'bytes32', name: 'witness', indexed: true }, ], }, { 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: 'InvalidKeyId', type: 'error', inputs: [] }, { name: 'InvalidKeyAuthorizationWitness', type: 'error', inputs: [] }, { name: 'KeyAuthorizationWitnessAlreadyBurned', type: 'error', inputs: [] }, { name: 'LegacyAuthorizeKeySelectorChanged', type: 'error', inputs: [{ type: 'bytes4', name: 'newSelector' }], }, ] 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: 'isImplicitlyApproved', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'addr' }], outputs: [{ type: 'bool' }], }, { 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 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 receivePolicyGuard = [ { name: 'balanceOf', type: 'function', stateMutability: 'view', inputs: [{ type: 'bytes', name: 'receipt' }], outputs: [{ type: 'uint256', name: 'amount' }], }, { name: 'claim', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'to' }, { type: 'bytes', name: 'receipt' }, ], outputs: [], }, { name: 'burnBlockedReceipt', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'bytes', name: 'receipt' }], outputs: [], }, { name: 'TransferBlocked', type: 'event', inputs: [ { type: 'address', name: 'token', indexed: true }, { type: 'address', name: 'receiver', indexed: true }, { type: 'uint64', name: 'blockedNonce', indexed: true }, { type: 'uint256', name: 'amount' }, { type: 'uint8', name: 'receiptVersion' }, { type: 'bytes', name: 'receipt' }, ], }, { name: 'ReceiptClaimed', type: 'event', inputs: [ { type: 'address', name: 'token', indexed: true }, { type: 'address', name: 'receiver', indexed: true }, { type: 'uint64', name: 'blockedNonce', indexed: true }, { type: 'uint64', name: 'blockedAt' }, { type: 'uint8', name: 'receiptVersion' }, { type: 'address', name: 'originator' }, { type: 'address', name: 'recipient' }, { type: 'address', name: 'recoveryAuthority' }, { type: 'address', name: 'caller' }, { type: 'address', name: 'to' }, { type: 'uint256', name: 'amount' }, ], }, { name: 'ReceiptBurned', type: 'event', inputs: [ { type: 'address', name: 'token', indexed: true }, { type: 'address', name: 'receiver', indexed: true }, { type: 'uint64', name: 'blockedNonce', indexed: true }, { type: 'uint64', name: 'blockedAt' }, { type: 'uint8', name: 'receiptVersion' }, { type: 'address', name: 'originator' }, { type: 'address', name: 'recipient' }, { type: 'address', name: 'recoveryAuthority' }, { type: 'address', name: 'caller' }, { type: 'uint256', name: 'amount' }, ], }, { name: 'InvalidReceipt', type: 'error', inputs: [] }, { name: 'InvalidClaimAddress', type: 'error', inputs: [] }, { name: 'UnauthorizedClaimer', type: 'error', inputs: [] }, { name: 'AddressReserved', 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: 'verifyKeychain', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'account' }, { type: 'bytes32', name: 'hash' }, { type: 'bytes', name: 'signature' }, ], outputs: [{ type: 'bool' }], }, { name: 'verifyKeychainAdmin', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'account' }, { 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: 'OrderFlipped', 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: 'int16', name: 'flipTick' }, ], }, { name: 'FlipFailed', type: 'event', inputs: [ { type: 'uint128', name: 'orderId', indexed: true }, { type: 'address', name: 'maker', indexed: true }, { type: 'bytes4', name: 'reason' }, ], }, { 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 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: 'pure', 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: 'logoURI', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'string' }], }, { name: 'setLogoURI', type: 'function', stateMutability: 'nonpayable', inputs: [{ type: 'string', name: 'newLogoURI' }], outputs: [], }, { 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: 'LogoURIUpdated', type: 'event', inputs: [ { type: 'address', name: 'updater', indexed: true }, { type: 'string', name: 'newLogoURI' }, ], }, { 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: '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: '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: 'LogoURITooLong', type: 'error', inputs: [] }, { name: 'InvalidLogoURI', 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 tip20ChannelReserve = [ { name: 'CLOSE_GRACE_PERIOD', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint64' }], }, { name: 'VOUCHER_TYPEHASH', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'bytes32' }], }, { name: 'open', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'address', name: 'payee' }, { type: 'address', name: 'operator' }, { type: 'address', name: 'token' }, { type: 'uint96', name: 'deposit' }, { type: 'bytes32', name: 'salt' }, { type: 'address', name: 'authorizedSigner' }, ], outputs: [{ type: 'bytes32', name: 'channelId' }], }, { name: 'settle', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'tuple', name: 'descriptor', components: [ { type: 'address', name: 'payer' }, { type: 'address', name: 'payee' }, { type: 'address', name: 'operator' }, { type: 'address', name: 'token' }, { type: 'bytes32', name: 'salt' }, { type: 'address', name: 'authorizedSigner' }, { type: 'bytes32', name: 'expiringNonceHash' }, ], }, { type: 'uint96', name: 'cumulativeAmount' }, { type: 'bytes', name: 'signature' }, ], outputs: [], }, { name: 'topUp', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'tuple', name: 'descriptor', components: [ { type: 'address', name: 'payer' }, { type: 'address', name: 'payee' }, { type: 'address', name: 'operator' }, { type: 'address', name: 'token' }, { type: 'bytes32', name: 'salt' }, { type: 'address', name: 'authorizedSigner' }, { type: 'bytes32', name: 'expiringNonceHash' }, ], }, { type: 'uint96', name: 'additionalDeposit' }, ], outputs: [], }, { name: 'close', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'tuple', name: 'descriptor', components: [ { type: 'address', name: 'payer' }, { type: 'address', name: 'payee' }, { type: 'address', name: 'operator' }, { type: 'address', name: 'token' }, { type: 'bytes32', name: 'salt' }, { type: 'address', name: 'authorizedSigner' }, { type: 'bytes32', name: 'expiringNonceHash' }, ], }, { type: 'uint96', name: 'cumulativeAmount' }, { type: 'uint96', name: 'captureAmount' }, { type: 'bytes', name: 'signature' }, ], outputs: [], }, { name: 'requestClose', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'tuple', name: 'descriptor', components: [ { type: 'address', name: 'payer' }, { type: 'address', name: 'payee' }, { type: 'address', name: 'operator' }, { type: 'address', name: 'token' }, { type: 'bytes32', name: 'salt' }, { type: 'address', name: 'authorizedSigner' }, { type: 'bytes32', name: 'expiringNonceHash' }, ], }, ], outputs: [], }, { name: 'withdraw', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'tuple', name: 'descriptor', components: [ { type: 'address', name: 'payer' }, { type: 'address', name: 'payee' }, { type: 'address', name: 'operator' }, { type: 'address', name: 'token' }, { type: 'bytes32', name: 'salt' }, { type: 'address', name: 'authorizedSigner' }, { type: 'bytes32', name: 'expiringNonceHash' }, ], }, ], outputs: [], }, { name: 'getChannel', type: 'function', stateMutability: 'view', inputs: [ { type: 'tuple', name: 'descriptor', components: [ { type: 'address', name: 'payer' }, { type: 'address', name: 'payee' }, { type: 'address', name: 'operator' }, { type: 'address', name: 'token' }, { type: 'bytes32', name: 'salt' }, { type: 'address', name: 'authorizedSigner' }, { type: 'bytes32', name: 'expiringNonceHash' }, ], }, ], outputs: [ { type: 'tuple', components: [ { type: 'tuple', name: 'descriptor', components: [ { type: 'address', name: 'payer' }, { type: 'address', name: 'payee' }, { type: 'address', name: 'operator' }, { type: 'address', name: 'token' }, { type: 'bytes32', name: 'salt' }, { type: 'address', name: 'authorizedSigner' }, { type: 'bytes32', name: 'expiringNonceHash' }, ], }, { type: 'tuple', name: 'state', components: [ { type: 'uint96', name: 'settled' }, { type: 'uint96', name: 'deposit' }, { type: 'uint32', name: 'closeRequestedAt' }, ], }, ], }, ], }, { name: 'getChannelState', type: 'function', stateMutability: 'view', inputs: [{ type: 'bytes32', name: 'channelId' }], outputs: [ { type: 'tuple', components: [ { type: 'uint96', name: 'settled' }, { type: 'uint96', name: 'deposit' }, { type: 'uint32', name: 'closeRequestedAt' }, ], }, ], }, { name: 'getChannelStatesBatch', type: 'function', stateMutability: 'view', inputs: [{ type: 'bytes32[]', name: 'channelIds' }], outputs: [ { type: 'tuple[]', components: [ { type: 'uint96', name: 'settled' }, { type: 'uint96', name: 'deposit' }, { type: 'uint32', name: 'closeRequestedAt' }, ], }, ], }, { name: 'computeChannelId', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'payer' }, { type: 'address', name: 'payee' }, { type: 'address', name: 'operator' }, { type: 'address', name: 'token' }, { type: 'bytes32', name: 'salt' }, { type: 'address', name: 'authorizedSigner' }, { type: 'bytes32', name: 'expiringNonceHash' }, ], outputs: [{ type: 'bytes32' }], }, { name: 'getVoucherDigest', type: 'function', stateMutability: 'view', inputs: [ { type: 'bytes32', name: 'channelId' }, { type: 'uint96', name: 'cumulativeAmount' }, ], outputs: [{ type: 'bytes32' }], }, { name: 'domainSeparator', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ type: 'bytes32' }], }, { name: 'ChannelOpened', type: 'event', inputs: [ { type: 'bytes32', name: 'channelId', indexed: true }, { type: 'address', name: 'payer', indexed: true }, { type: 'address', name: 'payee', indexed: true }, { type: 'address', name: 'operator' }, { type: 'address', name: 'token' }, { type: 'address', name: 'authorizedSigner' }, { type: 'bytes32', name: 'salt' }, { type: 'bytes32', name: 'expiringNonceHash' }, { type: 'uint96', name: 'deposit' }, ], }, { name: 'Settled', type: 'event', inputs: [ { type: 'bytes32', name: 'channelId', indexed: true }, { type: 'address', name: 'payer', indexed: true }, { type: 'address', name: 'payee', indexed: true }, { type: 'uint96', name: 'cumulativeAmount' }, { type: 'uint96', name: 'deltaPaid' }, { type: 'uint96', name: 'newSettled' }, ], }, { name: 'TopUp', type: 'event', inputs: [ { type: 'bytes32', name: 'channelId', indexed: true }, { type: 'address', name: 'payer', indexed: true }, { type: 'address', name: 'payee', indexed: true }, { type: 'uint96', name: 'additionalDeposit' }, { type: 'uint96', name: 'newDeposit' }, ], }, { name: 'CloseRequested', type: 'event', inputs: [ { type: 'bytes32', name: 'channelId', indexed: true }, { type: 'address', name: 'payer', indexed: true }, { type: 'address', name: 'payee', indexed: true }, { type: 'uint256', name: 'closeGraceEnd' }, ], }, { name: 'ChannelClosed', type: 'event', inputs: [ { type: 'bytes32', name: 'channelId', indexed: true }, { type: 'address', name: 'payer', indexed: true }, { type: 'address', name: 'payee', indexed: true }, { type: 'uint96', name: 'settledToPayee' }, { type: 'uint96', name: 'refundedToPayer' }, ], }, { name: 'CloseRequestCancelled', type: 'event', inputs: [ { type: 'bytes32', name: 'channelId', indexed: true }, { type: 'address', name: 'payer', indexed: true }, { type: 'address', name: 'payee', indexed: true }, ], }, { name: 'ChannelAlreadyExists', type: 'error', inputs: [] }, { name: 'ChannelNotFound', type: 'error', inputs: [] }, { name: 'NotPayer', type: 'error', inputs: [] }, { name: 'NotPayeeOrOperator', type: 'error', inputs: [] }, { name: 'InvalidPayee', type: 'error', inputs: [] }, { name: 'ZeroDeposit', type: 'error', inputs: [] }, { name: 'ExpiringNonceHashNotSet', type: 'error', inputs: [] }, { name: 'InvalidSignature', type: 'error', inputs: [] }, { name: 'AmountExceedsDeposit', type: 'error', inputs: [] }, { name: 'AmountNotIncreasing', type: 'error', inputs: [] }, { name: 'CaptureAmountInvalid', type: 'error', inputs: [] }, { name: 'CloseNotReady', type: 'error', inputs: [] }, { name: 'DepositOverflow', 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: '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' }, { type: 'string', name: 'logoURI' }, ], outputs: [{ type: 'address' }], }, { name: 'isTIP20', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'token' }], outputs: [{ type: 'bool' }], }, { name: 'getTokenAddress', type: 'function', stateMutability: 'pure', 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: 'receivePolicy', type: 'function', stateMutability: 'view', inputs: [{ type: 'address', name: 'account' }], outputs: [ { type: 'bool', name: 'hasReceivePolicy' }, { type: 'uint64', name: 'senderPolicyId' }, { type: 'uint8', name: 'senderPolicyType' }, { type: 'uint64', name: 'tokenFilterId' }, { type: 'uint8', name: 'tokenFilterType' }, { type: 'address', name: 'recoveryAuthority' }, ], }, { name: 'validateReceivePolicy', type: 'function', stateMutability: 'view', inputs: [ { type: 'address', name: 'token' }, { type: 'address', name: 'sender' }, { type: 'address', name: 'receiver' }, ], outputs: [ { type: 'bool', name: 'authorized' }, { type: 'uint8', name: 'blockedReason' }, ], }, { 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: 'setReceivePolicy', type: 'function', stateMutability: 'nonpayable', inputs: [ { type: 'uint64', name: 'senderPolicyId' }, { type: 'uint64', name: 'tokenFilterId' }, { type: 'address', name: 'recoveryAuthority' }, ], outputs: [], }, { 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: 'ReceivePolicyUpdated', type: 'event', inputs: [ { type: 'address', name: 'account', indexed: true }, { type: 'uint64', name: 'senderPolicyId' }, { type: 'uint64', name: 'tokenFilterId' }, { type: 'address', name: 'recoveryAuthority' }, ], }, { 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: [] }, { name: 'InvalidReceivePolicyType', type: 'error', inputs: [] }, { name: 'InvalidRecoveryAuthority', 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: 'InvalidToken', type: 'error', inputs: [] }, { name: 'InsufficientFeeTokenBalance', type: 'error', inputs: [] }, { name: 'CannotChangeWithinBlock', 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 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 storageCredits = [ { type: 'error', name: 'DelegateCallNotAllowed', inputs: [], }, { type: 'error', name: 'InvalidMode', inputs: [], }, { type: 'function', name: 'balanceOf', stateMutability: 'view', inputs: [{ name: 'account', type: 'address' }], outputs: [{ type: 'uint64' }], }, { type: 'function', name: 'modeOf', stateMutability: 'view', inputs: [{ name: 'account', type: 'address' }], outputs: [{ type: 'uint8' }], }, { type: 'function', name: 'budgetOf', stateMutability: 'view', inputs: [{ name: 'account', type: 'address' }], outputs: [{ type: 'uint64' }], }, { type: 'function', name: 'setMode', stateMutability: 'nonpayable', inputs: [{ name: 'newMode', type: 'uint8' }], outputs: [], }, { type: 'function', name: 'setBudget', stateMutability: 'nonpayable', inputs: [{ name: 'creditBudget', type: 'uint64' }], outputs: [], }, ] 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 abis = [ ...accountKeychain, ...addressRegistry, ...nonce, ...receivePolicyGuard, ...signatureVerifier, ...stablecoinDex, ...storageCredits, ...tip20, ...tip20ChannelReserve, ...tip20Factory, ...tip403Registry, ...feeManager, ...feeAmm, ...validatorConfig, ...validatorConfigV2, ] as const // Earn source: tempoxyz/earn at 4794b0ce4f611af7afe87587522e0087e690422f. Do not modify manually. export const earnFactory = [ { type: 'function', name: 'computeEarnShareSalt', inputs: [ { name: 'params', type: 'tuple', components: [ { name: 'deploymentId', type: 'bytes32' }, { name: 'engine', type: 'address' }, { name: 'owner', type: 'address' }, { name: 'controls', type: 'tuple', components: [ { name: 'emergencyGuardian', type: 'address' }, { name: 'asyncJanitor', type: 'address' }, { name: 'migrationMode', type: 'uint8' }, ], }, { name: 'fees', type: 'tuple', components: [ { name: 'administrator', type: 'address' }, { name: 'guardian', type: 'address' }, { name: 'fixedFeeCap', type: 'uint96' }, { name: 'excessFeeCap', type: 'uint96' }, { name: 'initialConfig', type: 'tuple', components: [ { name: 'fixedFeeCount', type: 'uint8' }, { name: 'fixedFees', type: 'tuple[4]', components: [ { name: 'account', type: 'address' }, { name: 'rate', type: 'uint96' }, ], }, { name: 'excess', type: 'tuple', components: [ { name: 'enabled', type: 'bool' }, { name: 'account', type: 'address' }, { name: 'annualTargetRate', type: 'uint96' }, { name: 'excessFeeRate', type: 'uint96' }, ], }, ], }, ], }, ], }, ], outputs: [{ name: '', type: 'bytes32' }], stateMutability: 'pure', }, { type: 'function', name: 'deploy', inputs: [ { name: 'params', type: 'tuple', components: [ { name: 'deploymentId', type: 'bytes32' }, { name: 'engine', type: 'address' }, { name: 'owner', type: 'address' }, { name: 'controls', type: 'tuple', components: [ { name: 'emergencyGuardian', type: 'address' }, { name: 'asyncJanitor', type: 'address' }, { name: 'migrationMode', type: 'uint8' }, ], }, { name: 'fees', type: 'tuple', components: [ { name: 'administrator', type: 'address' }, { name: 'guardian', type: 'address' }, { name: 'fixedFeeCap', type: 'uint96' }, { name: 'excessFeeCap', type: 'uint96' }, { name: 'initialConfig', type: 'tuple', components: [ { name: 'fixedFeeCount', type: 'uint8' }, { name: 'fixedFees', type: 'tuple[4]', components: [ { name: 'account', type: 'address' }, { name: 'rate', type: 'uint96' }, ], }, { name: 'excess', type: 'tuple', components: [ { name: 'enabled', type: 'bool' }, { name: 'account', type: 'address' }, { name: 'annualTargetRate', type: 'uint96' }, { name: 'excessFeeRate', type: 'uint96' }, ], }, ], }, ], }, ], }, ], outputs: [ { name: 'earnShare', type: 'address' }, { name: 'earnVault', type: 'address' }, { name: 'earnFees', type: 'address' }, ], stateMutability: 'nonpayable', }, { type: 'function', name: 'predictEarnFees', inputs: [ { name: 'params', type: 'tuple', components: [ { name: 'deploymentId', type: 'bytes32' }, { name: 'engine', type: 'address' }, { name: 'owner', type: 'address' }, { name: 'controls', type: 'tuple', components: [ { name: 'emergencyGuardian', type: 'address' }, { name: 'asyncJanitor', type: 'address' }, { name: 'migrationMode', type: 'uint8' }, ], }, { name: 'fees', type: 'tuple', components: [ { name: 'administrator', type: 'address' }, { name: 'guardian', type: 'address' }, { name: 'fixedFeeCap', type: 'uint96' }, { name: 'excessFeeCap', type: 'uint96' }, { name: 'initialConfig', type: 'tuple', components: [ { name: 'fixedFeeCount', type: 'uint8' }, { name: 'fixedFees', type: 'tuple[4]', components: [ { name: 'account', type: 'address' }, { name: 'rate', type: 'uint96' }, ], }, { name: 'excess', type: 'tuple', components: [ { name: 'enabled', type: 'bool' }, { name: 'account', type: 'address' }, { name: 'annualTargetRate', type: 'uint96' }, { name: 'excessFeeRate', type: 'uint96' }, ], }, ], }, ], }, ], }, ], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'predictEarnShare', inputs: [ { name: 'params', type: 'tuple', components: [ { name: 'deploymentId', type: 'bytes32' }, { name: 'engine', type: 'address' }, { name: 'owner', type: 'address' }, { name: 'controls', type: 'tuple', components: [ { name: 'emergencyGuardian', type: 'address' }, { name: 'asyncJanitor', type: 'address' }, { name: 'migrationMode', type: 'uint8' }, ], }, { name: 'fees', type: 'tuple', components: [ { name: 'administrator', type: 'address' }, { name: 'guardian', type: 'address' }, { name: 'fixedFeeCap', type: 'uint96' }, { name: 'excessFeeCap', type: 'uint96' }, { name: 'initialConfig', type: 'tuple', components: [ { name: 'fixedFeeCount', type: 'uint8' }, { name: 'fixedFees', type: 'tuple[4]', components: [ { name: 'account', type: 'address' }, { name: 'rate', type: 'uint96' }, ], }, { name: 'excess', type: 'tuple', components: [ { name: 'enabled', type: 'bool' }, { name: 'account', type: 'address' }, { name: 'annualTargetRate', type: 'uint96' }, { name: 'excessFeeRate', type: 'uint96' }, ], }, ], }, ], }, ], }, ], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'event', name: 'EarnStackDeployed', inputs: [ { name: 'earnVault', type: 'address', indexed: true }, { name: 'earnShare', type: 'address', indexed: true }, { name: 'earnFees', type: 'address', indexed: true }, { name: 'engine', type: 'address', indexed: false }, { name: 'asset', type: 'address', indexed: false }, { name: 'owner', type: 'address', indexed: false }, { name: 'deploymentId', type: 'bytes32', indexed: false }, { name: 'emergencyGuardian', type: 'address', indexed: false }, { name: 'asyncJanitor', type: 'address', indexed: false }, { name: 'migrationMode', type: 'uint8', indexed: false }, { name: 'earnShareSalt', type: 'bytes32', indexed: false }, { name: 'controlConfigHash', type: 'bytes32', indexed: false }, { name: 'feeConfigHash', type: 'bytes32', indexed: false }, { name: 'earnFeesSalt', type: 'bytes32', indexed: false }, ], anonymous: false, }, { type: 'error', name: 'AdminHandoffFailed', inputs: [] }, { type: 'error', name: 'EarnShareAlreadyExists', inputs: [{ name: 'earnShare', type: 'address' }], }, { type: 'error', name: 'EarnShareSupplyNotZero', inputs: [] }, { type: 'error', name: 'EmptyDeploymentId', inputs: [] }, { type: 'error', name: 'EmptyEarnShareMetadata', inputs: [] }, { type: 'error', name: 'FactoryCannotBeFinalOwner', inputs: [] }, { type: 'error', name: 'FailedDeployment', inputs: [] }, { type: 'error', name: 'InsufficientBalance', inputs: [ { name: 'balance', type: 'uint256' }, { name: 'needed', type: 'uint256' }, ], }, { type: 'error', name: 'InvalidEarnFeesImplementation', inputs: [] }, { type: 'error', name: 'InvalidEarnVaultImplementation', inputs: [] }, { type: 'error', name: 'IssuerGrantFailed', inputs: [] }, { type: 'error', name: 'ZeroAddress', inputs: [] }, ] as const export const erc4626Engine = [ { type: 'function', name: 'acceptOwnership', inputs: [], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'initializeEarnVault', inputs: [{ name: 'earnVault_', type: 'address' }], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'owner', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'pendingOwner', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'renounceOwnership', inputs: [], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'transferOwnership', inputs: [{ name: 'newOwner', type: 'address' }], outputs: [], stateMutability: 'nonpayable', }, { type: 'event', name: 'Deposited', inputs: [ { name: 'earnVault', type: 'address', indexed: true }, { name: 'assets', type: 'uint256', indexed: false }, { name: 'engineShares', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'EarnVaultInitialized', inputs: [{ name: 'earnVault', type: 'address', indexed: true }], anonymous: false, }, { type: 'event', name: 'OwnershipTransferStarted', inputs: [ { name: 'previousOwner', type: 'address', indexed: true }, { name: 'newOwner', type: 'address', indexed: true }, ], anonymous: false, }, { type: 'event', name: 'OwnershipTransferred', inputs: [ { name: 'previousOwner', type: 'address', indexed: true }, { name: 'newOwner', type: 'address', indexed: true }, ], anonymous: false, }, { type: 'event', name: 'Redeemed', inputs: [ { name: 'receiver', type: 'address', indexed: true }, { name: 'engineShares', type: 'uint256', indexed: false }, { name: 'assets', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'VenueSharesDeposited', inputs: [ { name: 'from', type: 'address', indexed: true }, { name: 'requestedVenueShares', type: 'uint256', indexed: false }, { name: 'receivedEngineShares', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'WithdrewExact', inputs: [ { name: 'receiver', type: 'address', indexed: true }, { name: 'assets', type: 'uint256', indexed: false }, { name: 'engineSharesBurned', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'error', name: 'AlreadyInitialized', inputs: [] }, { type: 'error', name: 'EarnVaultNotSet', inputs: [] }, { type: 'error', name: 'EmptyMetadata', inputs: [] }, { type: 'error', name: 'InsufficientAssetsReceived', inputs: [ { name: 'minimumAssets', type: 'uint256' }, { name: 'actualAssets', type: 'uint256' }, ], }, { type: 'error', name: 'InvalidVenueShareDecimals', inputs: [] }, { type: 'error', name: 'NoVenueSharesReceived', inputs: [] }, { type: 'error', name: 'NotEarnVault', inputs: [{ name: 'caller', type: 'address' }], }, { type: 'error', name: 'OwnableInvalidOwner', inputs: [{ name: 'owner', type: 'address' }], }, { type: 'error', name: 'OwnableUnauthorizedAccount', inputs: [{ name: 'account', type: 'address' }], }, { type: 'error', name: 'ReentrantCall', inputs: [] }, { type: 'error', name: 'TransferFailed', inputs: [] }, { type: 'error', name: 'ZeroAddress', inputs: [] }, ] as const export const earnVault = [ { type: 'constructor', inputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'accrueFees', inputs: [], outputs: [ { name: 'feeAssets', type: 'uint256' }, { name: 'feeEarnShares', type: 'uint256' }, ], stateMutability: 'nonpayable', }, { type: 'function', name: 'anchorEarnShares', inputs: [], outputs: [{ name: '', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'anchorEngineShares', inputs: [], outputs: [{ name: '', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'asset', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'asyncJanitor', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'cancelRedeem', inputs: [ { name: 'requestId', type: 'bytes32' }, { name: 'minReceiverEarnShares', type: 'uint256' }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'contribute', inputs: [{ name: 'assets', type: 'uint256' }], outputs: [{ name: 'venueShares', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'convertEngineSharesToEarnShares', inputs: [{ name: 'engineShares_', type: 'uint256' }], outputs: [{ name: 'earnShares', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'convertToEngineShares', inputs: [{ name: 'earnShares', type: 'uint256' }], outputs: [{ name: 'engineShares_', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'deposit', inputs: [ { name: 'assets', type: 'uint256' }, { name: 'receiver', type: 'address' }, { name: 'minEarnShares', type: 'uint256' }, ], outputs: [{ name: 'earnShares', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'depositSwapOverride', inputs: [{ name: 'inputToken', type: 'address' }], outputs: [{ name: 'swapAdapter', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'depositVenueShares', inputs: [ { name: 'venueShares', type: 'uint256' }, { name: 'receiver', type: 'address' }, { name: 'minEarnShares', type: 'uint256' }, ], outputs: [{ name: 'earnShares', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'depositsPaused', inputs: [], outputs: [{ name: '', type: 'bool' }], stateMutability: 'view', }, { type: 'function', name: 'disableFees', inputs: [], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'earnFees', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'earnShare', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'emergencyGuardian', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'engine', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'engineMigrationMode', inputs: [], outputs: [{ name: '', type: 'uint8' }], stateMutability: 'view', }, { type: 'function', name: 'engineShares', inputs: [], outputs: [{ name: '', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'feeAdministrator', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'feeGuardian', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'finalizeRedeem', inputs: [ { name: 'requestId', type: 'bytes32' }, { name: 'asset_', type: 'address' }, { name: 'amount', type: 'uint256' }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'initialize', inputs: [ { name: 'engine_', type: 'address' }, { name: 'earnShare_', type: 'address' }, { name: 'earnFees_', type: 'address' }, { name: 'operator_', type: 'address' }, { name: 'controlInit_', type: 'tuple', components: [ { name: 'emergencyGuardian', type: 'address' }, { name: 'asyncJanitor', type: 'address' }, { name: 'migrationMode', type: 'uint8' }, ], }, { name: 'feeInit_', type: 'tuple', components: [ { name: 'administrator', type: 'address' }, { name: 'guardian', type: 'address' }, { name: 'fixedFeeCap', type: 'uint96' }, { name: 'excessFeeCap', type: 'uint96' }, { name: 'initialConfig', type: 'tuple', components: [ { name: 'fixedFeeCount', type: 'uint8' }, { name: 'fixedFees', type: 'tuple[4]', components: [ { name: 'account', type: 'address' }, { name: 'rate', type: 'uint96' }, ], }, { name: 'excess', type: 'tuple', components: [ { name: 'enabled', type: 'bool' }, { name: 'account', type: 'address' }, { name: 'annualTargetRate', type: 'uint96' }, { name: 'excessFeeRate', type: 'uint96' }, ], }, ], }, ], }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'isAccountingAligned', inputs: [], outputs: [{ name: '', type: 'bool' }], stateMutability: 'view', }, { type: 'function', name: 'migrateEngine', inputs: [ { name: 'newEngine', type: 'address' }, { name: 'minNewEngineShares', type: 'uint256' }, { name: 'minAssetsRetained', type: 'uint256' }, ], outputs: [{ name: 'newEngineShares', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'openRedeemRequestCount', inputs: [], outputs: [{ name: '', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'operator', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'pendingRedeem', inputs: [{ name: 'requestId', type: 'bytes32' }], outputs: [ { name: '', type: 'tuple', components: [ { name: 'receiver', type: 'address' }, { name: 'requester', type: 'address' }, { name: 'burnedEarnShares', type: 'uint256' }, { name: 'venueShares', type: 'uint256' }, { name: 'open', type: 'bool' }, ], }, ], stateMutability: 'view', }, { type: 'function', name: 'previewRedeem', inputs: [{ name: 'earnShares', type: 'uint256' }], outputs: [{ name: 'assets', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'previewWithdraw', inputs: [{ name: 'assets', type: 'uint256' }], outputs: [{ name: 'earnShares', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'redeem', inputs: [ { name: 'earnShares', type: 'uint256' }, { name: 'receiver', type: 'address' }, { name: 'minAssets', type: 'uint256' }, ], outputs: [{ name: 'assets', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'redeemSwapOverride', inputs: [{ name: 'outputToken', type: 'address' }], outputs: [{ name: 'swapAdapter', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'requestRedeem', inputs: [ { name: 'earnShares', type: 'uint256' }, { name: 'engineData', type: 'bytes' }, { name: 'receiver', type: 'address' }, ], outputs: [{ name: 'requestId', type: 'bytes32' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'setDepositSwapOverride', inputs: [ { name: 'inputToken', type: 'address' }, { name: 'swapAdapter', type: 'address' }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'setDepositsPaused', inputs: [{ name: 'paused', type: 'bool' }], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'setEmergencyRoles', inputs: [ { name: 'newGuardian', type: 'address' }, { name: 'newJanitor', type: 'address' }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'setFeeConfig', inputs: [ { name: 'config', type: 'tuple', components: [ { name: 'fixedFeeCount', type: 'uint8' }, { name: 'fixedFees', type: 'tuple[4]', components: [ { name: 'account', type: 'address' }, { name: 'rate', type: 'uint96' }, ], }, { name: 'excess', type: 'tuple', components: [ { name: 'enabled', type: 'bool' }, { name: 'account', type: 'address' }, { name: 'annualTargetRate', type: 'uint96' }, { name: 'excessFeeRate', type: 'uint96' }, ], }, ], }, ], outputs: [{ name: 'configId', type: 'uint64' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'setRedeemSwapOverride', inputs: [ { name: 'outputToken', type: 'address' }, { name: 'swapAdapter', type: 'address' }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'totalEarnShares', inputs: [], outputs: [{ name: '', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'withdrawExact', inputs: [ { name: 'assets', type: 'uint256' }, { name: 'receiver', type: 'address' }, { name: 'maxEarnShares', type: 'uint256' }, ], outputs: [{ name: 'earnSharesBurned', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'event', name: 'Contributed', inputs: [ { name: 'caller', type: 'address', indexed: true }, { name: 'assets', type: 'uint256', indexed: false }, { name: 'venueShares', type: 'uint256', indexed: false }, { name: 'anchorEngineShares', type: 'uint256', indexed: false }, { name: 'anchorEarnShares', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'DepositPauseChanged', inputs: [ { name: 'caller', type: 'address', indexed: true }, { name: 'paused', type: 'bool', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'DepositSwapOverrideSet', inputs: [ { name: 'inputToken', type: 'address', indexed: true }, { name: 'swapAdapter', type: 'address', indexed: true }, ], anonymous: false, }, { type: 'event', name: 'Deposited', inputs: [ { name: 'caller', type: 'address', indexed: true }, { name: 'receiver', type: 'address', indexed: true }, { name: 'assets', type: 'uint256', indexed: false }, { name: 'earnShares', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'EmergencyRolesChanged', inputs: [ { name: 'emergencyGuardian', type: 'address', indexed: true }, { name: 'asyncJanitor', type: 'address', indexed: true }, ], anonymous: false, }, { type: 'event', name: 'EngineMigrated', inputs: [ { name: 'oldEngine', type: 'address', indexed: true }, { name: 'newEngine', type: 'address', indexed: true }, { name: 'oldEngineShares', type: 'uint256', indexed: false }, { name: 'assetsMoved', type: 'uint256', indexed: false }, { name: 'newEngineShares', type: 'uint256', indexed: false }, { name: 'totalEarnShares', type: 'uint256', indexed: false }, { name: 'anchorEngineShares', type: 'uint256', indexed: false }, { name: 'anchorEarnShares', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'RedeemCancelled', inputs: [ { name: 'requestId', type: 'bytes32', indexed: true }, { name: 'receiver', type: 'address', indexed: true }, { name: 'earnShares', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'RedeemFinalized', inputs: [ { name: 'requestId', type: 'bytes32', indexed: true }, { name: 'receiver', type: 'address', indexed: true }, { name: 'earnShares', type: 'uint256', indexed: false }, { name: 'asset', type: 'address', indexed: false }, { name: 'assets', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'RedeemRequested', inputs: [ { name: 'requestId', type: 'bytes32', indexed: true }, { name: 'requester', type: 'address', indexed: true }, { name: 'receiver', type: 'address', indexed: true }, { name: 'earnShares', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'RedeemSwapOverrideSet', inputs: [ { name: 'outputToken', type: 'address', indexed: true }, { name: 'swapAdapter', type: 'address', indexed: true }, ], anonymous: false, }, { type: 'event', name: 'Redeemed', inputs: [ { name: 'caller', type: 'address', indexed: true }, { name: 'receiver', type: 'address', indexed: true }, { name: 'earnShares', type: 'uint256', indexed: false }, { name: 'assets', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'VenueSharesDeposited', inputs: [ { name: 'caller', type: 'address', indexed: true }, { name: 'receiver', type: 'address', indexed: true }, { name: 'requestedVenueShares', type: 'uint256', indexed: false }, { name: 'receivedVenueShares', type: 'uint256', indexed: false }, { name: 'earnShares', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'WithdrewExact', inputs: [ { name: 'caller', type: 'address', indexed: true }, { name: 'receiver', type: 'address', indexed: true }, { name: 'assets', type: 'uint256', indexed: false }, { name: 'earnSharesBurned', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'error', name: 'AlreadyInitialized', inputs: [] }, { type: 'error', name: 'DepositsPaused', inputs: [] }, { type: 'error', name: 'DuplicateRequest', inputs: [{ name: 'requestId', type: 'bytes32' }], }, { type: 'error', name: 'EngineAssetMismatch', inputs: [] }, { type: 'error', name: 'EngineCapabilityUnsupported', inputs: [{ name: 'interfaceId', type: 'bytes4' }], }, { type: 'error', name: 'ExceedsMaxEarnShares', inputs: [] }, { type: 'error', name: 'ExcessiveConversionLoss', inputs: [ { name: 'inputEngineShares', type: 'uint256' }, { name: 'representedEngineShares', type: 'uint256' }, ], }, { type: 'error', name: 'InitialEarnShareSupplyNotZero', inputs: [] }, { type: 'error', name: 'InsufficientOutput', inputs: [] }, { type: 'error', name: 'InvalidEarnDecimals', inputs: [] }, { type: 'error', name: 'InvalidEngineShareScale', inputs: [] }, { type: 'error', name: 'InvalidSwapOverride', inputs: [] }, { type: 'error', name: 'MinimumAssetsNotMet', inputs: [ { name: 'minimumAssets', type: 'uint256' }, { name: 'actualAssets', type: 'uint256' }, ], }, { type: 'error', name: 'MinimumEarnSharesNotMet', inputs: [ { name: 'minimumEarnShares', type: 'uint256' }, { name: 'actualEarnShares', type: 'uint256' }, ], }, { type: 'error', name: 'MinimumEngineSharesNotMet', inputs: [ { name: 'minimumEngineShares', type: 'uint256' }, { name: 'actualEngineShares', type: 'uint256' }, ], }, { type: 'error', name: 'NoEarnShares', inputs: [] }, { type: 'error', name: 'NotEmergencyGuardianOrOperator', inputs: [] }, { type: 'error', name: 'NotEngine', inputs: [] }, { type: 'error', name: 'NotFeeAdministrator', inputs: [] }, { type: 'error', name: 'NotFeeGuardian', inputs: [] }, { type: 'error', name: 'NotOperator', inputs: [] }, { type: 'error', name: 'NotRequesterOrJanitor', inputs: [] }, { type: 'error', name: 'OperatorMigrationDisabled', inputs: [] }, { type: 'error', name: 'PendingRedeemsOpen', inputs: [] }, { type: 'error', name: 'ReentrantCall', inputs: [] }, { type: 'error', name: 'RequestNotOpen', inputs: [{ name: 'requestId', type: 'bytes32' }], }, { type: 'error', name: 'ResidualBacking', inputs: [] }, { type: 'error', name: 'SameEngine', inputs: [] }, { type: 'error', name: 'TokenCallFailed', inputs: [] }, { type: 'error', name: 'TokenCallFalse', inputs: [] }, { type: 'error', name: 'ZeroAddress', inputs: [] }, { type: 'error', name: 'ZeroAmount', inputs: [] }, { type: 'error', name: 'ZeroMinimumAssets', inputs: [] }, { type: 'error', name: 'ZeroMinimumEarnShares', inputs: [] }, { type: 'error', name: 'ZeroMinimumEngineShares', inputs: [] }, ] as const export const earnFees = [ { type: 'constructor', inputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'accrueFees', inputs: [], outputs: [ { name: 'result', type: 'tuple', components: [ { name: 'activeAssets', type: 'uint256' }, { name: 'positiveAccrualAssets', type: 'uint256' }, { name: 'fixedFeeAssets', type: 'uint256' }, { name: 'excessFeeAssets', type: 'uint256' }, { name: 'totalFeeAssets', type: 'uint256' }, { name: 'totalFeeEarnShares', type: 'uint256' }, { name: 'preFeeValuePerEarnShare', type: 'uint256' }, { name: 'postFeeValuePerEarnShare', type: 'uint256' }, { name: 'targetValuePerEarnShare', type: 'uint256' }, { name: 'allocationCount', type: 'uint8' }, { name: 'allocations', type: 'tuple[5]', components: [ { name: 'account', type: 'address' }, { name: 'feeAssets', type: 'uint256' }, { name: 'feeEarnShares', type: 'uint256' }, ], }, ], }, ], stateMutability: 'nonpayable', }, { type: 'function', name: 'claim', inputs: [ { name: 'to', type: 'address' }, { name: 'earnShares', type: 'uint256' }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'claimableEarnShares', inputs: [{ name: 'recipient', type: 'address' }], outputs: [{ name: 'earnShares', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'closeRedeemRequest', inputs: [{ name: 'requestId', type: 'bytes32' }], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'currentFeeConfigId', inputs: [], outputs: [{ name: '', type: 'uint64' }], stateMutability: 'view', }, { type: 'function', name: 'disableFees', inputs: [{ name: 'guardian', type: 'address' }], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'earnShare', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'earnShareScale', inputs: [], outputs: [{ name: '', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'earnVault', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'excessFeeCap', inputs: [], outputs: [{ name: '', type: 'uint96' }], stateMutability: 'view', }, { type: 'function', name: 'feeConfig', inputs: [{ name: 'configId', type: 'uint64' }], outputs: [ { name: '', type: 'tuple', components: [ { name: 'fixedFeeCount', type: 'uint8' }, { name: 'fixedFees', type: 'tuple[4]', components: [ { name: 'account', type: 'address' }, { name: 'rate', type: 'uint96' }, ], }, { name: 'excess', type: 'tuple', components: [ { name: 'enabled', type: 'bool' }, { name: 'account', type: 'address' }, { name: 'annualTargetRate', type: 'uint96' }, { name: 'excessFeeRate', type: 'uint96' }, ], }, ], }, ], stateMutability: 'view', }, { type: 'function', name: 'feeRemainder', inputs: [ { name: 'configId', type: 'uint64' }, { name: 'slot', type: 'uint8' }, ], outputs: [{ name: '', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'feesActive', inputs: [], outputs: [{ name: '', type: 'bool' }], stateMutability: 'view', }, { type: 'function', name: 'feesDisabled', inputs: [], outputs: [{ name: '', type: 'bool' }], stateMutability: 'view', }, { type: 'function', name: 'fixedFeeCap', inputs: [], outputs: [{ name: '', type: 'uint96' }], stateMutability: 'view', }, { type: 'function', name: 'highWaterMark', inputs: [], outputs: [{ name: '', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'initialize', inputs: [ { name: 'earnVault_', type: 'address' }, { name: 'earnShare_', type: 'address' }, { name: 'init', type: 'tuple', components: [ { name: 'administrator', type: 'address' }, { name: 'guardian', type: 'address' }, { name: 'fixedFeeCap', type: 'uint96' }, { name: 'excessFeeCap', type: 'uint96' }, { name: 'initialConfig', type: 'tuple', components: [ { name: 'fixedFeeCount', type: 'uint8' }, { name: 'fixedFees', type: 'tuple[4]', components: [ { name: 'account', type: 'address' }, { name: 'rate', type: 'uint96' }, ], }, { name: 'excess', type: 'tuple', components: [ { name: 'enabled', type: 'bool' }, { name: 'account', type: 'address' }, { name: 'annualTargetRate', type: 'uint96' }, { name: 'excessFeeRate', type: 'uint96' }, ], }, ], }, ], }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'initializeBaselines', inputs: [], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'pendingFeeSnapshot', inputs: [{ name: 'requestId', type: 'bytes32' }], outputs: [ { name: '', type: 'tuple', components: [ { name: 'burnedEarnShares', type: 'uint256' }, { name: 'requestValue', type: 'uint256' }, { name: 'highWaterValue', type: 'uint256' }, { name: 'targetValue', type: 'uint256' }, { name: 'feeConfigId', type: 'uint64' }, { name: 'requestedAt', type: 'uint40' }, { name: 'open', type: 'bool' }, ], }, ], stateMutability: 'view', }, { type: 'function', name: 'previewAccruedFees', inputs: [], outputs: [ { name: 'result', type: 'tuple', components: [ { name: 'activeAssets', type: 'uint256' }, { name: 'positiveAccrualAssets', type: 'uint256' }, { name: 'fixedFeeAssets', type: 'uint256' }, { name: 'excessFeeAssets', type: 'uint256' }, { name: 'totalFeeAssets', type: 'uint256' }, { name: 'totalFeeEarnShares', type: 'uint256' }, { name: 'preFeeValuePerEarnShare', type: 'uint256' }, { name: 'postFeeValuePerEarnShare', type: 'uint256' }, { name: 'targetValuePerEarnShare', type: 'uint256' }, { name: 'allocationCount', type: 'uint8' }, { name: 'allocations', type: 'tuple[5]', components: [ { name: 'account', type: 'address' }, { name: 'feeAssets', type: 'uint256' }, { name: 'feeEarnShares', type: 'uint256' }, ], }, ], }, ], stateMutability: 'view', }, { type: 'function', name: 'recordRedeemRequest', inputs: [ { name: 'requestId', type: 'bytes32' }, { name: 'burnedEarnShares', type: 'uint256' }, { name: 'requestValue', type: 'uint256' }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'setFeeConfig', inputs: [ { name: 'config', type: 'tuple', components: [ { name: 'fixedFeeCount', type: 'uint8' }, { name: 'fixedFees', type: 'tuple[4]', components: [ { name: 'account', type: 'address' }, { name: 'rate', type: 'uint96' }, ], }, { name: 'excess', type: 'tuple', components: [ { name: 'enabled', type: 'bool' }, { name: 'account', type: 'address' }, { name: 'annualTargetRate', type: 'uint96' }, { name: 'excessFeeRate', type: 'uint96' }, ], }, ], }, ], outputs: [{ name: 'configId', type: 'uint64' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'settleCancelledRedeem', inputs: [ { name: 'requestId', type: 'bytes32' }, { name: 'returnedValue', type: 'uint256' }, { name: 'activeSupply', type: 'uint256' }, { name: 'activeAssets', type: 'uint256' }, { name: 'totalReentryEarnShares', type: 'uint256' }, ], outputs: [{ name: 'feeEarnShares', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'shouldChargeRedeem', inputs: [{ name: 'requestId', type: 'bytes32' }], outputs: [{ name: '', type: 'bool' }], stateMutability: 'view', }, { type: 'function', name: 'targetBase', inputs: [], outputs: [{ name: '', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'targetStartedAt', inputs: [], outputs: [{ name: '', type: 'uint40' }], stateMutability: 'view', }, { type: 'function', name: 'totalClaimableEarnShares', inputs: [], outputs: [{ name: '', type: 'uint256' }], stateMutability: 'view', }, { type: 'event', name: 'FeeBaselinesInitialized', inputs: [ { name: 'highWaterMark', type: 'uint256', indexed: false }, { name: 'targetBase', type: 'uint256', indexed: false }, { name: 'targetStartedAt', type: 'uint40', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'FeeConfigurationSet', inputs: [ { name: 'configId', type: 'uint64', indexed: true }, { name: 'configHash', type: 'bytes32', indexed: true }, { name: 'reactivated', type: 'bool', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'FeeDustWaived', inputs: [ { name: 'configId', type: 'uint64', indexed: true }, { name: 'slot', type: 'uint8', indexed: true }, { name: 'remainder', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'FeeEarnSharesAllocated', inputs: [ { name: 'configId', type: 'uint64', indexed: true }, { name: 'recipient', type: 'address', indexed: true }, { name: 'feeAssets', type: 'uint256', indexed: false }, { name: 'feeEarnShares', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'FeeEarnSharesClaimed', inputs: [ { name: 'recipient', type: 'address', indexed: true }, { name: 'to', type: 'address', indexed: true }, { name: 'earnShares', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'FeesAccrued', inputs: [ { name: 'configId', type: 'uint64', indexed: true }, { name: 'activeAssets', type: 'uint256', indexed: false }, { name: 'positiveAccrualAssets', type: 'uint256', indexed: false }, { name: 'feeAssets', type: 'uint256', indexed: false }, { name: 'feeEarnShares', type: 'uint256', indexed: false }, { name: 'highWaterMark', type: 'uint256', indexed: false }, { name: 'targetValuePerEarnShare', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'FeesDisabled', inputs: [{ name: 'guardian', type: 'address', indexed: true }], anonymous: false, }, { type: 'error', name: 'AlreadyInitialized', inputs: [] }, { type: 'error', name: 'FeeCapTooHigh', inputs: [] }, { type: 'error', name: 'FeesPermanentlyDisabled', inputs: [] }, { type: 'error', name: 'InsufficientClaimableEarnShares', inputs: [] }, { type: 'error', name: 'InvalidFeeClaimReceiver', inputs: [] }, { type: 'error', name: 'InvalidFeeConfiguration', inputs: [] }, { type: 'error', name: 'NotEarnVault', inputs: [] }, { type: 'error', name: 'ReentrantCall', inputs: [] }, { type: 'error', name: 'ZeroAddress', inputs: [] }, { type: 'error', name: 'ZeroAmount', inputs: [] }, ] as const export const earnEngine = [ { type: 'function', name: 'asset', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'deposit', inputs: [{ name: 'assets', type: 'uint256' }], outputs: [{ name: 'engineShares', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'name', inputs: [], outputs: [{ name: '', type: 'string' }], stateMutability: 'view', }, { type: 'function', name: 'shareScale', inputs: [], outputs: [{ name: 'scale', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'supportsInterface', inputs: [{ name: 'interfaceId', type: 'bytes4' }], outputs: [{ name: '', type: 'bool' }], stateMutability: 'view', }, { type: 'function', name: 'symbol', inputs: [], outputs: [{ name: '', type: 'string' }], stateMutability: 'view', }, { type: 'function', name: 'totalAssets', inputs: [], outputs: [{ name: 'assets', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'totalShares', inputs: [], outputs: [{ name: 'engineShares', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'valueOf', inputs: [{ name: 'engineShares', type: 'uint256' }], outputs: [{ name: 'assets', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'previewRedeem', inputs: [{ name: 'engineShares', type: 'uint256' }], outputs: [{ name: 'assets', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'redeem', inputs: [ { name: 'engineShares', type: 'uint256' }, { name: 'receiver', type: 'address' }, { name: 'minAssets', type: 'uint256' }, ], outputs: [{ name: 'assets', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'previewWithdraw', inputs: [{ name: 'assets', type: 'uint256' }], outputs: [{ name: 'engineShares', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'withdraw', inputs: [ { name: 'assets', type: 'uint256' }, { name: 'receiver', type: 'address' }, ], outputs: [{ name: 'engineShares', type: 'uint256' }], stateMutability: 'nonpayable', }, ] as const export const earnEngineAsyncRedeem = [ { type: 'function', name: 'cancelRedeem', inputs: [{ name: 'requestId', type: 'bytes32' }], outputs: [{ name: 'engineShares', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'requestRedeem', inputs: [ { name: 'engineShares', type: 'uint256' }, { name: 'requestData', type: 'bytes' }, ], outputs: [{ name: 'requestId', type: 'bytes32' }], stateMutability: 'nonpayable', }, ] as const export const earnEngineInKindDeposit = [ { type: 'function', name: 'depositInKind', inputs: [ { name: 'venueShares', type: 'uint256' }, { name: 'from', type: 'address' }, ], outputs: [{ name: 'engineSharesReceived', type: 'uint256' }], stateMutability: 'nonpayable', }, ] as const export const earnContributionController = [ { type: 'function', name: 'active', inputs: [], outputs: [{ name: '', type: 'bool' }], stateMutability: 'view', }, { type: 'function', name: 'fund', inputs: [ { name: 'funder', type: 'address' }, { name: 'requestedAssets', type: 'uint256' }, { name: 'maxEarnShareSupply', type: 'uint256' }, ], outputs: [{ name: 'fundedAssets', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'setActive', inputs: [{ name: 'active_', type: 'bool' }], outputs: [], stateMutability: 'nonpayable', }, { type: 'event', name: 'Funded', inputs: [ { name: 'funder', type: 'address', indexed: true }, { name: 'requestedAssets', type: 'uint256', indexed: false }, { name: 'fundedAssets', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'error', name: 'EarnShareSupplyOutOfBounds', inputs: [ { name: 'earnShareSupply', type: 'uint256' }, { name: 'maxEarnShareSupply', type: 'uint256' }, ], }, { type: 'error', name: 'Inactive', inputs: [] }, { type: 'error', name: 'NotSelf', inputs: [] }, { type: 'error', name: 'OwnableInvalidOwner', inputs: [{ name: 'owner', type: 'address' }], }, { type: 'error', name: 'OwnableUnauthorizedAccount', inputs: [{ name: 'account', type: 'address' }], }, { type: 'error', name: 'ReentrantCall', inputs: [] }, { type: 'error', name: 'TokenCallFailed', inputs: [] }, { type: 'error', name: 'TokenCallFalse', inputs: [] }, { type: 'error', name: 'ZeroAddress', inputs: [] }, ] as const export const vedaEngine = [ { type: 'function', name: 'claimRedeem', inputs: [{ name: 'requestId', type: 'bytes32' }], outputs: [{ name: 'amount', type: 'uint256' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'getClaim', inputs: [{ name: 'requestId', type: 'bytes32' }], outputs: [ { name: 'open', type: 'bool' }, { name: 'paid', type: 'bool' }, { name: 'claimable', type: 'bool' }, { name: 'recorded', type: 'bool' }, { name: 'request', type: 'tuple', components: [ { name: 'nonce', type: 'uint96' }, { name: 'user', type: 'address' }, { name: 'assetOut', type: 'address' }, { name: 'amountOfShares', type: 'uint128' }, { name: 'amountOfAssets', type: 'uint128' }, { name: 'creationTime', type: 'uint40' }, { name: 'secondsToMaturity', type: 'uint24' }, { name: 'secondsToDeadline', type: 'uint24' }, ], }, ], stateMutability: 'view', }, { type: 'function', name: 'rate', inputs: [], outputs: [{ name: '', type: 'uint256' }], stateMutability: 'view', }, { type: 'function', name: 'settled', inputs: [{ name: 'asset', type: 'address' }], outputs: [{ name: 'amount', type: 'uint256' }], stateMutability: 'view', }, { type: 'event', name: 'AuthorizedForwarderChanged', inputs: [ { name: 'account', type: 'address', indexed: true }, { name: 'authorized', type: 'bool', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'Deposited', inputs: [ { name: 'earnVault', type: 'address', indexed: true }, { name: 'assets', type: 'uint256', indexed: false }, { name: 'engineShares', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'DustSwept', inputs: [ { name: 'token', type: 'address', indexed: true }, { name: 'to', type: 'address', indexed: true }, { name: 'amount', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'EarnVaultInitialized', inputs: [{ name: 'earnVault', type: 'address', indexed: true }], anonymous: false, }, { type: 'event', name: 'FinalizeFailed', inputs: [ { name: 'requestId', type: 'bytes32', indexed: true }, { name: 'asset', type: 'address', indexed: true }, { name: 'amount', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'Finalized', inputs: [ { name: 'requestId', type: 'bytes32', indexed: true }, { name: 'asset', type: 'address', indexed: true }, { name: 'amount', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'MaxRateAgeUpdated', inputs: [ { name: 'oldMaxRateAge', type: 'uint64', indexed: false }, { name: 'newMaxRateAge', type: 'uint64', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'OwnershipTransferStarted', inputs: [ { name: 'previousOwner', type: 'address', indexed: true }, { name: 'newOwner', type: 'address', indexed: true }, ], anonymous: false, }, { type: 'event', name: 'OwnershipTransferred', inputs: [ { name: 'previousOwner', type: 'address', indexed: true }, { name: 'newOwner', type: 'address', indexed: true }, ], anonymous: false, }, { type: 'event', name: 'RedeemCancelledOnQueue', inputs: [ { name: 'requestId', type: 'bytes32', indexed: true }, { name: 'venueShares', type: 'uint128', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'RedeemClaimed', inputs: [ { name: 'requestId', type: 'bytes32', indexed: true }, { name: 'asset', type: 'address', indexed: true }, { name: 'amount', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'RedeemRequested', inputs: [ { name: 'requestId', type: 'bytes32', indexed: true }, { name: 'assetOut', type: 'address', indexed: true }, { name: 'venueShares', type: 'uint128', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'Redeemed', inputs: [ { name: 'receiver', type: 'address', indexed: true }, { name: 'engineShares', type: 'uint256', indexed: false }, { name: 'assets', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'RequestRecorded', inputs: [ { name: 'requestId', type: 'bytes32', indexed: true }, { name: 'amountOfAssets', type: 'uint128', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'Settled', inputs: [ { name: 'asset', type: 'address', indexed: true }, { name: 'amount', type: 'uint256', indexed: false }, { name: 'newTotal', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'Unearmarked', inputs: [ { name: 'asset', type: 'address', indexed: true }, { name: 'amount', type: 'uint256', indexed: false }, { name: 'newTotal', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'VedaPeripheryUpdated', inputs: [ { name: 'registryVersion', type: 'uint64', indexed: true }, { name: 'oldTeller', type: 'address', indexed: true }, { name: 'oldQueue', type: 'address', indexed: true }, { name: 'oldAccountant', type: 'address', indexed: false }, { name: 'newTeller', type: 'address', indexed: false }, { name: 'newQueue', type: 'address', indexed: false }, { name: 'newAccountant', type: 'address', indexed: false }, { name: 'validatedRate', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'WithdrewExact', inputs: [ { name: 'receiver', type: 'address', indexed: true }, { name: 'assets', type: 'uint256', indexed: false }, { name: 'engineSharesBurned', type: 'uint256', indexed: false }, ], anonymous: false, }, { type: 'error', name: 'AlreadyInitialized', inputs: [] }, { type: 'error', name: 'AssetsNotArrived', inputs: [{ name: 'requestId', type: 'bytes32' }], }, { type: 'error', name: 'CannotSweepVenueShares', inputs: [] }, { type: 'error', name: 'ClaimNotClaimable', inputs: [{ name: 'requestId', type: 'bytes32' }], }, { type: 'error', name: 'ClaimNotOpen', inputs: [{ name: 'requestId', type: 'bytes32' }], }, { type: 'error', name: 'CreditExceedsBalance', inputs: [ { name: 'asset', type: 'address' }, { name: 'have', type: 'uint256' }, { name: 'wantTotal', type: 'uint256' }, ], }, { type: 'error', name: 'DepositsNotPaused', inputs: [] }, { type: 'error', name: 'DuplicateRequest', inputs: [{ name: 'requestId', type: 'bytes32' }], }, { type: 'error', name: 'EarnVaultNotSet', inputs: [] }, { type: 'error', name: 'InvalidAsset', inputs: [ { name: 'expected', type: 'address' }, { name: 'actual', type: 'address' }, ], }, { type: 'error', name: 'InvalidMaxRateAge', inputs: [] }, { type: 'error', name: 'InvalidRateTimestamp', inputs: [ { name: 'updatedAt', type: 'uint256' }, { name: 'currentTime', type: 'uint256' }, ], }, { type: 'error', name: 'InvalidVedaPeriphery', inputs: [{ name: 'account', type: 'address' }], }, { type: 'error', name: 'InvalidVedaPeripheryWiring', inputs: [ { name: 'component', type: 'address' }, { name: 'expected', type: 'address' }, { name: 'actual', type: 'address' }, ], }, { type: 'error', name: 'InvalidVedaRateBounds', inputs: [ { name: 'minRate', type: 'uint256' }, { name: 'maxRate', type: 'uint256' }, ], }, { type: 'error', name: 'InvalidVenueShareDecimals', inputs: [] }, { type: 'error', name: 'NoPublishedVedaPeriphery', inputs: [] }, { type: 'error', name: 'NoVenueSharesReceived', inputs: [] }, { type: 'error', name: 'NotAuthorizedForwarder', inputs: [{ name: 'caller', type: 'address' }], }, { type: 'error', name: 'NotEarnVault', inputs: [{ name: 'caller', type: 'address' }], }, { type: 'error', name: 'NotSelf', inputs: [] }, { type: 'error', name: 'OwnableInvalidOwner', inputs: [{ name: 'owner', type: 'address' }], }, { type: 'error', name: 'OwnableUnauthorizedAccount', inputs: [{ name: 'account', type: 'address' }], }, { type: 'error', name: 'RateChangedWithinTransaction', inputs: [ { name: 'expected', type: 'uint256' }, { name: 'actual', type: 'uint256' }, ], }, { type: 'error', name: 'ReentrantCall', inputs: [] }, { type: 'error', name: 'RequestDetailsNotRecorded', inputs: [{ name: 'requestId', type: 'bytes32' }], }, { type: 'error', name: 'SolveUnderfunded', inputs: [ { name: 'asset', type: 'address' }, { name: 'delivered', type: 'uint256' }, { name: 'required', type: 'uint256' }, ], }, { type: 'error', name: 'StaleAccountantRate', inputs: [ { name: 'updatedAt', type: 'uint256' }, { name: 'currentTime', type: 'uint256' }, { name: 'maxAge', type: 'uint256' }, ], }, { type: 'error', name: 'TransferFailed', inputs: [] }, { type: 'error', name: 'VedaRateOutOfBounds', inputs: [ { name: 'rate', type: 'uint256' }, { name: 'minRate', type: 'uint256' }, { name: 'maxRate', type: 'uint256' }, ], }, { type: 'error', name: 'VenueSharesTooLarge', inputs: [{ name: 'venueShares', type: 'uint256' }], }, { type: 'error', name: 'ZeroAddress', inputs: [] }, ] as const export const earnRouter = [ { type: 'function', name: 'STABLECOIN_DEX', inputs: [], outputs: [{ name: '', type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'onWithdrawalReceived', inputs: [ { name: 'sourceZoneId', type: 'uint32' }, { name: 'sourcePortal', type: 'address' }, { name: '', type: 'bytes32' }, { name: 'token', type: 'address' }, { name: 'amount', type: 'uint128' }, { name: 'callbackData', type: 'bytes' }, ], outputs: [{ name: '', type: 'bytes4' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'supportsFlow', inputs: [{ name: 'flow', type: 'uint8' }], outputs: [{ name: '', type: 'bool' }], stateMutability: 'pure', }, { type: 'event', name: 'EarnDeposit', inputs: [ { name: 'actionId', type: 'bytes32', indexed: true }, { name: 'earnVault', type: 'address', indexed: true }, { name: 'inputToken', type: 'address', indexed: true }, { name: 'inputAmount', type: 'uint256', indexed: false }, { name: 'vaultAssets', type: 'uint256', indexed: false }, { name: 'earnShares', type: 'uint256', indexed: false }, { name: 'zoneDepositHash', type: 'bytes32', indexed: false }, ], anonymous: false, }, { type: 'event', name: 'EarnRedeem', inputs: [ { name: 'actionId', type: 'bytes32', indexed: true }, { name: 'earnVault', type: 'address', indexed: true }, { name: 'outputToken', type: 'address', indexed: true }, { name: 'earnShares', type: 'uint256', indexed: false }, { name: 'vaultAssets', type: 'uint256', indexed: false }, { name: 'outputAmount', type: 'uint256', indexed: false }, { name: 'zoneDepositHash', type: 'bytes32', indexed: false }, ], anonymous: false, }, { type: 'error', name: 'AmountOverflow', inputs: [] }, { type: 'error', name: 'BadFlow', inputs: [] }, { type: 'error', name: 'InsufficientOutput', inputs: [] }, { type: 'error', name: 'InvalidEarnVault', inputs: [] }, { type: 'error', name: 'InvalidSourcePortal', inputs: [] }, { type: 'error', name: 'InvalidTargetPortal', inputs: [] }, { type: 'error', name: 'InvalidToken', inputs: [] }, { type: 'error', name: 'NotZoneMessenger', inputs: [] }, { type: 'error', name: 'ReentrantCall', inputs: [] }, { type: 'error', name: 'ResidualBalance', inputs: [] }, { type: 'error', name: 'TokenCallFailed', inputs: [] }, { type: 'error', name: 'TokenCallFalse', inputs: [] }, { type: 'error', name: 'WrongEarnShare', inputs: [] }, { type: 'error', name: 'WrongOutputToken', inputs: [] }, { type: 'error', name: 'WrongSourceAsset', inputs: [] }, { type: 'error', name: 'ZeroAddress', inputs: [] }, { type: 'error', name: 'ZeroAmount', inputs: [] }, ] as const // `ZoneOnlyEarnRouter.CallbackData` parameter for `encodeAbiParameters`. export const earnRouterCallbackData = [ { components: [ { name: 'flow', type: 'uint8' }, { name: 'earnVault', type: 'address' }, { name: 'outputToken', type: 'address' }, { name: 'minVaultAssets', type: 'uint128' }, { name: 'minEarnShares', type: 'uint128' }, { name: 'minOutputAmount', type: 'uint128' }, { name: 'actionId', type: 'bytes32' }, { components: [ { name: 'keyIndex', type: 'uint256' }, { components: [ { name: 'ephemeralPubkeyX', type: 'bytes32' }, { name: 'ephemeralPubkeyYParity', type: 'uint8' }, { name: 'ciphertext', type: 'bytes' }, { name: 'nonce', type: 'bytes12' }, { name: 'tag', type: 'bytes16' }, ], name: 'encrypted', type: 'tuple', }, { name: 'refundRecipient', type: 'address' }, ], name: 'zoneReturn', type: 'tuple', }, ], name: 'callbackData', type: 'tuple', }, ] as const