@hyperbridge/sdk 2.2.3 → 2.3.0
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.
- package/dist/browser/index.d.ts +70 -19
- package/dist/browser/index.js +217 -35
- package/dist/browser/index.js.map +1 -1
- package/dist/node/IntentGatewayV2-C55Aitcb.d.cts +5717 -0
- package/dist/node/IntentGatewayV2-C55Aitcb.d.ts +5717 -0
- package/dist/node/index.cjs +217 -33
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +1478 -5742
- package/dist/node/index.d.ts +1478 -5742
- package/dist/node/index.js +217 -35
- package/dist/node/index.js.map +1 -1
- package/dist/node/intents-helpers.cjs +2084 -0
- package/dist/node/intents-helpers.cjs.map +1 -0
- package/dist/node/intents-helpers.d.cts +1469 -0
- package/dist/node/intents-helpers.d.ts +1469 -0
- package/dist/node/intents-helpers.js +2072 -0
- package/dist/node/intents-helpers.js.map +1 -0
- package/package.json +15 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/abis/erc7281.ts","../../src/protocols/intents/types.ts","../../src/protocols/intents/decode-utils.ts","../../src/abis/IntentGatewayV2.ts","../../src/chains/intentsCoprocessor.ts","../../src/protocols/intents/phantom-aggregation.ts"],"names":["encodeAbiParameters","encodeFunctionData","decodeFunctionData","decodeAbiParameters","ABI","Struct","Bytes","Vector","u8","hexToU8a","numberToBytes","u8aToHex","bytesToBigInt"],"mappings":"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","file":"intents-helpers.cjs","sourcesContent":["const ABI = [\n\t{\n\t\tname: \"execute\",\n\t\ttype: \"function\",\n\t\tinputs: [\n\t\t\t{ name: \"mode\", type: \"bytes32\" },\n\t\t\t{ name: \"executionData\", type: \"bytes\" },\n\t\t],\n\t\toutputs: [],\n\t},\n\t{\n\t\tname: \"Call\",\n\t\ttype: \"tuple\",\n\t\tcomponents: [\n\t\t\t{ name: \"target\", type: \"address\" },\n\t\t\t{ name: \"value\", type: \"uint256\" },\n\t\t\t{ name: \"data\", type: \"bytes\" },\n\t\t],\n\t},\n] as const\n\nexport default { ABI }\n","import type { TransactionReceipt } from \"viem\"\nimport type { HexString } from \"@/types\"\nimport type { IProof } from \"@/chain\"\nimport type { RequestStatusWithMetadata } from \"@/types\"\n\n/**\n * ABI-encoded function selector for the IntentGatewayV2 `placeOrder` function,\n * including the full tuple signature of the OrderV2 struct.\n */\nexport const PLACE_ORDER_SELECTOR =\n\t\"placeOrder((bytes32,bytes,bytes,uint256,uint256,uint256,address,((bytes32,uint256)[],bytes),(bytes32,uint256)[],(bytes32,(bytes32,uint256)[],bytes)),bytes32)\"\n\n/**\n * ABI tuple type string for the OrderV2 struct used when ABI-encoding or\n * decoding order data without a full ABI artifact.\n */\nexport const ORDER_V2_PARAM_TYPE =\n\t\"(bytes32,bytes,bytes,uint256,uint256,uint256,address,((bytes32,uint256)[],bytes),(bytes32,uint256)[],(bytes32,(bytes32,uint256)[],bytes))\"\n\n/**\n * Default graffiti value: a bytes32 zero word.\n *\n * When no graffiti is supplied to `placeOrder`, this value is used,\n * indicating no orderflow attribution or revenue-share tag.\n */\nexport const DEFAULT_GRAFFITI = \"0x0000000000000000000000000000000000000000000000000000000000000000\" as HexString\n\n/**\n * ERC-7821 execution mode selector for single-batch execution.\n *\n * The first byte `0x01` indicates batch mode; all remaining bytes are\n * reserved and set to zero.\n */\nexport const ERC7821_BATCH_MODE = \"0x0100000000000000000000000000000000000000000000000000000000000000\" as HexString\n\n/**\n * Bundler RPC method names for ERC-4337 operations.\n *\n * Values map to JSON-RPC method strings sent to a 4337 bundler endpoint.\n * `PIMLICO_GET_USER_OPERATION_GAS_PRICE` is a Pimlico-specific extension.\n */\nexport const BundlerMethod = {\n\t/** Submits a UserOperation to the bundler mempool. */\n\tETH_SEND_USER_OPERATION: \"eth_sendUserOperation\",\n\t/** Retrieves the receipt for a previously submitted UserOperation by its hash. */\n\tETH_GET_USER_OPERATION_RECEIPT: \"eth_getUserOperationReceipt\",\n\t/** Estimates gas limits for a UserOperation before submission. */\n\tETH_ESTIMATE_USER_OPERATION_GAS: \"eth_estimateUserOperationGas\",\n\t/** Pimlico-specific method to fetch recommended EIP-1559 gas prices for UserOperations. */\n\tPIMLICO_GET_USER_OPERATION_GAS_PRICE: \"pimlico_getUserOperationGasPrice\",\n\t/** Alchemy (Rundler) method to fetch recommended priority fee for UserOperations. */\n\tRUNDLER_MAX_PRIORITY_FEE_PER_GAS: \"rundler_maxPriorityFeePerGas\",\n} as const\n\n/** Union of all valid bundler RPC method name strings. */\nexport type BundlerMethod = (typeof BundlerMethod)[keyof typeof BundlerMethod]\n\n/**\n * Response payload returned by a bundler for\n * `eth_estimateUserOperationGas`.\n *\n * All gas values are returned as hex strings.\n */\nexport interface BundlerGasEstimate {\n\t/** Gas required for pre-verification processing (hex). */\n\tpreVerificationGas: HexString\n\t/** Gas limit for the account verification step (hex). */\n\tverificationGasLimit: HexString\n\t/** Gas limit for the main execution call (hex). */\n\tcallGasLimit: HexString\n\t/** Gas limit for paymaster verification, if a paymaster is used (hex). */\n\tpaymasterVerificationGasLimit?: HexString\n\t/** Gas limit for paymaster post-operation hook, if a paymaster is used (hex). */\n\tpaymasterPostOpGasLimit?: HexString\n}\n\n/**\n * Response payload returned by Pimlico's\n * `pimlico_getUserOperationGasPrice` method.\n *\n * Provides EIP-1559 fee recommendations at three priority tiers.\n * Each field is optional; callers should fall back from `fast` → `standard` → `slow`.\n */\nexport interface PimlicoGasPriceEstimate {\n\t/** Low-priority fee recommendation. */\n\tslow: {\n\t\t/** Maximum total fee per gas (hex). */\n\t\tmaxFeePerGas: HexString\n\t\t/** Maximum miner tip per gas (hex). */\n\t\tmaxPriorityFeePerGas: HexString\n\t}\n\t/** Medium-priority fee recommendation. */\n\tstandard: {\n\t\t/** Maximum total fee per gas (hex). */\n\t\tmaxFeePerGas: HexString\n\t\t/** Maximum miner tip per gas (hex). */\n\t\tmaxPriorityFeePerGas: HexString\n\t}\n\t/** High-priority fee recommendation for fastest inclusion. */\n\tfast: {\n\t\t/** Maximum total fee per gas (hex). */\n\t\tmaxFeePerGas: HexString\n\t\t/** Maximum miner tip per gas (hex). */\n\t\tmaxPriorityFeePerGas: HexString\n\t}\n}\n\n/**\n * Tagged union of all status updates that can be yielded by the cancel-order\n * async generator.\n *\n * The `status` field is the discriminant. Consumers should switch on it to\n * handle each stage of the cancellation lifecycle:\n *\n * - `DESTINATION_FINALIZED` – a state proof from the destination chain is ready.\n * - `AWAITING_CANCEL_TRANSACTION` – the caller must sign and submit the cancel tx.\n * - `CANCEL_STARTED` – the cancel transaction was confirmed on-chain.\n * - `SOURCE_FINALIZED` – the cancel request has been finalised on the source chain.\n * - `HYPERBRIDGE_DELIVERED` – the cancel message has been delivered to Hyperbridge.\n * - `HYPERBRIDGE_FINALIZED` – the cancel message has been finalised on Hyperbridge.\n * - `CANCELLATION_COMPLETE` – the escrow has been refunded; cancellation is done.\n */\nexport type CancelEvent =\n\t| { status: \"DESTINATION_FINALIZED\"; proof: IProof }\n\t| { status: \"AWAITING_CANCEL_TRANSACTION\"; data: HexString; to: HexString; value: bigint }\n\t| { status: \"CANCEL_STARTED\"; receipt: TransactionReceipt }\n\t| {\n\t\t\tstatus: \"SOURCE_FINALIZED\"\n\t\t\tmetadata: Extract<RequestStatusWithMetadata, { status: \"SOURCE_FINALIZED\" }>[\"metadata\"]\n\t }\n\t| {\n\t\t\tstatus: \"HYPERBRIDGE_DELIVERED\"\n\t\t\tmetadata: Extract<RequestStatusWithMetadata, { status: \"HYPERBRIDGE_DELIVERED\" }>[\"metadata\"]\n\t }\n\t| {\n\t\t\tstatus: \"HYPERBRIDGE_FINALIZED\"\n\t\t\tmetadata: Extract<RequestStatusWithMetadata, { status: \"HYPERBRIDGE_FINALIZED\" }>[\"metadata\"]\n\t }\n\t| { status: \"CANCELLATION_COMPLETE\"; blockNumber: number; transactionHash: HexString }\n\nimport type { IEvmChain } from \"@/chain\"\nimport type { IntentsCoprocessor } from \"@/chains/intentsCoprocessor\"\nimport type { Swap } from \"@/utils/swap\"\nimport type { createSessionKeyStorage, createCancellationStorage, createUsedUserOpsStorage } from \"@/storage\"\n\n/**\n * Shared runtime context passed to every IntentsV2 sub-module.\n *\n * All sub-modules (OrderPlacer, OrderExecutor, BidManager, etc.) receive a\n * reference to this object so they can share fee-token caches, storage\n * adapters, and chain clients without duplicating initialisation logic.\n */\nexport interface IntentGatewayContext {\n\t/** EVM chain on which orders are placed and escrowed. */\n\tsource: IEvmChain\n\t/** EVM chain on which solvers fill orders and receive outputs. */\n\tdest: IEvmChain\n\t/** Hyperbridge coprocessor client used to fetch solver bids and submit UserOperations. */\n\tintentsCoprocessor?: IntentsCoprocessor\n\t/** URL of the ERC-4337 bundler endpoint for gas estimation and UserOp submission. */\n\tbundlerUrl?: string\n\t/**\n\t * In-memory TTL cache keyed by state-machine ID.\n\t * Stores fee-token address, decimals, and the timestamp of the last fetch.\n\t */\n\tfeeTokenCache: Map<string, { address: HexString; decimals: number; cachedAt: number }>\n\t/**\n\t * In-memory cache of solver account contract bytecode, keyed by lowercased address.\n\t * Used to inject solver code into state-overrides for gas estimation.\n\t */\n\tsolverCodeCache: Map<string, string>\n\t/** Persistent storage for ephemeral session keys generated per order. */\n\tsessionKeyStorage: ReturnType<typeof createSessionKeyStorage>\n\t/** Persistent storage for intermediate cancellation state (proofs, commitments). */\n\tcancellationStorage: ReturnType<typeof createCancellationStorage>\n\t/** Persistent storage for deduplication of already-submitted UserOperations. */\n\tusedUserOpsStorage: ReturnType<typeof createUsedUserOpsStorage>\n\t/** DEX-quote utility used for token pricing and gas-to-fee-token conversions. */\n\tswap: Swap\n}\n","// Pure ERC-7821 encode/decode utilities — no chain dependency (safe for SubQuery VM2).\nimport { encodeFunctionData, encodeAbiParameters, decodeFunctionData, decodeAbiParameters } from \"viem\"\nimport ERC7821ABI from \"@/abis/erc7281\"\nimport { ERC7821_BATCH_MODE } from \"./types\"\nimport type { HexString, ERC7821Call } from \"@/types\"\n\nexport function encodeERC7821ExecuteBatch(calls: ERC7821Call[]): HexString {\n\tconst executionData = encodeAbiParameters(\n\t\t[{ type: \"tuple[]\", components: ERC7821ABI.ABI[1].components }],\n\t\t[calls.map((call) => ({ target: call.target, value: call.value, data: call.data }))],\n\t) as HexString\n\n\treturn encodeFunctionData({\n\t\tabi: ERC7821ABI.ABI,\n\t\tfunctionName: \"execute\",\n\t\targs: [ERC7821_BATCH_MODE, executionData],\n\t}) as HexString\n}\n\nexport function decodeERC7821ExecuteBatch(callData: HexString): ERC7821Call[] | null {\n\ttry {\n\t\tconst decoded = decodeFunctionData({ abi: ERC7821ABI.ABI, data: callData })\n\t\tif (decoded.functionName !== \"execute\" || !decoded.args || decoded.args.length < 2) return null\n\t\tconst executionData = decoded.args[1] as HexString\n\t\tconst [calls] = decodeAbiParameters(\n\t\t\t[{ type: \"tuple[]\", components: ERC7821ABI.ABI[1].components }],\n\t\t\texecutionData,\n\t\t) as [ERC7821Call[]]\n\t\treturn calls.map((call) => ({\n\t\t\ttarget: call.target as HexString,\n\t\t\tvalue: call.value,\n\t\t\tdata: call.data as HexString,\n\t\t}))\n\t} catch {\n\t\treturn null\n\t}\n}\n","export const ABI = [\n\t{\n\t\ttype: \"constructor\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"admin\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"receive\",\n\t\tstateMutability: \"payable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"DOMAIN_SEPARATOR\",\n\t\tinputs: [],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"SELECT_SOLVER_TYPEHASH\",\n\t\tinputs: [],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_destinationProtocolFees\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_filled\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_instances\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_nonce\",\n\t\tinputs: [],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_orders\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_partialFills\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"calculateCommitmentSlotHash\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"cancelOrder\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct Order\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"user\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"destination\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"deadline\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"fees\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"session\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"predispatch\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct DispatchInfo\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"assets\",\n\t\t\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"call\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"inputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"output\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PaymentInfo\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"beneficiary\",\n\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"assets\",\n\t\t\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"call\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"options\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct CancelOptions\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"relayerFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"eip712Domain\",\n\t\tinputs: [],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"fields\",\n\t\t\t\ttype: \"bytes1\",\n\t\t\t\tinternalType: \"bytes1\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"name\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tinternalType: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"version\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tinternalType: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"chainId\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"verifyingContract\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"salt\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"extensions\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"fillOrder\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct Order\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"user\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"destination\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"deadline\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"fees\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"session\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"predispatch\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct DispatchInfo\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"assets\",\n\t\t\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"call\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"inputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"output\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PaymentInfo\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"beneficiary\",\n\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"assets\",\n\t\t\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"call\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"options\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct FillOptions\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"relayerFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"nativeDispatchFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"outputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"host\",\n\t\tinputs: [],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"instance\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"stateMachineId\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"onAccept\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"incoming\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IncomingPostRequest\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"onGetResponse\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"incoming\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IncomingGetResponse\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct GetResponse\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t\tinternalType: \"struct GetRequest\",\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"values\",\n\t\t\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\t\t\tinternalType: \"struct StorageValue[]\",\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"key\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"value\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"onGetTimeout\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct GetRequestTimeout\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct GetRequest\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"onPostRequestTimeout\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct PostRequestTimeout\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"params\",\n\t\tinputs: [],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"solverSelection\",\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\tinternalType: \"bool\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"surplusShareBps\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"protocolFeeBps\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"priceOracle\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"placeOrder\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct Order\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"user\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"destination\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"deadline\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"fees\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"session\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"predispatch\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct DispatchInfo\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"assets\",\n\t\t\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"call\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"inputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"output\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PaymentInfo\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"beneficiary\",\n\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"assets\",\n\t\t\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"call\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"graffiti\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"quote\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct DispatchPost\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"quote\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct DispatchGet\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"select\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"options\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct SelectOptions\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"commitment\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"solver\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"signature\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"init\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"p\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"solverSelection\",\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\tinternalType: \"bool\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"surplusShareBps\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"protocolFeeBps\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"priceOracle\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"deployments\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t\tinternalType: \"struct Deployment[]\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"chain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"gateway\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"DestinationProtocolFeeUpdated\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"chain\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"feeBps\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tanonymous: false,\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"DustCollected\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tanonymous: false,\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"DustSwept\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"beneficiary\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t],\n\t\tanonymous: false,\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"EIP712DomainChanged\",\n\t\tinputs: [],\n\t\tanonymous: false,\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"EscrowRefunded\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"tokens\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tanonymous: false,\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"EscrowReleased\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"tokens\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tanonymous: false,\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"DeploymentAdded\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"chain\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"gateway\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t],\n\t\tanonymous: false,\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"OrderFilled\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"filler\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"outputs\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"inputs\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tanonymous: false,\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"OrderPlaced\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"user\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"source\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"destination\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"nonce\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"fees\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"session\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"beneficiary\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"predispatch\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"inputs\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"outputs\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tanonymous: false,\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"ParamsUpdated\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"previous\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"solverSelection\",\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\tinternalType: \"bool\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"surplusShareBps\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"protocolFeeBps\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"priceOracle\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"current\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"solverSelection\",\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\tinternalType: \"bool\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"surplusShareBps\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"protocolFeeBps\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"priceOracle\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tanonymous: false,\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"PartialFill\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"filler\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"outputs\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"inputs\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tanonymous: false,\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"Cancelled\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"UnknownInstance\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"ECDSAInvalidSignature\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"ECDSAInvalidSignatureLength\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"length\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"ECDSAInvalidSignatureS\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"s\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"Expired\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"Filled\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"InsufficientNativeToken\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"InvalidInput\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"InvalidShortString\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"NotExpired\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"SafeERC20FailedOperation\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t\tinternalType: \"address\",\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"StringTooLong\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"str\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tinternalType: \"string\",\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"Unauthorized\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"UnauthorizedCall\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"UnexpectedCall\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"UnknownOrder\",\n\t\tinputs: [],\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"WrongChain\",\n\t\tinputs: [],\n\t},\n] as const\n\nexport default { ABI }\n","import { ApiPromise, Keyring, WsProvider } from \"@polkadot/api\"\nimport type { SubmittableExtrinsic } from \"@polkadot/api/types\"\nimport type { KeyringPair } from \"@polkadot/keyring/types\"\nimport { hexToU8a, u8aToHex, u8aConcat } from \"@polkadot/util\"\nimport { decodeAddress, keccakAsU8a } from \"@polkadot/util-crypto\"\nimport { numberToBytes, bytesToBigInt, decodeAbiParameters, hexToBytes } from \"viem\"\nimport { Bytes, Struct, u8, Vector } from \"scale-ts\"\nimport PQueue from \"p-queue\"\nimport type { BidSubmissionResult, HexString, PackedUserOperation, BidStorageEntry, FillerBid, Order } from \"@/types\"\nimport type { SubstrateChain } from \"./substrate\"\nimport IntentGatewayV2 from \"@/abis/IntentGatewayV2\"\n\n/** Offchain storage key prefix for bids */\nconst OFFCHAIN_BID_PREFIX = new TextEncoder().encode(\"intents::bid::\")\n/** Offchain storage key prefix for phantom orders */\nconst OFFCHAIN_PHANTOM_PREFIX = new TextEncoder().encode(\"intents::phantom::order::\")\n\n/** SCALE codec for Bid { filler: AccountId, user_op: Vec<u8> } */\nconst BidCodec = Struct({ filler: Bytes(32), user_op: Vector(u8) })\n\n/**\n * SCALE codec for PackedUserOperation\n * Uses Vec<u8> for all fields to handle hex strings uniformly\n */\nconst PackedUserOperationCodec = Struct({\n\tsender: Bytes(20), // address is 20 bytes\n\tnonce: Bytes(32), // uint256 as 32 bytes\n\tinitCode: Vector(u8), // variable length bytes\n\tcallData: Vector(u8), // variable length bytes\n\taccountGasLimits: Bytes(32), // bytes32\n\tpreVerificationGas: Bytes(32), // uint256 as 32 bytes\n\tgasFees: Bytes(32), // bytes32\n\tpaymasterAndData: Vector(u8), // variable length bytes\n\tsignature: Vector(u8), // variable length bytes\n})\n\n/**\n * Encodes a PackedUserOperation using SCALE codec for submission to Hyperbridge.\n * This is the recommended way to encode UserOps for the intents coprocessor.\n *\n * @param userOp - The PackedUserOperation to encode\n * @returns Hex-encoded SCALE bytes\n */\nexport function encodeUserOpScale(userOp: PackedUserOperation): HexString {\n\tconst encoded = PackedUserOperationCodec.enc({\n\t\tsender: hexToU8a(userOp.sender),\n\t\tnonce: numberToBytes(userOp.nonce, { size: 32 }),\n\t\tinitCode: Array.from(hexToU8a(userOp.initCode)),\n\t\tcallData: Array.from(hexToU8a(userOp.callData)),\n\t\taccountGasLimits: hexToU8a(userOp.accountGasLimits),\n\t\tpreVerificationGas: numberToBytes(userOp.preVerificationGas, { size: 32 }),\n\t\tgasFees: hexToU8a(userOp.gasFees),\n\t\tpaymasterAndData: Array.from(hexToU8a(userOp.paymasterAndData)),\n\t\tsignature: Array.from(hexToU8a(userOp.signature)),\n\t})\n\n\treturn u8aToHex(encoded) as HexString\n}\n\n/**\n * Decodes a SCALE-encoded PackedUserOperation.\n *\n * @param hex - The hex-encoded SCALE bytes\n * @returns The decoded PackedUserOperation\n */\nexport function decodeUserOpScale(hex: HexString): PackedUserOperation {\n\tconst decoded = PackedUserOperationCodec.dec(hexToU8a(hex))\n\n\treturn {\n\t\tsender: u8aToHex(new Uint8Array(decoded.sender)) as HexString,\n\t\tnonce: bytesToBigInt(new Uint8Array(decoded.nonce)),\n\t\tinitCode: u8aToHex(new Uint8Array(decoded.initCode)) as HexString,\n\t\tcallData: u8aToHex(new Uint8Array(decoded.callData)) as HexString,\n\t\taccountGasLimits: u8aToHex(new Uint8Array(decoded.accountGasLimits)) as HexString,\n\t\tpreVerificationGas: bytesToBigInt(new Uint8Array(decoded.preVerificationGas)),\n\t\tgasFees: u8aToHex(new Uint8Array(decoded.gasFees)) as HexString,\n\t\tpaymasterAndData: u8aToHex(new Uint8Array(decoded.paymasterAndData)) as HexString,\n\t\tsignature: u8aToHex(new Uint8Array(decoded.signature)) as HexString,\n\t}\n}\n\n/** RPC response shape from intents_getBidsForOrder */\ninterface RpcBidInfo {\n\tcommitment: HexString\n\tfiller: HexString\n\tuser_op: HexString\n}\n\nexport interface PhantomOrderEvent {\n\tcommitment: HexString\n\tchain: string\n\tcreatedAt: number\n\ttokenA: HexString\n\ttokenB: HexString\n\tstandardAmount: bigint\n}\n\n/**\n * Service for interacting with Hyperbridge's pallet-intents coprocessor.\n * Handles bid submission and retrieval for the IntentGatewayV2 protocol.\n *\n * Can be created from an existing SubstrateChain instance to share the connection.\n */\nexport class IntentsCoprocessor {\n\t/** Cached result of whether the node exposes intents_* RPC methods */\n\tprivate hasIntentsRpc: boolean | null = null\n\n\t// Serialises every extrinsic submission on this instance's substrate account. All submit/retract\n\t// methods funnel through signAndSendExtrinsic, each using the API's auto-nonce; fired in parallel\n\t// (bids for orders on different chains, or several phantom orders in one interval) they would grab\n\t// the same nonce and all but one would fail. Concurrency 1 sequences them.\n\tprivate submissionQueue = new PQueue({ concurrency: 1 })\n\n\t/**\n\t * Creates and connects an IntentsCoprocessor to a Hyperbridge node.\n\t * This creates and manages its own API connection.\n\t *\n\t * @param wsUrl - WebSocket URL of the Hyperbridge node\n\t * @param substratePrivateKey - Private key for signing extrinsics (optional for read-only operations)\n\t * @returns Promise resolving to a connected IntentsCoprocessor\n\t */\n\tstatic async connect(wsUrl: string, substratePrivateKey?: string): Promise<IntentsCoprocessor> {\n\t\tconst api = await ApiPromise.create({\n\t\t\tprovider: new WsProvider(wsUrl),\n\t\t\ttypesBundle: {\n\t\t\t\tspec: {\n\t\t\t\t\tnexus: { hasher: keccakAsU8a },\n\t\t\t\t\tgargantua: { hasher: keccakAsU8a },\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\treturn new IntentsCoprocessor(api, substratePrivateKey, true)\n\t}\n\n\t/**\n\t * Creates an IntentsCoprocessor from an existing SubstrateChain instance.\n\t * This shares the connection - the SubstrateChain must already be connected.\n\t *\n\t * @param chain - Connected SubstrateChain instance (typically Hyperbridge)\n\t * @param substratePrivateKey - Private key for signing extrinsics (optional for read-only operations)\n\t */\n\tstatic fromSubstrateChain(chain: SubstrateChain, substratePrivateKey?: string): IntentsCoprocessor {\n\t\tif (!chain.api) {\n\t\t\tthrow new Error(\"SubstrateChain must be connected before creating IntentsCoprocessor\")\n\t\t}\n\t\treturn new IntentsCoprocessor(chain.api, substratePrivateKey, false)\n\t}\n\n\t/**\n\t * Creates an IntentsCoprocessor from an existing ApiPromise instance.\n\t *\n\t * @param api - Connected ApiPromise instance\n\t * @param substratePrivateKey - Private key for signing extrinsics (optional for read-only operations)\n\t */\n\tstatic fromApi(api: ApiPromise, substratePrivateKey?: string): IntentsCoprocessor {\n\t\treturn new IntentsCoprocessor(api, substratePrivateKey, false)\n\t}\n\n\tprivate constructor(\n\t\tprivate api: ApiPromise,\n\t\tprivate substratePrivateKey?: string,\n\t\tprivate ownsConnection: boolean = false,\n\t) {}\n\n\t/**\n\t * Disconnects the underlying API connection if this instance owns it.\n\t * Only disconnects if created via `connect()`, not when using shared connections.\n\t */\n\tasync disconnect(): Promise<void> {\n\t\tif (this.ownsConnection) {\n\t\t\tawait this.api.disconnect()\n\t\t}\n\t}\n\n\t/**\n\t * Creates a Substrate keypair from the configured private key.\n\t * Supports hex seed (with or without 0x), mnemonic phrases, and URI derivation paths (//Alice).\n\t */\n\tpublic getKeyPair(): KeyringPair {\n\t\tif (!this.substratePrivateKey) {\n\t\t\tthrow new Error(\"Substrate PrivateKey Required\")\n\t\t}\n\n\t\tconst keyring = new Keyring({ type: \"sr25519\" })\n\n\t\tif (this.substratePrivateKey.startsWith(\"//\")) {\n\t\t\treturn keyring.addFromUri(this.substratePrivateKey)\n\t\t}\n\t\tif (this.substratePrivateKey.includes(\" \")) {\n\t\t\treturn keyring.addFromMnemonic(this.substratePrivateKey)\n\t\t}\n\t\tconst hex = this.substratePrivateKey.startsWith(\"0x\")\n\t\t\t? this.substratePrivateKey.slice(2)\n\t\t\t: this.substratePrivateKey\n\t\tconst seedBytes = Buffer.from(hex, \"hex\")\n\t\treturn keyring.addFromSeed(seedBytes)\n\t}\n\n\t/**\n\t * Signs and sends an extrinsic. Submissions are serialised through {@link submissionQueue} so\n\t * concurrent calls never collide on the substrate account nonce — each extrinsic reaches a block\n\t * before the next is signed.\n\t */\n\tprivate async signAndSendExtrinsic(\n\t\textrinsic: SubmittableExtrinsic<\"promise\">,\n\t\tmaxRetries: number = 3,\n\t\ttimeoutMs: number = 30_000,\n\t): Promise<BidSubmissionResult> {\n\t\tconst result = await this.submissionQueue.add(() => this.sendExtrinsicWithRetries(extrinsic, maxRetries, timeoutMs))\n\t\treturn result ?? { success: false, error: \"Submission queue returned no result\" }\n\t}\n\n\t/**\n\t * Signs and sends an extrinsic, handling status updates and errors.\n\t * Implements retry logic with progressive tip increases for stuck transactions.\n\t */\n\tprivate async sendExtrinsicWithRetries(\n\t\textrinsic: SubmittableExtrinsic<\"promise\">,\n\t\tmaxRetries: number,\n\t\ttimeoutMs: number,\n\t): Promise<BidSubmissionResult> {\n\t\tconst keyPair = this.getKeyPair()\n\t\tlet baseTip = 500_000_000_000n // 0.5 BRIDGE tip to increase priority\n\t\tlet attempt = 0\n\n\t\twhile (attempt < maxRetries) {\n\t\t\tconst currentTip = baseTip * BigInt(2 ** attempt) // Double tip on each retry\n\t\t\tattempt++\n\n\t\t\ttry {\n\t\t\t\tconst result = await this.sendWithTimeout(extrinsic, keyPair, currentTip, timeoutMs)\n\t\t\t\tif (result.success || result.error?.includes(\"Dispatch error\")) {\n\t\t\t\t\t// Return immediately on success or dispatch errors (non-recoverable)\n\t\t\t\t\treturn result\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Unexpected error, return immediately\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: err instanceof Error ? err.message : \"Unknown error\",\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: `Transaction failed after ${maxRetries} attempts`,\n\t\t}\n\t}\n\n\t/**\n\t * Sends an extrinsic with a timeout\n\t */\n\tprivate async sendWithTimeout(\n\t\textrinsic: SubmittableExtrinsic<\"promise\">,\n\t\tkeyPair: KeyringPair,\n\t\ttip: bigint,\n\t\ttimeoutMs: number,\n\t): Promise<BidSubmissionResult> {\n\t\treturn new Promise<BidSubmissionResult>((resolve) => {\n\t\t\tlet resolved = false\n\t\t\tlet unsubscribe: (() => void) | null = null\n\n\t\t\t// Set timeout to detect stuck transactions\n\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\tif (!resolved) {\n\t\t\t\t\tresolved = true\n\t\t\t\t\tif (unsubscribe) {\n\t\t\t\t\t\tunsubscribe()\n\t\t\t\t\t}\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: `Transaction timed out after ${timeoutMs}ms`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}, timeoutMs)\n\n\t\t\textrinsic\n\t\t\t\t.signAndSend(keyPair, { tip }, (result) => {\n\t\t\t\t\tif (resolved) return\n\n\t\t\t\t\tif (result.dispatchError && (result.status.isInBlock || result.status.isFinalized)) {\n\t\t\t\t\t\tresolved = true\n\t\t\t\t\t\tclearTimeout(timeoutId)\n\t\t\t\t\t\tlet errorMsg: string\n\t\t\t\t\t\tif (result.dispatchError.isModule) {\n\t\t\t\t\t\t\tconst decoded = this.api.registry.findMetaError(result.dispatchError.asModule)\n\t\t\t\t\t\t\terrorMsg = `Dispatch error: ${decoded.section}::${decoded.name}`\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terrorMsg = `Dispatch error: ${result.dispatchError.toString()}`\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror: errorMsg,\n\t\t\t\t\t\t})\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tresult.status.isDropped ||\n\t\t\t\t\t\tresult.status.isInvalid ||\n\t\t\t\t\t\tresult.status.isUsurped ||\n\t\t\t\t\t\tresult.status.isFinalityTimeout\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Pool-level terminal statuses — don't retry, let caller decide\n\t\t\t\t\t\tresolved = true\n\t\t\t\t\t\tclearTimeout(timeoutId)\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror: `Transaction ${result.status.type.toLowerCase()}`,\n\t\t\t\t\t\t})\n\t\t\t\t\t} else if (result.status.isInBlock || result.status.isFinalized) {\n\t\t\t\t\t\tresolved = true\n\t\t\t\t\t\tclearTimeout(timeoutId)\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\tblockHash: (result.status.isInBlock\n\t\t\t\t\t\t\t\t? result.status.asInBlock\n\t\t\t\t\t\t\t\t: result.status.asFinalized\n\t\t\t\t\t\t\t).toHex() as HexString,\n\t\t\t\t\t\t\textrinsicHash: extrinsic.hash.toHex() as HexString,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then((unsub) => {\n\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\tunsub()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tunsubscribe = unsub\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((err: Error) => {\n\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\tresolved = true\n\t\t\t\t\t\tclearTimeout(timeoutId)\n\t\t\t\t\t\tresolve({ success: false, error: err.message })\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Submits a bid to Hyperbridge's pallet-intents\n\t *\n\t * @param commitment - The order commitment hash (bytes32)\n\t * @param userOp - The encoded PackedUserOperation as hex string\n\t * @returns BidSubmissionResult with success status and block/extrinsic hash\n\t */\n\tasync submitBid(commitment: HexString, userOp: HexString): Promise<BidSubmissionResult> {\n\t\ttry {\n\t\t\tconst extrinsic = this.api.tx.intentsCoprocessor.placeBid(commitment, userOp)\n\t\t\treturn await this.signAndSendExtrinsic(extrinsic)\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: error instanceof Error ? error.message : \"Unknown error\",\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Retracts a bid from Hyperbridge and reclaims the deposit\n\t *\n\t * Use this to remove unused quotes and claim back deposited BRIDGE tokens.\n\t *\n\t * @param commitment - The order commitment hash (bytes32)\n\t * @returns BidSubmissionResult with success status and block/extrinsic hash\n\t */\n\tasync retractBid(commitment: HexString): Promise<BidSubmissionResult> {\n\t\ttry {\n\t\t\tconst extrinsic = this.api.tx.intentsCoprocessor.retractBid(commitment)\n\t\t\treturn await this.signAndSendExtrinsic(extrinsic)\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: error instanceof Error ? error.message : \"Unknown error\",\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Retracts a previous bid and places a new one in a single transaction via utility.batch.\n\t * The retraction runs first, so the old deposit is reclaimed even if the new bid then fails\n\t * (batch is non-atomic — a failing call interrupts the batch without reverting the calls that\n\t * already succeeded, unlike batchAll which would roll the retraction back too).\n\t *\n\t * @param retractCommitment - The order commitment of the bid to retract (bytes32)\n\t * @param bidCommitment - The order commitment of the new bid (bytes32)\n\t * @param userOp - The encoded PackedUserOperation as hex string\n\t * @returns BidSubmissionResult with success status and block/extrinsic hash\n\t */\n\tasync submitBidWithRetraction(\n\t\tretractCommitment: HexString,\n\t\tbidCommitment: HexString,\n\t\tuserOp: HexString,\n\t): Promise<BidSubmissionResult> {\n\t\ttry {\n\t\t\tconst batch = this.api.tx.utility.batch([\n\t\t\t\tthis.api.tx.intentsCoprocessor.retractBid(retractCommitment),\n\t\t\t\tthis.api.tx.intentsCoprocessor.placeBid(bidCommitment, userOp),\n\t\t\t])\n\t\t\treturn await this.signAndSendExtrinsic(batch)\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: error instanceof Error ? error.message : \"Unknown error\",\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fetches all bid storage entries for a given order commitment.\n\t * Returns the on-chain data only (filler addresses and deposits).\n\t *\n\t * @param commitment - The order commitment hash (bytes32)\n\t * @returns Array of BidStorageEntry objects\n\t */\n\tasync getBidStorageEntries(commitment: HexString): Promise<BidStorageEntry[]> {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst entries = await (this.api.query.intentsCoprocessor.bids as any).entries(commitment)\n\n\t\treturn entries.map(([storageKey, depositValue]: [any, any]) => ({\n\t\t\tcommitment,\n\t\t\tfiller: storageKey.args[1].toString() as string,\n\t\t\tdeposit: BigInt(depositValue.toString()),\n\t\t}))\n\t}\n\n\t/**\n\t * Fetches all bids for a given order commitment from Hyperbridge.\n\t *\n\t * Uses the custom intents_getBidsForOrder RPC if available on the node\n\t * for a single round-trip. Falls back to parallel storage + offchain\n\t * lookups otherwise.\n\t *\n\t * @param commitment - The order commitment hash (bytes32)\n\t * @returns Array of FillerBid objects containing filler address, userOp, and deposit\n\t */\n\tasync getBidsForOrder(commitment: HexString): Promise<FillerBid[]> {\n\t\ttry {\n\t\t\treturn await this.getBidsViaRpc(commitment)\n\t\t} catch (err) {\n\t\t\tconsole.warn(\"intents RPC failed, falling back to storage queries:\", err)\n\t\t}\n\n\t\treturn await this.getBidsViaStorage(commitment)\n\t}\n\n\t/**\n\t * Fetches bids using the custom intents_getBidsForOrder RPC.\n\t * Single round-trip but does not include deposit amounts.\n\t */\n\tprivate async getBidsViaRpc(commitment: HexString): Promise<FillerBid[]> {\n\t\tconst result: RpcBidInfo[] = await (this.api as any)._rpcCore.provider.send(\"intents_getBidsForOrder\", [\n\t\t\tcommitment,\n\t\t])\n\n\t\treturn result.map((entry) => {\n\t\t\tconst userOp = decodeUserOpScale(entry.user_op as HexString)\n\t\t\tconst filler = new Keyring({ type: \"sr25519\" }).encodeAddress(hexToU8a(entry.filler))\n\t\t\treturn { filler, userOp, deposit: 0n }\n\t\t})\n\t}\n\n\t/**\n\t * Fetches bids using on-chain storage entries + parallel offchain lookups.\n\t * Slower but works on all nodes and includes deposit amounts.\n\t */\n\tprivate async getBidsViaStorage(commitment: HexString): Promise<FillerBid[]> {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst entries = await (this.api.query.intentsCoprocessor.bids as any).entries(commitment)\n\n\t\tif (entries.length === 0) return []\n\n\t\tconst bidPromises = entries.map(async ([storageKey, depositValue]: [any, any]) => {\n\t\t\ttry {\n\t\t\t\tconst filler = storageKey.args[1].toString()\n\t\t\t\tconst deposit = BigInt(depositValue.toString())\n\n\t\t\t\tconst offchainKey = this.buildOffchainBidKey(commitment, filler)\n\t\t\t\tconst offchainKeyHex = u8aToHex(offchainKey)\n\n\t\t\t\tconst offchainResult = await this.api.rpc.offchain.localStorageGet(\"PERSISTENT\", offchainKeyHex)\n\n\t\t\t\tif (!offchainResult || offchainResult.isNone) return null\n\n\t\t\t\tconst bidData = offchainResult.unwrap().toHex() as HexString\n\t\t\t\tconst decoded = this.decodeBid(bidData)\n\n\t\t\t\treturn { filler: decoded.filler, userOp: decoded.userOp, deposit }\n\t\t\t} catch {\n\t\t\t\treturn null\n\t\t\t}\n\t\t})\n\n\t\tconst results = await Promise.all(bidPromises)\n\t\treturn results.filter((b): b is FillerBid => b !== null)\n\t}\n\n\t/** Decodes SCALE-encoded Bid struct and SCALE-encoded PackedUserOperation */\n\tprivate decodeBid(hex: HexString): { filler: string; userOp: PackedUserOperation } {\n\t\tconst decoded = BidCodec.dec(hexToU8a(hex))\n\t\tconst filler = new Keyring({ type: \"sr25519\" }).encodeAddress(new Uint8Array(decoded.filler))\n\t\tconst userOpHex = u8aToHex(new Uint8Array(decoded.user_op)) as HexString\n\n\t\t// Decode UserOp using SCALE codec\n\t\tconst userOp = decodeUserOpScale(userOpHex)\n\n\t\treturn { filler, userOp }\n\t}\n\n\t/** Builds offchain storage key: \"intents::bid::\" + commitment + filler */\n\tprivate buildOffchainBidKey(commitment: HexString, filler: string): Uint8Array {\n\t\treturn u8aConcat(OFFCHAIN_BID_PREFIX, hexToU8a(commitment), decodeAddress(filler))\n\t}\n\n\t/**\n\t * Fetches the ABI-encoded phantom order from offchain storage and decodes it\n\t * into an `Order` object. The pallet writes the order bytes under the key\n\t * `intents::phantom::order::<commitment>` when it calls `on_initialize`.\n\t *\n\t * Returns `null` if the key is absent (e.g. the node is not an offchain worker\n\t * or the commitment has expired and been cleared).\n\t */\n\tasync fetchPhantomOrder(commitment: HexString): Promise<Order | null> {\n\t\tconst key = u8aConcat(OFFCHAIN_PHANTOM_PREFIX, hexToU8a(commitment))\n\t\tconst result = await this.api.rpc.offchain.localStorageGet(\"PERSISTENT\", u8aToHex(key))\n\t\tif (!result || result.isNone) return null\n\n\t\tconst rawHex = result.unwrap().toHex() as HexString\n\t\tif (rawHex === \"0x\" || rawHex === \"0x00\") return null\n\n\t\tconst placeOrderAbi = (IntentGatewayV2.ABI as readonly { type: string; name?: string; inputs?: unknown[] }[]).find(\n\t\t\t(item) => item.type === \"function\" && item.name === \"placeOrder\",\n\t\t)\n\t\tconst orderType = placeOrderAbi?.inputs?.[0]\n\t\tif (!orderType) return null\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst [decoded] = decodeAbiParameters([orderType as any], rawHex)\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst d = decoded as any\n\t\tconst textDecoder = new TextDecoder()\n\n\t\treturn {\n\t\t\tid: commitment,\n\t\t\tuser: d.user as HexString,\n\t\t\tsource: textDecoder.decode(hexToBytes(d.source as HexString)),\n\t\t\tdestination: textDecoder.decode(hexToBytes(d.destination as HexString)),\n\t\t\tdeadline: d.deadline as bigint,\n\t\t\tnonce: d.nonce as bigint,\n\t\t\tfees: d.fees as bigint,\n\t\t\tsession: d.session as HexString,\n\t\t\tpredispatch: {\n\t\t\t\tassets: (d.predispatch.assets as { token: HexString; amount: bigint }[]).map((a) => ({\n\t\t\t\t\ttoken: a.token,\n\t\t\t\t\tamount: a.amount,\n\t\t\t\t})),\n\t\t\t\tcall: d.predispatch.call as HexString,\n\t\t\t},\n\t\t\tinputs: (d.inputs as { token: HexString; amount: bigint }[]).map((i) => ({\n\t\t\t\ttoken: i.token,\n\t\t\t\tamount: i.amount,\n\t\t\t})),\n\t\t\toutput: {\n\t\t\t\tbeneficiary: d.output.beneficiary as HexString,\n\t\t\t\tassets: (d.output.assets as { token: HexString; amount: bigint }[]).map((a) => ({\n\t\t\t\t\ttoken: a.token,\n\t\t\t\t\tamount: a.amount,\n\t\t\t\t})),\n\t\t\t\tcall: d.output.call as HexString,\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Subscribes to PhantomOrderRegistered events from the intents coprocessor pallet.\n\t * Calls the callback for each new phantom order as blocks arrive.\n\t * Returns an unsubscribe function to stop the subscription.\n\t */\n\tasync subscribePhantomOrders(callback: (event: PhantomOrderEvent) => void): Promise<() => void> {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst unsub = await (this.api.query.system.events as any)((records: any[]) => {\n\t\t\tfor (const { event } of records) {\n\t\t\t\tif (event.section !== \"intentsCoprocessor\" || event.method !== \"PhantomOrderRegistered\") continue\n\t\t\t\tconst [commitment, chain, createdAt, tokenA, tokenB, standardAmount] = event.data\n\t\t\t\tcallback({\n\t\t\t\t\tcommitment: commitment.toHex() as HexString,\n\t\t\t\t\tchain: new TextDecoder().decode(hexToU8a(chain.toHex())),\n\t\t\t\t\tcreatedAt: createdAt.toNumber(),\n\t\t\t\t\ttokenA: tokenA.toHex() as HexString,\n\t\t\t\t\ttokenB: tokenB.toHex() as HexString,\n\t\t\t\t\tstandardAmount: BigInt(standardAmount.toString()),\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t\treturn unsub as () => void\n\t}\n}\n","// Phantom-order price/liquidity aggregation. Lives in the SDK so the indexer (which persists the\n// result as entities) and the simplex E2E test share one implementation. Bid decoding is injectable\n// (extractFill) because the indexer must decode without viem — viem's @noble/hashes keccak throws\n// \"Uint8Array expected\" in the SubQuery VM2 sandbox — so it passes a VM2-safe decoder; the default\n// is the viem-based extractFillData, fine for Node consumers (tests, simplex).\nimport { decodeFunctionData } from \"viem\"\nimport { decodeERC7821ExecuteBatch } from \"@/protocols/intents/decode-utils\"\nimport { decodeUserOpScale } from \"@/chains/intentsCoprocessor\"\nimport IntentGatewayV2 from \"@/abis/IntentGatewayV2\"\n\nexport type HexString = `0x${string}`\n\n/** Minimal fetch shape used by the JSON-RPC POSTs below. */\nexport type FetchLike = (url: string, init: any) => Promise<{ json(): Promise<any> }>\n\n// The aggregation talks to RPCs over HTTP. In browsers/Node/tests the global `fetch` is used, but\n// the SubQuery VM2 sandbox the indexer runs in does NOT expose a global `fetch` (and node-fetch\n// crashes there), so the indexer injects a sandbox-safe implementation via setAggregationFetch().\nlet injectedFetch: FetchLike | undefined\nexport function setAggregationFetch(fetchImpl: FetchLike): void {\n\tinjectedFetch = fetchImpl\n}\nfunction rpcFetch(): FetchLike {\n\tconst f = injectedFetch ?? (globalThis as { fetch?: FetchLike }).fetch\n\tif (typeof f !== \"function\") {\n\t\tthrow new Error(\"No fetch available; call setAggregationFetch() before using the aggregation helpers\")\n\t}\n\treturn f\n}\n\n// POSTs a JSON-RPC payload and returns the parsed response, retrying with a short backoff. The node\n// intermittently returns an empty body under concurrent load (a 200 with no payload), which makes\n// response.json() throw; without a retry a single blip would silently drop a bid's quote or a whole\n// window (fetchBids throws). Throws if every attempt fails.\nasync function rpcCall(url: string, payload: object): Promise<any> {\n\tlet lastErr: unknown\n\tfor (let attempt = 0; attempt < 4; attempt++) {\n\t\tif (attempt > 0) await new Promise((resolve) => setTimeout(resolve, 150 * attempt))\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined\n\t\ttry {\n\t\t\t// Bound each attempt: the injected fetch (Node http) has no socket timeout, so a stalled\n\t\t\t// connection would otherwise hang forever and block the whole handler. Race it against a\n\t\t\t// deadline; on timeout we reject, retry, and ultimately throw so callers degrade instead.\n\t\t\tconst timeout = new Promise<never>((_, reject) => {\n\t\t\t\ttimer = setTimeout(() => reject(new Error(`rpc timeout: ${url}`)), 12_000)\n\t\t\t})\n\t\t\tconst response = await Promise.race([\n\t\t\t\trpcFetch()(url, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: { accept: \"application/json\", \"content-type\": \"application/json\" },\n\t\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\t}),\n\t\t\t\ttimeout,\n\t\t\t])\n\t\t\treturn await response.json()\n\t\t} catch (err) {\n\t\t\tlastErr = err\n\t\t} finally {\n\t\t\tif (timer) clearTimeout(timer)\n\t\t}\n\t}\n\tthrow lastErr\n}\n\nexport const FILL_ORDER_ABI = IntentGatewayV2.ABI\n\n/** ERC-4626 vaults per chain, keyed by chain id then lowercase underlying token address. */\nexport type YieldVaultMap = Record<string, Record<string, string[]>>\n\nexport interface FillData {\n\torder: Record<string, unknown>\n\toptions: Record<string, unknown>\n\toutputToken: HexString\n\tsolverAmount: bigint\n}\n\nexport interface RpcBidInfo {\n\tcommitment: string\n\tfiller: string\n\tuser_op: string\n}\n\n/** One solver's measured liquidity for a configured token on one chain at this snapshot. */\nexport interface LpBalance {\n\tsolver: string\n\t/** State machine id of the chain the balance was measured on (e.g. EVM-8453). */\n\tchain: string\n\ttokenAddress: HexString\n\tbalance: bigint\n}\n\n/** The aggregated result for a single phantom order's bid window. */\nexport interface PhantomAggregation {\n\tlowestPrice: bigint\n\thighestPrice: bigint\n\tmedianPrice: bigint\n\tbidCount: number\n\tlpBalances: LpBalance[]\n}\n\nexport interface AggregationLogger {\n\twarn: (payload: unknown, message: string) => void\n}\n\n// Liquidity-weighted median of solver quotes. Each quote's influence is proportional to `weight` —\n// the solver's total balance for the output token across native + vault venues — so a solver that\n// can actually deliver size moves the price more than one quoting on thin liquidity. Returns the\n// lower weighted median: the smallest price whose cumulative weight reaches half of the total.\n// Zero-weight quotes contribute nothing; if every weight is zero it falls back to the unweighted\n// median so a price is still reported.\nexport function weightedMedian(entries: { price: bigint; weight: bigint }[]): bigint {\n\tconst sorted = [...entries].sort((a, b) => (a.price < b.price ? -1 : a.price > b.price ? 1 : 0))\n\tconst totalWeight = sorted.reduce((acc, e) => (e.weight > 0n ? acc + e.weight : acc), 0n)\n\n\tif (totalWeight === 0n) {\n\t\treturn sorted[Math.floor(sorted.length / 2)].price\n\t}\n\n\tlet cumulative = 0n\n\tfor (const entry of sorted) {\n\t\tif (entry.weight <= 0n) continue\n\t\tcumulative += entry.weight\n\t\tif (cumulative * 2n >= totalWeight) return entry.price\n\t}\n\treturn sorted[sorted.length - 1].price\n}\n\n// Pulls the inner fillOrder call out of the bid's ERC-7821 execute batch and decodes the order, the\n// offered output token, and the solver's quoted amount. Returns null when no matching call targets\n// the gateway or the calldata cannot be decoded.\nexport function extractFillData(callData: HexString, gatewayAddress: string): FillData | null {\n\tconst calls = decodeERC7821ExecuteBatch(callData)\n\tif (!calls) return null\n\n\tconst normalized = gatewayAddress.toLowerCase()\n\tfor (const call of calls) {\n\t\tif (call.target.toLowerCase() !== normalized) continue\n\t\ttry {\n\t\t\tconst decoded = decodeFunctionData({ abi: FILL_ORDER_ABI, data: call.data as HexString })\n\t\t\tif (decoded.functionName !== \"fillOrder\" || !decoded.args || decoded.args.length < 2) continue\n\t\t\tconst order = decoded.args[0] as Record<string, unknown>\n\t\t\tconst options = decoded.args[1] as Record<string, unknown>\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst outputToken = (order as any)?.output?.assets?.[0]?.token as HexString | undefined\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst outputs = (options as any)?.outputs as { amount: bigint }[] | undefined\n\t\t\tif (!outputToken || !outputs?.length) continue\n\t\t\treturn { order, options, outputToken, solverAmount: outputs[0].amount }\n\t\t} catch {\n\t\t\tcontinue\n\t\t}\n\t}\n\treturn null\n}\n\nexport async function fetchBidsForOrder(nodeUrl: string, commitment: string): Promise<RpcBidInfo[]> {\n\tconst data = await rpcCall(nodeUrl, { id: 1, jsonrpc: \"2.0\", method: \"intents_getBidsForOrder\", params: [commitment] })\n\treturn Array.isArray(data.result) ? (data.result as RpcBidInfo[]) : []\n}\n\nasync function ethCallUint(evmRpcUrl: string, to: string, data: string): Promise<bigint> {\n\ttry {\n\t\tconst result = await rpcCall(evmRpcUrl, { id: 1, jsonrpc: \"2.0\", method: \"eth_call\", params: [{ to, data }, \"latest\"] })\n\t\tif (result.error || !result.result || result.result === \"0x\") return 0n\n\t\treturn BigInt(result.result)\n\t} catch {\n\t\treturn 0n\n\t}\n}\n\n// Sums the solver's redeemable balance of a single token on its destination chain: the raw ERC-20\n// balance plus any ERC-4626 vault positions wrapping it.\nasync function getTotalSolverBalance(\n\tevmRpcUrl: string,\n\tchain: string,\n\ttoken: string,\n\tsolver: string,\n\tyieldVaults: YieldVaultMap,\n): Promise<bigint> {\n\tconst padded = solver.replace(\"0x\", \"\").padStart(64, \"0\")\n\tconst raw = await ethCallUint(evmRpcUrl, token, `0x70a08231${padded}`) // balanceOf(address)\n\tconst vaults = yieldVaults[chain]?.[token.toLowerCase()] ?? []\n\tconst vaultBalances = await Promise.all(\n\t\tvaults.map((v) => ethCallUint(evmRpcUrl, v, `0xce96cb77${padded}`)), // maxWithdraw(address)\n\t)\n\treturn vaultBalances.reduce((acc, b) => acc + b, raw)\n}\n\n// Sweeps a solver's liquidity for every configured yield-vault token on every supported chain: for\n// each chain that has both an RPC (in evmRpcUrls) and configured tokens (in yieldVaults), the\n// solver's balance (raw ERC-20 + ERC-4626 vault positions) for each token. Captures the LP's whole\n// liquidity picture, not just the token of the bid being priced. Zero balances are skipped so the\n// snapshot only records tokens the solver actually holds.\nasync function sweepSolverLiquidity(\n\tevmRpcUrls: Record<string, string>,\n\tyieldVaults: YieldVaultMap,\n\tsolver: string,\n): Promise<LpBalance[]> {\n\tconst balances: LpBalance[] = []\n\tfor (const [chain, tokens] of Object.entries(yieldVaults)) {\n\t\tconst url = evmRpcUrls[chain]\n\t\tif (!url) continue\n\t\tfor (const token of Object.keys(tokens)) {\n\t\t\tconst balance = await getTotalSolverBalance(url, chain, token, solver, yieldVaults)\n\t\t\tif (balance === 0n) continue\n\t\t\tbalances.push({ solver, chain, tokenAddress: token as HexString, balance })\n\t\t}\n\t}\n\treturn balances\n}\n\n// Strips a bytes32 token field to a 20-byte lowercase address (or normalises an address as-is).\nfunction toAddress(token: string): HexString {\n\tconst hex = token.toLowerCase().replace(/^0x/, \"\")\n\tconst addr = hex.length > 40 ? hex.slice(-40) : hex.padStart(40, \"0\")\n\treturn `0x${addr}` as HexString\n}\n\n/**\n * Aggregates every bid for a phantom order into a single price/liquidity snapshot.\n *\n * Fetches the live bids via `intents_getBidsForOrder` and reads each filler's quoted output amount.\n * The liquidity-weighted median weights every quote by the solver's balance of the output token on\n * the destination chain, so a solver that can't actually deliver size carries little or no weight —\n * which is why no fill simulation is needed to filter unfillable quotes. For each bidding solver it\n * also records a full liquidity sweep — every configured yield-vault token on every supported chain\n * (raw ERC-20 + vault positions). Returns `null` when there are no decodable bids.\n *\n * `extractFill` decodes a bid's ERC-7821 calldata into the fill's order/output; it defaults to the\n * viem-based {@link extractFillData}, but the indexer injects a VM2-safe variant (viem's\n * decodeFunctionData keccak throws in the SubQuery sandbox).\n */\nexport async function aggregatePhantomBids(params: {\n\tnodeUrl: string\n\t/** RPC URL per supported EVM chain (stateMachineId -> url); must include the destination chain. */\n\tevmRpcUrls: Record<string, string>\n\tchain: string\n\tgatewayAddress: string\n\tcommitment: string\n\tyieldVaults: YieldVaultMap\n\textractFill?: (callData: HexString, gatewayAddress: string) => FillData | null\n\tlogger?: AggregationLogger\n}): Promise<PhantomAggregation | null> {\n\tconst { nodeUrl, evmRpcUrls, chain, gatewayAddress, commitment, yieldVaults, logger } = params\n\tconst extractFill = params.extractFill ?? extractFillData\n\n\tconst destUrl = evmRpcUrls[chain]\n\tif (!destUrl) return null\n\n\tconst bids = await fetchBidsForOrder(nodeUrl, commitment)\n\tif (bids.length === 0) return null\n\n\tconst quotes: { price: bigint; weight: bigint }[] = []\n\tconst lpBalances: LpBalance[] = []\n\n\tfor (const bid of bids) {\n\t\tif (!bid.user_op) continue\n\t\ttry {\n\t\t\tconst decoded = decodeUserOpScale(bid.user_op as HexString)\n\t\t\tconst solver = decoded.sender\n\n\t\t\tconst fillData = extractFill(decoded.callData as HexString, gatewayAddress)\n\t\t\tif (!fillData) continue\n\n\t\t\t// Price influence: the solver's liquidity in the output token on the destination chain.\n\t\t\tconst outputTokenAddress = toAddress(fillData.outputToken)\n\t\t\tconst weight = await getTotalSolverBalance(destUrl, chain, outputTokenAddress, solver, yieldVaults)\n\t\t\tquotes.push({ price: fillData.solverAmount, weight })\n\n\t\t\t// Full liquidity picture: every configured token on every supported chain.\n\t\t\tlpBalances.push(...(await sweepSolverLiquidity(evmRpcUrls, yieldVaults, solver)))\n\t\t} catch (err) {\n\t\t\tlogger?.warn({ err, filler: bid.filler }, \"Failed to process bid for price snapshot\")\n\t\t}\n\t}\n\n\tif (quotes.length === 0) return null\n\n\tconst sortedPrices = quotes.map((q) => q.price).sort((a, b) => (a < b ? -1 : a > b ? 1 : 0))\n\n\treturn {\n\t\tlowestPrice: sortedPrices[0],\n\t\thighestPrice: sortedPrices[sortedPrices.length - 1],\n\t\tmedianPrice: weightedMedian(quotes),\n\t\tbidCount: quotes.length,\n\t\tlpBalances,\n\t}\n}\n\n"]}
|