@axonfi/sdk 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/signer.ts","../src/abis/AxonVault.ts","../src/abis/AxonVaultFactory.ts","../src/vault.ts","../src/utils.ts","../src/client.ts","../src/keystore.ts","../src/tokens.ts","../src/abis/AxonRegistry.ts"],"names":["keccak256","stringToBytes","base","baseSepolia","arbitrum","arbitrumSepolia","createPublicClient","http","privateKeyToAccount","createWalletClient","scryptAsync","ctr","keccak_256"],"mappings":"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","file":"index.cjs","sourcesContent":["import { keccak256, stringToBytes } from 'viem';\nimport type { Address } from 'viem';\n\n// ============================================================================\n// EIP-712 type hashes\n// ============================================================================\n\n/**\n * keccak256 of the PaymentIntent type string — used for manual digest\n * verification. viem's signTypedData computes this internally; you don't\n * need this value for signing, only for low-level verification.\n */\nexport const PAYMENT_INTENT_TYPEHASH: `0x${string}` = keccak256(\n stringToBytes('PaymentIntent(address bot,address to,address token,uint256 amount,uint256 deadline,bytes32 ref)'),\n);\n\n/** keccak256 of the ExecuteIntent type string for DeFi protocol interactions. */\nexport const EXECUTE_INTENT_TYPEHASH: `0x${string}` = keccak256(\n stringToBytes(\n 'ExecuteIntent(address bot,address protocol,bytes32 calldataHash,address token,uint256 amount,uint256 deadline,bytes32 ref)',\n ),\n);\n\n/** keccak256 of the SwapIntent type string for in-vault token rebalancing. */\nexport const SWAP_INTENT_TYPEHASH: `0x${string}` = keccak256(\n stringToBytes('SwapIntent(address bot,address toToken,uint256 minToAmount,uint256 deadline,bytes32 ref)'),\n);\n\n/** EIP-712 domain name and version for AxonVault. Matches the constructor. */\nexport const EIP712_DOMAIN_NAME = 'AxonVault' as const;\nexport const EIP712_DOMAIN_VERSION = '1' as const;\n\n// ============================================================================\n// Native ETH sentinel\n// ============================================================================\n\n/** Sentinel address representing native ETH in PaymentIntents and deposits. */\nexport const NATIVE_ETH: Address = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';\n\n// ============================================================================\n// USDC addresses per chain\n// ============================================================================\n\nexport const USDC: Record<number, Address> = {\n // Base mainnet\n 8453: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n // Base Sepolia\n 84532: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',\n // Arbitrum One\n 42161: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',\n // Arbitrum Sepolia\n 421614: '0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d',\n};\n\n// ============================================================================\n// Supported chain IDs\n// ============================================================================\n\nexport const SUPPORTED_CHAIN_IDS = [8453, 84532, 42161, 421614] as const;\nexport type SupportedChainId = (typeof SUPPORTED_CHAIN_IDS)[number];\n\n// ============================================================================\n// Time constants (seconds)\n// ============================================================================\n\n/** Default intent validity window when no deadline is specified. */\nexport const DEFAULT_DEADLINE_SECONDS = 300; // 5 minutes\n\n/** Window presets for SpendingLimit.windowSeconds. */\nexport const WINDOW = {\n ONE_HOUR: 3600n,\n ONE_DAY: 86400n,\n ONE_WEEK: 604800n,\n THIRTY_DAYS: 2592000n,\n} as const;\n\n// ============================================================================\n// Payment rejection error codes\n// ============================================================================\n\n/**\n * Structured error codes returned by the relayer when a payment is rejected.\n * Bots should import these to programmatically handle failures.\n */\nexport const PaymentErrorCode = {\n /** Payment destination is the vault itself */\n SELF_PAYMENT: 'SELF_PAYMENT',\n /** Payment destination is the zero address */\n ZERO_ADDRESS: 'ZERO_ADDRESS',\n /** Payment amount is zero */\n ZERO_AMOUNT: 'ZERO_AMOUNT',\n /** Vault does not hold enough of the requested token */\n INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',\n /** EIP-712 signature verification failed */\n INVALID_SIGNATURE: 'INVALID_SIGNATURE',\n /** Payment intent deadline has passed */\n DEADLINE_EXPIRED: 'DEADLINE_EXPIRED',\n /** Bot is temporarily paused by the operator */\n BOT_PAUSED: 'BOT_PAUSED',\n /** Bot address is not registered/active in the vault */\n BOT_NOT_ACTIVE: 'BOT_NOT_ACTIVE',\n /** Destination address is on the global or vault blacklist */\n BLACKLISTED: 'BLACKLISTED',\n /** Rolling-window spending limit (USD amount) exceeded */\n SPENDING_LIMIT_EXCEEDED: 'SPENDING_LIMIT_EXCEEDED',\n /** Rolling-window transaction count limit exceeded */\n TX_COUNT_EXCEEDED: 'TX_COUNT_EXCEEDED',\n /** Single transaction exceeds the bot's on-chain maxPerTxAmount */\n MAX_PER_TX_EXCEEDED: 'MAX_PER_TX_EXCEEDED',\n /** Vault-level daily aggregate spending limit exceeded */\n VAULT_AGGREGATE_EXCEEDED: 'VAULT_AGGREGATE_EXCEEDED',\n /** eth_call simulation of the on-chain transaction reverted */\n SIMULATION_FAILED: 'SIMULATION_FAILED',\n /** Routed to human review (AI scan flagged or no consensus) */\n PENDING_REVIEW: 'PENDING_REVIEW',\n /** Relayer wallet has insufficient gas to submit the transaction */\n RELAYER_OUT_OF_GAS: 'RELAYER_OUT_OF_GAS',\n /** On-chain transaction submission failed */\n SUBMISSION_FAILED: 'SUBMISSION_FAILED',\n /** Destination not in the vault/bot whitelist */\n DESTINATION_NOT_WHITELISTED: 'DESTINATION_NOT_WHITELISTED',\n /** Vault address is not a valid AxonVault or was not deployed by a known factory */\n INVALID_VAULT: 'INVALID_VAULT',\n /** Rebalance output token is not in the whitelist (on-chain or relayer default) */\n REBALANCE_TOKEN_NOT_ALLOWED: 'REBALANCE_TOKEN_NOT_ALLOWED',\n /** Rebalance input amount exceeds the bot's maxRebalanceAmount cap */\n MAX_REBALANCE_AMOUNT_EXCEEDED: 'MAX_REBALANCE_AMOUNT_EXCEEDED',\n /** Unknown or internal error */\n INTERNAL_ERROR: 'INTERNAL_ERROR',\n} as const;\n\nexport type PaymentErrorCode = (typeof PaymentErrorCode)[keyof typeof PaymentErrorCode];\n\n// ============================================================================\n// Relayer API paths\n// ============================================================================\n\nexport const RELAYER_API = {\n PAYMENTS: '/v1/payments',\n payment: (requestId: string) => `/v1/payments/${requestId}`,\n EXECUTE: '/v1/execute',\n execute: (requestId: string) => `/v1/execute/${requestId}`,\n SWAP: '/v1/swap',\n swap: (requestId: string) => `/v1/swap/${requestId}`,\n\n // Vault read endpoints (relayer reads chain on behalf of bots)\n vaultBalance: (vault: string, token: string, chainId: number) =>\n `/v1/vault/${vault}/balance/${token}?chainId=${chainId}`,\n vaultBalances: (vault: string, chainId: number) => `/v1/vault/${vault}/balances`,\n vaultInfo: (vault: string, chainId: number) => `/v1/vault/${vault}/info?chainId=${chainId}`,\n botStatus: (vault: string, bot: string, chainId: number) => `/v1/vault/${vault}/bot/${bot}/status?chainId=${chainId}`,\n destinationCheck: (vault: string, bot: string, destination: string, chainId: number) =>\n `/v1/vault/${vault}/bot/${bot}/destination/${destination}?chainId=${chainId}`,\n protocolCheck: (vault: string, protocol: string, chainId: number) =>\n `/v1/vault/${vault}/protocol/${protocol}?chainId=${chainId}`,\n rebalanceTokens: (vault: string, chainId: number) =>\n `/v1/vault/${vault}/rebalance-tokens?chainId=${chainId}`,\n rebalanceTokenCheck: (vault: string, token: string, chainId: number) =>\n `/v1/vault/${vault}/rebalance-token/${token}?chainId=${chainId}`,\n\n // TOS endpoints\n tosStatus: (wallet: string) => `/v1/tos/status?wallet=${wallet}`,\n TOS_ACCEPT: '/v1/tos/accept',\n} as const;\n","import { keccak256, stringToBytes } from 'viem';\nimport type { WalletClient, Hex, Address } from 'viem';\nimport type { PaymentIntent, ExecuteIntent, SwapIntent } from './types.js';\nimport { EIP712_DOMAIN_NAME, EIP712_DOMAIN_VERSION } from './constants.js';\n\n// EIP-712 types for PaymentIntent — field order matches the Solidity struct exactly.\nconst PAYMENT_INTENT_TYPES = {\n PaymentIntent: [\n { name: 'bot', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'token', type: 'address' },\n { name: 'amount', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'ref', type: 'bytes32' },\n ],\n} as const;\n\n// EIP-712 types for ExecuteIntent — DeFi protocol interactions.\nconst EXECUTE_INTENT_TYPES = {\n ExecuteIntent: [\n { name: 'bot', type: 'address' },\n { name: 'protocol', type: 'address' },\n { name: 'calldataHash', type: 'bytes32' },\n { name: 'token', type: 'address' },\n { name: 'amount', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'ref', type: 'bytes32' },\n ],\n} as const;\n\n// EIP-712 types for SwapIntent — in-vault token rebalancing.\nconst SWAP_INTENT_TYPES = {\n SwapIntent: [\n { name: 'bot', type: 'address' },\n { name: 'toToken', type: 'address' },\n { name: 'minToAmount', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'ref', type: 'bytes32' },\n ],\n} as const;\n\nfunction makeDomain(vaultAddress: Address, chainId: number) {\n return {\n name: EIP712_DOMAIN_NAME,\n version: EIP712_DOMAIN_VERSION,\n chainId,\n verifyingContract: vaultAddress,\n } as const;\n}\n\n/**\n * Sign a PaymentIntent using EIP-712 typed structured data.\n *\n * The resulting signature can be submitted to the Axon relayer API, which\n * passes it to AxonVault.executePayment() on-chain.\n */\nexport async function signPayment(\n walletClient: WalletClient,\n vaultAddress: Address,\n chainId: number,\n intent: PaymentIntent,\n): Promise<Hex> {\n if (!walletClient.account) {\n throw new Error('walletClient has no account attached');\n }\n\n return walletClient.signTypedData({\n account: walletClient.account,\n domain: makeDomain(vaultAddress, chainId),\n types: PAYMENT_INTENT_TYPES,\n primaryType: 'PaymentIntent',\n message: {\n bot: intent.bot,\n to: intent.to,\n token: intent.token,\n amount: intent.amount,\n deadline: intent.deadline,\n ref: intent.ref,\n },\n });\n}\n\n/**\n * Sign an ExecuteIntent using EIP-712 typed structured data.\n *\n * The resulting signature can be submitted to the Axon relayer API, which\n * passes it to AxonVault.executeProtocol() on-chain.\n */\nexport async function signExecuteIntent(\n walletClient: WalletClient,\n vaultAddress: Address,\n chainId: number,\n intent: ExecuteIntent,\n): Promise<Hex> {\n if (!walletClient.account) {\n throw new Error('walletClient has no account attached');\n }\n\n return walletClient.signTypedData({\n account: walletClient.account,\n domain: makeDomain(vaultAddress, chainId),\n types: EXECUTE_INTENT_TYPES,\n primaryType: 'ExecuteIntent',\n message: {\n bot: intent.bot,\n protocol: intent.protocol,\n calldataHash: intent.calldataHash,\n token: intent.token,\n amount: intent.amount,\n deadline: intent.deadline,\n ref: intent.ref,\n },\n });\n}\n\n/**\n * Sign a SwapIntent using EIP-712 typed structured data.\n *\n * The resulting signature can be submitted to the Axon relayer API, which\n * passes it to AxonVault.executeSwap() on-chain.\n */\nexport async function signSwapIntent(\n walletClient: WalletClient,\n vaultAddress: Address,\n chainId: number,\n intent: SwapIntent,\n): Promise<Hex> {\n if (!walletClient.account) {\n throw new Error('walletClient has no account attached');\n }\n\n return walletClient.signTypedData({\n account: walletClient.account,\n domain: makeDomain(vaultAddress, chainId),\n types: SWAP_INTENT_TYPES,\n primaryType: 'SwapIntent',\n message: {\n bot: intent.bot,\n toToken: intent.toToken,\n minToAmount: intent.minToAmount,\n deadline: intent.deadline,\n ref: intent.ref,\n },\n });\n}\n\n/**\n * Derive the on-chain `ref` bytes32 from a human-readable memo string.\n *\n * The full memo text is stored off-chain by the relayer (PostgreSQL), linked\n * to the transaction. The keccak256 hash goes into the signed PaymentIntent\n * and is emitted in the PaymentExecuted on-chain event.\n *\n * @param memo Human-readable description, e.g. \"API call #1234 — weather data\"\n * @returns keccak256 hash of the UTF-8 encoded memo, as a bytes32 hex.\n */\nexport function encodeRef(memo: string): Hex {\n return keccak256(stringToBytes(memo));\n}\n","export const AxonVaultAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_axonRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_trackUsedIntents\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"receive\",\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DOMAIN_SEPARATOR\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAX_SPENDING_LIMITS\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"NATIVE_ETH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VERSION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addBot\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AxonVault.BotConfigParams\",\n \"components\": [\n {\n \"name\": \"maxPerTxAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRebalanceAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"spendingLimits\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct AxonVault.SpendingLimit[]\",\n \"components\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"windowSeconds\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"aiTriggerThreshold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requireAiVerification\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addBotDestination\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addGlobalBlacklist\",\n \"inputs\": [\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addGlobalDestination\",\n \"inputs\": [\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addProtocol\",\n \"inputs\": [\n {\n \"name\": \"protocol\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addRebalanceTokens\",\n \"inputs\": [\n {\n \"name\": \"tokens\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approvedProtocolCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approvedProtocols\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"axonRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"botAddedByOperator\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"botDestinationCount\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"botDestinationWhitelist\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deposit\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ref\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fields\",\n \"type\": \"bytes1\",\n \"internalType\": \"bytes1\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"chainId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verifyingContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"extensions\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"executePayment\",\n \"inputs\": [\n {\n \"name\": \"intent\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AxonVault.PaymentIntent\",\n \"components\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ref\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"fromToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"maxFromAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"swapRouter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"swapCalldata\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"executeProtocol\",\n \"inputs\": [\n {\n \"name\": \"intent\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AxonVault.ExecuteIntent\",\n \"components\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocol\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"calldataHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ref\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"callData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"fromToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"maxFromAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"swapRouter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"swapCalldata\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"executeSwap\",\n \"inputs\": [\n {\n \"name\": \"intent\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AxonVault.SwapIntent\",\n \"components\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"toToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"minToAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ref\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"fromToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"maxFromAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"swapRouter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"swapCalldata\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getBotConfig\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AxonVault.BotConfig\",\n \"components\": [\n {\n \"name\": \"isActive\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"registeredAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPerTxAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRebalanceAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"spendingLimits\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct AxonVault.SpendingLimit[]\",\n \"components\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"windowSeconds\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"aiTriggerThreshold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requireAiVerification\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"globalBlacklistCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"globalDestinationBlacklist\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"globalDestinationCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"globalDestinationWhitelist\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isBotActive\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isProtocolApproved\",\n \"inputs\": [\n {\n \"name\": \"protocol\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorBotCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorCeilings\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"maxPerTxAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxBotDailyLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxOperatorBots\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"vaultDailyAggregate\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minAiTriggerFloor\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorMaxDrainPerDay\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pause\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"paused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingOwner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"rebalanceTokenCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"rebalanceTokenWhitelist\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeBot\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeBotDestination\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeGlobalBlacklist\",\n \"inputs\": [\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeGlobalDestination\",\n \"inputs\": [\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeProtocol\",\n \"inputs\": [\n {\n \"name\": \"protocol\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeRebalanceTokens\",\n \"inputs\": [\n {\n \"name\": \"tokens\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOperator\",\n \"inputs\": [\n {\n \"name\": \"_operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOperatorCeilings\",\n \"inputs\": [\n {\n \"name\": \"ceilings\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AxonVault.OperatorCeilings\",\n \"components\": [\n {\n \"name\": \"maxPerTxAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxBotDailyLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxOperatorBots\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"vaultDailyAggregate\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minAiTriggerFloor\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"trackUsedIntents\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpause\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateBotConfig\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AxonVault.BotConfigParams\",\n \"components\": [\n {\n \"name\": \"maxPerTxAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRebalanceAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"spendingLimits\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct AxonVault.SpendingLimit[]\",\n \"components\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"windowSeconds\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"aiTriggerThreshold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requireAiVerification\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"usedIntents\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdraw\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"BotAdded\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"addedBy\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BotConfigUpdated\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"updatedBy\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BotDestinationAdded\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BotDestinationRemoved\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BotRemoved\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"removedBy\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Deposited\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ref\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"GlobalBlacklistAdded\",\n \"inputs\": [\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"GlobalBlacklistRemoved\",\n \"inputs\": [\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"GlobalDestinationAdded\",\n \"inputs\": [\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"GlobalDestinationRemoved\",\n \"inputs\": [\n {\n \"name\": \"destination\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OperatorCeilingsUpdated\",\n \"inputs\": [\n {\n \"name\": \"ceilings\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct AxonVault.OperatorCeilings\",\n \"components\": [\n {\n \"name\": \"maxPerTxAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxBotDailyLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxOperatorBots\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"vaultDailyAggregate\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minAiTriggerFloor\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OperatorSet\",\n \"inputs\": [\n {\n \"name\": \"oldOperator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOperator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferStarted\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Paused\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PaymentExecuted\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ref\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolAdded\",\n \"inputs\": [\n {\n \"name\": \"protocol\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolExecuted\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocol\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ref\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolRemoved\",\n \"inputs\": [\n {\n \"name\": \"protocol\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RebalanceTokenAdded\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RebalanceTokenRemoved\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SwapExecuted\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"fromToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"toToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"fromAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"toAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ref\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SwapPaymentExecuted\",\n \"inputs\": [\n {\n \"name\": \"bot\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"fromToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"toToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"fromAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"toAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ref\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Unpaused\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Withdrawn\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyApprovedProtocol\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AmountMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BotAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BotDoesNotExist\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BotNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CalldataHashMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DeadlineExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DestinationBlacklisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DestinationNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"inputs\": [\n {\n \"name\": \"length\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignatureS\",\n \"inputs\": [\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"EnforcedPause\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ExceedsOperatorCeiling\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ExpectedPause\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientBalance\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"IntentAlreadyUsed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShortString\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MaxPerTxExceeded\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MaxRebalanceAmountExceeded\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NativeTransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAuthorized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAuthorizedRelayer\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OperatorBotLimitReached\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OperatorCannotBeOwner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotConfigured\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleUnavailable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnerCannotBeBot\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PaymentToZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolCallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolNotApproved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolNotInList\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RebalanceTokenNotAllowed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RouterNotApproved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SelfPayment\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StringTooLong\",\n \"inputs\": [\n {\n \"name\": \"str\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SwapFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SwapOutputInsufficient\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManySpendingLimits\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnexpectedETH\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAmount\",\n \"inputs\": []\n }\n] as const;\n","export const AxonVaultFactoryAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_axonRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"factoryOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allVaults\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"axonRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployVault\",\n \"inputs\": [\n {\n \"name\": \"trackUsedIntents\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"vault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerVaultCount\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerVaults\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingOwner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"vaultCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferStarted\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VaultDeployed\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"vault\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"version\",\n \"type\": \"uint16\",\n \"indexed\": false,\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"axonRegistry\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"trackUsedIntents\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n] as const;\n","import { createPublicClient, createWalletClient, http } from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\nimport { base, baseSepolia, arbitrum, arbitrumSepolia } from 'viem/chains';\nimport type { PublicClient, WalletClient, Address, Hex, Chain } from 'viem';\nimport { AxonVaultAbi } from './abis/AxonVault.js';\nimport { AxonVaultFactoryAbi } from './abis/AxonVaultFactory.js';\nimport type { BotConfig, OperatorCeilings, VaultInfo, DestinationCheckResult } from './types.js';\n\n// ============================================================================\n// Chain helpers\n// ============================================================================\n\n/** Returns the viem Chain object for a supported Axon chain ID. */\nexport function getChain(chainId: number): Chain {\n switch (chainId) {\n case 8453:\n return base;\n case 84532:\n return baseSepolia;\n case 42161:\n return arbitrum;\n case 421614:\n return arbitrumSepolia;\n default:\n throw new Error(\n `Unsupported chainId: ${chainId}. Supported: 8453 (Base), 84532 (Base Sepolia), 42161 (Arbitrum), 421614 (Arbitrum Sepolia)`,\n );\n }\n}\n\n/** Create a viem PublicClient for the given chain and RPC URL. */\nexport function createAxonPublicClient(chainId: number, rpcUrl: string): PublicClient {\n return createPublicClient({\n chain: getChain(chainId),\n transport: http(rpcUrl),\n });\n}\n\n/** Create a viem WalletClient from a raw private key (signing-only, no RPC needed). */\nexport function createAxonWalletClient(privateKey: Hex, chainId: number): WalletClient {\n const account = privateKeyToAccount(privateKey);\n return createWalletClient({\n account,\n chain: getChain(chainId),\n transport: http(), // signing is local — transport is unused but required by viem\n });\n}\n\n// ============================================================================\n// Read-only vault helpers\n// ============================================================================\n\n/**\n * Returns the full BotConfig for a bot address from the vault.\n * If the bot has never been added, isActive will be false and all\n * numeric fields will be 0n.\n */\nexport async function getBotConfig(\n publicClient: PublicClient,\n vaultAddress: Address,\n botAddress: Address,\n): Promise<BotConfig> {\n const result = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'getBotConfig',\n args: [botAddress],\n });\n\n return {\n isActive: result.isActive,\n registeredAt: result.registeredAt,\n maxPerTxAmount: result.maxPerTxAmount,\n maxRebalanceAmount: result.maxRebalanceAmount,\n spendingLimits: result.spendingLimits.map((sl) => ({\n amount: sl.amount,\n maxCount: sl.maxCount,\n windowSeconds: sl.windowSeconds,\n })),\n aiTriggerThreshold: result.aiTriggerThreshold,\n requireAiVerification: result.requireAiVerification,\n };\n}\n\n/** Returns whether a bot address is currently active in the vault. */\nexport async function isBotActive(\n publicClient: PublicClient,\n vaultAddress: Address,\n botAddress: Address,\n): Promise<boolean> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'isBotActive',\n args: [botAddress],\n });\n}\n\n/** Returns the operator ceilings set by the vault owner. */\nexport async function getOperatorCeilings(\n publicClient: PublicClient,\n vaultAddress: Address,\n): Promise<OperatorCeilings> {\n const result = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'operatorCeilings',\n });\n\n // viem returns multiple named outputs as a tuple; destructure by position\n const [maxPerTxAmount, maxBotDailyLimit, maxOperatorBots, vaultDailyAggregate, minAiTriggerFloor] = result as [\n bigint,\n bigint,\n bigint,\n bigint,\n bigint,\n ];\n\n return {\n maxPerTxAmount,\n maxBotDailyLimit,\n maxOperatorBots,\n vaultDailyAggregate,\n minAiTriggerFloor,\n };\n}\n\n/**\n * Returns the maximum USDC an operator-compromised wallet could drain per day.\n * Computed on-chain as: min(maxOperatorBots × maxBotDailyLimit, vaultDailyAggregate).\n * Returns 0n if operator has no bot-add permission.\n */\nexport async function operatorMaxDrainPerDay(publicClient: PublicClient, vaultAddress: Address): Promise<bigint> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'operatorMaxDrainPerDay',\n });\n}\n\n/** Returns whether the vault is currently paused. */\nexport async function isVaultPaused(publicClient: PublicClient, vaultAddress: Address): Promise<boolean> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'paused',\n });\n}\n\n/** Returns the EIP-712 domain separator for this vault (for off-chain verification). */\nexport async function getDomainSeparator(publicClient: PublicClient, vaultAddress: Address): Promise<Hex> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'DOMAIN_SEPARATOR',\n });\n}\n\n/** Returns the vault contract version number. */\nexport async function getVaultVersion(publicClient: PublicClient, vaultAddress: Address): Promise<number> {\n const version = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'VERSION',\n });\n return Number(version);\n}\n\n/** Returns the vault owner address. */\nexport async function getVaultOwner(publicClient: PublicClient, vaultAddress: Address): Promise<Address> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'owner',\n });\n}\n\n/** Returns the vault operator address (address(0) if no operator set). */\nexport async function getVaultOperator(publicClient: PublicClient, vaultAddress: Address): Promise<Address> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'operator',\n });\n}\n\n/** Returns whether the vault tracks used intent hashes on-chain. */\nexport async function getTrackUsedIntents(publicClient: PublicClient, vaultAddress: Address): Promise<boolean> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'trackUsedIntents',\n });\n}\n\n/**\n * Check whether a destination address is allowed for a given bot.\n *\n * Logic mirrors the on-chain enforcement order:\n * 1. If destination is on the global blacklist → blocked\n * 2. If global whitelist is non-empty → destination must be on it\n * 3. If bot-specific whitelist is non-empty → destination must be on it\n * 4. Otherwise → allowed\n */\nexport async function isDestinationAllowed(\n publicClient: PublicClient,\n vaultAddress: Address,\n botAddress: Address,\n destination: Address,\n): Promise<DestinationCheckResult> {\n // Step 1: Check global blacklist\n const isBlacklisted = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'globalDestinationBlacklist',\n args: [destination],\n });\n if (isBlacklisted) {\n return { allowed: false, reason: 'Destination is on the global blacklist' };\n }\n\n // Step 2: Check global whitelist (if non-empty, destination must be on it)\n const globalCount = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'globalDestinationCount',\n });\n if (globalCount > 0n) {\n const isGlobalWhitelisted = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'globalDestinationWhitelist',\n args: [destination],\n });\n if (!isGlobalWhitelisted) {\n return { allowed: false, reason: 'Destination is not on the global whitelist' };\n }\n }\n\n // Step 3: Check bot-specific whitelist (if non-empty, destination must be on it)\n const botCount = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'botDestinationCount',\n args: [botAddress],\n });\n if (botCount > 0n) {\n const isBotWhitelisted = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'botDestinationWhitelist',\n args: [botAddress, destination],\n });\n if (!isBotWhitelisted) {\n return { allowed: false, reason: 'Destination is not on the bot whitelist' };\n }\n }\n\n return { allowed: true };\n}\n\n// ============================================================================\n// Rebalance token whitelist (on-chain reads)\n// ============================================================================\n\n/** Returns the number of tokens in the vault's on-chain rebalance whitelist. 0 = no on-chain whitelist. */\nexport async function getRebalanceTokenCount(publicClient: PublicClient, vaultAddress: Address): Promise<number> {\n const count = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'rebalanceTokenCount',\n });\n return Number(count);\n}\n\n/** Returns whether a token is in the vault's on-chain rebalance whitelist. */\nexport async function isRebalanceTokenWhitelisted(\n publicClient: PublicClient,\n vaultAddress: Address,\n token: Address,\n): Promise<boolean> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'rebalanceTokenWhitelist',\n args: [token],\n });\n}\n\n// ============================================================================\n// Factory — deploy a new vault\n// ============================================================================\n\n/**\n * Deploy a new AxonVault via the factory.\n *\n * The vault is owned by the walletClient's account. Permissionless — any\n * address can deploy, no Axon approval required.\n *\n * @param walletClient Wallet that will own the deployed vault.\n * @param factoryAddress Address of the deployed AxonVaultFactory.\n * @param trackUsedIntents If true, executed intent hashes are stored on-chain\n * to prevent exact replay. Default true — only disable\n * for extreme high-frequency bots.\n * @returns Address of the newly deployed vault.\n */\nexport async function deployVault(\n walletClient: WalletClient,\n publicClient: PublicClient,\n factoryAddress: Address,\n trackUsedIntents = true,\n): Promise<Address> {\n if (!walletClient.account) {\n throw new Error('walletClient has no account attached');\n }\n\n const hash = await walletClient.writeContract({\n address: factoryAddress,\n abi: AxonVaultFactoryAbi,\n functionName: 'deployVault',\n args: [trackUsedIntents],\n account: walletClient.account,\n chain: walletClient.chain ?? null,\n });\n\n const receipt = await publicClient.waitForTransactionReceipt({ hash });\n\n // Extract vault address from the VaultDeployed event\n for (const log of receipt.logs) {\n try {\n // The second indexed topic is the vault address (owner is first indexed)\n if (log.topics.length >= 3 && log.topics[2]) {\n const vaultAddress = `0x${log.topics[2].slice(26)}` as Address;\n return vaultAddress;\n }\n } catch {\n // Not a VaultDeployed log, continue\n }\n }\n\n throw new Error('VaultDeployed event not found in transaction receipt');\n}\n","// ============================================================================\n// Shared utilities\n// ============================================================================\n\n/**\n * Tiny UUID v4 generator (no external dependency).\n *\n * Uses `crypto.getRandomValues` in browsers and Node ≥19, with a\n * `require('crypto').randomBytes` fallback for older Node versions.\n */\nexport function generateUuid(): string {\n const bytes = new Uint8Array(16);\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(bytes);\n } else {\n // Node.js fallback\n const { randomBytes } = require('crypto') as typeof import('crypto');\n const buf = randomBytes(16);\n for (let i = 0; i < 16; i++) bytes[i] = buf[i] ?? 0;\n }\n bytes[6] = (bytes[6]! & 0x0f) | 0x40; // version 4\n bytes[8] = (bytes[8]! & 0x3f) | 0x80; // variant bits\n const hex = Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;\n}\n","import type { WalletClient, Address, Hex } from 'viem';\nimport type {\n AxonClientConfig,\n PayInput,\n PaymentIntent,\n PaymentResult,\n ExecuteInput,\n ExecuteIntent,\n SwapInput,\n SwapIntent,\n VaultInfo,\n DestinationCheckResult,\n RebalanceTokensResult,\n TosStatus,\n} from './types.js';\nimport { signPayment, signExecuteIntent, signSwapIntent, encodeRef } from './signer.js';\nimport { createAxonWalletClient } from './vault.js';\nimport { DEFAULT_DEADLINE_SECONDS, RELAYER_API } from './constants.js';\nimport { generateUuid } from './utils.js';\nimport { keccak256 } from 'viem';\n\n// ============================================================================\n// AxonClient\n// ============================================================================\n\n/**\n * Main entry point for bots interacting with Axon.\n *\n * Handles EIP-712 signing, relayer communication, and status polling.\n * Bots never submit transactions directly — they sign intents and the relayer\n * handles all on-chain execution.\n *\n * All chain reads (balances, bot status, vault info) go through the relayer\n * API — bots never need an RPC endpoint.\n *\n * @example\n * ```ts\n * import { AxonClient, USDC } from '@axonfi/sdk'\n *\n * const client = new AxonClient({\n * vaultAddress: '0x...',\n * chainId: 84532, // Base Sepolia\n * botPrivateKey: '0x...',\n * relayerUrl: 'https://relay.axonfi.xyz',\n * })\n *\n * const result = await client.pay({\n * to: '0x...recipient...',\n * token: USDC[84532],\n * amount: 5_000_000n, // 5 USDC\n * memo: 'API call #1234 — weather data',\n * })\n *\n * console.log(result.status, result.txHash)\n * ```\n */\nexport class AxonClient {\n private readonly vaultAddress: Address;\n private readonly chainId: number;\n private readonly relayerUrl: string;\n private readonly walletClient: WalletClient;\n\n constructor(config: AxonClientConfig) {\n this.vaultAddress = config.vaultAddress;\n this.chainId = config.chainId;\n this.relayerUrl = config.relayerUrl.replace(/\\/$/, ''); // strip trailing slash\n\n if (!config.botPrivateKey) {\n throw new Error('botPrivateKey is required in AxonClientConfig');\n }\n this.walletClient = createAxonWalletClient(config.botPrivateKey, config.chainId);\n }\n\n // ============================================================================\n // Bot address\n // ============================================================================\n\n /** Returns the bot's address derived from the configured private key. */\n get botAddress(): Address {\n const account = this.walletClient.account;\n if (!account) throw new Error('No account on walletClient');\n return account.address;\n }\n\n // ============================================================================\n // pay()\n // ============================================================================\n\n /**\n * Create, sign, and submit a payment intent to the Axon relayer.\n *\n * Three possible outcomes (all included in PaymentResult.status):\n * - `\"approved\"`: fast path — txHash available immediately\n * - `\"pending_review\"`: AI scan or human review in progress — poll for status\n * - `\"rejected\"`: payment was rejected — reason field explains why\n */\n async pay(input: PayInput): Promise<PaymentResult> {\n const intent = this._buildPaymentIntent(input);\n const signature = await signPayment(this.walletClient, this.vaultAddress, this.chainId, intent);\n return this._submitPayment(intent, signature, input);\n }\n\n // ============================================================================\n // execute()\n // ============================================================================\n\n /**\n * Sign and submit a DeFi protocol execution to the Axon relayer.\n *\n * The vault approves `token` to `protocol`, calls it with `callData`,\n * then revokes the approval. Tokens stay in the vault or go to the protocol\n * as specified by the calldata.\n */\n async execute(input: ExecuteInput): Promise<PaymentResult> {\n const intent = this._buildExecuteIntent(input);\n const signature = await signExecuteIntent(this.walletClient, this.vaultAddress, this.chainId, intent);\n return this._submitExecute(intent, signature, input);\n }\n\n // ============================================================================\n // swap()\n // ============================================================================\n\n /**\n * Sign and submit an in-vault token swap to the Axon relayer.\n *\n * Swaps tokens within the vault (no external recipient). Useful for\n * rebalancing vault holdings.\n */\n async swap(input: SwapInput): Promise<PaymentResult> {\n const intent = this._buildSwapIntent(input);\n const signature = await signSwapIntent(this.walletClient, this.vaultAddress, this.chainId, intent);\n return this._submitSwap(intent, signature, input);\n }\n\n // ============================================================================\n // getBalance() — via relayer\n // ============================================================================\n\n /** Read the vault's ERC-20 balance for a given token (via relayer). */\n async getBalance(token: Address): Promise<bigint> {\n const path = RELAYER_API.vaultBalance(this.vaultAddress, token, this.chainId);\n const data = await this._get(path);\n return BigInt(data.balance);\n }\n\n // ============================================================================\n // getBalances() — via relayer\n // ============================================================================\n\n /**\n * Read the vault's ERC-20 balances for multiple tokens in a single call (via relayer).\n * Returns a record mapping token address → balance.\n */\n async getBalances(tokens: Address[]): Promise<Record<Address, bigint>> {\n const path = RELAYER_API.vaultBalances(this.vaultAddress, this.chainId);\n const url = `${this.relayerUrl}${path}?chainId=${this.chainId}&tokens=${tokens.join(',')}`;\n\n const response = await fetch(url, {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (!response.ok) {\n const body = await response.text();\n throw new Error(`Relayer request failed [${response.status}]: ${body}`);\n }\n\n const data = (await response.json()) as { balances: Record<string, string> };\n const result: Record<Address, bigint> = {};\n for (const [addr, val] of Object.entries(data.balances)) {\n result[addr as Address] = BigInt(val);\n }\n return result;\n }\n\n // ============================================================================\n // isActive() — via relayer\n // ============================================================================\n\n /** Returns whether this bot is registered and active in the vault (via relayer). */\n async isActive(): Promise<boolean> {\n const path = RELAYER_API.botStatus(this.vaultAddress, this.botAddress, this.chainId);\n const data = await this._get(path);\n return data.isActive;\n }\n\n // ============================================================================\n // isPaused() — via relayer\n // ============================================================================\n\n /** Returns whether the vault is currently paused (via relayer). */\n async isPaused(): Promise<boolean> {\n const path = RELAYER_API.vaultInfo(this.vaultAddress, this.chainId);\n const data = await this._get(path);\n return data.paused;\n }\n\n // ============================================================================\n // getVaultInfo() — via relayer\n // ============================================================================\n\n /** Returns high-level vault info (owner, operator, paused, version, trackUsedIntents) via relayer. */\n async getVaultInfo(): Promise<VaultInfo> {\n const path = RELAYER_API.vaultInfo(this.vaultAddress, this.chainId);\n return this._get(path) as Promise<VaultInfo>;\n }\n\n // ============================================================================\n // canPayTo() — via relayer\n // ============================================================================\n\n /**\n * Check whether this bot can pay to a given destination address (via relayer).\n * Checks blacklist → global whitelist → bot whitelist, matching on-chain logic.\n */\n async canPayTo(destination: Address): Promise<DestinationCheckResult> {\n const path = RELAYER_API.destinationCheck(this.vaultAddress, this.botAddress, destination, this.chainId);\n return this._get(path) as Promise<DestinationCheckResult>;\n }\n\n // ============================================================================\n // isProtocolApproved() — via relayer\n // ============================================================================\n\n /** Returns whether a protocol address is approved for executeProtocol() calls (via relayer). */\n async isProtocolApproved(protocol: Address): Promise<boolean> {\n const path = RELAYER_API.protocolCheck(this.vaultAddress, protocol, this.chainId);\n const data = await this._get(path);\n return data.approved;\n }\n\n // ============================================================================\n // getRebalanceTokens() — via relayer\n // ============================================================================\n\n /**\n * Returns the effective rebalance token whitelist for this vault.\n *\n * If the owner set tokens on-chain, those override entirely.\n * If no on-chain whitelist, returns relayer defaults (USDC, WETH, USDT).\n * Use this before calling swap() to check which output tokens are allowed.\n */\n async getRebalanceTokens(): Promise<RebalanceTokensResult> {\n const path = RELAYER_API.rebalanceTokens(this.vaultAddress, this.chainId);\n return this._get(path) as Promise<RebalanceTokensResult>;\n }\n\n // ============================================================================\n // isRebalanceTokenAllowed() — via relayer\n // ============================================================================\n\n /** Check if a specific token is allowed for rebalancing (executeSwap output) on this vault. */\n async isRebalanceTokenAllowed(token: Address): Promise<{ allowed: boolean; source: 'default' | 'on_chain' }> {\n const path = RELAYER_API.rebalanceTokenCheck(this.vaultAddress, token, this.chainId);\n return this._get(path) as Promise<{ allowed: boolean; source: 'default' | 'on_chain' }>;\n }\n\n // ============================================================================\n // TOS (Terms of Service)\n // ============================================================================\n\n /** Check if a wallet has accepted the current TOS version. */\n async getTosStatus(wallet: string): Promise<TosStatus> {\n return this._get(RELAYER_API.tosStatus(wallet)) as Promise<TosStatus>;\n }\n\n /**\n * Sign and submit TOS acceptance. Uses the owner's wallet (not the bot key).\n *\n * @param signer - Object with a `signMessage` method (e.g. a viem WalletClient\n * or ethers Signer). This should be the vault owner's wallet, not the bot key.\n * @param wallet - The owner's wallet address (must match the signer).\n */\n async acceptTos(\n signer: { signMessage: (args: { message: string }) => Promise<Hex> },\n wallet: string,\n ): Promise<TosStatus> {\n // 1. Get current TOS version from relayer\n const { tosVersion } = await this.getTosStatus(wallet);\n\n // 2. Construct and sign the acceptance message\n const timestamp = Math.floor(Date.now() / 1000);\n const message = `I accept the Axon Terms of Service (${tosVersion}).\\nWallet: ${wallet}\\nTimestamp: ${timestamp}`;\n const signature = await signer.signMessage({ message });\n\n // 3. Submit to relayer\n const url = `${this.relayerUrl}${RELAYER_API.TOS_ACCEPT}`;\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ wallet, signature, tosVersion, timestamp }),\n });\n\n if (!response.ok) {\n const body = await response.text();\n throw new Error(`TOS acceptance failed [${response.status}]: ${body}`);\n }\n\n return response.json() as Promise<TosStatus>;\n }\n\n // ============================================================================\n // poll() / pollExecute() / pollSwap()\n // ============================================================================\n\n /**\n * Poll the relayer for the status of an async payment.\n *\n * Use this when pay() returns `status: \"pending_review\"`. Poll until\n * status is `\"approved\"` or `\"rejected\"`.\n *\n * Recommended polling interval: 5–10 seconds.\n */\n async poll(requestId: string): Promise<PaymentResult> {\n return this._get(RELAYER_API.payment(requestId)) as Promise<PaymentResult>;\n }\n\n /** Poll the relayer for the status of an async protocol execution. */\n async pollExecute(requestId: string): Promise<PaymentResult> {\n return this._get(RELAYER_API.execute(requestId)) as Promise<PaymentResult>;\n }\n\n /** Poll the relayer for the status of an async swap. */\n async pollSwap(requestId: string): Promise<PaymentResult> {\n return this._get(RELAYER_API.swap(requestId)) as Promise<PaymentResult>;\n }\n\n // ============================================================================\n // signPayment() — low-level access\n // ============================================================================\n\n /**\n * Sign a PaymentIntent directly without submitting to the relayer.\n *\n * Use this if you want to build the intent yourself and pass the signature\n * to another system (e.g. a custom relayer integration).\n */\n async signPayment(intent: PaymentIntent): Promise<Hex> {\n return signPayment(this.walletClient, this.vaultAddress, this.chainId, intent);\n }\n\n // ============================================================================\n // Internal helpers\n // ============================================================================\n\n private async _get(path: string): Promise<any> {\n const url = `${this.relayerUrl}${path}`;\n const response = await fetch(url, {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (!response.ok) {\n const body = await response.text();\n throw new Error(`Relayer request failed [${response.status}]: ${body}`);\n }\n\n return response.json();\n }\n\n private _defaultDeadline(): bigint {\n return BigInt(Math.floor(Date.now() / 1000) + DEFAULT_DEADLINE_SECONDS);\n }\n\n private _resolveRef(memo?: string, ref?: Hex): Hex {\n if (ref) return ref;\n if (memo) return encodeRef(memo);\n return '0x0000000000000000000000000000000000000000000000000000000000000000';\n }\n\n private _buildPaymentIntent(input: PayInput): PaymentIntent {\n return {\n bot: this.botAddress,\n to: input.to,\n token: input.token,\n amount: input.amount,\n deadline: input.deadline ?? this._defaultDeadline(),\n ref: this._resolveRef(input.memo, input.ref),\n };\n }\n\n private _buildExecuteIntent(input: ExecuteInput): ExecuteIntent {\n return {\n bot: this.botAddress,\n protocol: input.protocol,\n calldataHash: keccak256(input.callData),\n token: input.token,\n amount: input.amount,\n deadline: input.deadline ?? this._defaultDeadline(),\n ref: this._resolveRef(input.memo, input.ref),\n };\n }\n\n private _buildSwapIntent(input: SwapInput): SwapIntent {\n return {\n bot: this.botAddress,\n toToken: input.toToken,\n minToAmount: input.minToAmount,\n deadline: input.deadline ?? this._defaultDeadline(),\n ref: this._resolveRef(input.memo, input.ref),\n };\n }\n\n private async _submitPayment(intent: PaymentIntent, signature: Hex, input: PayInput): Promise<PaymentResult> {\n const idempotencyKey = input.idempotencyKey ?? generateUuid();\n\n const body = {\n // Routing\n chainId: this.chainId,\n vaultAddress: this.vaultAddress,\n\n // Flat intent fields (matches relayer DTO)\n bot: intent.bot,\n to: intent.to,\n token: intent.token,\n amount: intent.amount.toString(),\n deadline: intent.deadline.toString(),\n ref: intent.ref,\n signature,\n\n // Off-chain metadata\n idempotencyKey,\n ...(input.memo !== undefined && { memo: input.memo }),\n ...(input.resourceUrl !== undefined && { resourceUrl: input.resourceUrl }),\n ...(input.invoiceId !== undefined && { invoiceId: input.invoiceId }),\n ...(input.orderId !== undefined && { orderId: input.orderId }),\n ...(input.recipientLabel !== undefined && { recipientLabel: input.recipientLabel }),\n ...(input.metadata !== undefined && { metadata: input.metadata }),\n };\n\n return this._post(RELAYER_API.PAYMENTS, idempotencyKey, body);\n }\n\n private async _submitExecute(intent: ExecuteIntent, signature: Hex, input: ExecuteInput): Promise<PaymentResult> {\n const idempotencyKey = input.idempotencyKey ?? generateUuid();\n\n const body = {\n chainId: this.chainId,\n vaultAddress: this.vaultAddress,\n\n // Flat intent fields\n bot: intent.bot,\n protocol: intent.protocol,\n calldataHash: intent.calldataHash,\n token: intent.token,\n amount: intent.amount.toString(),\n deadline: intent.deadline.toString(),\n ref: intent.ref,\n signature,\n\n // Protocol calldata\n callData: input.callData,\n\n // Optional pre-swap\n ...(input.fromToken !== undefined && { fromToken: input.fromToken }),\n ...(input.maxFromAmount !== undefined && { maxFromAmount: input.maxFromAmount.toString() }),\n\n // Off-chain metadata\n idempotencyKey,\n ...(input.memo !== undefined && { memo: input.memo }),\n ...(input.protocolName !== undefined && { protocolName: input.protocolName }),\n ...(input.metadata !== undefined && { metadata: input.metadata }),\n };\n\n return this._post(RELAYER_API.EXECUTE, idempotencyKey, body);\n }\n\n private async _submitSwap(intent: SwapIntent, signature: Hex, input: SwapInput): Promise<PaymentResult> {\n const idempotencyKey = input.idempotencyKey ?? generateUuid();\n\n const body = {\n chainId: this.chainId,\n vaultAddress: this.vaultAddress,\n\n // Flat intent fields\n bot: intent.bot,\n toToken: intent.toToken,\n minToAmount: intent.minToAmount.toString(),\n deadline: intent.deadline.toString(),\n ref: intent.ref,\n signature,\n\n // Optional source token\n ...(input.fromToken !== undefined && { fromToken: input.fromToken }),\n ...(input.maxFromAmount !== undefined && { maxFromAmount: input.maxFromAmount.toString() }),\n\n // Off-chain metadata\n idempotencyKey,\n ...(input.memo !== undefined && { memo: input.memo }),\n };\n\n return this._post(RELAYER_API.SWAP, idempotencyKey, body);\n }\n\n private async _post(path: string, idempotencyKey: string, body: Record<string, unknown>): Promise<PaymentResult> {\n const url = `${this.relayerUrl}${path}`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Idempotency-Key': idempotencyKey,\n },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const responseBody = await response.text();\n throw new Error(`Relayer request failed [${response.status}]: ${responseBody}`);\n }\n\n return response.json() as Promise<PaymentResult>;\n }\n}\n","// ============================================================================\n// V3 Keystore — Encrypt / Decrypt bot private keys\n// ============================================================================\n//\n// Standard Ethereum V3 keystore format (same as MetaMask / Geth).\n// Uses scrypt KDF + AES-128-CTR cipher + keccak256 MAC.\n\nimport { scryptAsync } from '@noble/hashes/scrypt';\nimport { keccak_256 } from '@noble/hashes/sha3';\nimport { ctr } from '@noble/ciphers/aes';\nimport { privateKeyToAccount } from 'viem/accounts';\nimport type { Hex } from 'viem';\nimport { generateUuid } from './utils.js';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface KeystoreV3 {\n version: 3;\n id: string;\n address: string; // lowercase hex, no 0x prefix\n crypto: {\n ciphertext: string;\n cipherparams: { iv: string };\n cipher: 'aes-128-ctr';\n kdf: 'scrypt';\n kdfparams: {\n dklen: number;\n salt: string;\n n: number;\n r: number;\n p: number;\n };\n mac: string;\n };\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst SCRYPT_N = 262144; // 2^18\nconst SCRYPT_R = 8;\nconst SCRYPT_P = 1;\nconst SCRYPT_DKLEN = 32;\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nfunction getRandomBytes(length: number): Uint8Array {\n const bytes = new Uint8Array(length);\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(bytes);\n } else {\n const { randomBytes } = require('crypto') as typeof import('crypto');\n const buf = randomBytes(length);\n for (let i = 0; i < length; i++) bytes[i] = buf[i] ?? 0;\n }\n return bytes;\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const clean = hex.startsWith('0x') ? hex.slice(2) : hex;\n const bytes = new Uint8Array(clean.length / 2);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\n// ============================================================================\n// encryptKeystore\n// ============================================================================\n\n/**\n * Encrypt a raw private key into a V3 keystore JSON object.\n *\n * Uses scrypt KDF (n=262144, r=8, p=1) and AES-128-CTR cipher —\n * the same format as MetaMask and Geth.\n *\n * @param privateKey - Raw private key as 0x-prefixed hex string\n * @param passphrase - Passphrase to encrypt with (min 1 character)\n * @returns V3 keystore object ready to serialize as JSON\n *\n * @example\n * ```ts\n * import { encryptKeystore } from '@axonfi/sdk';\n *\n * const keystore = await encryptKeystore('0xabc...', 'my-strong-passphrase');\n * fs.writeFileSync('bot-keystore.json', JSON.stringify(keystore, null, 2));\n * ```\n */\nexport async function encryptKeystore(privateKey: Hex, passphrase: string): Promise<KeystoreV3> {\n if (!passphrase) throw new Error('Passphrase must not be empty');\n\n const keyBytes = hexToBytes(privateKey);\n const account = privateKeyToAccount(privateKey);\n const address = account.address.slice(2).toLowerCase(); // no 0x prefix\n\n // Random salt and IV\n const salt = getRandomBytes(32);\n const iv = getRandomBytes(16);\n\n // Derive key via scrypt\n const derivedKey = await scryptAsync(\n new TextEncoder().encode(passphrase),\n salt,\n { N: SCRYPT_N, r: SCRYPT_R, p: SCRYPT_P, dkLen: SCRYPT_DKLEN },\n );\n\n // Encrypt with AES-128-CTR (first 16 bytes of derived key)\n const encryptionKey = derivedKey.slice(0, 16);\n const cipher = ctr(encryptionKey, iv);\n const ciphertext = cipher.encrypt(keyBytes);\n\n // MAC = keccak256(derivedKey[16:32] ++ ciphertext)\n const macInput = new Uint8Array(16 + ciphertext.length);\n macInput.set(derivedKey.slice(16, 32), 0);\n macInput.set(ciphertext, 16);\n const mac = keccak_256(macInput);\n\n return {\n version: 3,\n id: generateUuid(),\n address,\n crypto: {\n ciphertext: bytesToHex(ciphertext),\n cipherparams: { iv: bytesToHex(iv) },\n cipher: 'aes-128-ctr',\n kdf: 'scrypt',\n kdfparams: {\n dklen: SCRYPT_DKLEN,\n salt: bytesToHex(salt),\n n: SCRYPT_N,\n r: SCRYPT_R,\n p: SCRYPT_P,\n },\n mac: bytesToHex(mac),\n },\n };\n}\n\n// ============================================================================\n// decryptKeystore\n// ============================================================================\n\n/**\n * Decrypt a V3 keystore back to a raw private key.\n *\n * @param keystore - V3 keystore object or JSON string\n * @param passphrase - Passphrase used during encryption\n * @returns Raw private key as 0x-prefixed hex string\n * @throws Error if passphrase is wrong (MAC mismatch) or keystore is invalid\n *\n * @example\n * ```ts\n * import { AxonClient, decryptKeystore } from '@axonfi/sdk';\n *\n * const keystore = JSON.parse(fs.readFileSync('bot-keystore.json', 'utf8'));\n * const privateKey = await decryptKeystore(keystore, process.env.BOT_PASSPHRASE!);\n * const client = new AxonClient({ botPrivateKey: privateKey, ... });\n * ```\n */\nexport async function decryptKeystore(keystore: KeystoreV3 | string, passphrase: string): Promise<Hex> {\n // Parse JSON string if needed\n let ks: KeystoreV3;\n if (typeof keystore === 'string') {\n try {\n ks = JSON.parse(keystore) as KeystoreV3;\n } catch {\n throw new Error('Invalid keystore: could not parse JSON');\n }\n } else {\n ks = keystore;\n }\n\n // Validate structure\n if (ks.version !== 3) throw new Error(`Unsupported keystore version: ${ks.version}`);\n if (!ks.crypto) throw new Error('Invalid keystore: missing crypto field');\n if (ks.crypto.kdf !== 'scrypt') throw new Error(`Unsupported KDF: ${ks.crypto.kdf}`);\n if (ks.crypto.cipher !== 'aes-128-ctr') throw new Error(`Unsupported cipher: ${ks.crypto.cipher}`);\n\n const { kdfparams, ciphertext: ctHex, cipherparams, mac: expectedMacHex } = ks.crypto;\n\n // Derive key via scrypt\n const salt = hexToBytes(kdfparams.salt);\n const derivedKey = await scryptAsync(\n new TextEncoder().encode(passphrase),\n salt,\n { N: kdfparams.n, r: kdfparams.r, p: kdfparams.p, dkLen: kdfparams.dklen },\n );\n\n // Verify MAC\n const ciphertextBytes = hexToBytes(ctHex);\n const macInput = new Uint8Array(16 + ciphertextBytes.length);\n macInput.set(derivedKey.slice(16, 32), 0);\n macInput.set(ciphertextBytes, 16);\n const computedMac = bytesToHex(keccak_256(macInput));\n\n if (computedMac !== expectedMacHex) {\n throw new Error('Wrong passphrase: MAC mismatch');\n }\n\n // Decrypt with AES-128-CTR\n const iv = hexToBytes(cipherparams.iv);\n const encryptionKey = derivedKey.slice(0, 16);\n const cipher = ctr(encryptionKey, iv);\n const plaintext = cipher.decrypt(ciphertextBytes);\n\n return `0x${bytesToHex(plaintext)}` as Hex;\n}\n","import type { Address } from 'viem';\n\n// ============================================================================\n// Known token registry — single source of truth for all packages\n// ============================================================================\n\nexport interface KnownToken {\n symbol: string;\n name: string;\n decimals: number;\n /** Address per chainId. Missing key = not available on that chain. */\n addresses: Partial<Record<number, Address>>;\n}\n\n/**\n * Master token registry keyed by symbol.\n * At a glance you see which chains each token lives on.\n *\n * Chain IDs: 8453 = Base, 84532 = Base Sepolia, 42161 = Arbitrum One, 421614 = Arbitrum Sepolia\n */\nexport const KNOWN_TOKENS = {\n // ── Core stables + wrapped ──────────────────────────────\n USDC: {\n symbol: 'USDC',\n name: 'USD Coin',\n decimals: 6,\n addresses: {\n 8453: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n 84532: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',\n 42161: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',\n 421614: '0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d',\n },\n },\n USDT: {\n symbol: 'USDT',\n name: 'Tether USD',\n decimals: 6,\n addresses: {\n 8453: '0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2',\n 42161: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9',\n },\n },\n DAI: {\n symbol: 'DAI',\n name: 'Dai Stablecoin',\n decimals: 18,\n addresses: {\n 8453: '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb',\n 84532: '0x819ffecd4e64f193e959944bcd57eedc7755e17a',\n 42161: '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1',\n },\n },\n WETH: {\n symbol: 'WETH',\n name: 'Wrapped Ether',\n decimals: 18,\n addresses: {\n 8453: '0x4200000000000000000000000000000000000006',\n 84532: '0x4200000000000000000000000000000000000006',\n 42161: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n },\n },\n WBTC: {\n symbol: 'WBTC',\n name: 'Wrapped BTC',\n decimals: 8,\n addresses: {\n 8453: '0x0555E30da8f98308EdB960aa94C0Db47230d2B9c',\n 42161: '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f',\n },\n },\n cbBTC: {\n symbol: 'cbBTC',\n name: 'Coinbase Wrapped BTC',\n decimals: 8,\n addresses: {\n 8453: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf',\n 42161: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf',\n },\n },\n\n // ── Liquid staking ──────────────────────────────────────\n cbETH: {\n symbol: 'cbETH',\n name: 'Coinbase Staked ETH',\n decimals: 18,\n addresses: {\n 8453: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',\n 42161: '0x1DEBd73E752bEaF79865Fd6446b0c970EaE7732f',\n },\n },\n wstETH: {\n symbol: 'wstETH',\n name: 'Lido Wrapped stETH',\n decimals: 18,\n addresses: {\n 8453: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452',\n 42161: '0x5979D7b546E38E414F7E9822514be443A4800529',\n },\n },\n rETH: {\n symbol: 'rETH',\n name: 'Rocket Pool ETH',\n decimals: 18,\n addresses: {\n 42161: '0xEC70Dcb4A1EFa46b8F2D97C310C9c4790ba5ffA8',\n },\n },\n\n // ── DeFi blue-chips ─────────────────────────────────────\n LINK: {\n symbol: 'LINK',\n name: 'Chainlink',\n decimals: 18,\n addresses: {\n 8453: '0x88Fb150BDc53A65fe94Dea0c9BA0a6dAf8C6e196',\n 84532: '0xE4aB69C077896252FAFBD49EFD26B5D171A32410',\n 42161: '0xf97f4df75117a78c1A5a0DBb814Af92458539FB4',\n },\n },\n UNI: {\n symbol: 'UNI',\n name: 'Uniswap',\n decimals: 18,\n addresses: {\n 8453: '0xc3De830EA07524a0761646a6a4e4be0e114a3C83',\n 42161: '0xFa7F8980b0f1E64A2062791cc3b0871572f1F7f0',\n },\n },\n AAVE: {\n symbol: 'AAVE',\n name: 'Aave',\n decimals: 18,\n addresses: {\n 8453: '0x63706e401c06ac8513145b7687A14804d17f814b',\n 42161: '0xba5DdD1f9d7F570dc94a51479a000E3BCE967196',\n },\n },\n COMP: {\n symbol: 'COMP',\n name: 'Compound',\n decimals: 18,\n addresses: {\n 8453: '0x9e1028F5F1D5eDE59748FFceE5532509976840E0',\n 42161: '0x354A6dA3fcde098F8389cad84b0182725c6C91dE',\n },\n },\n CRV: {\n symbol: 'CRV',\n name: 'Curve DAO',\n decimals: 18,\n addresses: {\n 8453: '0x8Ee73c484A26e0A5df2Ee2a4960B789967dd0415',\n 42161: '0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978',\n },\n },\n SNX: {\n symbol: 'SNX',\n name: 'Synthetix',\n decimals: 18,\n addresses: {\n 8453: '0x22e6966B799c4D5B13BE962E1D117b56327FDa66',\n },\n },\n\n // ── Chain-native governance ─────────────────────────────\n ARB: {\n symbol: 'ARB',\n name: 'Arbitrum',\n decimals: 18,\n addresses: {\n 42161: '0x912CE59144191C1204E64559FE8253a0e49E6548',\n },\n },\n AERO: {\n symbol: 'AERO',\n name: 'Aerodrome',\n decimals: 18,\n addresses: {\n 8453: '0x940181a94A35A4569E4529A3CDfB74e38FD98631',\n },\n },\n GMX: {\n symbol: 'GMX',\n name: 'GMX',\n decimals: 18,\n addresses: {\n 42161: '0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a',\n },\n },\n} as const satisfies Record<string, KnownToken>;\n\nexport type KnownTokenSymbol = keyof typeof KNOWN_TOKENS;\n\n// Pre-build reverse lookup map: lowercase address → symbol\nconst addressToSymbol = new Map<string, string>();\nfor (const token of Object.values(KNOWN_TOKENS)) {\n for (const addr of Object.values(token.addresses)) {\n addressToSymbol.set((addr as string).toLowerCase(), token.symbol);\n }\n}\n\n/** All known tokens available on a specific chain. */\nexport function getKnownTokensForChain(chainId: number): (KnownToken & { address: Address })[] {\n const result: (KnownToken & { address: Address })[] = [];\n for (const token of Object.values(KNOWN_TOKENS)) {\n const addr = (token.addresses as Record<number, Address | undefined>)[chainId];\n if (addr) {\n result.push({ ...token, address: addr });\n }\n }\n return result;\n}\n\n/** Reverse-lookup: address → symbol (case-insensitive). Returns null if unknown. */\nexport function getTokenSymbolByAddress(address: string): string | null {\n return addressToSymbol.get(address.toLowerCase()) ?? null;\n}\n","export const AxonRegistryAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"initialOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addRelayer\",\n \"inputs\": [\n {\n \"name\": \"relayer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addSwapRouter\",\n \"inputs\": [\n {\n \"name\": \"router\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedSwapRouter\",\n \"inputs\": [\n {\n \"name\": \"router\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isAuthorized\",\n \"inputs\": [\n {\n \"name\": \"relayer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingOwner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeRelayer\",\n \"inputs\": [\n {\n \"name\": \"relayer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeSwapRouter\",\n \"inputs\": [\n {\n \"name\": \"router\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOracleConfig\",\n \"inputs\": [\n {\n \"name\": \"uniV3Factory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"usdc\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"weth\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"uniswapV3Factory\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"usdcAddress\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"wethAddress\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OracleConfigUpdated\",\n \"inputs\": [\n {\n \"name\": \"uniswapV3Factory\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"usdc\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"weth\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferStarted\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RelayerAdded\",\n \"inputs\": [\n {\n \"name\": \"relayer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RelayerRemoved\",\n \"inputs\": [\n {\n \"name\": \"relayer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SwapRouterAdded\",\n \"inputs\": [\n {\n \"name\": \"router\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SwapRouterRemoved\",\n \"inputs\": [\n {\n \"name\": \"router\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyApproved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyAuthorized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotApproved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAuthorized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n] as const;\n"]}
1
+ {"version":3,"sources":["../src/constants.ts","../src/signer.ts","../src/abis/AxonVault.ts","../src/abis/AxonVaultFactory.ts","../src/vault.ts","../src/tokens.ts","../src/utils.ts","../src/client.ts","../src/keystore.ts","../src/abis/AxonRegistry.ts"],"names":["keccak256","stringToBytes","Chain","base","baseSepolia","arbitrum","arbitrumSepolia","createPublicClient","http","privateKeyToAccount","createWalletClient","Token","scryptAsync","ctr","keccak_256"],"mappings":"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","file":"index.cjs","sourcesContent":["import { keccak256, stringToBytes } from 'viem';\nimport type { Address } from 'viem';\n\n// ============================================================================\n// EIP-712 type hashes\n// ============================================================================\n\n/**\n * keccak256 of the PaymentIntent type string — used for manual digest\n * verification. viem's signTypedData computes this internally; you don't\n * need this value for signing, only for low-level verification.\n */\nexport const PAYMENT_INTENT_TYPEHASH: `0x${string}` = keccak256(\n stringToBytes('PaymentIntent(address bot,address to,address token,uint256 amount,uint256 deadline,bytes32 ref)'),\n);\n\n/** keccak256 of the ExecuteIntent type string for DeFi protocol interactions. */\nexport const EXECUTE_INTENT_TYPEHASH: `0x${string}` = keccak256(\n stringToBytes(\n 'ExecuteIntent(address bot,address protocol,bytes32 calldataHash,address token,uint256 amount,uint256 deadline,bytes32 ref)',\n ),\n);\n\n/** keccak256 of the SwapIntent type string for in-vault token rebalancing. */\nexport const SWAP_INTENT_TYPEHASH: `0x${string}` = keccak256(\n stringToBytes('SwapIntent(address bot,address toToken,uint256 minToAmount,uint256 deadline,bytes32 ref)'),\n);\n\n/** EIP-712 domain name and version for AxonVault. Matches the constructor. */\nexport const EIP712_DOMAIN_NAME = 'AxonVault' as const;\nexport const EIP712_DOMAIN_VERSION = '1' as const;\n\n// ============================================================================\n// Native ETH sentinel\n// ============================================================================\n\n/** Sentinel address representing native ETH in PaymentIntents and deposits. */\nexport const NATIVE_ETH: Address = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';\n\n// ============================================================================\n// USDC addresses per chain\n// ============================================================================\n\nexport const USDC: Record<number, Address> = {\n // Base mainnet\n 8453: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n // Base Sepolia\n 84532: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',\n // Arbitrum One\n 42161: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',\n // Arbitrum Sepolia\n 421614: '0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d',\n};\n\n// ============================================================================\n// Chain enum & supported chain IDs\n// ============================================================================\n\nexport enum Chain {\n Base = 8453,\n BaseSepolia = 84532,\n Arbitrum = 42161,\n ArbitrumSepolia = 421614,\n}\n\nexport const SUPPORTED_CHAIN_IDS = [8453, 84532, 42161, 421614] as const;\nexport type SupportedChainId = (typeof SUPPORTED_CHAIN_IDS)[number];\n\n// ============================================================================\n// Chain metadata (names & block explorers)\n// ============================================================================\n\n/** Human-readable chain names. */\nexport const CHAIN_NAMES: Record<number, string> = {\n [Chain.Base]: 'Base',\n [Chain.BaseSepolia]: 'Base Sepolia',\n [Chain.Arbitrum]: 'Arbitrum One',\n [Chain.ArbitrumSepolia]: 'Arbitrum Sepolia',\n // Future v1 chains (metadata only — not in SUPPORTED_CHAIN_IDS yet)\n 10: 'Optimism',\n 11155420: 'OP Sepolia',\n 137: 'Polygon',\n 80002: 'Polygon Amoy',\n};\n\n/** Block explorer TX URL prefix per chain. */\nexport const EXPLORER_TX: Record<number, string> = {\n [Chain.Base]: 'https://basescan.org/tx/',\n [Chain.BaseSepolia]: 'https://sepolia.basescan.org/tx/',\n [Chain.Arbitrum]: 'https://arbiscan.io/tx/',\n [Chain.ArbitrumSepolia]: 'https://sepolia.arbiscan.io/tx/',\n 10: 'https://optimistic.etherscan.io/tx/',\n 11155420: 'https://sepolia-optimism.etherscan.io/tx/',\n 137: 'https://polygonscan.com/tx/',\n 80002: 'https://amoy.polygonscan.com/tx/',\n};\n\n/** Block explorer address URL prefix per chain. */\nexport const EXPLORER_ADDR: Record<number, string> = {\n [Chain.Base]: 'https://basescan.org/address/',\n [Chain.BaseSepolia]: 'https://sepolia.basescan.org/address/',\n [Chain.Arbitrum]: 'https://arbiscan.io/address/',\n [Chain.ArbitrumSepolia]: 'https://sepolia.arbiscan.io/address/',\n 10: 'https://optimistic.etherscan.io/address/',\n 11155420: 'https://sepolia-optimism.etherscan.io/address/',\n 137: 'https://polygonscan.com/address/',\n 80002: 'https://amoy.polygonscan.com/address/',\n};\n\n// ============================================================================\n// Time constants (seconds)\n// ============================================================================\n\n/** Default intent validity window when no deadline is specified. */\nexport const DEFAULT_DEADLINE_SECONDS = 300; // 5 minutes\n\n/** Window presets for SpendingLimit.windowSeconds. */\nexport const WINDOW = {\n ONE_HOUR: 3600n,\n ONE_DAY: 86400n,\n ONE_WEEK: 604800n,\n THIRTY_DAYS: 2592000n,\n} as const;\n\n// ============================================================================\n// Payment rejection error codes\n// ============================================================================\n\n/**\n * Structured error codes returned by the relayer when a payment is rejected.\n * Bots should import these to programmatically handle failures.\n */\nexport const PaymentErrorCode = {\n /** Payment destination is the vault itself */\n SELF_PAYMENT: 'SELF_PAYMENT',\n /** Payment destination is the zero address */\n ZERO_ADDRESS: 'ZERO_ADDRESS',\n /** Payment amount is zero */\n ZERO_AMOUNT: 'ZERO_AMOUNT',\n /** Vault does not hold enough of the requested token */\n INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',\n /** EIP-712 signature verification failed */\n INVALID_SIGNATURE: 'INVALID_SIGNATURE',\n /** Payment intent deadline has passed */\n DEADLINE_EXPIRED: 'DEADLINE_EXPIRED',\n /** Bot is temporarily paused by the operator */\n BOT_PAUSED: 'BOT_PAUSED',\n /** Bot address is not registered/active in the vault */\n BOT_NOT_ACTIVE: 'BOT_NOT_ACTIVE',\n /** Destination address is on the global or vault blacklist */\n BLACKLISTED: 'BLACKLISTED',\n /** Rolling-window spending limit (USD amount) exceeded */\n SPENDING_LIMIT_EXCEEDED: 'SPENDING_LIMIT_EXCEEDED',\n /** Rolling-window transaction count limit exceeded */\n TX_COUNT_EXCEEDED: 'TX_COUNT_EXCEEDED',\n /** Single transaction exceeds the bot's on-chain maxPerTxAmount */\n MAX_PER_TX_EXCEEDED: 'MAX_PER_TX_EXCEEDED',\n /** Vault-level daily aggregate spending limit exceeded */\n VAULT_AGGREGATE_EXCEEDED: 'VAULT_AGGREGATE_EXCEEDED',\n /** eth_call simulation of the on-chain transaction reverted */\n SIMULATION_FAILED: 'SIMULATION_FAILED',\n /** Routed to human review (AI scan flagged or no consensus) */\n PENDING_REVIEW: 'PENDING_REVIEW',\n /** Relayer wallet has insufficient gas to submit the transaction */\n RELAYER_OUT_OF_GAS: 'RELAYER_OUT_OF_GAS',\n /** On-chain transaction submission failed */\n SUBMISSION_FAILED: 'SUBMISSION_FAILED',\n /** Destination not in the vault/bot whitelist */\n DESTINATION_NOT_WHITELISTED: 'DESTINATION_NOT_WHITELISTED',\n /** Vault address is not a valid AxonVault or was not deployed by a known factory */\n INVALID_VAULT: 'INVALID_VAULT',\n /** Rebalance output token is not in the whitelist (on-chain or relayer default) */\n REBALANCE_TOKEN_NOT_ALLOWED: 'REBALANCE_TOKEN_NOT_ALLOWED',\n /** Rebalance input amount exceeds the bot's maxRebalanceAmount cap */\n MAX_REBALANCE_AMOUNT_EXCEEDED: 'MAX_REBALANCE_AMOUNT_EXCEEDED',\n /** Unknown or internal error */\n INTERNAL_ERROR: 'INTERNAL_ERROR',\n} as const;\n\nexport type PaymentErrorCode = (typeof PaymentErrorCode)[keyof typeof PaymentErrorCode];\n\n// ============================================================================\n// Relayer API paths\n// ============================================================================\n\nexport const RELAYER_API = {\n PAYMENTS: '/v1/payments',\n payment: (requestId: string) => `/v1/payments/${requestId}`,\n EXECUTE: '/v1/execute',\n execute: (requestId: string) => `/v1/execute/${requestId}`,\n SWAP: '/v1/swap',\n swap: (requestId: string) => `/v1/swap/${requestId}`,\n\n // Vault read endpoints (relayer reads chain on behalf of bots)\n vaultBalance: (vault: string, token: string, chainId: number) =>\n `/v1/vault/${vault}/balance/${token}?chainId=${chainId}`,\n vaultBalances: (vault: string, chainId: number) => `/v1/vault/${vault}/balances`,\n vaultInfo: (vault: string, chainId: number) => `/v1/vault/${vault}/info?chainId=${chainId}`,\n botStatus: (vault: string, bot: string, chainId: number) => `/v1/vault/${vault}/bot/${bot}/status?chainId=${chainId}`,\n destinationCheck: (vault: string, bot: string, destination: string, chainId: number) =>\n `/v1/vault/${vault}/bot/${bot}/destination/${destination}?chainId=${chainId}`,\n protocolCheck: (vault: string, protocol: string, chainId: number) =>\n `/v1/vault/${vault}/protocol/${protocol}?chainId=${chainId}`,\n rebalanceTokens: (vault: string, chainId: number) => `/v1/vault/${vault}/rebalance-tokens?chainId=${chainId}`,\n rebalanceTokenCheck: (vault: string, token: string, chainId: number) =>\n `/v1/vault/${vault}/rebalance-token/${token}?chainId=${chainId}`,\n\n // TOS endpoints\n tosStatus: (wallet: string) => `/v1/tos/status?wallet=${wallet}`,\n TOS_ACCEPT: '/v1/tos/accept',\n} as const;\n","import { keccak256, stringToBytes } from 'viem';\nimport type { WalletClient, Hex, Address } from 'viem';\nimport type { PaymentIntent, ExecuteIntent, SwapIntent } from './types.js';\nimport { EIP712_DOMAIN_NAME, EIP712_DOMAIN_VERSION } from './constants.js';\n\n// EIP-712 types for PaymentIntent — field order matches the Solidity struct exactly.\nconst PAYMENT_INTENT_TYPES = {\n PaymentIntent: [\n { name: 'bot', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'token', type: 'address' },\n { name: 'amount', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'ref', type: 'bytes32' },\n ],\n} as const;\n\n// EIP-712 types for ExecuteIntent — DeFi protocol interactions.\nconst EXECUTE_INTENT_TYPES = {\n ExecuteIntent: [\n { name: 'bot', type: 'address' },\n { name: 'protocol', type: 'address' },\n { name: 'calldataHash', type: 'bytes32' },\n { name: 'token', type: 'address' },\n { name: 'amount', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'ref', type: 'bytes32' },\n ],\n} as const;\n\n// EIP-712 types for SwapIntent — in-vault token rebalancing.\nconst SWAP_INTENT_TYPES = {\n SwapIntent: [\n { name: 'bot', type: 'address' },\n { name: 'toToken', type: 'address' },\n { name: 'minToAmount', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'ref', type: 'bytes32' },\n ],\n} as const;\n\nfunction makeDomain(vaultAddress: Address, chainId: number) {\n return {\n name: EIP712_DOMAIN_NAME,\n version: EIP712_DOMAIN_VERSION,\n chainId,\n verifyingContract: vaultAddress,\n } as const;\n}\n\n/**\n * Sign a PaymentIntent using EIP-712 typed structured data.\n *\n * The resulting signature can be submitted to the Axon relayer API, which\n * passes it to AxonVault.executePayment() on-chain.\n */\nexport async function signPayment(\n walletClient: WalletClient,\n vaultAddress: Address,\n chainId: number,\n intent: PaymentIntent,\n): Promise<Hex> {\n if (!walletClient.account) {\n throw new Error('walletClient has no account attached');\n }\n\n return walletClient.signTypedData({\n account: walletClient.account,\n domain: makeDomain(vaultAddress, chainId),\n types: PAYMENT_INTENT_TYPES,\n primaryType: 'PaymentIntent',\n message: {\n bot: intent.bot,\n to: intent.to,\n token: intent.token,\n amount: intent.amount,\n deadline: intent.deadline,\n ref: intent.ref,\n },\n });\n}\n\n/**\n * Sign an ExecuteIntent using EIP-712 typed structured data.\n *\n * The resulting signature can be submitted to the Axon relayer API, which\n * passes it to AxonVault.executeProtocol() on-chain.\n */\nexport async function signExecuteIntent(\n walletClient: WalletClient,\n vaultAddress: Address,\n chainId: number,\n intent: ExecuteIntent,\n): Promise<Hex> {\n if (!walletClient.account) {\n throw new Error('walletClient has no account attached');\n }\n\n return walletClient.signTypedData({\n account: walletClient.account,\n domain: makeDomain(vaultAddress, chainId),\n types: EXECUTE_INTENT_TYPES,\n primaryType: 'ExecuteIntent',\n message: {\n bot: intent.bot,\n protocol: intent.protocol,\n calldataHash: intent.calldataHash,\n token: intent.token,\n amount: intent.amount,\n deadline: intent.deadline,\n ref: intent.ref,\n },\n });\n}\n\n/**\n * Sign a SwapIntent using EIP-712 typed structured data.\n *\n * The resulting signature can be submitted to the Axon relayer API, which\n * passes it to AxonVault.executeSwap() on-chain.\n */\nexport async function signSwapIntent(\n walletClient: WalletClient,\n vaultAddress: Address,\n chainId: number,\n intent: SwapIntent,\n): Promise<Hex> {\n if (!walletClient.account) {\n throw new Error('walletClient has no account attached');\n }\n\n return walletClient.signTypedData({\n account: walletClient.account,\n domain: makeDomain(vaultAddress, chainId),\n types: SWAP_INTENT_TYPES,\n primaryType: 'SwapIntent',\n message: {\n bot: intent.bot,\n toToken: intent.toToken,\n minToAmount: intent.minToAmount,\n deadline: intent.deadline,\n ref: intent.ref,\n },\n });\n}\n\n/**\n * Derive the on-chain `ref` bytes32 from a human-readable memo string.\n *\n * The full memo text is stored off-chain by the relayer (PostgreSQL), linked\n * to the transaction. The keccak256 hash goes into the signed PaymentIntent\n * and is emitted in the PaymentExecuted on-chain event.\n *\n * @param memo Human-readable description, e.g. \"API call #1234 — weather data\"\n * @returns keccak256 hash of the UTF-8 encoded memo, as a bytes32 hex.\n */\nexport function encodeRef(memo: string): Hex {\n return keccak256(stringToBytes(memo));\n}\n","export const AxonVaultAbi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_owner',\n type: 'address',\n internalType: 'address',\n },\n {\n name: '_axonRegistry',\n type: 'address',\n internalType: 'address',\n },\n {\n name: '_trackUsedIntents',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'receive',\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'DOMAIN_SEPARATOR',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'bytes32',\n internalType: 'bytes32',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'MAX_SPENDING_LIMITS',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint8',\n internalType: 'uint8',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'NATIVE_ETH',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'VERSION',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint16',\n internalType: 'uint16',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'acceptOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addBot',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'params',\n type: 'tuple',\n internalType: 'struct AxonVault.BotConfigParams',\n components: [\n {\n name: 'maxPerTxAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxRebalanceAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'spendingLimits',\n type: 'tuple[]',\n internalType: 'struct AxonVault.SpendingLimit[]',\n components: [\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxCount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'windowSeconds',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n },\n {\n name: 'aiTriggerThreshold',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'requireAiVerification',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addBotDestination',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'destination',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addGlobalBlacklist',\n inputs: [\n {\n name: 'destination',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addGlobalDestination',\n inputs: [\n {\n name: 'destination',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addProtocol',\n inputs: [\n {\n name: 'protocol',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addRebalanceTokens',\n inputs: [\n {\n name: 'tokens',\n type: 'address[]',\n internalType: 'address[]',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approvedProtocolCount',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approvedProtocols',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'axonRegistry',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'botAddedByOperator',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'botDestinationCount',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'botDestinationWhitelist',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'deposit',\n inputs: [\n {\n name: 'token',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'ref',\n type: 'bytes32',\n internalType: 'bytes32',\n },\n ],\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'eip712Domain',\n inputs: [],\n outputs: [\n {\n name: 'fields',\n type: 'bytes1',\n internalType: 'bytes1',\n },\n {\n name: 'name',\n type: 'string',\n internalType: 'string',\n },\n {\n name: 'version',\n type: 'string',\n internalType: 'string',\n },\n {\n name: 'chainId',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'verifyingContract',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'salt',\n type: 'bytes32',\n internalType: 'bytes32',\n },\n {\n name: 'extensions',\n type: 'uint256[]',\n internalType: 'uint256[]',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'executePayment',\n inputs: [\n {\n name: 'intent',\n type: 'tuple',\n internalType: 'struct AxonVault.PaymentIntent',\n components: [\n {\n name: 'bot',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'to',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'token',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'deadline',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'ref',\n type: 'bytes32',\n internalType: 'bytes32',\n },\n ],\n },\n {\n name: 'signature',\n type: 'bytes',\n internalType: 'bytes',\n },\n {\n name: 'fromToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'maxFromAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'swapRouter',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'swapCalldata',\n type: 'bytes',\n internalType: 'bytes',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'executeProtocol',\n inputs: [\n {\n name: 'intent',\n type: 'tuple',\n internalType: 'struct AxonVault.ExecuteIntent',\n components: [\n {\n name: 'bot',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'protocol',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'calldataHash',\n type: 'bytes32',\n internalType: 'bytes32',\n },\n {\n name: 'token',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'deadline',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'ref',\n type: 'bytes32',\n internalType: 'bytes32',\n },\n ],\n },\n {\n name: 'signature',\n type: 'bytes',\n internalType: 'bytes',\n },\n {\n name: 'callData',\n type: 'bytes',\n internalType: 'bytes',\n },\n {\n name: 'fromToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'maxFromAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'swapRouter',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'swapCalldata',\n type: 'bytes',\n internalType: 'bytes',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bytes',\n internalType: 'bytes',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'executeSwap',\n inputs: [\n {\n name: 'intent',\n type: 'tuple',\n internalType: 'struct AxonVault.SwapIntent',\n components: [\n {\n name: 'bot',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'toToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'minToAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'deadline',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'ref',\n type: 'bytes32',\n internalType: 'bytes32',\n },\n ],\n },\n {\n name: 'signature',\n type: 'bytes',\n internalType: 'bytes',\n },\n {\n name: 'fromToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'maxFromAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'swapRouter',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'swapCalldata',\n type: 'bytes',\n internalType: 'bytes',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getBotConfig',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'tuple',\n internalType: 'struct AxonVault.BotConfig',\n components: [\n {\n name: 'isActive',\n type: 'bool',\n internalType: 'bool',\n },\n {\n name: 'registeredAt',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxPerTxAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxRebalanceAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'spendingLimits',\n type: 'tuple[]',\n internalType: 'struct AxonVault.SpendingLimit[]',\n components: [\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxCount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'windowSeconds',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n },\n {\n name: 'aiTriggerThreshold',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'requireAiVerification',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'globalBlacklistCount',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'globalDestinationBlacklist',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'globalDestinationCount',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'globalDestinationWhitelist',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isBotActive',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isProtocolApproved',\n inputs: [\n {\n name: 'protocol',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'operator',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'operatorBotCount',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'operatorCeilings',\n inputs: [],\n outputs: [\n {\n name: 'maxPerTxAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxBotDailyLimit',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxOperatorBots',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'vaultDailyAggregate',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'minAiTriggerFloor',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'operatorMaxDrainPerDay',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'paused',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pendingOwner',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'rebalanceTokenCount',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'rebalanceTokenWhitelist',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'removeBot',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'removeBotDestination',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'destination',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'removeGlobalBlacklist',\n inputs: [\n {\n name: 'destination',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'removeGlobalDestination',\n inputs: [\n {\n name: 'destination',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'removeProtocol',\n inputs: [\n {\n name: 'protocol',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'removeRebalanceTokens',\n inputs: [\n {\n name: 'tokens',\n type: 'address[]',\n internalType: 'address[]',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'renounceOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setOperator',\n inputs: [\n {\n name: '_operator',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setOperatorCeilings',\n inputs: [\n {\n name: 'ceilings',\n type: 'tuple',\n internalType: 'struct AxonVault.OperatorCeilings',\n components: [\n {\n name: 'maxPerTxAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxBotDailyLimit',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxOperatorBots',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'vaultDailyAggregate',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'minAiTriggerFloor',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'trackUsedIntents',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [\n {\n name: 'newOwner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unpause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateBotConfig',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'params',\n type: 'tuple',\n internalType: 'struct AxonVault.BotConfigParams',\n components: [\n {\n name: 'maxPerTxAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxRebalanceAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'spendingLimits',\n type: 'tuple[]',\n internalType: 'struct AxonVault.SpendingLimit[]',\n components: [\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxCount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'windowSeconds',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n },\n {\n name: 'aiTriggerThreshold',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'requireAiVerification',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'usedIntents',\n inputs: [\n {\n name: '',\n type: 'bytes32',\n internalType: 'bytes32',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'withdraw',\n inputs: [\n {\n name: 'token',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'to',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'BotAdded',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'addedBy',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'BotConfigUpdated',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'updatedBy',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'BotDestinationAdded',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'destination',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'BotDestinationRemoved',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'destination',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'BotRemoved',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'removedBy',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Deposited',\n inputs: [\n {\n name: 'from',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'token',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'ref',\n type: 'bytes32',\n indexed: false,\n internalType: 'bytes32',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'EIP712DomainChanged',\n inputs: [],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'GlobalBlacklistAdded',\n inputs: [\n {\n name: 'destination',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'GlobalBlacklistRemoved',\n inputs: [\n {\n name: 'destination',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'GlobalDestinationAdded',\n inputs: [\n {\n name: 'destination',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'GlobalDestinationRemoved',\n inputs: [\n {\n name: 'destination',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OperatorCeilingsUpdated',\n inputs: [\n {\n name: 'ceilings',\n type: 'tuple',\n indexed: false,\n internalType: 'struct AxonVault.OperatorCeilings',\n components: [\n {\n name: 'maxPerTxAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxBotDailyLimit',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxOperatorBots',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'vaultDailyAggregate',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'minAiTriggerFloor',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OperatorSet',\n inputs: [\n {\n name: 'oldOperator',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'newOperator',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferStarted',\n inputs: [\n {\n name: 'previousOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'newOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n {\n name: 'previousOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'newOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Paused',\n inputs: [\n {\n name: 'account',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PaymentExecuted',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'to',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'token',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'ref',\n type: 'bytes32',\n indexed: false,\n internalType: 'bytes32',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ProtocolAdded',\n inputs: [\n {\n name: 'protocol',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ProtocolExecuted',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'protocol',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'token',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'ref',\n type: 'bytes32',\n indexed: false,\n internalType: 'bytes32',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ProtocolRemoved',\n inputs: [\n {\n name: 'protocol',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'RebalanceTokenAdded',\n inputs: [\n {\n name: 'token',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'RebalanceTokenRemoved',\n inputs: [\n {\n name: 'token',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'SwapExecuted',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'fromToken',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n {\n name: 'toToken',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n {\n name: 'fromAmount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'toAmount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'ref',\n type: 'bytes32',\n indexed: false,\n internalType: 'bytes32',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'SwapPaymentExecuted',\n inputs: [\n {\n name: 'bot',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'to',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'fromToken',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n {\n name: 'toToken',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n {\n name: 'fromAmount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'toAmount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'ref',\n type: 'bytes32',\n indexed: false,\n internalType: 'bytes32',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Unpaused',\n inputs: [\n {\n name: 'account',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Withdrawn',\n inputs: [\n {\n name: 'token',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'to',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'AlreadyApprovedProtocol',\n inputs: [],\n },\n {\n type: 'error',\n name: 'AmountMismatch',\n inputs: [],\n },\n {\n type: 'error',\n name: 'BotAlreadyExists',\n inputs: [],\n },\n {\n type: 'error',\n name: 'BotDoesNotExist',\n inputs: [],\n },\n {\n type: 'error',\n name: 'BotNotActive',\n inputs: [],\n },\n {\n type: 'error',\n name: 'CalldataHashMismatch',\n inputs: [],\n },\n {\n type: 'error',\n name: 'DeadlineExpired',\n inputs: [],\n },\n {\n type: 'error',\n name: 'DestinationBlacklisted',\n inputs: [],\n },\n {\n type: 'error',\n name: 'DestinationNotWhitelisted',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ECDSAInvalidSignature',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ECDSAInvalidSignatureLength',\n inputs: [\n {\n name: 'length',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n },\n {\n type: 'error',\n name: 'ECDSAInvalidSignatureS',\n inputs: [\n {\n name: 's',\n type: 'bytes32',\n internalType: 'bytes32',\n },\n ],\n },\n {\n type: 'error',\n name: 'EnforcedPause',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ExceedsOperatorCeiling',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ExpectedPause',\n inputs: [],\n },\n {\n type: 'error',\n name: 'InsufficientBalance',\n inputs: [],\n },\n {\n type: 'error',\n name: 'IntentAlreadyUsed',\n inputs: [],\n },\n {\n type: 'error',\n name: 'InvalidShortString',\n inputs: [],\n },\n {\n type: 'error',\n name: 'InvalidSignature',\n inputs: [],\n },\n {\n type: 'error',\n name: 'MaxPerTxExceeded',\n inputs: [],\n },\n {\n type: 'error',\n name: 'MaxRebalanceAmountExceeded',\n inputs: [],\n },\n {\n type: 'error',\n name: 'NativeTransferFailed',\n inputs: [],\n },\n {\n type: 'error',\n name: 'NotAuthorized',\n inputs: [],\n },\n {\n type: 'error',\n name: 'NotAuthorizedRelayer',\n inputs: [],\n },\n {\n type: 'error',\n name: 'OperatorBotLimitReached',\n inputs: [],\n },\n {\n type: 'error',\n name: 'OperatorCannotBeOwner',\n inputs: [],\n },\n {\n type: 'error',\n name: 'OracleNotConfigured',\n inputs: [],\n },\n {\n type: 'error',\n name: 'OracleUnavailable',\n inputs: [],\n },\n {\n type: 'error',\n name: 'OwnableInvalidOwner',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'error',\n name: 'OwnableUnauthorizedAccount',\n inputs: [\n {\n name: 'account',\n type: 'address',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'error',\n name: 'OwnerCannotBeBot',\n inputs: [],\n },\n {\n type: 'error',\n name: 'PaymentToZeroAddress',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ProtocolCallFailed',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ProtocolNotApproved',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ProtocolNotInList',\n inputs: [],\n },\n {\n type: 'error',\n name: 'RebalanceTokenNotAllowed',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ReentrancyGuardReentrantCall',\n inputs: [],\n },\n {\n type: 'error',\n name: 'RouterNotApproved',\n inputs: [],\n },\n {\n type: 'error',\n name: 'SafeERC20FailedOperation',\n inputs: [\n {\n name: 'token',\n type: 'address',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'error',\n name: 'SelfPayment',\n inputs: [],\n },\n {\n type: 'error',\n name: 'StringTooLong',\n inputs: [\n {\n name: 'str',\n type: 'string',\n internalType: 'string',\n },\n ],\n },\n {\n type: 'error',\n name: 'SwapFailed',\n inputs: [],\n },\n {\n type: 'error',\n name: 'SwapOutputInsufficient',\n inputs: [],\n },\n {\n type: 'error',\n name: 'TooManySpendingLimits',\n inputs: [],\n },\n {\n type: 'error',\n name: 'UnexpectedETH',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ZeroAddress',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ZeroAmount',\n inputs: [],\n },\n] as const;\n","export const AxonVaultFactoryAbi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_axonRegistry',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'factoryOwner',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'acceptOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'allVaults',\n inputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'axonRegistry',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'deployVault',\n inputs: [\n {\n name: 'trackUsedIntents',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n outputs: [\n {\n name: 'vault',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'ownerVaultCount',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'ownerVaults',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pendingOwner',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'renounceOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [\n {\n name: 'newOwner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'vaultCount',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'OwnershipTransferStarted',\n inputs: [\n {\n name: 'previousOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'newOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n {\n name: 'previousOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'newOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'VaultDeployed',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'vault',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'version',\n type: 'uint16',\n indexed: false,\n internalType: 'uint16',\n },\n {\n name: 'axonRegistry',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n {\n name: 'trackUsedIntents',\n type: 'bool',\n indexed: false,\n internalType: 'bool',\n },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'OwnableInvalidOwner',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'error',\n name: 'OwnableUnauthorizedAccount',\n inputs: [\n {\n name: 'account',\n type: 'address',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'error',\n name: 'ZeroAddress',\n inputs: [],\n },\n] as const;\n","import { createPublicClient, createWalletClient, http } from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\nimport { base, baseSepolia, arbitrum, arbitrumSepolia } from 'viem/chains';\nimport type { PublicClient, WalletClient, Address, Hex, Chain } from 'viem';\nimport { AxonVaultAbi } from './abis/AxonVault.js';\nimport { AxonVaultFactoryAbi } from './abis/AxonVaultFactory.js';\nimport type { BotConfig, OperatorCeilings, VaultInfo, DestinationCheckResult } from './types.js';\n\n// ============================================================================\n// Chain helpers\n// ============================================================================\n\n/** Returns the viem Chain object for a supported Axon chain ID. */\nexport function getChain(chainId: number): Chain {\n switch (chainId) {\n case 8453:\n return base;\n case 84532:\n return baseSepolia;\n case 42161:\n return arbitrum;\n case 421614:\n return arbitrumSepolia;\n default:\n throw new Error(\n `Unsupported chainId: ${chainId}. Supported: 8453 (Base), 84532 (Base Sepolia), 42161 (Arbitrum), 421614 (Arbitrum Sepolia)`,\n );\n }\n}\n\n/** Create a viem PublicClient for the given chain and RPC URL. */\nexport function createAxonPublicClient(chainId: number, rpcUrl: string): PublicClient {\n return createPublicClient({\n chain: getChain(chainId),\n transport: http(rpcUrl),\n });\n}\n\n/** Create a viem WalletClient from a raw private key (signing-only, no RPC needed). */\nexport function createAxonWalletClient(privateKey: Hex, chainId: number): WalletClient {\n const account = privateKeyToAccount(privateKey);\n return createWalletClient({\n account,\n chain: getChain(chainId),\n transport: http(), // signing is local — transport is unused but required by viem\n });\n}\n\n// ============================================================================\n// Read-only vault helpers\n// ============================================================================\n\n/**\n * Returns the full BotConfig for a bot address from the vault.\n * If the bot has never been added, isActive will be false and all\n * numeric fields will be 0n.\n */\nexport async function getBotConfig(\n publicClient: PublicClient,\n vaultAddress: Address,\n botAddress: Address,\n): Promise<BotConfig> {\n const result = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'getBotConfig',\n args: [botAddress],\n });\n\n return {\n isActive: result.isActive,\n registeredAt: result.registeredAt,\n maxPerTxAmount: result.maxPerTxAmount,\n maxRebalanceAmount: result.maxRebalanceAmount,\n spendingLimits: result.spendingLimits.map((sl) => ({\n amount: sl.amount,\n maxCount: sl.maxCount,\n windowSeconds: sl.windowSeconds,\n })),\n aiTriggerThreshold: result.aiTriggerThreshold,\n requireAiVerification: result.requireAiVerification,\n };\n}\n\n/** Returns whether a bot address is currently active in the vault. */\nexport async function isBotActive(\n publicClient: PublicClient,\n vaultAddress: Address,\n botAddress: Address,\n): Promise<boolean> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'isBotActive',\n args: [botAddress],\n });\n}\n\n/** Returns the operator ceilings set by the vault owner. */\nexport async function getOperatorCeilings(\n publicClient: PublicClient,\n vaultAddress: Address,\n): Promise<OperatorCeilings> {\n const result = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'operatorCeilings',\n });\n\n // viem returns multiple named outputs as a tuple; destructure by position\n const [maxPerTxAmount, maxBotDailyLimit, maxOperatorBots, vaultDailyAggregate, minAiTriggerFloor] = result as [\n bigint,\n bigint,\n bigint,\n bigint,\n bigint,\n ];\n\n return {\n maxPerTxAmount,\n maxBotDailyLimit,\n maxOperatorBots,\n vaultDailyAggregate,\n minAiTriggerFloor,\n };\n}\n\n/**\n * Returns the maximum USDC an operator-compromised wallet could drain per day.\n * Computed on-chain as: min(maxOperatorBots × maxBotDailyLimit, vaultDailyAggregate).\n * Returns 0n if operator has no bot-add permission.\n */\nexport async function operatorMaxDrainPerDay(publicClient: PublicClient, vaultAddress: Address): Promise<bigint> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'operatorMaxDrainPerDay',\n });\n}\n\n/** Returns whether the vault is currently paused. */\nexport async function isVaultPaused(publicClient: PublicClient, vaultAddress: Address): Promise<boolean> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'paused',\n });\n}\n\n/** Returns the EIP-712 domain separator for this vault (for off-chain verification). */\nexport async function getDomainSeparator(publicClient: PublicClient, vaultAddress: Address): Promise<Hex> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'DOMAIN_SEPARATOR',\n });\n}\n\n/** Returns the vault contract version number. */\nexport async function getVaultVersion(publicClient: PublicClient, vaultAddress: Address): Promise<number> {\n const version = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'VERSION',\n });\n return Number(version);\n}\n\n/** Returns the vault owner address. */\nexport async function getVaultOwner(publicClient: PublicClient, vaultAddress: Address): Promise<Address> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'owner',\n });\n}\n\n/** Returns the vault operator address (address(0) if no operator set). */\nexport async function getVaultOperator(publicClient: PublicClient, vaultAddress: Address): Promise<Address> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'operator',\n });\n}\n\n/** Returns whether the vault tracks used intent hashes on-chain. */\nexport async function getTrackUsedIntents(publicClient: PublicClient, vaultAddress: Address): Promise<boolean> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'trackUsedIntents',\n });\n}\n\n/**\n * Check whether a destination address is allowed for a given bot.\n *\n * Logic mirrors the on-chain enforcement order:\n * 1. If destination is on the global blacklist → blocked\n * 2. If global whitelist is non-empty → destination must be on it\n * 3. If bot-specific whitelist is non-empty → destination must be on it\n * 4. Otherwise → allowed\n */\nexport async function isDestinationAllowed(\n publicClient: PublicClient,\n vaultAddress: Address,\n botAddress: Address,\n destination: Address,\n): Promise<DestinationCheckResult> {\n // Step 1: Check global blacklist\n const isBlacklisted = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'globalDestinationBlacklist',\n args: [destination],\n });\n if (isBlacklisted) {\n return { allowed: false, reason: 'Destination is on the global blacklist' };\n }\n\n // Step 2: Check global whitelist (if non-empty, destination must be on it)\n const globalCount = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'globalDestinationCount',\n });\n if (globalCount > 0n) {\n const isGlobalWhitelisted = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'globalDestinationWhitelist',\n args: [destination],\n });\n if (!isGlobalWhitelisted) {\n return { allowed: false, reason: 'Destination is not on the global whitelist' };\n }\n }\n\n // Step 3: Check bot-specific whitelist (if non-empty, destination must be on it)\n const botCount = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'botDestinationCount',\n args: [botAddress],\n });\n if (botCount > 0n) {\n const isBotWhitelisted = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'botDestinationWhitelist',\n args: [botAddress, destination],\n });\n if (!isBotWhitelisted) {\n return { allowed: false, reason: 'Destination is not on the bot whitelist' };\n }\n }\n\n return { allowed: true };\n}\n\n// ============================================================================\n// Rebalance token whitelist (on-chain reads)\n// ============================================================================\n\n/** Returns the number of tokens in the vault's on-chain rebalance whitelist. 0 = no on-chain whitelist. */\nexport async function getRebalanceTokenCount(publicClient: PublicClient, vaultAddress: Address): Promise<number> {\n const count = await publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'rebalanceTokenCount',\n });\n return Number(count);\n}\n\n/** Returns whether a token is in the vault's on-chain rebalance whitelist. */\nexport async function isRebalanceTokenWhitelisted(\n publicClient: PublicClient,\n vaultAddress: Address,\n token: Address,\n): Promise<boolean> {\n return publicClient.readContract({\n address: vaultAddress,\n abi: AxonVaultAbi,\n functionName: 'rebalanceTokenWhitelist',\n args: [token],\n });\n}\n\n// ============================================================================\n// Factory — deploy a new vault\n// ============================================================================\n\n/**\n * Deploy a new AxonVault via the factory.\n *\n * The vault is owned by the walletClient's account. Permissionless — any\n * address can deploy, no Axon approval required.\n *\n * @param walletClient Wallet that will own the deployed vault.\n * @param factoryAddress Address of the deployed AxonVaultFactory.\n * @param trackUsedIntents If true, executed intent hashes are stored on-chain\n * to prevent exact replay. Default true — only disable\n * for extreme high-frequency bots.\n * @returns Address of the newly deployed vault.\n */\nexport async function deployVault(\n walletClient: WalletClient,\n publicClient: PublicClient,\n factoryAddress: Address,\n trackUsedIntents = true,\n): Promise<Address> {\n if (!walletClient.account) {\n throw new Error('walletClient has no account attached');\n }\n\n const hash = await walletClient.writeContract({\n address: factoryAddress,\n abi: AxonVaultFactoryAbi,\n functionName: 'deployVault',\n args: [trackUsedIntents],\n account: walletClient.account,\n chain: walletClient.chain ?? null,\n });\n\n const receipt = await publicClient.waitForTransactionReceipt({ hash });\n\n // Extract vault address from the VaultDeployed event\n for (const log of receipt.logs) {\n try {\n // The second indexed topic is the vault address (owner is first indexed)\n if (log.topics.length >= 3 && log.topics[2]) {\n const vaultAddress = `0x${log.topics[2].slice(26)}` as Address;\n return vaultAddress;\n }\n } catch {\n // Not a VaultDeployed log, continue\n }\n }\n\n throw new Error('VaultDeployed event not found in transaction receipt');\n}\n","import type { Address } from 'viem';\n\n// ============================================================================\n// Token enum — type-safe token symbols for SDK consumers\n// ============================================================================\n\nexport enum Token {\n USDC = 'USDC',\n USDT = 'USDT',\n DAI = 'DAI',\n WETH = 'WETH',\n WBTC = 'WBTC',\n cbBTC = 'cbBTC',\n cbETH = 'cbETH',\n wstETH = 'wstETH',\n rETH = 'rETH',\n LINK = 'LINK',\n UNI = 'UNI',\n AAVE = 'AAVE',\n COMP = 'COMP',\n CRV = 'CRV',\n SNX = 'SNX',\n ARB = 'ARB',\n AERO = 'AERO',\n GMX = 'GMX',\n}\n\n// ============================================================================\n// Known token registry — single source of truth for all packages\n// ============================================================================\n\nexport interface KnownToken {\n symbol: string;\n name: string;\n decimals: number;\n /** Address per chainId. Missing key = not available on that chain. */\n addresses: Partial<Record<number, Address>>;\n}\n\n/**\n * Master token registry keyed by symbol.\n * At a glance you see which chains each token lives on.\n *\n * Chain IDs: 8453 = Base, 84532 = Base Sepolia, 42161 = Arbitrum One, 421614 = Arbitrum Sepolia\n */\nexport const KNOWN_TOKENS = {\n // ── Core stables + wrapped ──────────────────────────────\n USDC: {\n symbol: 'USDC',\n name: 'USD Coin',\n decimals: 6,\n addresses: {\n 8453: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n 84532: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',\n 42161: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',\n 421614: '0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d',\n },\n },\n USDT: {\n symbol: 'USDT',\n name: 'Tether USD',\n decimals: 6,\n addresses: {\n 8453: '0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2',\n 42161: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9',\n },\n },\n DAI: {\n symbol: 'DAI',\n name: 'Dai Stablecoin',\n decimals: 18,\n addresses: {\n 8453: '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb',\n 84532: '0x819ffecd4e64f193e959944bcd57eedc7755e17a',\n 42161: '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1',\n },\n },\n WETH: {\n symbol: 'WETH',\n name: 'Wrapped Ether',\n decimals: 18,\n addresses: {\n 8453: '0x4200000000000000000000000000000000000006',\n 84532: '0x4200000000000000000000000000000000000006',\n 42161: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n },\n },\n WBTC: {\n symbol: 'WBTC',\n name: 'Wrapped BTC',\n decimals: 8,\n addresses: {\n 8453: '0x0555E30da8f98308EdB960aa94C0Db47230d2B9c',\n 42161: '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f',\n },\n },\n cbBTC: {\n symbol: 'cbBTC',\n name: 'Coinbase Wrapped BTC',\n decimals: 8,\n addresses: {\n 8453: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf',\n 42161: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf',\n },\n },\n\n // ── Liquid staking ──────────────────────────────────────\n cbETH: {\n symbol: 'cbETH',\n name: 'Coinbase Staked ETH',\n decimals: 18,\n addresses: {\n 8453: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',\n 42161: '0x1DEBd73E752bEaF79865Fd6446b0c970EaE7732f',\n },\n },\n wstETH: {\n symbol: 'wstETH',\n name: 'Lido Wrapped stETH',\n decimals: 18,\n addresses: {\n 8453: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452',\n 42161: '0x5979D7b546E38E414F7E9822514be443A4800529',\n },\n },\n rETH: {\n symbol: 'rETH',\n name: 'Rocket Pool ETH',\n decimals: 18,\n addresses: {\n 42161: '0xEC70Dcb4A1EFa46b8F2D97C310C9c4790ba5ffA8',\n },\n },\n\n // ── DeFi blue-chips ─────────────────────────────────────\n LINK: {\n symbol: 'LINK',\n name: 'Chainlink',\n decimals: 18,\n addresses: {\n 8453: '0x88Fb150BDc53A65fe94Dea0c9BA0a6dAf8C6e196',\n 84532: '0xE4aB69C077896252FAFBD49EFD26B5D171A32410',\n 42161: '0xf97f4df75117a78c1A5a0DBb814Af92458539FB4',\n },\n },\n UNI: {\n symbol: 'UNI',\n name: 'Uniswap',\n decimals: 18,\n addresses: {\n 8453: '0xc3De830EA07524a0761646a6a4e4be0e114a3C83',\n 42161: '0xFa7F8980b0f1E64A2062791cc3b0871572f1F7f0',\n },\n },\n AAVE: {\n symbol: 'AAVE',\n name: 'Aave',\n decimals: 18,\n addresses: {\n 8453: '0x63706e401c06ac8513145b7687A14804d17f814b',\n 42161: '0xba5DdD1f9d7F570dc94a51479a000E3BCE967196',\n },\n },\n COMP: {\n symbol: 'COMP',\n name: 'Compound',\n decimals: 18,\n addresses: {\n 8453: '0x9e1028F5F1D5eDE59748FFceE5532509976840E0',\n 42161: '0x354A6dA3fcde098F8389cad84b0182725c6C91dE',\n },\n },\n CRV: {\n symbol: 'CRV',\n name: 'Curve DAO',\n decimals: 18,\n addresses: {\n 8453: '0x8Ee73c484A26e0A5df2Ee2a4960B789967dd0415',\n 42161: '0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978',\n },\n },\n SNX: {\n symbol: 'SNX',\n name: 'Synthetix',\n decimals: 18,\n addresses: {\n 8453: '0x22e6966B799c4D5B13BE962E1D117b56327FDa66',\n },\n },\n\n // ── Chain-native governance ─────────────────────────────\n ARB: {\n symbol: 'ARB',\n name: 'Arbitrum',\n decimals: 18,\n addresses: {\n 42161: '0x912CE59144191C1204E64559FE8253a0e49E6548',\n },\n },\n AERO: {\n symbol: 'AERO',\n name: 'Aerodrome',\n decimals: 18,\n addresses: {\n 8453: '0x940181a94A35A4569E4529A3CDfB74e38FD98631',\n },\n },\n GMX: {\n symbol: 'GMX',\n name: 'GMX',\n decimals: 18,\n addresses: {\n 42161: '0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a',\n },\n },\n} as const satisfies Record<string, KnownToken>;\n\nexport type KnownTokenSymbol = keyof typeof KNOWN_TOKENS;\n\n// Pre-build reverse lookup map: lowercase address → symbol\nconst addressToSymbol = new Map<string, string>();\nfor (const token of Object.values(KNOWN_TOKENS)) {\n for (const addr of Object.values(token.addresses)) {\n addressToSymbol.set((addr as string).toLowerCase(), token.symbol);\n }\n}\n\n/** All known tokens available on a specific chain. */\nexport function getKnownTokensForChain(chainId: number): (KnownToken & { address: Address })[] {\n const result: (KnownToken & { address: Address })[] = [];\n for (const token of Object.values(KNOWN_TOKENS)) {\n const addr = (token.addresses as Record<number, Address | undefined>)[chainId];\n if (addr) {\n result.push({ ...token, address: addr });\n }\n }\n return result;\n}\n\n/** Reverse-lookup: address → symbol (case-insensitive). Returns null if unknown. */\nexport function getTokenSymbolByAddress(address: string): string | null {\n return addressToSymbol.get(address.toLowerCase()) ?? null;\n}\n\n/**\n * Resolve a Token enum symbol to its on-chain address for a given chain.\n * If an Address (0x...) is passed, it is returned as-is.\n *\n * @throws if the symbol has no address on the given chain.\n */\nexport function resolveToken(token: Address | Token, chainId: number): Address {\n // Already an address — pass through\n if (typeof token === 'string' && token.startsWith('0x')) {\n return token as Address;\n }\n\n const entry = KNOWN_TOKENS[token as keyof typeof KNOWN_TOKENS];\n if (!entry) {\n throw new Error(`Unknown token symbol: ${token}`);\n }\n\n const addr = (entry.addresses as Record<number, Address | undefined>)[chainId];\n if (!addr) {\n throw new Error(`Token ${token} is not available on chain ${chainId}`);\n }\n\n return addr;\n}\n","// ============================================================================\n// Shared utilities\n// ============================================================================\n\n/**\n * Tiny UUID v4 generator (no external dependency).\n *\n * Uses `crypto.getRandomValues` in browsers and Node ≥19, with a\n * `require('crypto').randomBytes` fallback for older Node versions.\n */\nexport function generateUuid(): string {\n const bytes = new Uint8Array(16);\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(bytes);\n } else {\n // Node.js fallback\n const { randomBytes } = require('crypto') as typeof import('crypto');\n const buf = randomBytes(16);\n for (let i = 0; i < 16; i++) bytes[i] = buf[i] ?? 0;\n }\n bytes[6] = (bytes[6]! & 0x0f) | 0x40; // version 4\n bytes[8] = (bytes[8]! & 0x3f) | 0x80; // variant bits\n const hex = Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;\n}\n","import type { WalletClient, Address, Hex } from 'viem';\nimport type {\n AxonClientConfig,\n PayInput,\n PaymentIntent,\n PaymentResult,\n ExecuteInput,\n ExecuteIntent,\n SwapInput,\n SwapIntent,\n VaultInfo,\n DestinationCheckResult,\n RebalanceTokensResult,\n TosStatus,\n} from './types.js';\nimport { signPayment, signExecuteIntent, signSwapIntent, encodeRef } from './signer.js';\nimport { createAxonWalletClient } from './vault.js';\nimport { DEFAULT_DEADLINE_SECONDS, RELAYER_API } from './constants.js';\nimport { resolveToken } from './tokens.js';\nimport { generateUuid } from './utils.js';\nimport { keccak256 } from 'viem';\n\n// ============================================================================\n// AxonClient\n// ============================================================================\n\n/**\n * Main entry point for bots interacting with Axon.\n *\n * Handles EIP-712 signing, relayer communication, and status polling.\n * Bots never submit transactions directly — they sign intents and the relayer\n * handles all on-chain execution.\n *\n * All chain reads (balances, bot status, vault info) go through the relayer\n * API — bots never need an RPC endpoint.\n *\n * @example\n * ```ts\n * import { AxonClient, USDC } from '@axonfi/sdk'\n *\n * const client = new AxonClient({\n * vaultAddress: '0x...',\n * chainId: 84532, // Base Sepolia\n * botPrivateKey: '0x...',\n * relayerUrl: 'https://relay.axonfi.xyz',\n * })\n *\n * const result = await client.pay({\n * to: '0x...recipient...',\n * token: USDC[84532],\n * amount: 5_000_000n, // 5 USDC\n * memo: 'API call #1234 — weather data',\n * })\n *\n * console.log(result.status, result.txHash)\n * ```\n */\nexport class AxonClient {\n private readonly vaultAddress: Address;\n private readonly chainId: number;\n private readonly relayerUrl: string;\n private readonly walletClient: WalletClient;\n\n constructor(config: AxonClientConfig) {\n this.vaultAddress = config.vaultAddress;\n this.chainId = config.chainId;\n this.relayerUrl = config.relayerUrl.replace(/\\/$/, ''); // strip trailing slash\n\n if (!config.botPrivateKey) {\n throw new Error('botPrivateKey is required in AxonClientConfig');\n }\n this.walletClient = createAxonWalletClient(config.botPrivateKey, config.chainId);\n }\n\n // ============================================================================\n // Bot address\n // ============================================================================\n\n /** Returns the bot's address derived from the configured private key. */\n get botAddress(): Address {\n const account = this.walletClient.account;\n if (!account) throw new Error('No account on walletClient');\n return account.address;\n }\n\n // ============================================================================\n // pay()\n // ============================================================================\n\n /**\n * Create, sign, and submit a payment intent to the Axon relayer.\n *\n * Three possible outcomes (all included in PaymentResult.status):\n * - `\"approved\"`: fast path — txHash available immediately\n * - `\"pending_review\"`: AI scan or human review in progress — poll for status\n * - `\"rejected\"`: payment was rejected — reason field explains why\n */\n async pay(input: PayInput): Promise<PaymentResult> {\n const intent = this._buildPaymentIntent(input);\n const signature = await signPayment(this.walletClient, this.vaultAddress, this.chainId, intent);\n return this._submitPayment(intent, signature, input);\n }\n\n // ============================================================================\n // execute()\n // ============================================================================\n\n /**\n * Sign and submit a DeFi protocol execution to the Axon relayer.\n *\n * The vault approves `token` to `protocol`, calls it with `callData`,\n * then revokes the approval. Tokens stay in the vault or go to the protocol\n * as specified by the calldata.\n */\n async execute(input: ExecuteInput): Promise<PaymentResult> {\n const intent = this._buildExecuteIntent(input);\n const signature = await signExecuteIntent(this.walletClient, this.vaultAddress, this.chainId, intent);\n return this._submitExecute(intent, signature, input);\n }\n\n // ============================================================================\n // swap()\n // ============================================================================\n\n /**\n * Sign and submit an in-vault token swap to the Axon relayer.\n *\n * Swaps tokens within the vault (no external recipient). Useful for\n * rebalancing vault holdings.\n */\n async swap(input: SwapInput): Promise<PaymentResult> {\n const intent = this._buildSwapIntent(input);\n const signature = await signSwapIntent(this.walletClient, this.vaultAddress, this.chainId, intent);\n return this._submitSwap(intent, signature, input);\n }\n\n // ============================================================================\n // getBalance() — via relayer\n // ============================================================================\n\n /** Read the vault's ERC-20 balance for a given token (via relayer). */\n async getBalance(token: Address): Promise<bigint> {\n const path = RELAYER_API.vaultBalance(this.vaultAddress, token, this.chainId);\n const data = await this._get(path);\n return BigInt(data.balance);\n }\n\n // ============================================================================\n // getBalances() — via relayer\n // ============================================================================\n\n /**\n * Read the vault's ERC-20 balances for multiple tokens in a single call (via relayer).\n * Returns a record mapping token address → balance.\n */\n async getBalances(tokens: Address[]): Promise<Record<Address, bigint>> {\n const path = RELAYER_API.vaultBalances(this.vaultAddress, this.chainId);\n const url = `${this.relayerUrl}${path}?chainId=${this.chainId}&tokens=${tokens.join(',')}`;\n\n const response = await fetch(url, {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (!response.ok) {\n const body = await response.text();\n throw new Error(`Relayer request failed [${response.status}]: ${body}`);\n }\n\n const data = (await response.json()) as { balances: Record<string, string> };\n const result: Record<Address, bigint> = {};\n for (const [addr, val] of Object.entries(data.balances)) {\n result[addr as Address] = BigInt(val);\n }\n return result;\n }\n\n // ============================================================================\n // isActive() — via relayer\n // ============================================================================\n\n /** Returns whether this bot is registered and active in the vault (via relayer). */\n async isActive(): Promise<boolean> {\n const path = RELAYER_API.botStatus(this.vaultAddress, this.botAddress, this.chainId);\n const data = await this._get(path);\n return data.isActive;\n }\n\n // ============================================================================\n // isPaused() — via relayer\n // ============================================================================\n\n /** Returns whether the vault is currently paused (via relayer). */\n async isPaused(): Promise<boolean> {\n const path = RELAYER_API.vaultInfo(this.vaultAddress, this.chainId);\n const data = await this._get(path);\n return data.paused;\n }\n\n // ============================================================================\n // getVaultInfo() — via relayer\n // ============================================================================\n\n /** Returns high-level vault info (owner, operator, paused, version, trackUsedIntents) via relayer. */\n async getVaultInfo(): Promise<VaultInfo> {\n const path = RELAYER_API.vaultInfo(this.vaultAddress, this.chainId);\n return this._get(path) as Promise<VaultInfo>;\n }\n\n // ============================================================================\n // canPayTo() — via relayer\n // ============================================================================\n\n /**\n * Check whether this bot can pay to a given destination address (via relayer).\n * Checks blacklist → global whitelist → bot whitelist, matching on-chain logic.\n */\n async canPayTo(destination: Address): Promise<DestinationCheckResult> {\n const path = RELAYER_API.destinationCheck(this.vaultAddress, this.botAddress, destination, this.chainId);\n return this._get(path) as Promise<DestinationCheckResult>;\n }\n\n // ============================================================================\n // isProtocolApproved() — via relayer\n // ============================================================================\n\n /** Returns whether a protocol address is approved for executeProtocol() calls (via relayer). */\n async isProtocolApproved(protocol: Address): Promise<boolean> {\n const path = RELAYER_API.protocolCheck(this.vaultAddress, protocol, this.chainId);\n const data = await this._get(path);\n return data.approved;\n }\n\n // ============================================================================\n // getRebalanceTokens() — via relayer\n // ============================================================================\n\n /**\n * Returns the effective rebalance token whitelist for this vault.\n *\n * If the owner set tokens on-chain, those override entirely.\n * If no on-chain whitelist, returns relayer defaults (USDC, WETH, USDT).\n * Use this before calling swap() to check which output tokens are allowed.\n */\n async getRebalanceTokens(): Promise<RebalanceTokensResult> {\n const path = RELAYER_API.rebalanceTokens(this.vaultAddress, this.chainId);\n return this._get(path) as Promise<RebalanceTokensResult>;\n }\n\n // ============================================================================\n // isRebalanceTokenAllowed() — via relayer\n // ============================================================================\n\n /** Check if a specific token is allowed for rebalancing (executeSwap output) on this vault. */\n async isRebalanceTokenAllowed(token: Address): Promise<{ allowed: boolean; source: 'default' | 'on_chain' }> {\n const path = RELAYER_API.rebalanceTokenCheck(this.vaultAddress, token, this.chainId);\n return this._get(path) as Promise<{ allowed: boolean; source: 'default' | 'on_chain' }>;\n }\n\n // ============================================================================\n // TOS (Terms of Service)\n // ============================================================================\n\n /** Check if a wallet has accepted the current TOS version. */\n async getTosStatus(wallet: string): Promise<TosStatus> {\n return this._get(RELAYER_API.tosStatus(wallet)) as Promise<TosStatus>;\n }\n\n /**\n * Sign and submit TOS acceptance. Uses the owner's wallet (not the bot key).\n *\n * @param signer - Object with a `signMessage` method (e.g. a viem WalletClient\n * or ethers Signer). This should be the vault owner's wallet, not the bot key.\n * @param wallet - The owner's wallet address (must match the signer).\n */\n async acceptTos(\n signer: { signMessage: (args: { message: string }) => Promise<Hex> },\n wallet: string,\n ): Promise<TosStatus> {\n // 1. Get current TOS version from relayer\n const { tosVersion } = await this.getTosStatus(wallet);\n\n // 2. Construct and sign the acceptance message\n const timestamp = Math.floor(Date.now() / 1000);\n const message = `I accept the Axon Terms of Service (${tosVersion}).\\nWallet: ${wallet}\\nTimestamp: ${timestamp}`;\n const signature = await signer.signMessage({ message });\n\n // 3. Submit to relayer\n const url = `${this.relayerUrl}${RELAYER_API.TOS_ACCEPT}`;\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ wallet, signature, tosVersion, timestamp }),\n });\n\n if (!response.ok) {\n const body = await response.text();\n throw new Error(`TOS acceptance failed [${response.status}]: ${body}`);\n }\n\n return response.json() as Promise<TosStatus>;\n }\n\n // ============================================================================\n // poll() / pollExecute() / pollSwap()\n // ============================================================================\n\n /**\n * Poll the relayer for the status of an async payment.\n *\n * Use this when pay() returns `status: \"pending_review\"`. Poll until\n * status is `\"approved\"` or `\"rejected\"`.\n *\n * Recommended polling interval: 5–10 seconds.\n */\n async poll(requestId: string): Promise<PaymentResult> {\n return this._get(RELAYER_API.payment(requestId)) as Promise<PaymentResult>;\n }\n\n /** Poll the relayer for the status of an async protocol execution. */\n async pollExecute(requestId: string): Promise<PaymentResult> {\n return this._get(RELAYER_API.execute(requestId)) as Promise<PaymentResult>;\n }\n\n /** Poll the relayer for the status of an async swap. */\n async pollSwap(requestId: string): Promise<PaymentResult> {\n return this._get(RELAYER_API.swap(requestId)) as Promise<PaymentResult>;\n }\n\n // ============================================================================\n // signPayment() — low-level access\n // ============================================================================\n\n /**\n * Sign a PaymentIntent directly without submitting to the relayer.\n *\n * Use this if you want to build the intent yourself and pass the signature\n * to another system (e.g. a custom relayer integration).\n */\n async signPayment(intent: PaymentIntent): Promise<Hex> {\n return signPayment(this.walletClient, this.vaultAddress, this.chainId, intent);\n }\n\n // ============================================================================\n // Internal helpers\n // ============================================================================\n\n private async _get(path: string): Promise<any> {\n const url = `${this.relayerUrl}${path}`;\n const response = await fetch(url, {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (!response.ok) {\n const body = await response.text();\n throw new Error(`Relayer request failed [${response.status}]: ${body}`);\n }\n\n return response.json();\n }\n\n private _defaultDeadline(): bigint {\n return BigInt(Math.floor(Date.now() / 1000) + DEFAULT_DEADLINE_SECONDS);\n }\n\n private _resolveRef(memo?: string, ref?: Hex): Hex {\n if (ref) return ref;\n if (memo) return encodeRef(memo);\n return '0x0000000000000000000000000000000000000000000000000000000000000000';\n }\n\n private _buildPaymentIntent(input: PayInput): PaymentIntent {\n return {\n bot: this.botAddress,\n to: input.to,\n token: resolveToken(input.token, this.chainId),\n amount: input.amount,\n deadline: input.deadline ?? this._defaultDeadline(),\n ref: this._resolveRef(input.memo, input.ref),\n };\n }\n\n private _buildExecuteIntent(input: ExecuteInput): ExecuteIntent {\n return {\n bot: this.botAddress,\n protocol: input.protocol,\n calldataHash: keccak256(input.callData),\n token: resolveToken(input.token, this.chainId),\n amount: input.amount,\n deadline: input.deadline ?? this._defaultDeadline(),\n ref: this._resolveRef(input.memo, input.ref),\n };\n }\n\n private _buildSwapIntent(input: SwapInput): SwapIntent {\n return {\n bot: this.botAddress,\n toToken: resolveToken(input.toToken, this.chainId),\n minToAmount: input.minToAmount,\n deadline: input.deadline ?? this._defaultDeadline(),\n ref: this._resolveRef(input.memo, input.ref),\n };\n }\n\n private async _submitPayment(intent: PaymentIntent, signature: Hex, input: PayInput): Promise<PaymentResult> {\n const idempotencyKey = input.idempotencyKey ?? generateUuid();\n\n const body = {\n // Routing\n chainId: this.chainId,\n vaultAddress: this.vaultAddress,\n\n // Flat intent fields (matches relayer DTO)\n bot: intent.bot,\n to: intent.to,\n token: intent.token,\n amount: intent.amount.toString(),\n deadline: intent.deadline.toString(),\n ref: intent.ref,\n signature,\n\n // Off-chain metadata\n idempotencyKey,\n ...(input.memo !== undefined && { memo: input.memo }),\n ...(input.resourceUrl !== undefined && { resourceUrl: input.resourceUrl }),\n ...(input.invoiceId !== undefined && { invoiceId: input.invoiceId }),\n ...(input.orderId !== undefined && { orderId: input.orderId }),\n ...(input.recipientLabel !== undefined && { recipientLabel: input.recipientLabel }),\n ...(input.metadata !== undefined && { metadata: input.metadata }),\n };\n\n return this._post(RELAYER_API.PAYMENTS, idempotencyKey, body);\n }\n\n private async _submitExecute(intent: ExecuteIntent, signature: Hex, input: ExecuteInput): Promise<PaymentResult> {\n const idempotencyKey = input.idempotencyKey ?? generateUuid();\n\n const body = {\n chainId: this.chainId,\n vaultAddress: this.vaultAddress,\n\n // Flat intent fields\n bot: intent.bot,\n protocol: intent.protocol,\n calldataHash: intent.calldataHash,\n token: intent.token,\n amount: intent.amount.toString(),\n deadline: intent.deadline.toString(),\n ref: intent.ref,\n signature,\n\n // Protocol calldata\n callData: input.callData,\n\n // Optional pre-swap\n ...(input.fromToken !== undefined && { fromToken: input.fromToken }),\n ...(input.maxFromAmount !== undefined && { maxFromAmount: input.maxFromAmount.toString() }),\n\n // Off-chain metadata\n idempotencyKey,\n ...(input.memo !== undefined && { memo: input.memo }),\n ...(input.protocolName !== undefined && { protocolName: input.protocolName }),\n ...(input.metadata !== undefined && { metadata: input.metadata }),\n };\n\n return this._post(RELAYER_API.EXECUTE, idempotencyKey, body);\n }\n\n private async _submitSwap(intent: SwapIntent, signature: Hex, input: SwapInput): Promise<PaymentResult> {\n const idempotencyKey = input.idempotencyKey ?? generateUuid();\n\n const body = {\n chainId: this.chainId,\n vaultAddress: this.vaultAddress,\n\n // Flat intent fields\n bot: intent.bot,\n toToken: intent.toToken,\n minToAmount: intent.minToAmount.toString(),\n deadline: intent.deadline.toString(),\n ref: intent.ref,\n signature,\n\n // Optional source token\n ...(input.fromToken !== undefined && { fromToken: input.fromToken }),\n ...(input.maxFromAmount !== undefined && { maxFromAmount: input.maxFromAmount.toString() }),\n\n // Off-chain metadata\n idempotencyKey,\n ...(input.memo !== undefined && { memo: input.memo }),\n };\n\n return this._post(RELAYER_API.SWAP, idempotencyKey, body);\n }\n\n private async _post(path: string, idempotencyKey: string, body: Record<string, unknown>): Promise<PaymentResult> {\n const url = `${this.relayerUrl}${path}`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Idempotency-Key': idempotencyKey,\n },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const responseBody = await response.text();\n throw new Error(`Relayer request failed [${response.status}]: ${responseBody}`);\n }\n\n return response.json() as Promise<PaymentResult>;\n }\n}\n","// ============================================================================\n// V3 Keystore — Encrypt / Decrypt bot private keys\n// ============================================================================\n//\n// Standard Ethereum V3 keystore format (same as MetaMask / Geth).\n// Uses scrypt KDF + AES-128-CTR cipher + keccak256 MAC.\n\nimport { scryptAsync } from '@noble/hashes/scrypt';\nimport { keccak_256 } from '@noble/hashes/sha3';\nimport { ctr } from '@noble/ciphers/aes';\nimport { privateKeyToAccount } from 'viem/accounts';\nimport type { Hex } from 'viem';\nimport { generateUuid } from './utils.js';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface KeystoreV3 {\n version: 3;\n id: string;\n address: string; // lowercase hex, no 0x prefix\n crypto: {\n ciphertext: string;\n cipherparams: { iv: string };\n cipher: 'aes-128-ctr';\n kdf: 'scrypt';\n kdfparams: {\n dklen: number;\n salt: string;\n n: number;\n r: number;\n p: number;\n };\n mac: string;\n };\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst SCRYPT_N = 262144; // 2^18\nconst SCRYPT_R = 8;\nconst SCRYPT_P = 1;\nconst SCRYPT_DKLEN = 32;\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nfunction getRandomBytes(length: number): Uint8Array {\n const bytes = new Uint8Array(length);\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(bytes);\n } else {\n const { randomBytes } = require('crypto') as typeof import('crypto');\n const buf = randomBytes(length);\n for (let i = 0; i < length; i++) bytes[i] = buf[i] ?? 0;\n }\n return bytes;\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const clean = hex.startsWith('0x') ? hex.slice(2) : hex;\n const bytes = new Uint8Array(clean.length / 2);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\n// ============================================================================\n// encryptKeystore\n// ============================================================================\n\n/**\n * Encrypt a raw private key into a V3 keystore JSON object.\n *\n * Uses scrypt KDF (n=262144, r=8, p=1) and AES-128-CTR cipher —\n * the same format as MetaMask and Geth.\n *\n * @param privateKey - Raw private key as 0x-prefixed hex string\n * @param passphrase - Passphrase to encrypt with (min 1 character)\n * @returns V3 keystore object ready to serialize as JSON\n *\n * @example\n * ```ts\n * import { encryptKeystore } from '@axonfi/sdk';\n *\n * const keystore = await encryptKeystore('0xabc...', 'my-strong-passphrase');\n * fs.writeFileSync('bot-keystore.json', JSON.stringify(keystore, null, 2));\n * ```\n */\nexport async function encryptKeystore(privateKey: Hex, passphrase: string): Promise<KeystoreV3> {\n if (!passphrase) throw new Error('Passphrase must not be empty');\n\n const keyBytes = hexToBytes(privateKey);\n const account = privateKeyToAccount(privateKey);\n const address = account.address.slice(2).toLowerCase(); // no 0x prefix\n\n // Random salt and IV\n const salt = getRandomBytes(32);\n const iv = getRandomBytes(16);\n\n // Derive key via scrypt\n const derivedKey = await scryptAsync(new TextEncoder().encode(passphrase), salt, {\n N: SCRYPT_N,\n r: SCRYPT_R,\n p: SCRYPT_P,\n dkLen: SCRYPT_DKLEN,\n });\n\n // Encrypt with AES-128-CTR (first 16 bytes of derived key)\n const encryptionKey = derivedKey.slice(0, 16);\n const cipher = ctr(encryptionKey, iv);\n const ciphertext = cipher.encrypt(keyBytes);\n\n // MAC = keccak256(derivedKey[16:32] ++ ciphertext)\n const macInput = new Uint8Array(16 + ciphertext.length);\n macInput.set(derivedKey.slice(16, 32), 0);\n macInput.set(ciphertext, 16);\n const mac = keccak_256(macInput);\n\n return {\n version: 3,\n id: generateUuid(),\n address,\n crypto: {\n ciphertext: bytesToHex(ciphertext),\n cipherparams: { iv: bytesToHex(iv) },\n cipher: 'aes-128-ctr',\n kdf: 'scrypt',\n kdfparams: {\n dklen: SCRYPT_DKLEN,\n salt: bytesToHex(salt),\n n: SCRYPT_N,\n r: SCRYPT_R,\n p: SCRYPT_P,\n },\n mac: bytesToHex(mac),\n },\n };\n}\n\n// ============================================================================\n// decryptKeystore\n// ============================================================================\n\n/**\n * Decrypt a V3 keystore back to a raw private key.\n *\n * @param keystore - V3 keystore object or JSON string\n * @param passphrase - Passphrase used during encryption\n * @returns Raw private key as 0x-prefixed hex string\n * @throws Error if passphrase is wrong (MAC mismatch) or keystore is invalid\n *\n * @example\n * ```ts\n * import { AxonClient, decryptKeystore } from '@axonfi/sdk';\n *\n * const keystore = JSON.parse(fs.readFileSync('bot-keystore.json', 'utf8'));\n * const privateKey = await decryptKeystore(keystore, process.env.BOT_PASSPHRASE!);\n * const client = new AxonClient({ botPrivateKey: privateKey, ... });\n * ```\n */\nexport async function decryptKeystore(keystore: KeystoreV3 | string, passphrase: string): Promise<Hex> {\n // Parse JSON string if needed\n let ks: KeystoreV3;\n if (typeof keystore === 'string') {\n try {\n ks = JSON.parse(keystore) as KeystoreV3;\n } catch {\n throw new Error('Invalid keystore: could not parse JSON');\n }\n } else {\n ks = keystore;\n }\n\n // Validate structure\n if (ks.version !== 3) throw new Error(`Unsupported keystore version: ${ks.version}`);\n if (!ks.crypto) throw new Error('Invalid keystore: missing crypto field');\n if (ks.crypto.kdf !== 'scrypt') throw new Error(`Unsupported KDF: ${ks.crypto.kdf}`);\n if (ks.crypto.cipher !== 'aes-128-ctr') throw new Error(`Unsupported cipher: ${ks.crypto.cipher}`);\n\n const { kdfparams, ciphertext: ctHex, cipherparams, mac: expectedMacHex } = ks.crypto;\n\n // Derive key via scrypt\n const salt = hexToBytes(kdfparams.salt);\n const derivedKey = await scryptAsync(new TextEncoder().encode(passphrase), salt, {\n N: kdfparams.n,\n r: kdfparams.r,\n p: kdfparams.p,\n dkLen: kdfparams.dklen,\n });\n\n // Verify MAC\n const ciphertextBytes = hexToBytes(ctHex);\n const macInput = new Uint8Array(16 + ciphertextBytes.length);\n macInput.set(derivedKey.slice(16, 32), 0);\n macInput.set(ciphertextBytes, 16);\n const computedMac = bytesToHex(keccak_256(macInput));\n\n if (computedMac !== expectedMacHex) {\n throw new Error('Wrong passphrase: MAC mismatch');\n }\n\n // Decrypt with AES-128-CTR\n const iv = hexToBytes(cipherparams.iv);\n const encryptionKey = derivedKey.slice(0, 16);\n const cipher = ctr(encryptionKey, iv);\n const plaintext = cipher.decrypt(ciphertextBytes);\n\n return `0x${bytesToHex(plaintext)}` as Hex;\n}\n","export const AxonRegistryAbi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: 'initialOwner',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'acceptOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addRelayer',\n inputs: [\n {\n name: 'relayer',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addSwapRouter',\n inputs: [\n {\n name: 'router',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isApprovedSwapRouter',\n inputs: [\n {\n name: 'router',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isAuthorized',\n inputs: [\n {\n name: 'relayer',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pendingOwner',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'removeRelayer',\n inputs: [\n {\n name: 'relayer',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'removeSwapRouter',\n inputs: [\n {\n name: 'router',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'renounceOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setOracleConfig',\n inputs: [\n {\n name: 'uniV3Factory',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'usdc',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'weth',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [\n {\n name: 'newOwner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'uniswapV3Factory',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'usdcAddress',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'wethAddress',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'OracleConfigUpdated',\n inputs: [\n {\n name: 'uniswapV3Factory',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n {\n name: 'usdc',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n {\n name: 'weth',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferStarted',\n inputs: [\n {\n name: 'previousOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'newOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n {\n name: 'previousOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'newOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'RelayerAdded',\n inputs: [\n {\n name: 'relayer',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'RelayerRemoved',\n inputs: [\n {\n name: 'relayer',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'SwapRouterAdded',\n inputs: [\n {\n name: 'router',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'SwapRouterRemoved',\n inputs: [\n {\n name: 'router',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'AlreadyApproved',\n inputs: [],\n },\n {\n type: 'error',\n name: 'AlreadyAuthorized',\n inputs: [],\n },\n {\n type: 'error',\n name: 'NotApproved',\n inputs: [],\n },\n {\n type: 'error',\n name: 'NotAuthorized',\n inputs: [],\n },\n {\n type: 'error',\n name: 'OwnableInvalidOwner',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'error',\n name: 'OwnableUnauthorizedAccount',\n inputs: [\n {\n name: 'account',\n type: 'address',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'error',\n name: 'ZeroAddress',\n inputs: [],\n },\n] as const;\n"]}