@hyperbridge/sdk 1.3.7 → 1.3.8
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 +13 -4
- package/dist/browser/index.js +37 -6
- package/dist/browser/index.js.map +1 -1
- package/dist/node/index.d.ts +13 -4
- package/dist/node/index.js +37 -6
- package/dist/node/index.js.map +1 -1
- package/package.json +1 -1
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/ckb-mmr-wasm/dist/node/node.js","../../src/types/index.ts","../../src/abis/evmHost.ts","../../src/abis/handler.ts","../../src/configs/chain.ts","../../src/configs/ChainConfigService.ts","../../src/utils/mmr.ts","../../src/utils/substrate.ts","../../src/utils.ts","../../src/utils/exceptions.ts","../../src/chains/evm.ts","../../src/chains/substrate.ts","../../src/chain.ts","../../src/queries.ts","../../src/query-client.ts","../../src/client.ts","../../src/abis/IntentGateway.ts","../../src/abis/uniswapV2Factory.ts","../../src/abis/uniswapRouterV2.ts","../../src/abis/uniswapV3Factory.ts","../../src/abis/uniswapV3Pool.ts","../../src/abis/uniswapV3Quoter.ts","../../src/abis/uniswapV4Quoter.ts","../../src/protocols/intents.ts","../../src/utils/tokenGateway.ts","../../src/utils/xcmGateway.ts"],"names":["ptr","TextDecoder","TextEncoder","HyperClientStatus","OrderStatus","TeleportStatus","RequestKind","ABI","Chains","env","generate_root_with_proof","encodePacked","wasm","toHex","hexToBytes","ERC20Method","client","mainnet","arbitrum","base","bsc","bscTestnet","gnosisChiado","bytesToHex","encoded","message","keccak256","Vector","u8","toBytes","match","createConsola","LogLevels","request","pad","timeout","teleport","Struct","u64","Option","assetId","keccakAsU8a","assets","parseUnits"],"mappings":"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","file":"index.js","sourcesContent":["import { readFileSync } from \"node:fs\"\nimport { join } from \"node:path\"\nimport { TextDecoder, TextEncoder } from \"node:util\"\n\nlet wasm\n\n// new URL('.', import.meta.url).pathname doesn't work fine with Nextjs\n// so I switched to this method of resolving the directory\nconst full_path = import.meta.url.split(\"/\").slice(1)\nconst __dirname = `${full_path.slice(0, full_path.length - 1).join(\"/\")}/`\n\nlet cachedTextDecoder = new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n\ncachedTextDecoder.decode()\n\nlet cachedUint8ArrayMemory0 = null\n\nfunction getUint8ArrayMemory0() {\n\tif (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n\t\tcachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer)\n\t}\n\treturn cachedUint8ArrayMemory0\n}\n\nfunction getStringFromWasm0(ptr, len) {\n\tptr = ptr >>> 0\n\treturn cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len))\n}\n\nlet WASM_VECTOR_LEN = 0\n\nlet cachedTextEncoder = new TextEncoder(\"utf-8\")\n\nconst encodeString =\n\ttypeof cachedTextEncoder.encodeInto === \"function\"\n\t\t? function (arg, view) {\n\t\t\t\treturn cachedTextEncoder.encodeInto(arg, view)\n\t\t\t}\n\t\t: function (arg, view) {\n\t\t\t\tconst buf = cachedTextEncoder.encode(arg)\n\t\t\t\tview.set(buf)\n\t\t\t\treturn {\n\t\t\t\t\tread: arg.length,\n\t\t\t\t\twritten: buf.length,\n\t\t\t\t}\n\t\t\t}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\tif (realloc === undefined) {\n\t\tconst buf = cachedTextEncoder.encode(arg)\n\t\tconst ptr = malloc(buf.length, 1) >>> 0\n\t\tgetUint8ArrayMemory0()\n\t\t\t.subarray(ptr, ptr + buf.length)\n\t\t\t.set(buf)\n\t\tWASM_VECTOR_LEN = buf.length\n\t\treturn ptr\n\t}\n\n\tlet len = arg.length\n\tlet ptr = malloc(len, 1) >>> 0\n\n\tconst mem = getUint8ArrayMemory0()\n\n\tlet offset = 0\n\n\tfor (; offset < len; offset++) {\n\t\tconst code = arg.charCodeAt(offset)\n\t\tif (code > 0x7f) break\n\t\tmem[ptr + offset] = code\n\t}\n\n\tif (offset !== len) {\n\t\tif (offset !== 0) {\n\t\t\targ = arg.slice(offset)\n\t\t}\n\t\tptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0\n\t\tconst view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len)\n\t\tconst ret = encodeString(arg, view)\n\n\t\toffset += ret.written\n\t\tptr = realloc(ptr, len, offset, 1) >>> 0\n\t}\n\n\tWASM_VECTOR_LEN = offset\n\treturn ptr\n}\n\nfunction isLikeNone(x) {\n\treturn x === undefined || x === null\n}\n\nlet cachedDataViewMemory0 = null\n\nfunction getDataViewMemory0() {\n\tif (\n\t\tcachedDataViewMemory0 === null ||\n\t\tcachedDataViewMemory0.buffer.detached === true ||\n\t\t(cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)\n\t) {\n\t\tcachedDataViewMemory0 = new DataView(wasm.memory.buffer)\n\t}\n\treturn cachedDataViewMemory0\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n\tconst ptr = malloc(arg.length * 1, 1) >>> 0\n\tgetUint8ArrayMemory0().set(arg, ptr / 1)\n\tWASM_VECTOR_LEN = arg.length\n\treturn ptr\n}\n\nfunction takeFromExternrefTable0(idx) {\n\tconst value = wasm.__wbindgen_export_0.get(idx)\n\twasm.__externref_table_dealloc(idx)\n\treturn value\n}\n\n/**\n * @param {Uint8Array} calldata_bytes\n * @param {bigint} tree_size\n * @returns {string}\n */\nexport function generate_root_with_proof(calldata_bytes, tree_size) {\n\tlet deferred3_0\n\tlet deferred3_1\n\ttry {\n\t\tconst ptr0 = passArray8ToWasm0(calldata_bytes, wasm.__wbindgen_malloc)\n\t\tconst len0 = WASM_VECTOR_LEN\n\t\tconst ret = wasm.generate_root_with_proof(ptr0, len0, tree_size)\n\t\tvar ptr2 = ret[0]\n\t\tvar len2 = ret[1]\n\t\tif (ret[3]) {\n\t\t\tptr2 = 0\n\t\t\tlen2 = 0\n\t\t\tthrow takeFromExternrefTable0(ret[2])\n\t\t}\n\t\tdeferred3_0 = ptr2\n\t\tdeferred3_1 = len2\n\t\treturn getStringFromWasm0(ptr2, len2)\n\t} finally {\n\t\twasm.__wbindgen_free(deferred3_0, deferred3_1, 1)\n\t}\n}\n\nfunction addToExternrefTable0(obj) {\n\tconst idx = wasm.__externref_table_alloc()\n\twasm.__wbindgen_export_0.set(idx, obj)\n\treturn idx\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n\tconst ptr = malloc(array.length * 4, 4) >>> 0\n\tfor (let i = 0; i < array.length; i++) {\n\t\tconst add = addToExternrefTable0(array[i])\n\t\tgetDataViewMemory0().setUint32(ptr + 4 * i, add, true)\n\t}\n\tWASM_VECTOR_LEN = array.length\n\treturn ptr\n}\n\n/**\n * @param {string} root_hex\n * @param {string[]} proof_hex\n * @param {bigint} mmr_size\n * @param {bigint} leaf_position\n * @param {Uint8Array} calldata_bytes\n * @returns {boolean}\n */\nexport function verify_proof(root_hex, proof_hex, mmr_size, leaf_position, calldata_bytes) {\n\tconst ptr0 = passStringToWasm0(root_hex, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc)\n\tconst len0 = WASM_VECTOR_LEN\n\tconst ptr1 = passArrayJsValueToWasm0(proof_hex, wasm.__wbindgen_malloc)\n\tconst len1 = WASM_VECTOR_LEN\n\tconst ptr2 = passArray8ToWasm0(calldata_bytes, wasm.__wbindgen_malloc)\n\tconst len2 = WASM_VECTOR_LEN\n\tconst ret = wasm.verify_proof(ptr0, len0, ptr1, len1, mmr_size, leaf_position, ptr2, len2)\n\tif (ret[2]) {\n\t\tthrow takeFromExternrefTable0(ret[1])\n\t}\n\treturn ret[0] !== 0\n}\n\nconst KeccakMergeFinalization =\n\ttypeof FinalizationRegistry === \"undefined\"\n\t\t? { register: () => {}, unregister: () => {} }\n\t\t: new FinalizationRegistry((ptr) => wasm.__wbg_keccakmerge_free(ptr >>> 0, 1))\n\nexport class KeccakMerge {\n\t__destroy_into_raw() {\n\t\tconst ptr = this.__wbg_ptr\n\t\tthis.__wbg_ptr = 0\n\t\tKeccakMergeFinalization.unregister(this)\n\t\treturn ptr\n\t}\n\n\tfree() {\n\t\tconst ptr = this.__destroy_into_raw()\n\t\twasm.__wbg_keccakmerge_free(ptr, 0)\n\t}\n}\n\nexport function __wbindgen_error_new(arg0, arg1) {\n\tconst ret = new Error(getStringFromWasm0(arg0, arg1))\n\treturn ret\n}\n\nexport function __wbindgen_init_externref_table() {\n\tconst table = wasm.__wbindgen_export_0\n\tconst offset = table.grow(4)\n\ttable.set(0, undefined)\n\ttable.set(offset + 0, undefined)\n\ttable.set(offset + 1, null)\n\ttable.set(offset + 2, true)\n\ttable.set(offset + 3, false)\n}\n\nexport function __wbindgen_string_get(arg0, arg1) {\n\tconst obj = arg1\n\tconst ret = typeof obj === \"string\" ? obj : undefined\n\tvar ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc)\n\tvar len1 = WASM_VECTOR_LEN\n\tgetDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true)\n\tgetDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true)\n}\n\nexport function __wbindgen_throw(arg0, arg1) {\n\tthrow new Error(getStringFromWasm0(arg0, arg1))\n}\n\n// Load and initialize the WebAssembly module\nconst wasmPath = join(__dirname, \"./node_bg.wasm\")\nconst wasmBytes = readFileSync(wasmPath)\n\nconst bindings = {\n\tgenerate_root_with_proof,\n\tverify_proof,\n\tKeccakMerge,\n\t__wbindgen_error_new,\n\t__wbindgen_init_externref_table,\n\t__wbindgen_string_get,\n\t__wbindgen_throw,\n}\n\nconst wasmModule = new WebAssembly.Module(wasmBytes)\nconst wasmInstance = new WebAssembly.Instance(wasmModule, {\n\t__wbindgen_placeholder__: bindings,\n})\nwasm = wasmInstance.exports\nexport const __wasm = wasm\n\nwasm.__wbindgen_start()\n\nexport default function init() {\n\tconsole.log(\"CKB MMR WASM initialized\")\n}\n","import type { ConsolaInstance } from \"consola\"\nimport type { GraphQLClient } from \"graphql-request\"\nimport type { ContractFunctionArgs, Hex, Log } from \"viem\"\nimport type HandlerV1 from \"@/abis/handler\"\n\nexport type EstimateGasCallData = ContractFunctionArgs<\n\ttypeof HandlerV1.ABI,\n\t\"nonpayable\" | \"payable\",\n\t\"handlePostRequests\"\n>\n\nexport type HexString = `0x${string}`\n\nexport interface IConfig {\n\t// confuration object for the source chain\n\tsource: IEvmConfig | ISubstrateConfig\n\t// confuration object for the destination chain\n\tdest: IEvmConfig | ISubstrateConfig\n\t// confuration object for hyperbridge\n\thyperbridge: IHyperbridgeConfig\n\t// Flag to enable tracing console logs\n\ttracing?: boolean\n}\n\nexport interface IEvmConfig {\n\t// rpc url of the chain\n\trpcUrl: string\n\t// state machine identifier as a string\n\tstateMachineId: string\n\t// contract address of the `IsmpHost` on this chain\n\thost: string\n\t// consensus state identifier of this chain on hyperbridge\n\tconsensusStateId: string\n}\n\nexport interface ISubstrateConfig {\n\t// rpc url of the chain\n\twsUrl: string\n\t// consensus state identifier of this chain on hyperbridge\n\tconsensusStateId: string\n\t// consensus state identifier of this chain on hyperbridge\n\thasher: \"Keccak\" | \"Blake2\"\n\t// state machine identifier as a string\n\tstateMachineId: string\n}\n\nexport interface IHyperbridgeConfig {\n\t// websocket rpc endpoint for hyperbridge\n\twsUrl: string\n\t// state machine identifier as a string\n\tstateMachineId: string\n\t// consensus state identifier of hyperbridge on the destination chain\n\tconsensusStateId: string\n}\n\nexport interface IPostRequest {\n\t// The source state machine of this request.\n\tsource: string\n\t// The destination state machine of this request.\n\tdest: string\n\t// Module Id of the sending module\n\tfrom: HexString\n\t// Module ID of the receiving module\n\tto: HexString\n\t// The nonce of this request on the source chain\n\tnonce: bigint\n\t// Encoded request body.\n\tbody: HexString\n\t// Timestamp which this request expires in seconds.\n\ttimeoutTimestamp: bigint\n}\n\nexport interface IGetRequest {\n\t// The source state machine of this request.\n\tsource: string\n\t// The destination state machine of this request.\n\tdest: string\n\t// Module Id of the sending module\n\tfrom: HexString\n\t// The nonce of this request on the source chain\n\tnonce: bigint\n\t// Height at which to read the state machine.\n\theight: bigint\n\t/// Raw Storage keys that would be used to fetch the values from the counterparty\n\t/// For deriving storage keys for ink contract fields follow the guide in the link below\n\t/// `<https://use.ink/datastructures/storage-in-metadata#a-full-example>`\n\t/// The algorithms for calculating raw storage keys for different substrate pallet storage\n\t/// types are described in the following links\n\t/// `<https://github.com/paritytech/substrate/blob/master/frame/support/src/storage/types/map.rs#L34-L42>`\n\t/// `<https://github.com/paritytech/substrate/blob/master/frame/support/src/storage/types/double_map.rs#L34-L44>`\n\t/// `<https://github.com/paritytech/substrate/blob/master/frame/support/src/storage/types/nmap.rs#L39-L48>`\n\t/// `<https://github.com/paritytech/substrate/blob/master/frame/support/src/storage/types/value.rs#L37>`\n\t/// For fetching keys from EVM contracts each key should be 52 bytes\n\t/// This should be a concatenation of contract address and slot hash\n\tkeys: HexString[]\n\t// Timestamp which this request expires in seconds.\n\ttimeoutTimestamp: bigint\n\tcontext: HexString\n}\n\nexport interface GetResponseStorageValues {\n\tkey: HexString\n\tvalue: HexString\n}\n\nexport interface IPostResponse {\n\t// The request that triggered this response.\n\tpost: IPostRequest\n\t// The response message.\n\tresponse: string\n\t// Timestamp at which this response expires in seconds.\n\ttimeoutTimestamp: bigint\n}\n\nexport type IMessage = { Requests: HexString[] } | { Responses: HexString[] }\n\nexport type IndexerQueryClient = GraphQLClient\n\nexport interface ClientConfig {\n\tpollInterval: number\n\tqueryClient: IndexerQueryClient\n\ttracing?: boolean\n\tsource: IEvmConfig | ISubstrateConfig\n\tdest: IEvmConfig | ISubstrateConfig\n\thyperbridge: IHyperbridgeConfig\n}\n\nexport interface RetryConfig {\n\tmaxRetries: number\n\t/**\n\t * @description The initial backoff time in milliseconds before the first retry attempt.\n\t */\n\tbackoffMs: number\n\tlogMessage?: string\n\tlogger?: ConsolaInstance\n}\n\nexport interface IsmpRequest {\n\tsource: string\n\tdest: string\n\tfrom: string\n\tto: string\n\tnonce: bigint\n\tbody: string\n\ttimeoutTimestamp: bigint\n\tstorage_key?: string\n}\n\nexport const RequestStatus = Object.freeze({\n\tSOURCE: \"SOURCE\",\n\tSOURCE_FINALIZED: \"SOURCE_FINALIZED\",\n\tHYPERBRIDGE_DELIVERED: \"HYPERBRIDGE_DELIVERED\",\n\tHYPERBRIDGE_FINALIZED: \"HYPERBRIDGE_FINALIZED\",\n\tDESTINATION: \"DESTINATION\",\n\tTIMED_OUT: \"TIMED_OUT\",\n\tHYPERBRIDGE_TIMED_OUT: \"HYPERBRIDGE_TIMED_OUT\",\n})\nexport type RequestStatus = typeof RequestStatus\nexport type RequestStatusKey = keyof typeof RequestStatus\n\nexport const TimeoutStatus = Object.freeze({\n\tPENDING_TIMEOUT: \"PENDING_TIMEOUT\",\n\tDESTINATION_FINALIZED_TIMEOUT: \"DESTINATION_FINALIZED_TIMEOUT\",\n\tHYPERBRIDGE_TIMED_OUT: \"HYPERBRIDGE_TIMED_OUT\",\n\tHYPERBRIDGE_FINALIZED_TIMEOUT: \"HYPERBRIDGE_FINALIZED_TIMEOUT\",\n\tTIMED_OUT: \"TIMED_OUT\",\n})\n\nexport type TimeoutStatus = typeof TimeoutStatus\nexport type TimeoutStatusKey = keyof typeof TimeoutStatus\n\nexport type AllStatusKey = RequestStatusKey | TimeoutStatusKey\n\nexport enum HyperClientStatus {\n\tPENDING = \"PENDING\",\n\tSOURCE_FINALIZED = \"SOURCE_FINALIZED\",\n\tHYPERBRIDGE_FINALIZED = \"HYPERBRIDGE_FINALIZED\",\n\tHYPERBRIDGE_VERIFIED = \"HYPERBRIDGE_VERIFIED\",\n\tDESTINATION = \"DESTINATION\",\n\tTIMED_OUT = \"TIMED_OUT\",\n\tHYPERBRIDGE_TIMED_OUT = \"HYPERBRIDGE_TIMED_OUT\",\n\tERROR = \"ERROR\",\n}\n\nexport enum OrderStatus {\n\tPLACED = \"PLACED\",\n\tFILLED = \"FILLED\",\n\tREDEEMED = \"REDEEMED\",\n\tREFUNDED = \"REFUNDED\",\n}\n\nexport enum TeleportStatus {\n\tTELEPORTED = \"TELEPORTED\",\n\tRECEIVED = \"RECEIVED\",\n\tREFUNDED = \"REFUNDED\",\n}\n\nexport interface TokenGatewayAssetTeleportedResponse {\n\ttokenGatewayAssetTeleporteds: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tfrom: string\n\t\t\tto: string\n\t\t\tsourceChain: string\n\t\t\tdestChain: string\n\t\t\tcommitment: string\n\t\t\tamount: string\n\t\t\tusdValue: string\n\t\t\tassetId: string\n\t\t\tredeem: boolean\n\t\t\tstatus: TeleportStatus\n\t\t\tcreatedAt: string\n\t\t\tblockNumber: string\n\t\t\tblockTimestamp: string\n\t\t\ttransactionHash: string\n\t\t\tstatusMetadata: {\n\t\t\t\tnodes: Array<{\n\t\t\t\t\tstatus: TeleportStatus\n\t\t\t\t\tchain: string\n\t\t\t\t\ttimestamp: string\n\t\t\t\t\tblockNumber: string\n\t\t\t\t\tblockHash: string\n\t\t\t\t\ttransactionHash: string\n\t\t\t\t}>\n\t\t\t}\n\t\t}>\n\t}\n}\n\nexport interface TokenGatewayAssetTeleportedWithStatus {\n\tid: string\n\tfrom: string\n\tto: string\n\tsourceChain: string\n\tdestChain: string\n\tcommitment: string\n\tamount: bigint\n\tusdValue: string\n\tassetId: string\n\tredeem: boolean\n\tstatus: TeleportStatus\n\tcreatedAt: Date\n\tblockNumber: bigint\n\tblockTimestamp: bigint\n\ttransactionHash: string\n\tstatuses: Array<{\n\t\tstatus: TeleportStatus\n\t\tmetadata: {\n\t\t\tblockHash: string\n\t\t\tblockNumber: number\n\t\t\ttransactionHash: string\n\t\t\ttimestamp: bigint\n\t\t}\n\t}>\n}\n\nexport interface BlockMetadata {\n\tblockHash: string\n\tblockNumber: number\n\ttransactionHash: string\n\tcalldata?: string\n\ttimestamp?: number\n}\n\nexport interface PostRequestStatus {\n\tstatus: RequestStatusKey\n\tmetadata: Partial<BlockMetadata>\n}\n\nexport interface PostRequestTimeoutStatus {\n\tstatus: TimeoutStatusKey\n\tmetadata?: Partial<BlockMetadata>\n}\n\nexport interface StateMachineUpdate {\n\theight: number\n\tchain: string\n\tblockHash: string\n\tblockNumber: number\n\ttransactionHash: string\n\ttransactionIndex: number\n\tstateMachineId: string\n\ttimestamp: number\n}\n\nexport interface RequestResponse {\n\trequests: {\n\t\tnodes: Array<{\n\t\t\tsource: string\n\t\t\tdest: string\n\t\t\tto: HexString\n\t\t\tfrom: HexString\n\t\t\tnonce: bigint\n\t\t\tbody: HexString\n\t\t\ttimeoutTimestamp: bigint\n\t\t\tstatusMetadata: {\n\t\t\t\tnodes: Array<{\n\t\t\t\t\tblockHash: string\n\t\t\t\t\tblockNumber: string\n\t\t\t\t\ttimestamp: string\n\t\t\t\t\tchain: string\n\t\t\t\t\tstatus: string\n\t\t\t\t\ttransactionHash: string\n\t\t\t\t}>\n\t\t\t}\n\t\t}>\n\t}\n}\n\nexport interface GetRequestResponse {\n\tgetRequests: {\n\t\tnodes: Array<{\n\t\t\tsource: string\n\t\t\tdest: string\n\t\t\tto: HexString\n\t\t\tfrom: HexString\n\t\t\tnonce: bigint\n\t\t\theight: bigint\n\t\t\tkeys: HexString[]\n\t\t\tcontext: HexString\n\t\t\ttimeoutTimestamp: bigint\n\t\t\tstatusMetadata: {\n\t\t\t\tnodes: Array<{\n\t\t\t\t\tblockHash: string\n\t\t\t\t\tblockNumber: string\n\t\t\t\t\ttimestamp: string\n\t\t\t\t\tchain: string\n\t\t\t\t\tstatus: string\n\t\t\t\t\ttransactionHash: string\n\t\t\t\t}>\n\t\t\t}\n\t\t}>\n\t}\n}\n\nexport type RequestStatusWithMetadata =\n\t| {\n\t\t\tstatus: RequestStatus[\"SOURCE\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: RequestStatus[\"SOURCE_FINALIZED\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: RequestStatus[\"HYPERBRIDGE_DELIVERED\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: RequestStatus[\"HYPERBRIDGE_FINALIZED\"]\n\t\t\tmetadata: {\n\t\t\t\tcalldata: Hex\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: RequestStatus[\"DESTINATION\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: TimeoutStatus[\"PENDING_TIMEOUT\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: TimeoutStatus[\"DESTINATION_FINALIZED_TIMEOUT\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: TimeoutStatus[\"HYPERBRIDGE_TIMED_OUT\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: TimeoutStatus[\"HYPERBRIDGE_FINALIZED_TIMEOUT\"]\n\t\t\tmetadata: {\n\t\t\t\tcalldata: Hex\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: TimeoutStatus[\"TIMED_OUT\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\ninterface GenericRequestWithStatuses {\n\tsource: string\n\tdest: string\n\tfrom: HexString\n\tnonce: bigint\n\ttimeoutTimestamp: bigint\n\tstatuses: Array<RequestStatusWithMetadata>\n}\n\nexport interface PostRequestWithStatus extends GenericRequestWithStatuses {\n\tto: HexString\n\tbody: HexString\n}\n\nexport interface GetRequestWithStatus extends GenericRequestWithStatuses {\n\theight: bigint\n\tkeys: HexString[]\n\tcontext: HexString\n\tcommitment: HexString\n}\n\nexport interface GetResponseByRequestIdResponse {\n\tgetResponses: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tcommitment: string\n\t\t\tresponseMessage: string[]\n\t\t}>\n\t}\n}\n\nexport interface ResponseCommitmentWithValues {\n\tcommitment: string\n\tvalues: string[]\n}\n\nexport interface RequestCommitment {\n\trequests: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tcommitment: string\n\t\t}>\n\t}\n}\n\nexport interface StateMachineResponse {\n\tstateMachineUpdateEvents: {\n\t\tnodes: {\n\t\t\theight: number\n\t\t\tchain: string\n\t\t\tblockHash: string\n\t\t\tblockNumber: number\n\t\t\ttransactionHash: string\n\t\t\ttransactionIndex: number\n\t\t\tstateMachineId: string\n\t\t\tcreatedAt: string\n\t\t}[]\n\t}\n}\n\nexport interface AssetTeleported {\n\tid: string\n\tfrom: string\n\tto: string\n\tamount: bigint\n\tdest: string\n\tcommitment: string\n\tcreatedAt: Date\n\tblockNumber: number\n}\n\nexport interface AssetTeleportedResponse {\n\tassetTeleported: AssetTeleported\n}\n\nexport interface StateMachineIdParams {\n\tstateId: { Evm?: number; Substrate?: HexString; Polkadot?: number; Kusama?: number }\n\tconsensusStateId: HexString\n}\n\n/**\n * Configuration for a blockchain chain\n */\nexport interface ChainConfig {\n\t/**\n\t * The unique identifier for the chain\n\t */\n\tchainId: number\n\n\t/**\n\t * The RPC URL to connect to the chain\n\t */\n\trpcUrl: string\n\n\t/**\n\t * The address of the IntentGateway contract on this chain\n\t */\n\tintentGatewayAddress: string\n}\n\n/**\n * Represents token information for an order\n */\nexport interface TokenInfo {\n\t/**\n\t * The address of the ERC20 token\n\t * address(0) is used as a sentinel for the native token\n\t */\n\ttoken: HexString\n\n\t/**\n\t * The amount of the token\n\t */\n\tamount: bigint\n}\n\n/**\n * Represents payment information for an order\n */\nexport interface PaymentInfo extends TokenInfo {\n\t/**\n\t * The address to receive the output tokens\n\t */\n\tbeneficiary: HexString\n}\n\n/**\n * Represents an order in the IntentGateway\n */\nexport interface Order {\n\t/**\n\t * The unique identifier for the order\n\t */\n\tid?: string\n\n\t/**\n\t * The address of the user who is initiating the transfer\n\t */\n\tuser: HexString\n\n\t/**\n\t * The state machine identifier of the origin chain\n\t */\n\tsourceChain: string\n\n\t/**\n\t * The state machine identifier of the destination chain\n\t */\n\tdestChain: string\n\n\t/**\n\t * The block number by which the order must be filled on the destination chain\n\t */\n\tdeadline: bigint\n\n\t/**\n\t * The nonce of the order\n\t */\n\tnonce: bigint\n\n\t/**\n\t * Represents the dispatch fees associated with the IntentGateway\n\t */\n\tfees: bigint\n\n\t/**\n\t * The tokens that the filler will provide\n\t */\n\toutputs: PaymentInfo[]\n\n\t/**\n\t * The tokens that are escrowed for the filler\n\t */\n\tinputs: TokenInfo[]\n\n\t/**\n\t * A bytes array to store the calls if any\n\t */\n\tcallData: HexString\n\n\t// Additional Data\n\t/**\n\t * The transaction hash of the order\n\t */\n\ttransactionHash?: HexString\n}\n\nexport interface DecodedOrderPlacedLog extends Log {\n\teventName: string\n\targs: {\n\t\tuser: HexString\n\t\tsourceChain: Hex\n\t\tdestChain: Hex\n\t\tdeadline: bigint\n\t\tnonce: bigint\n\t\tfees: bigint\n\t\toutputs: Array<{\n\t\t\ttoken: HexString\n\t\t\tamount: bigint\n\t\t\tbeneficiary: HexString\n\t\t}>\n\t\tinputs: Array<{\n\t\t\ttoken: HexString\n\t\t\tamount: bigint\n\t\t}>\n\t\tcallData: HexString\n\t}\n\ttransactionHash: HexString\n}\n\n/**\n * Options for filling an order\n */\nexport interface FillOptions {\n\t/**\n\t * The fee paid to the relayer for processing transactions\n\t */\n\trelayerFee: bigint\n}\n\n/**\n * Options for canceling an order\n */\nexport interface CancelOptions {\n\t/**\n\t * The fee paid to the relayer for processing transactions\n\t */\n\trelayerFee: string\n\n\t/**\n\t * Stores the height value\n\t */\n\theight: string\n}\n\n/**\n * Represents a new deployment of IntentGateway\n */\nexport interface NewDeployment {\n\t/**\n\t * Identifier for the state machine\n\t */\n\tstateMachineId: HexString\n\n\t/**\n\t * The gateway identifier\n\t */\n\tgateway: HexString\n}\n\n/**\n * Represents the body of a request\n */\nexport interface RequestBody {\n\t/**\n\t * Represents the commitment of an order\n\t */\n\tcommitment: HexString\n\n\t/**\n\t * Stores the identifier for the beneficiary\n\t */\n\tbeneficiary: HexString\n\n\t/**\n\t * An array of token identifiers\n\t */\n\ttokens: TokenInfo[]\n}\n\n/**\n * Represents the parameters for the IntentGateway module\n */\nexport interface IntentGatewayParams {\n\t/**\n\t * The address of the host contract\n\t */\n\thost: string\n\n\t/**\n\t * Address of the dispatcher contract responsible for handling intents\n\t */\n\tdispatcher: string\n}\n\n/**\n * Enum representing the different kinds of incoming requests\n */\nexport enum RequestKind {\n\t/**\n\t * Identifies a request for redeeming an escrow\n\t */\n\tRedeemEscrow = 0,\n\n\t/**\n\t * Identifies a request for recording new contract deployments\n\t */\n\tNewDeployment = 1,\n\n\t/**\n\t * Identifies a request for updating parameters\n\t */\n\tUpdateParams = 2,\n}\n\n/**\n * Configuration for the IntentFiller\n */\nexport interface FillerConfig {\n\t/**\n\t * Policy for determining confirmation requirements\n\t */\n\tconfirmationPolicy: {\n\t\tgetConfirmationBlocks: (chainId: number, amountUsd: number) => number\n\t}\n\n\t/**\n\t * Maximum number of orders to process concurrently\n\t */\n\tmaxConcurrentOrders?: number\n\n\t/**\n\t * Minimum profitability threshold to consider filling an order\n\t * Expressed as a percentage (e.g., 0.5 = 0.5%)\n\t */\n\tminProfitabilityThreshold?: number\n\n\t/**\n\t * Gas price strategy for each chain\n\t * Maps chainId to a gas price strategy function\n\t */\n\tgasPriceStrategy?: Record<string, () => Promise<string>>\n\n\t/**\n\t * Maximum gas price willing to pay for each chain\n\t * Maps chainId to maximum gas price in wei\n\t */\n\tmaxGasPrice?: Record<string, string>\n\n\t/**\n\t * Retry configuration for failed transactions\n\t */\n\tretryConfig?: {\n\t\t/**\n\t\t * Maximum number of retry attempts\n\t\t */\n\t\tmaxAttempts: number\n\n\t\t/**\n\t\t * Initial delay between retries in ms\n\t\t */\n\t\tinitialDelayMs: number\n\t}\n\n\t/**\n\t * Configuration for the pending queue\n\t */\n\tpendingQueueConfig?: {\n\t\t/**\n\t\t * Delay in milliseconds before rechecking an order for confirmations\n\t\t * Default: 30000 (30 seconds)\n\t\t */\n\t\trecheckDelayMs?: number\n\n\t\t/**\n\t\t * Maximum number of times to recheck an order before giving up\n\t\t * Default: 10\n\t\t */\n\t\tmaxRechecks?: number\n\t}\n}\n\n/**\n * Result of an order execution attempt\n */\nexport interface ExecutionResult {\n\t/**\n\t * Whether the execution was successful\n\t */\n\tsuccess: boolean\n\n\t/**\n\t * The transaction hash if successful\n\t */\n\ttxHash?: string\n\n\t/**\n\t * Error message if unsuccessful\n\t */\n\terror?: string\n\n\t/**\n\t * Gas used by the transaction\n\t */\n\tgasUsed?: string\n\n\t/**\n\t * Gas price used for the transaction\n\t */\n\tgasPrice?: string\n\n\t/**\n\t * Total transaction cost in wei\n\t */\n\ttxCost?: string\n\n\t/**\n\t * Block number when the transaction was confirmed\n\t */\n\tconfirmedAtBlock?: number\n\n\t/**\n\t * Timestamp when the transaction was confirmed\n\t */\n\tconfirmedAt?: Date\n\n\t/**\n\t * Actual profitability achieved\n\t */\n\tactualProfitability?: number\n\n\t/**\n\t * Strategy used to fill the order\n\t */\n\tstrategyUsed?: string\n\n\t/**\n\t * Any tokens exchanged during the fill process\n\t */\n\texchanges?: Array<{\n\t\tfromToken: HexString\n\t\ttoToken: HexString\n\t\tfromAmount: string\n\t\ttoAmount: string\n\t\texchangeRate: string\n\t}>\n\n\t/**\n\t * The time it took to fill the order\n\t */\n\tprocessingTimeMs?: number\n}\n\n/**\n * Represents a dispatch post for cross-chain communication\n */\nexport interface DispatchPost {\n\t/**\n\t * Bytes representation of the destination state machine\n\t */\n\tdest: HexString\n\n\t/**\n\t * The destination module\n\t */\n\tto: HexString\n\n\t/**\n\t * The request body\n\t */\n\tbody: HexString\n\n\t/**\n\t * Timeout for this request in seconds\n\t */\n\ttimeout: bigint\n\n\t/**\n\t * The amount put up to be paid to the relayer,\n\t * this is charged in `IIsmpHost.feeToken` to `msg.sender`\n\t */\n\tfee: bigint\n\n\t/**\n\t * Who pays for this request?\n\t */\n\tpayer: HexString\n}\n\nexport interface DispatchGet {\n\t/**\n\t * Bytes representation of the destination state machine\n\t */\n\tdest: HexString\n\n\t/**\n\t * Height at which to read the state machine\n\t */\n\theight: bigint\n\n\t/**\n\t * Raw storage keys to fetch values from the counterparty\n\t */\n\tkeys: HexString[]\n\n\t/**\n\t * Timeout for this request in seconds\n\t */\n\ttimeout: bigint\n\n\t/**\n\t * The amount put up to be paid to the relayer\n\t */\n\tfee: bigint\n\n\t/**\n\t * Context for the request\n\t */\n\tcontext: HexString\n}\n\nexport interface StateMachineHeight {\n\tid: {\n\t\tstateId: { Evm?: number; Substrate?: HexString; Polkadot?: number; Kusama?: number }\n\t\tconsensusStateId: HexString\n\t}\n\theight: bigint\n}\n\n/**\n * The EvmHost protocol parameters\n */\nexport interface HostParams {\n\t/**\n\t * The default timeout in seconds for messages. If messages are dispatched\n\t * with a timeout value lower than this this value will be used instead\n\t */\n\tdefaultTimeout: bigint\n\t/**\n\t * The default per byte fee\n\t */\n\tperByteFee: bigint\n\t/**\n\t * The cost for applications to access the hyperbridge state commitment.\n\t * They might do so because the hyperbridge state contains the verified state commitments\n\t * for all chains and they want to directly read the state of these chains state bypassing\n\t * the ISMP protocol entirely.\n\t */\n\tstateCommitmentFee: bigint\n\t/**\n\t * The fee token contract address. This will typically be DAI.\n\t * but we allow it to be configurable to prevent future regrets.\n\t */\n\tfeeToken: HexString\n\t/**\n\t * The admin account, this only has the rights to freeze, or unfreeze the bridge\n\t */\n\tadmin: HexString\n\t/**\n\t * Ismp message handler contract. This performs all verification logic\n\t * needed to validate cross-chain messages before they are dispatched to local modules\n\t */\n\thandler: HexString\n\t/**\n\t * The authorized host manager contract, is itself an `IIsmpModule`\n\t * which receives governance requests from the Hyperbridge chain to either\n\t * withdraw revenue from the host or update its protocol parameters\n\t */\n\thostManager: HexString\n\t/**\n\t * The local UniswapV2Router02 contract, used for swapping the native token to the feeToken.\n\t */\n\tuniswapV2: HexString\n\t/**\n\t * The unstaking period of Polkadot's validators. In order to prevent long-range attacks\n\t */\n\tunStakingPeriod: bigint\n\t/**\n\t * Minimum challenge period for state commitments in seconds\n\t */\n\tchallengePeriod: bigint\n\t/**\n\t * The consensus client contract which handles consensus proof verification\n\t */\n\tconsensusClient: HexString\n\t/**\n\t * State machines whose state commitments are accepted\n\t */\n\treadonly stateMachines: readonly bigint[]\n\t/**\n\t * The state machine identifier for hyperbridge\n\t */\n\thyperbridge: HexString\n}\n\nexport interface OrderStatusMetadata {\n\tstatus: OrderStatus\n\tchain: string\n\ttimestamp: bigint\n\tblockNumber: string\n\ttransactionHash: string\n\tfiller?: string\n}\n\nexport interface OrderWithStatus {\n\tid: string\n\tuser: string\n\tsourceChain: string\n\tdestChain: string\n\tcommitment: string\n\tdeadline: bigint\n\tnonce: bigint\n\tfees: bigint\n\tinputTokens: string[]\n\tinputAmounts: bigint[]\n\tinputValuesUSD: string[]\n\tinputUSD: string\n\toutputTokens: string[]\n\toutputAmounts: bigint[]\n\toutputBeneficiaries: string[]\n\tcalldata: string\n\tstatus: OrderStatus\n\tcreatedAt: Date\n\tblockNumber: bigint\n\tblockTimestamp: bigint\n\ttransactionHash: string\n\tstatuses: Array<{\n\t\tstatus: OrderStatus\n\t\tmetadata: {\n\t\t\tblockHash: string\n\t\t\tblockNumber: number\n\t\t\ttransactionHash: string\n\t\t\ttimestamp: bigint\n\t\t\tfiller?: string\n\t\t}\n\t}>\n}\n\nexport interface OrderResponse {\n\torderPlaceds: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tuser: string\n\t\t\tsourceChain: string\n\t\t\tdestChain: string\n\t\t\tcommitment: string\n\t\t\tdeadline: string\n\t\t\tnonce: string\n\t\t\tfees: string\n\t\t\tinputTokens: string[]\n\t\t\tinputAmounts: string[]\n\t\t\tinputValuesUSD: string[]\n\t\t\tinputUSD: string\n\t\t\toutputTokens: string[]\n\t\t\toutputAmounts: string[]\n\t\t\toutputBeneficiaries: string[]\n\t\t\tcalldata: string\n\t\t\tstatus: OrderStatus\n\t\t\tcreatedAt: string\n\t\t\tblockNumber: string\n\t\t\tblockTimestamp: string\n\t\t\ttransactionHash: string\n\t\t\tstatusMetadata: {\n\t\t\t\tnodes: Array<{\n\t\t\t\t\tstatus: OrderStatus\n\t\t\t\t\tchain: string\n\t\t\t\t\ttimestamp: string\n\t\t\t\t\tblockNumber: string\n\t\t\t\t\tblockHash: string\n\t\t\t\t\ttransactionHash: string\n\t\t\t\t\tfiller?: string\n\t\t\t\t}>\n\t\t\t}\n\t\t}>\n\t}\n}\n\nexport interface TokenPrice {\n\tsymbol: string\n\taddress?: string\n\tcurrency: string\n\tprice: string\n\tlastUpdatedAt: bigint\n}\n\nexport interface TokenPricesResponse {\n\ttokenPrices: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tsymbol: string\n\t\t\taddress: string\n\t\t\tcurrency: string\n\t\t\tprice: string\n\t\t\tlastUpdatedAt: bigint\n\t\t}>\n\t}\n}\n\nexport interface TokenRegistry {\n\tid: string\n\tname: string\n\tsymbol: string\n\taddress?: string\n\tupdateFrequencySeconds: number\n\tlastUpdatedAt: bigint\n\tcreatedAt: Date\n}\n\nexport interface TokenRegistryResponse {\n\ttokenRegistries: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tname: string\n\t\t\tsymbol: string\n\t\t\taddress: string\n\t\t\tupdateFrequencySeconds: number\n\t\t\tlastUpdatedAt: bigint\n\t\t\tcreatedAt: string\n\t\t}>\n\t}\n}\n","const ABI = [\n\t{\n\t\tinputs: [],\n\t\tname: \"CannotChangeFeeToken\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"DuplicateResponse\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"FrozenHost\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidAddressLength\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidConsensusClient\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidHandler\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidHostManager\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidHyperbridgeId\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidStateMachinesLength\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidUnstakingPeriod\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnauthorizedAccount\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnauthorizedAction\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnauthorizedResponse\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnknownRequest\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnknownResponse\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"WithdrawalFailed\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"source\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"from\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\tname: \"keys\",\n\t\t\t\ttype: \"bytes[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"nonce\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"context\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"GetRequestEvent\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"GetRequestHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t],\n\t\tname: \"GetRequestTimeoutHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"enum FrozenStatus\",\n\t\t\t\tname: \"status\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t],\n\t\tname: \"HostFrozen\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultTimeout\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultPerByteFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateCommitmentFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"feeToken\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"admin\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"handler\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"hostManager\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"uniswapV2\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"unStakingPeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"challengePeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"consensusClient\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\t\t\tname: \"stateMachines\",\n\t\t\t\t\t\ttype: \"uint256[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\tname: \"stateIdHash\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"perByteFee\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PerByteFee[]\",\n\t\t\t\t\t\tname: \"perByteFees\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"hyperbridge\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct HostParams\",\n\t\t\t\tname: \"oldParams\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultTimeout\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultPerByteFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateCommitmentFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"feeToken\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"admin\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"handler\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"hostManager\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"uniswapV2\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"unStakingPeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"challengePeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"consensusClient\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\t\t\tname: \"stateMachines\",\n\t\t\t\t\t\ttype: \"uint256[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\tname: \"stateIdHash\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"perByteFee\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PerByteFee[]\",\n\t\t\t\t\t\tname: \"perByteFees\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"hyperbridge\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct HostParams\",\n\t\t\t\tname: \"newParams\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"HostParamsUpdated\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"beneficiary\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"native\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tname: \"HostWithdrawal\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"source\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"from\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"nonce\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"body\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostRequestEvent\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostRequestHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostRequestTimeoutHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"source\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"from\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"nonce\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"body\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"responseTimeoutTimestamp\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostResponseEvent\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"newFee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostResponseFunded\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostResponseHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostResponseTimeoutHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"newFee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"RequestFunded\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"caller\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"StateCommitmentRead\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"stateMachineId\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"timestamp\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"overlayRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"stateRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct StateCommitment\",\n\t\t\t\tname: \"stateCommitment\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"fisherman\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"StateCommitmentVetoed\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"stateMachineId\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"StateMachineUpdated\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"admin\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"chainId\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"challengePeriod\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"consensusClient\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"consensusState\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"consensusUpdateTime\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"fisherman\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"deleteStateMachineCommitment\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPostResponse\",\n\t\t\t\tname: \"post\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatch\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPost\",\n\t\t\t\tname: \"post\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatch\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchGet\",\n\t\t\t\tname: \"get\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatch\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostResponse\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchIncoming\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchIncoming\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes[]\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct GetRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\tname: \"key\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\tname: \"value\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct StorageValue[]\",\n\t\t\t\t\t\tname: \"values\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct GetResponse\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchIncoming\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostResponse\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"sender\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FeeMetadata\",\n\t\t\t\tname: \"meta\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchTimeOut\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"sender\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FeeMetadata\",\n\t\t\t\tname: \"meta\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchTimeOut\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct GetRequest\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"sender\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FeeMetadata\",\n\t\t\t\tname: \"meta\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchTimeOut\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"feeToken\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"frozen\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"enum FrozenStatus\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"fundRequest\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"fundResponse\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"host\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"hostParams\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultTimeout\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultPerByteFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateCommitmentFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"feeToken\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"admin\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"handler\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"hostManager\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"uniswapV2\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"unStakingPeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"challengePeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"consensusClient\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\t\t\tname: \"stateMachines\",\n\t\t\t\t\t\ttype: \"uint256[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\tname: \"stateIdHash\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"perByteFee\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PerByteFee[]\",\n\t\t\t\t\t\tname: \"perByteFees\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"hyperbridge\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct HostParams\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"hyperbridge\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"id\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"latestStateMachineHeight\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"nonce\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"stateId\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"perByteFee\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"requestCommitments\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"sender\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FeeMetadata\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"requestReceipts\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"responded\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"responseCommitments\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"sender\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FeeMetadata\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"responseReceipts\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"responseCommitment\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct ResponseReceipt\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"state\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"timestamp\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"overlayRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"stateRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateCommitment\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"setConsensusState\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"enum FrozenStatus\",\n\t\t\t\tname: \"newState\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t],\n\t\tname: \"setFrozenState\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"stateCommitmentFee\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"stateMachineCommitment\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"timestamp\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"overlayRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"stateRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateCommitment\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"stateMachineCommitmentUpdateTime\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"parachainId\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"id\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"stateMachineId\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"state\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"storeConsensusState\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"timestamp\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"overlayRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"stateRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateCommitment\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"storeStateMachineCommitment\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"timestamp\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"unStakingPeriod\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"uniswapV2Router\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultTimeout\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultPerByteFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateCommitmentFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"feeToken\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"admin\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"handler\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"hostManager\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"uniswapV2\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"unStakingPeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"challengePeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"consensusClient\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\t\t\tname: \"stateMachines\",\n\t\t\t\t\t\ttype: \"uint256[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\tname: \"stateIdHash\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"perByteFee\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PerByteFee[]\",\n\t\t\t\t\t\tname: \"perByteFees\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"hyperbridge\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct HostParams\",\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"updateHostParams\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"paraId\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"vetoes\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"beneficiary\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bool\",\n\t\t\t\t\t\tname: \"native\",\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct WithdrawParams\",\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"withdraw\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tstateMutability: \"payable\",\n\t\ttype: \"receive\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tinputs: [],\n\t\tname: \"ChallengePeriodNotElapsed\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"ConsensusClientExpired\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"DuplicateMessage\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"HostFrozen\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidMessageDestination\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidProof\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"MessageNotTimedOut\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"MessageTimedOut\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"StateCommitmentNotFound\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnknownMessage\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"proof\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"handleConsensus\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes[]\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct GetRequest[]\",\n\t\t\t\t\t\tname: \"timeouts\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct GetTimeoutMessage\",\n\t\t\t\tname: \"message\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handleGetRequestTimeouts\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32[]\",\n\t\t\t\t\t\t\t\tname: \"multiproof\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"leafCount\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct Proof\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tcomponents: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tinternalType: \"struct GetRequest\",\n\t\t\t\t\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\t\t\t\t\ttype: \"tuple\",\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\tcomponents: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"key\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"value\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tinternalType: \"struct StorageValue[]\",\n\t\t\t\t\t\t\t\t\t\tname: \"values\",\n\t\t\t\t\t\t\t\t\t\ttype: \"tuple[]\",\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\tinternalType: \"struct GetResponse\",\n\t\t\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"index\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"kIndex\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct GetResponseLeaf[]\",\n\t\t\t\t\t\tname: \"responses\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct GetResponseMessage\",\n\t\t\t\tname: \"message\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handleGetResponses\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest[]\",\n\t\t\t\t\t\tname: \"timeouts\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostRequestTimeoutMessage\",\n\t\t\t\tname: \"message\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handlePostRequestTimeouts\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32[]\",\n\t\t\t\t\t\t\t\tname: \"multiproof\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"leafCount\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct Proof\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct PostRequest\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"index\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"kIndex\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequestLeaf[]\",\n\t\t\t\t\t\tname: \"requests\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostRequestMessage\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handlePostRequests\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct PostRequest\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostResponse[]\",\n\t\t\t\t\t\tname: \"timeouts\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostResponseTimeoutMessage\",\n\t\t\t\tname: \"message\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handlePostResponseTimeouts\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32[]\",\n\t\t\t\t\t\t\t\tname: \"multiproof\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"leafCount\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct Proof\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tcomponents: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\t\t\t\t\ttype: \"tuple\",\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\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tinternalType: \"struct PostResponse\",\n\t\t\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"index\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"kIndex\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostResponseLeaf[]\",\n\t\t\t\t\t\tname: \"responses\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostResponseMessage\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handlePostResponses\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes4\",\n\t\t\t\tname: \"interfaceId\",\n\t\t\t\ttype: \"bytes4\",\n\t\t\t},\n\t\t],\n\t\tname: \"supportsInterface\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","\nimport { Chain, bscTestnet, gnosisChiado, sepolia, mainnet, bsc, base, arbitrum } from \"viem/chains\"\n\nexport enum Chains {\n\tBSC_CHAPEL = \"EVM-97\",\n\tGNOSIS_CHIADO = \"EVM-10200\",\n\tHYPERBRIDGE_GARGANTUA = \"KUSAMA-4009\",\n\tSEPOLIA = \"EVM-11155111\",\n\tMAINNET = \"EVM-1\",\n\tBSC_MAINNET = \"EVM-56\",\n\tARBITRUM_MAINNET = \"EVM-42161\",\n\tBASE_MAINNET = \"EVM-8453\"\n}\n\ntype AddressMap = {\n\t[key: string]: {\n\t\t[K in Chains]?: `0x${string}`\n\t}\n}\n\ntype RpcMap = Record<Chains, string>\n\nexport const chainIds = {\n\t[Chains.BSC_CHAPEL]: 97,\n\t[Chains.GNOSIS_CHIADO]: 10200,\n\t[Chains.HYPERBRIDGE_GARGANTUA]: 4009,\n\t[Chains.SEPOLIA]: 11155111,\n\t[Chains.MAINNET]: 1,\n\t[Chains.BSC_MAINNET]: 56,\n\t[Chains.ARBITRUM_MAINNET]: 42161,\n\t[Chains.BASE_MAINNET]: 8453\n} as const\n\nexport type ChainId = typeof chainIds\n\nexport const viemChains: Record<string, Chain> = {\n\t\"97\": bscTestnet,\n\t\"10200\": gnosisChiado,\n\t\"11155111\": sepolia,\n\t\"1\": mainnet,\n\t\"56\": bsc,\n\t\"42161\": arbitrum,\n\t\"8453\": base\n}\n\nexport const WrappedNativeDecimals = {\n\t[Chains.BSC_CHAPEL]: 18,\n\t[Chains.GNOSIS_CHIADO]: 18,\n\t[Chains.SEPOLIA]: 18,\n\t[Chains.MAINNET]: 18,\n\t[Chains.BSC_MAINNET]: 18,\n\t[Chains.ARBITRUM_MAINNET]: 18,\n\t[Chains.BASE_MAINNET]: 18\n}\n\nexport const assets = {\n\t[Chains.BSC_CHAPEL]: {\n\t\tWETH: \"0xae13d989dac2f0debff460ac112a837c89baa7cd\".toLowerCase(),\n\t\tDAI: \"0x1938165569A5463327fb206bE06d8D9253aa06b7\".toLowerCase(),\n\t\tUSDC: \"0xC625ec7D30A4b1AAEfb1304610CdAcD0d606aC92\".toLowerCase(),\n\t\tUSDT: \"0xc043f483373072f7f27420d6e7d7ad269c018e18\".toLowerCase()\n\t},\n\t[Chains.GNOSIS_CHIADO]: {\n\t\tWETH: \"0x0000000000000000000000000000000000000000\".toLowerCase(),\n\t\tDAI: \"0x50B1d3c7c073c9caa1Ef207365A2c9C976bD70b9\".toLowerCase(),\n\t\tUSDC: \"0x0000000000000000000000000000000000000000\".toLowerCase(),\n\t\tUSDT: \"0x0000000000000000000000000000000000000000\".toLowerCase()\n\t},\n\t[Chains.SEPOLIA]: {\n\t\tWETH: \"0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9\".toLowerCase(),\n\t\tUSDC: \"0x0000000000000000000000000000000000000000\".toLowerCase(),\n\t\tUSDT: \"0x0000000000000000000000000000000000000000\".toLowerCase(),\n\t\tDAI: \"0x0000000000000000000000000000000000000000\".toLowerCase()\n\t},\n\t[Chains.MAINNET]: {\n\t\tWETH: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\".toLowerCase(),\n\t\tDAI: \"0x6B175474E89094C44Da98b954EedeAC495271d0F\".toLowerCase(),\n\t\tUSDC: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\".toLowerCase(),\n\t\tUSDT: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\".toLowerCase()\n\t},\n\t[Chains.BSC_MAINNET]: {\n\t\tWETH: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\".toLowerCase(),\n\t\tDAI: \"0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3\".toLowerCase(),\n\t\tUSDC: \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\".toLowerCase(),\n\t\tUSDT: \"0x55d398326f99059fF775485246999027B3197955\".toLowerCase()\n\t},\n\t[Chains.ARBITRUM_MAINNET]: {\n\t\tWETH: \"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1\".toLowerCase(),\n\t\tDAI: \"0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1\".toLowerCase(),\n\t\tUSDC: \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\".toLowerCase(),\n\t\tUSDT: \"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9\".toLowerCase()\n\t},\n\t[Chains.BASE_MAINNET]: {\n\t\tWETH: \"0x4200000000000000000000000000000000000006\".toLowerCase(),\n\t\tDAI: \"0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb\".toLowerCase(),\n\t\tUSDC: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\".toLowerCase(),\n\t\tUSDT: \"0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2\".toLowerCase()\n\t}\n}\n\nexport const addresses: AddressMap = {\n\tIntentGateway: {\n\t\t[Chains.BSC_CHAPEL]: \"0x016b6ffC9f890d1e28f9Fdb9eaDA776b02F89509\",\n\t\t[Chains.GNOSIS_CHIADO]: \"0x016b6ffC9f890d1e28f9Fdb9eaDA776b02F89509\",\n\t\t[Chains.SEPOLIA]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0xd54165e45926720b062C192a5bacEC64d5bB08DA\",\n\t\t[Chains.BSC_MAINNET]: \"0xd54165e45926720b062C192a5bacEC64d5bB08DA\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0xd54165e45926720b062C192a5bacEC64d5bB08DA\",\n\t\t[Chains.BASE_MAINNET]: \"0xd54165e45926720b062C192a5bacEC64d5bB08DA\"\n\t},\n\tHost: {\n\t\t[Chains.BSC_CHAPEL]: \"0x8Aa0Dea6D675d785A882967Bf38183f6117C09b7\",\n\t\t[Chains.GNOSIS_CHIADO]: \"0x58a41b89f4871725e5d898d98ef4bf917601c5eb\",\n\t\t[Chains.SEPOLIA]: \"0x2EdB74C269948b60ec1000040E104cef0eABaae8\",\n\t\t[Chains.MAINNET]: \"0x792A6236AF69787C40cF76b69B4c8c7B28c4cA20\",\n\t\t[Chains.BSC_MAINNET]: \"0x24B5d421Ec373FcA57325dd2F0C074009Af021F7\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0xE05AFD4Eb2ce6d65c40e1048381BD0Ef8b4B299e\",\n\t\t[Chains.BASE_MAINNET]: \"0x6FFe92e4d7a9D589549644544780e6725E84b248\"\n\t},\n\tUniswapRouter02: {\n\t\t[Chains.BSC_CHAPEL]: \"0x9639379819420704457B07A0C33B678D9E0F8Df0\",\n\t\t[Chains.GNOSIS_CHIADO]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.SEPOLIA]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\n\t\t[Chains.BSC_MAINNET]: \"0x10ED43C718714eb63d5aA57B78B54704E256024E\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24\",\n\t\t[Chains.BASE_MAINNET]: \"0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24\"\n\t},\n\tUniswapV2Factory: {\n\t\t[Chains.BSC_CHAPEL]: \"0x12e036669DA18F4A2777853d6e2136b32AceEC86\",\n\t\t[Chains.GNOSIS_CHIADO]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.SEPOLIA]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\",\n\t\t[Chains.BSC_MAINNET]: \"0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9\",\n\t\t[Chains.BASE_MAINNET]: \"0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6\"\n\t},\n\tBatchExecutor: {\n\t\t[Chains.BSC_CHAPEL]: \"0x4CC58B5D8FBf838d062E4b21F75C327835B5F0ef\",\n\t\t[Chains.MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniversalRouter: {\n\t\t[Chains.BSC_CHAPEL]: \"0xcc6d5ece3d4a57245bf5a2f64f3ed9179b81f714\",\n\t\t[Chains.MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniswapV3Router: {\n\t\t[Chains.BSC_CHAPEL]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniswapV3Factory: {\n\t\t[Chains.BSC_CHAPEL]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniswapV3Quoter: {\n\t\t[Chains.BSC_CHAPEL]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x61fFE014bA17989E743c5F6cB21bF9697530B21e\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniswapV4PoolManager: {\n\t\t[Chains.BSC_CHAPEL]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniswapV4Quoter: {\n\t\t[Chains.BSC_CHAPEL]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tCalldispatcher: {\n\t\t[Chains.SEPOLIA]: \"0xC7f13b6D03A0A7F3239d38897503E90553ABe155\"\n\t}\n}\n\nexport const createRpcUrls = (env: NodeJS.ProcessEnv): RpcMap => ({\n\t[Chains.BSC_CHAPEL]: env.BSC_CHAPEL || \"https://bnb-testnet.api.onfinality.io/public\",\n\t[Chains.GNOSIS_CHIADO]: env.GNOSIS_CHIADO || \"https://gnosis-chiado-rpc.publicnode.com\",\n\t[Chains.HYPERBRIDGE_GARGANTUA]: env.HYPERBRIDGE_GARGANTUA || \"\",\n\t[Chains.SEPOLIA]: env.SEPOLIA || \"https://1rpc.io/sepolia\",\n\t[Chains.MAINNET]: env.ETH_MAINNET || \"https://eth-mainnet.g.alchemy.com/v2/demo\",\n\t[Chains.BSC_MAINNET]: env.BSC_MAINNET || \"https://binance.llamarpc.com\",\n\t[Chains.ARBITRUM_MAINNET]: env.ARBITRUM_MAINNET || \"https://arbitrum-one.public.blastapi.io\",\n\t[Chains.BASE_MAINNET]: env.BASE_MAINNET || \"https://base-mainnet.public.blastapi.io\"\n})\n\nexport const consensusStateIds = {\n\t[Chains.BSC_CHAPEL]: \"BSC0\",\n\t[Chains.GNOSIS_CHIADO]: \"GNO0\",\n\t[Chains.HYPERBRIDGE_GARGANTUA]: \"PAS0\",\n\t[Chains.SEPOLIA]: \"ETH0\",\n\t[Chains.MAINNET]: \"ETH0\",\n\t[Chains.BSC_MAINNET]: \"BSC0\",\n\t[Chains.ARBITRUM_MAINNET]: \"ETH0\",\n\t[Chains.BASE_MAINNET]: \"ETH0\"\n}\n\nexport const coingeckoIds = {\n\t[Chains.BSC_CHAPEL]: \"binance-smart-chain\",\n\t[Chains.GNOSIS_CHIADO]: \"gnosis\",\n\t[Chains.HYPERBRIDGE_GARGANTUA]: \"hyperbridge\",\n\t[Chains.SEPOLIA]: \"ethereum\",\n\t[Chains.MAINNET]: \"ethereum\",\n\t[Chains.BSC_MAINNET]: \"binance-smart-chain\",\n\t[Chains.ARBITRUM_MAINNET]: \"arbitrum-one\",\n\t[Chains.BASE_MAINNET]: \"base\"\n}\n","import { toHex } from \"viem\"\nimport type { ChainConfig, HexString } from \"@/types\"\nimport {\n\taddresses,\n\tassets,\n\tchainIds,\n\tconsensusStateIds,\n\tcoingeckoIds,\n\tChains,\n\tWrappedNativeDecimals,\n\tcreateRpcUrls,\n} from \"@/configs/chain\"\n\nexport class ChainConfigService {\n\tprivate rpcUrls: Record<Chains, string>\n\n\tconstructor(env: NodeJS.ProcessEnv = process.env) {\n\t\tthis.rpcUrls = createRpcUrls(env)\n\t}\n\n\tgetChainConfig(chain: string): ChainConfig {\n\t\treturn {\n\t\t\tchainId: chainIds[chain as keyof typeof chainIds],\n\t\t\trpcUrl: this.rpcUrls[chain as Chains],\n\t\t\tintentGatewayAddress: addresses.IntentGateway[chain as keyof typeof addresses.IntentGateway]!,\n\t\t}\n\t}\n\n\tgetIntentGatewayAddress(chain: string): `0x${string}` {\n\t\treturn addresses.IntentGateway[chain as keyof typeof addresses.IntentGateway]! as `0x${string}`\n\t}\n\n\tgetHostAddress(chain: string): `0x${string}` {\n\t\treturn addresses.Host[chain as keyof typeof addresses.Host]! as `0x${string}`\n\t}\n\n\tgetWrappedNativeAssetWithDecimals(chain: string): { asset: HexString; decimals: number } {\n\t\treturn {\n\t\t\tasset: assets[chain as keyof typeof assets].WETH as HexString,\n\t\t\tdecimals: WrappedNativeDecimals[chain as keyof typeof WrappedNativeDecimals],\n\t\t}\n\t}\n\n\tgetDaiAsset(chain: string): HexString {\n\t\treturn assets[chain as keyof typeof assets].DAI as HexString\n\t}\n\n\tgetUsdtAsset(chain: string): HexString {\n\t\treturn assets[chain as keyof typeof assets].USDT as HexString\n\t}\n\n\tgetUsdcAsset(chain: string): HexString {\n\t\treturn assets[chain as keyof typeof assets].USDC as HexString\n\t}\n\n\tgetChainId(chain: string): number {\n\t\treturn chainIds[chain as keyof typeof chainIds]\n\t}\n\n\tgetConsensusStateId(chain: string): HexString {\n\t\treturn toHex(consensusStateIds[chain as keyof typeof consensusStateIds])\n\t}\n\n\tgetHyperbridgeChainId(): number {\n\t\treturn chainIds[Chains.HYPERBRIDGE_GARGANTUA]\n\t}\n\n\tgetRpcUrl(chain: string): string {\n\t\treturn this.rpcUrls[chain as Chains]\n\t}\n\n\tgetUniswapRouterV2Address(chain: string): HexString {\n\t\treturn addresses.UniswapRouter02[chain as keyof typeof addresses.UniswapRouter02]! as HexString\n\t}\n\n\tgetUniswapV2FactoryAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV2Factory[chain as keyof typeof addresses.UniswapV2Factory]! as HexString\n\t}\n\n\tgetBatchExecutorAddress(chain: string): HexString {\n\t\treturn addresses.BatchExecutor[chain as keyof typeof addresses.BatchExecutor]! as HexString\n\t}\n\n\tgetUniversalRouterAddress(chain: string): HexString {\n\t\treturn addresses.UniversalRouter[chain as keyof typeof addresses.UniversalRouter]! as HexString\n\t}\n\n\tgetUniswapV3RouterAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV3Router[chain as keyof typeof addresses.UniswapV3Router]! as HexString\n\t}\n\n\tgetUniswapV3FactoryAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV3Factory[chain as keyof typeof addresses.UniswapV3Factory]! as HexString\n\t}\n\n\tgetUniswapV3QuoterAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV3Quoter[chain as keyof typeof addresses.UniswapV3Quoter]! as HexString\n\t}\n\n\tgetUniswapV4PoolManagerAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV4PoolManager[chain as keyof typeof addresses.UniswapV4PoolManager]! as HexString\n\t}\n\n\tgetUniswapV4QuoterAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV4Quoter[chain as keyof typeof addresses.UniswapV4Quoter]! as HexString\n\t}\n\n\tgetCoingeckoId(chain: string): string | undefined {\n\t\treturn coingeckoIds[chain as keyof typeof coingeckoIds]\n\t}\n}\n","import { hexToBytes } from \"viem\"\nimport { env, hasWindow, isNode } from \"std-env\"\nimport { postRequestCommitment } from \"@/utils\"\nimport type { HexString, IPostRequest } from \"@/types\"\n\n/**\n * Gets peak position for a given height\n */\nfunction getPeakPosByHeight(height: number): bigint {\n\treturn (1n << BigInt(height + 1)) - 2n\n}\n\n/**\n * Gets the height and position of the leftmost peak\n */\nfunction leftPeakHeightPos(mmrSize: bigint): [number, bigint] {\n\tlet height = 1\n\tlet prevPos = 0n\n\tlet pos = getPeakPosByHeight(height)\n\n\twhile (pos < mmrSize) {\n\t\theight += 1\n\t\tprevPos = pos\n\t\tpos = getPeakPosByHeight(height)\n\t}\n\n\treturn [height - 1, prevPos]\n}\n\n/**\n * Gets the right peak at a given height and position\n */\nfunction getRightPeak(initialHeight: number, initialPos: bigint, mmrSize: bigint): [number, bigint] | null {\n\tlet height = initialHeight\n\tlet pos = initialPos\n\n\t// move to right sibling pos\n\tpos += siblingOffset(height)\n\n\t// loop until we find a pos in mmr\n\twhile (pos > mmrSize - 1n) {\n\t\tif (height === 0) {\n\t\t\treturn null\n\t\t}\n\t\t// move to left child\n\t\tpos -= parentOffset(height - 1)\n\t\theight -= 1\n\t}\n\n\treturn [height, pos]\n}\n\n/**\n * Gets all peaks in the MMR\n */\nfunction getPeaks(mmrSize: bigint): bigint[] {\n\tconst positions: bigint[] = []\n\tlet [height, pos] = leftPeakHeightPos(mmrSize)\n\n\tpositions.push(pos)\n\n\twhile (height > 0) {\n\t\tconst peak = getRightPeak(height, pos, mmrSize)\n\t\tif (!peak) break\n\t\t;[height, pos] = peak\n\t\tpositions.push(pos)\n\t}\n\n\treturn positions\n}\n\n/**\n * Checks if a number consists of all ones in its binary representation\n */\nfunction allOnes(num: bigint): boolean {\n\tif (num === 0n) return false\n\treturn num\n\t\t.toString(2)\n\t\t.split(\"\")\n\t\t.every((bit) => bit === \"1\")\n}\n\n/**\n * Calculates the position after jumping left in the tree\n */\nfunction jumpLeft(pos: bigint): bigint {\n\tconst bitLength = pos.toString(2).length\n\tconst mostSignificantBits = 1n << BigInt(bitLength - 1)\n\treturn pos - (mostSignificantBits - 1n)\n}\n\n/**\n * Calculates the height of a position in the tree\n */\nfunction posHeightInTree(initialPos: bigint): number {\n\tlet pos = initialPos + 1n\n\n\twhile (!allOnes(pos)) {\n\t\tpos = jumpLeft(pos)\n\t}\n\n\treturn pos.toString(2).length - 1\n}\n\n/**\n * Calculates the parent offset for a given height\n */\nfunction parentOffset(height: number): bigint {\n\treturn 2n << BigInt(height)\n}\n\n/**\n * Calculates the sibling offset for a given height\n */\nfunction siblingOffset(height: number): bigint {\n\treturn (2n << BigInt(height)) - 1n\n}\n\n/**\n * Takes elements from a vector while they satisfy a predicate\n */\nfunction takeWhileVec<T>(v: T[], p: (item: T) => boolean): T[] {\n\tconst index = v.findIndex((item) => !p(item))\n\tif (index === -1) {\n\t\tconst result = [...v]\n\t\tv.length = 0\n\t\treturn result\n\t}\n\treturn v.splice(0, index)\n}\n\n/**\n * Converts a node's MMR position to its k-index\n * @param leaves - Array of leaf positions\n * @param mmrSize - Size of the MMR\n * @returns Array of tuples containing position and k-index\n */\nexport function mmrPositionToKIndex(initialLeaves: bigint[], mmrSize: bigint): Array<[bigint, bigint]> {\n\tconst leaves = [...initialLeaves]\n\tconst peaks = getPeaks(mmrSize)\n\tconst leavesWithKIndices: Array<[bigint, bigint]> = []\n\n\tfor (const peak of peaks) {\n\t\tconst peakLeaves = takeWhileVec(leaves, (pos) => pos <= peak)\n\n\t\tif (peakLeaves.length > 0) {\n\t\t\tfor (const pos of peakLeaves) {\n\t\t\t\tconst height = posHeightInTree(peak)\n\t\t\t\tlet index = 0n\n\t\t\t\tlet parentPos = peak\n\n\t\t\t\tfor (let h = height; h >= 1; h--) {\n\t\t\t\t\tconst leftChild = parentPos - parentOffset(h - 1)\n\t\t\t\t\tconst rightChild = leftChild + siblingOffset(h - 1)\n\t\t\t\t\tindex *= 2n\n\n\t\t\t\t\tif (leftChild >= pos) {\n\t\t\t\t\t\tparentPos = leftChild\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparentPos = rightChild\n\t\t\t\t\t\tindex += 1n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tleavesWithKIndices.push([pos, index])\n\t\t\t}\n\t\t}\n\t}\n\n\treturn leavesWithKIndices\n}\n\n/**\n * Calculate the total size of MMR (number of nodes) from the number of leaves.\n * @param numberOfLeaves - The number of leaves in the MMR\n * @returns The total size of the MMR (total number of nodes)\n */\nexport function calculateMMRSize(numberOfLeaves: bigint): bigint {\n\tconst numberOfPeaks = numberOfLeaves.toString(2).split(\"1\").length - 1\n\treturn 2n * numberOfLeaves - BigInt(numberOfPeaks)\n}\n\n/**\n * Generates a Merkle Mountain Range (MMR) root hash and proof for a post request.\n *\n * This function takes a post request and tree size, encodes it according to the PostRequest format,\n * and generates both the MMR root hash and a proof. The function builds an MMR with `treeSize` leaves,\n * where most leaves are variations of the encoded request (XORed with their index), except for the\n * last leaf, which is the unmodified request. The proof is generated for this unmodified leaf.\n *\n * @param postRequest - The post request to generate the MMR root and proof for\n * @param treeSize - Controls how many leaves will be added to the MMR (exactly `treeSize` leaves)\n * @returns An object containing:\n * - root: The MMR root hash as a hex string\n * - proof: An array of hex strings representing the MMR proof for the unmodified request\n * - index: The index of the unmodified request in the MMR\n * - kIndex: The k-index of the unmodified request in the MMR\n * - treeSize: The number of leaves in the MMR\n * - mmrSize: The size of the MMR in nodes\n */\nexport async function generateRootWithProof(\n\tpostRequest: IPostRequest,\n\ttreeSize: bigint,\n): Promise<{ root: HexString; proof: HexString[]; index: bigint; kIndex: bigint; treeSize: bigint; mmrSize: bigint }> {\n\tconst { generate_root_with_proof } = await load_ckb_mmr()\n\tconst { commitment: hash, encodePacked } = postRequestCommitment(postRequest)\n\n\tconst result = JSON.parse(generate_root_with_proof(hexToBytes(encodePacked), treeSize))\n\tconst { root, proof, mmr_size, leaf_positions, keccak_hash_calldata } = result\n\n\tif (keccak_hash_calldata !== hash) {\n\t\tconsole.log(\"keccak_hash\", keccak_hash_calldata)\n\t\tconsole.log(\"hash\", hash)\n\t\tthrow new Error(\"Abi keccak hash mismatch\")\n\t}\n\n\tconst [[, kIndex]] = mmrPositionToKIndex(leaf_positions, BigInt(mmr_size))\n\n\treturn {\n\t\troot: root as HexString,\n\t\tproof: proof as HexString[],\n\t\tindex: treeSize - 1n,\n\t\tkIndex,\n\t\ttreeSize,\n\t\tmmrSize: mmr_size,\n\t}\n}\n\nasync function load_ckb_mmr() {\n\tif (hasWindow) {\n\t\tconst wasm = await import(\"@/ckb-utils/web\")\n\t\tawait wasm.default()\n\n\t\treturn wasm\n\t}\n\n\tif (isNode) {\n\t\tconst wasm = await import(\"@/ckb-utils/node\")\n\t\treturn wasm\n\t}\n\n\tthrow new Error(`SDK not setup for ${env}`)\n}\n\nexport async function __test() {\n\tconst { generate_root_with_proof } = await load_ckb_mmr()\n\n\treturn generate_root_with_proof(new Uint8Array(), 120n)\n}\n","import { Struct, Vector, u8, u64, Tuple, Enum, _void, u32, Option } from \"scale-ts\"\n\nexport type IStateMachine =\n\t| {\n\t\t\ttag: \"Evm\"\n\t\t\tvalue: number\n\t }\n\t| {\n\t\t\ttag: \"Polkadot\"\n\t\t\tvalue: number\n\t }\n\t| {\n\t\t\ttag: \"Kusama\"\n\t\t\tvalue: number\n\t }\n\t| {\n\t\t\ttag: \"Substrate\"\n\t\t\tvalue: number[]\n\t }\n\t| {\n\t\t\ttag: \"Tendermint\"\n\t\t\tvalue: number[]\n\t }\n\nexport const H256 = Vector(u8, 32)\n\nexport const EvmStateProof = Struct({\n\t/**\n\t * Proof of the contract state.\n\t */\n\tcontractProof: Vector(Vector(u8)),\n\t/**\n\t * Proof of the storage state.\n\t */\n\tstorageProof: Vector(Tuple(Vector(u8), Vector(Vector(u8)))),\n})\n\nexport const SubstrateHashing = Enum({\n\t/* For chains that use keccak as their hashing algo */\n\tKeccak: _void,\n\t/* For chains that use blake2b as their hashing algo */\n\tBlake2: _void,\n})\n\nexport const SubstrateStateMachineProof = Struct({\n\t/**\n\t * The hasher used to hash the state machine state.\n\t */\n\thasher: SubstrateHashing,\n\t/**\n\t * Proof of the state machine state.\n\t */\n\tstorageProof: Vector(Vector(u8)),\n})\n\nexport const SubstrateStateProof = Enum({\n\t/*\n\t * Uses overlay root for verification\n\t */\n\tOverlayProof: SubstrateStateMachineProof,\n\t/*\n\t * Uses state root for verification\n\t */\n\tStateProof: SubstrateStateMachineProof,\n})\n\nexport const BasicProof = Vector(Vector(u8))\n\nexport const LeafIndexAndPos = Struct({\n\t/*\n\t * Leaf index\n\t */\n\tleafIndex: u64,\n\t/*\n\t * Leaf position in the MMR\n\t */\n\tpos: u64,\n})\n\nexport const MmrProof = Struct({\n\t/*\n\t * Proof of the leaf index and position.\n\t */\n\tleafIndexAndPos: Vector(LeafIndexAndPos),\n\t/*\n\t * Proof of the leaf data.\n\t */\n\tleafCount: u64,\n\t/*\n\t * Proof elements (hashes of siblings of inner nodes on the path to the leaf).\n\t */\n\titems: Vector(H256),\n})\n\nexport const ConsensusStateId = Vector(u8, 4)\n\nexport const ConsensusMessage = Struct({\n\t/*\n\t * Consensus message data.\n\t */\n\tconsensusProof: Vector(u8),\n\t/*\n\t * Consensus state Id\n\t */\n\tconsensusStateId: ConsensusStateId,\n\t/*\n\t * Public key of the sender\n\t */\n\tsigner: Vector(u8),\n})\n\nexport const FraudProofMessage = Struct({\n\t/*\n\t * The first valid consensus proof\n\t */\n\tproof1: Vector(u8),\n\t/*\n\t * The second valid consensus proof\n\t */\n\tproof2: Vector(u8),\n\t/*\n\t * Consensus state Id\n\t */\n\tconsensusStateId: ConsensusStateId,\n})\n\nexport const StateMachine = Enum({\n\t/*\n\t * Evm state machines\n\t */\n\tEvm: u32,\n\t/*\n\t * Polkadot parachains\n\t */\n\tPolkadot: u32,\n\t/*\n\t * Kusama parachains\n\t */\n\tKusama: u32,\n\t/*\n\t * Substrate-based standalone chain\n\t */\n\tSubstrate: ConsensusStateId,\n\t/*\n\t * Tendermint chains\n\t */\n\tTendermint: ConsensusStateId,\n})\n\nexport const StateMachineId = Struct({\n\t/*\n\t * The state machine id\n\t */\n\tid: StateMachine,\n\t/*\n\t * The consensus state id\n\t */\n\tconsensusStateId: ConsensusStateId,\n})\n\nexport const StateMachineHeight = Struct({\n\t/*\n\t * The state machine id\n\t */\n\tid: StateMachineId,\n\t/*\n\t * The height of the state machine\n\t */\n\theight: u64,\n})\n\nexport const Proof = Struct({\n\t/*\n\t * The height of the state machine\n\t */\n\theight: StateMachineHeight,\n\t/*\n\t * The proof\n\t */\n\tproof: Vector(u8),\n})\n\nexport const PostRequest = Struct({\n\t/*\n\t * The source state machine of this request.\n\t */\n\tsource: StateMachine,\n\t/*\n\t * The destination state machine of this request.\n\t */\n\tdest: StateMachine,\n\t/*\n\t * The nonce of this request on the source chain\n\t */\n\tnonce: u64,\n\t/*\n\t * Module identifier of the sending module\n\t */\n\tfrom: Vector(u8),\n\t/*\n\t * Module identifier of the receiving module\n\t */\n\tto: Vector(u8),\n\t/*\n\t * Timestamp which this request expires in seconds.\n\t */\n\ttimeoutTimestamp: u64,\n\t/*\n\t * Encoded request body\n\t */\n\tbody: Vector(u8),\n})\n\nexport const PostResponse = Struct({\n\t/*\n\t * The request that triggered this response.\n\t */\n\tpost: PostRequest,\n\t/*\n\t * The response message.\n\t */\n\tresponse: Vector(u8),\n\t/*\n\t * Timestamp at which this response expires in seconds.\n\t */\n\ttimeoutTimestamp: u64,\n})\n\nexport const GetRequest = Struct({\n\t/*\n\t * The source state machine of this request.\n\t */\n\tsource: StateMachine,\n\t/*\n\t * The destination state machine of this request.\n\t */\n\tdest: StateMachine,\n\t/*\n\t * The nonce of this request on the source chain\n\t */\n\tnonce: u64,\n\t/*\n\t * Module identifier of the sending module\n\t */\n\tfrom: Vector(u8),\n\t/*\n\t * Raw Storage keys that would be used to fetch the values from the counterparty\n\t * For deriving storage keys for ink contract fields follow the guide in the link below\n\t * `<https://use.ink/datastructures/storage-in-metadata#a-full-example>`\n\t * Substrate Keys\n\t */\n\tkeys: Vector(Vector(u8)),\n\t/*\n\t * The height of the state machine\n\t */\n\theight: u64,\n\t/*\n\t * Some application-specific metadata relating to this request\n\t */\n\tcontext: Vector(u8),\n\t/*\n\t * Host timestamp at which this request expires in seconds\n\t */\n\ttimeoutTimestamp: u64,\n})\n\nexport const StorageValue = Struct({\n\t/*\n\t * The request storage keys\n\t */\n\tkey: Vector(u8),\n\t/*\n\t * The verified value\n\t */\n\tvalue: Option(Vector(u8)),\n})\n\nexport const GetResponse = Struct({\n\t/*\n\t * The Get request that triggered this response.\n\t */\n\tget: GetRequest,\n\t/*\n\t * Values derived from the state proof\n\t */\n\tvalues: Vector(StorageValue),\n})\n\nexport const Request = Enum({\n\t/*\n\t * A post request allows a module on a state machine to send arbitrary bytes to another module\n\t * living in another state machine.\n\t */\n\tPost: PostRequest,\n\t/*\n\t * A get request allows a module on a state machine to read the storage of another module\n\t * living in another state machine.\n\t */\n\tGet: GetRequest,\n})\n\nexport const Response = Enum({\n\t/*\n\t * The response to a POST request\n\t */\n\tPost: PostResponse,\n\t/*\n\t * The response to a GET request\n\t */\n\tGet: GetResponse,\n})\n\nexport const RequestMessage = Struct({\n\t/*\n\t * Requests from source chain\n\t */\n\trequests: Vector(PostRequest),\n\t/*\n\t * Membership batch proof for these requests\n\t */\n\tproof: Proof,\n\t/*\n\t * Signer information. Ideally should be their account identifier\n\t */\n\tsigner: Vector(u8),\n})\n\nexport const RequestResponse = Enum({\n\t/*\n\t * A set of requests\n\t */\n\tRequest: Vector(Request),\n\t/*\n\t * A set of responses\n\t */\n\tResponse: Vector(Response),\n})\n\nexport const ResponseMessage = Struct({\n\t/*\n\t * A set of either POST requests or responses to be handled\n\t */\n\tdatagram: Vector(RequestResponse),\n\t/*\n\t * Membership batch proof for these requests/responses\n\t */\n\tproof: Proof,\n\t/*\n\t * Signer information. Ideally should be their account identifier\n\t */\n\tsigner: Vector(u8),\n})\n\nexport const TimeoutMessage = Enum({\n\t/*\n\t * A non memership proof for POST requests\n\t */\n\tPost: Struct({\n\t\t/*\n\t\t * Timed out requests\n\t\t */\n\t\trequests: Vector(Request),\n\t\t/*\n\t\t * Membership batch proof for these requests\n\t\t */\n\t\tproof: Proof,\n\t}),\n\t/*\n\t * A non memership proof for POST responses\n\t */\n\tPostResponse: Struct({\n\t\t/*\n\t\t * Timed out responses\n\t\t */\n\t\tresponses: Vector(Response),\n\t\t/*\n\t\t * Membership batch proof for these responses\n\t\t */\n\t\tproof: Proof,\n\t}),\n\t/*\n\t * There are no proofs for Get timeouts\n\t */\n\tGet: Struct({\n\t\t/*\n\t\t * Timed out requests\n\t\t */\n\t\trequests: Vector(Request),\n\t}),\n})\n\nexport const GetRequestsWithProof = Struct({\n\t/*\n\t * Requests to be fetched\n\t */\n\trequests: Vector(GetRequest),\n\n\t/*\n\t * Membership batch proof for these requests\n\t */\n\tsource: Proof,\n\n\t/*\n\t * Storage proof for these responses\n\t */\n\tresponse: Proof,\n\n\t/*\n\t * Signer information. Ideally should be their account identifier\n\t */\n\tsigner: Vector(u8),\n})\n\nexport const Message = Enum({\n\t/*\n\t * A consensus update message\n\t */\n\tConsensusMessage: ConsensusMessage,\n\t/*\n\t * A fraud proof message\n\t */\n\tFraudProofMessage: FraudProofMessage,\n\t/*\n\t * A request message\n\t */\n\tRequestMessage: RequestMessage,\n\t/*\n\t * A response message\n\t */\n\tResponseMessage: ResponseMessage,\n\t/*\n\t * A request timeout message\n\t */\n\tTimeoutMessage: TimeoutMessage,\n})\n","import {\n\ttype HexString,\n\ttype IGetRequest,\n\ttype IPostRequest,\n\tRequestKind,\n\tRequestStatus,\n\ttype StateMachineHeight,\n\tTimeoutStatus,\n} from \"@/types\"\nimport type { EstimateGasCallData, Order, RequestStatusKey, RetryConfig, TimeoutStatusKey } from \"@/types\"\nimport { LogLevels, createConsola } from \"consola\"\nimport {\n\ttype CallParameters,\n\ttype PublicClient,\n\tbytesToHex,\n\tconcatHex,\n\tencodeAbiParameters,\n\tencodePacked,\n\thexToBytes,\n\tkeccak256,\n\ttoHex,\n} from \"viem\"\nimport evmHost from \"./abis/evmHost\"\nimport handler from \"./abis/handler\"\nimport { type IChain, getStateCommitmentFieldSlot } from \"./chain\"\nimport { _queryRequestInternal } from \"./query-client\"\nimport { generateRootWithProof } from \"./utils\"\nimport { ChainConfigService } from \"./configs/ChainConfigService\"\n\nexport * from \"./utils/mmr\"\nexport * from \"./utils/substrate\"\n\nexport const DEFAULT_POLL_INTERVAL = 5_000\nexport const ADDRESS_ZERO = \"0x0000000000000000000000000000000000000000\" as HexString\nexport const MOCK_ADDRESS = \"0x1234567890123456789012345678901234567890\" as HexString\nexport const DUMMY_PRIVATE_KEY = \"0x0000000000000000000000000000000000000000000000000000000000000000\" as HexString\nexport const DEFAULT_GRAFFITI = \"0x0000000000000000000000000000000000000000000000000000000000000000\" as HexString\n\n/**\n * Sleeps for the specified number of milliseconds.\n * @param ms The number of milliseconds to sleep.\n */\nexport function sleep(ms?: number): Promise<void> {\n\treturn new Promise((resolve) => setTimeout(resolve, ms || DEFAULT_POLL_INTERVAL))\n}\n\n/**\n * Waits for the challenge period to elapse on a chain.\n * This function will sleep until the challenge period has elapsed.\n *\n * @param chain The chain object implementing IChain interface\n * @param stateMachineHeight The state machine height to wait for\n * @returns Promise that resolves when the challenge period has elapsed\n */\nexport async function waitForChallengePeriod(chain: IChain, stateMachineHeight: StateMachineHeight): Promise<void> {\n\t// Get the challenge period for this state machine\n\tconst challengePeriod = await chain.challengePeriod(stateMachineHeight.id)\n\n\tif (challengePeriod === BigInt(0)) return\n\n\t// Get the state machine update time\n\tconst updateTime = await chain.stateMachineUpdateTime(stateMachineHeight)\n\t// Check current timestamp\n\tlet currentTimestamp = await chain.timestamp()\n\t// Calculate time passed since update\n\tlet timeElapsed = currentTimestamp - updateTime\n\n\tif (timeElapsed > challengePeriod) return\n\n\t// First sleep for the whole challenge period\n\tawait sleep(Number(challengePeriod) * 1000)\n\n\t// Keep sleeping until challenge period has fully elapsed\n\twhile (timeElapsed <= challengePeriod) {\n\t\t// Sleep for remaining time\n\t\tconst remainingTime = challengePeriod - timeElapsed\n\t\tawait sleep(Number(remainingTime) * 1000)\n\n\t\t// Check timestamp again\n\t\tcurrentTimestamp = await chain.timestamp()\n\t\ttimeElapsed = currentTimestamp - updateTime\n\t}\n}\n\n/**\n * Checks if the given state machine ID represents an EVM chain.\n * @param stateMachineId The state machine ID to check.\n */\nexport function isEvmChain(stateMachineId: string): boolean {\n\treturn stateMachineId.startsWith(\"EVM\")\n}\n\n/**\n * Checks if the given state machine ID represents a Substrate chain.\n * @param stateMachineId The state machine ID to check.\n */\nexport function isSubstrateChain(stateMachineId: string): boolean {\n\treturn (\n\t\tstateMachineId.startsWith(\"POLKADOT\") ||\n\t\tstateMachineId.startsWith(\"KUSAMA\") ||\n\t\tstateMachineId.startsWith(\"SUBSTRATE\")\n\t)\n}\n\n/**\n * Converts a state machine ID string to a stateId object.\n * Handles formats like:\n * - \"EVM-97\" → { Evm: 97 }\n * - \"SUBSTRATE-cere\" → { Substrate: \"0x63657265\" } (hex encoded UTF-8 bytes)\n * - \"POLKADOT-3367\" → { Polkadot: 3367 }\n * - \"KUSAMA-123\" → { Kusama: 123 }\n *\n * @param stateMachineId The state machine ID string\n * @returns A stateId object conforming to the StateMachineIdParams interface\n */\nexport function parseStateMachineId(stateMachineId: string): {\n\tstateId: { Evm?: number; Substrate?: HexString; Polkadot?: number; Kusama?: number }\n} {\n\tconst [type, value] = stateMachineId.split(\"-\")\n\n\tif (!type || !value) {\n\t\tthrow new Error(\n\t\t\t`Invalid state machine ID format: ${stateMachineId}. Expected format like \"EVM-97\" or \"SUBSTRATE-cere\"`,\n\t\t)\n\t}\n\n\tconst stateId: { Evm?: number; Substrate?: HexString; Polkadot?: number; Kusama?: number } = {}\n\n\tswitch (type.toUpperCase()) {\n\t\tcase \"EVM\": {\n\t\t\tconst evmChainId = Number.parseInt(value, 10)\n\t\t\tif (Number.isNaN(evmChainId)) {\n\t\t\t\tthrow new Error(`Invalid EVM chain ID: ${value}. Expected a number.`)\n\t\t\t}\n\t\t\tstateId.Evm = evmChainId\n\t\t\tbreak\n\t\t}\n\n\t\tcase \"SUBSTRATE\": {\n\t\t\t// Convert the string to hex-encoded UTF-8 bytes\n\t\t\tconst bytes = Buffer.from(value, \"utf8\")\n\t\t\tstateId.Substrate = `0x${bytes.toString(\"hex\")}` as HexString\n\t\t\tbreak\n\t\t}\n\n\t\tcase \"POLKADOT\": {\n\t\t\tconst polkadotChainId = Number.parseInt(value, 10)\n\t\t\tif (Number.isNaN(polkadotChainId)) {\n\t\t\t\tthrow new Error(`Invalid Polkadot chain ID: ${value}. Expected a number.`)\n\t\t\t}\n\t\t\tstateId.Polkadot = polkadotChainId\n\t\t\tbreak\n\t\t}\n\n\t\tcase \"KUSAMA\": {\n\t\t\tconst kusamaChainId = Number.parseInt(value, 10)\n\t\t\tif (Number.isNaN(kusamaChainId)) {\n\t\t\t\tthrow new Error(`Invalid Kusama chain ID: ${value}. Expected a number.`)\n\t\t\t}\n\t\t\tstateId.Kusama = kusamaChainId\n\t\t\tbreak\n\t\t}\n\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported chain type: ${type}. Expected one of: EVM, SUBSTRATE, POLKADOT, KUSAMA.`)\n\t}\n\n\treturn { stateId }\n}\n\n/**\n * Checks if the given string is a valid UTF-8 string.\n * @param str The string to check.\n */\nexport function isValidUTF8(str: string): boolean {\n\treturn Buffer.from(str).toString(\"utf8\") === str\n}\n\n/**\n * Calculates the commitment hash for a post request.\n * @param post The post request to calculate the commitment hash for.\n * @returns The commitment hash and the encode packed data.\n */\nexport function postRequestCommitment(post: IPostRequest): { commitment: HexString; encodePacked: HexString } {\n\tconst data = encodePacked(\n\t\t[\"bytes\", \"bytes\", \"uint64\", \"uint64\", \"bytes\", \"bytes\", \"bytes\"],\n\t\t[toHex(post.source), toHex(post.dest), post.nonce, post.timeoutTimestamp, post.from, post.to, post.body],\n\t)\n\n\treturn {\n\t\tcommitment: keccak256(data),\n\t\tencodePacked: data,\n\t}\n}\n\nexport function orderCommitment(order: Order): HexString {\n\tconst encodedOrder = encodeAbiParameters(\n\t\t[\n\t\t\t{\n\t\t\t\tname: \"order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"user\", type: \"bytes32\" },\n\t\t\t\t\t{ name: \"sourceChain\", type: \"bytes\" },\n\t\t\t\t\t{ name: \"destChain\", type: \"bytes\" },\n\t\t\t\t\t{ name: \"deadline\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"nonce\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"fees\", type: \"uint256\" },\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\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"token\", type: \"bytes32\" },\n\t\t\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\n\t\t\t\t\t\t\t{ name: \"beneficiary\", type: \"bytes32\" },\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\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"token\", type: \"bytes32\" },\n\t\t\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"callData\", type: \"bytes\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\t[\n\t\t\t{\n\t\t\t\tuser: order.user,\n\t\t\t\tsourceChain: order.sourceChain.startsWith(\"0x\")\n\t\t\t\t\t? (order.sourceChain as `0x${string}`)\n\t\t\t\t\t: toHex(order.sourceChain),\n\t\t\t\tdestChain: order.destChain.startsWith(\"0x\")\n\t\t\t\t\t? (order.destChain as `0x${string}`)\n\t\t\t\t\t: toHex(order.destChain),\n\t\t\t\tdeadline: order.deadline,\n\t\t\t\tnonce: order.nonce,\n\t\t\t\tfees: order.fees,\n\t\t\t\toutputs: order.outputs,\n\t\t\t\tinputs: order.inputs,\n\t\t\t\tcallData: order.callData,\n\t\t\t},\n\t\t],\n\t)\n\n\treturn keccak256(encodedOrder)\n}\n\n/**\n * Converts a bytes32 token address to bytes20 format\n * This removes the extra padded zeros from the address\n */\nexport function bytes32ToBytes20(bytes32Address: string): HexString {\n\tif (bytes32Address === ADDRESS_ZERO) {\n\t\treturn ADDRESS_ZERO\n\t}\n\n\tconst bytes = hexToBytes(bytes32Address as HexString)\n\tconst addressBytes = bytes.slice(12)\n\treturn bytesToHex(addressBytes) as HexString\n}\n\nexport function bytes20ToBytes32(bytes20Address: string): HexString {\n\treturn `0x${bytes20Address.slice(2).padStart(64, \"0\")}` as HexString\n}\n\nexport function hexToString(hex: string): string {\n\tconst hexWithoutPrefix = hex.startsWith(\"0x\") ? hex.slice(2) : hex\n\n\tconst bytes = new Uint8Array(hexWithoutPrefix.length / 2)\n\tfor (let i = 0; i < hexWithoutPrefix.length; i += 2) {\n\t\tbytes[i / 2] = Number.parseInt(hexWithoutPrefix.slice(i, i + 2), 16)\n\t}\n\n\treturn new TextDecoder().decode(bytes)\n}\n\nexport const DEFAULT_LOGGER = createConsola({\n\tlevel: LogLevels.silent,\n})\n\n/**\n * Retries a promise-returning operation with exponential backoff.\n * This function will attempt to execute the operation up to maxRetries times,\n * with an exponential backoff delay between attempts.\n *\n * @param operation The async operation to retry\n * @param retryConfig Configuration object containing retry parameters\n * @returns Promise that resolves with the operation result or rejects with the last error\n */\nexport async function retryPromise<T>(operation: () => Promise<T>, retryConfig: RetryConfig): Promise<T> {\n\tconst { logger = DEFAULT_LOGGER, logMessage = \"Retry operation failed\" } = retryConfig\n\n\tlet lastError: unknown\n\tfor (let i = 0; i < retryConfig.maxRetries; i++) {\n\t\ttry {\n\t\t\treturn await operation()\n\t\t} catch (error) {\n\t\t\tlogger.trace(`Retrying(${i}) > ${logMessage}`)\n\t\t\tlastError = error\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, retryConfig.backoffMs * 2 ** i))\n\t\t}\n\t}\n\n\tthrow lastError\n}\n\n/**\n * Calculates the commitment hash for a get request.\n * @param get The get request to calculate the commitment hash for.\n * @returns The commitment hash.\n */\nexport function getRequestCommitment(get: IGetRequest): HexString {\n\tconst keysEncoding = \"0x\".concat(get.keys.map((key) => key.slice(2)).join(\"\"))\n\treturn keccak256(\n\t\tencodePacked(\n\t\t\t[\"bytes\", \"bytes\", \"uint64\", \"uint64\", \"uint64\", \"bytes\", \"bytes\", \"bytes\"],\n\t\t\t[\n\t\t\t\ttoHex(get.source),\n\t\t\t\ttoHex(get.dest),\n\t\t\t\tget.nonce,\n\t\t\t\tget.height,\n\t\t\t\tget.timeoutTimestamp,\n\t\t\t\tget.from,\n\t\t\t\tkeysEncoding as HexString,\n\t\t\t\tget.context,\n\t\t\t],\n\t\t),\n\t)\n}\n\n/**\n ** Calculates the weight of a request status.\n * Used to determine the progression of a request through its lifecycle.\n * Higher weights represent more advanced states in the processing pipeline.\n * @returns A record mapping each RequestStatus to its corresponding weight value.\n */\nexport const REQUEST_STATUS_WEIGHTS: Record<RequestStatusKey, number> = {\n\t[RequestStatus.SOURCE]: 0,\n\t[RequestStatus.SOURCE_FINALIZED]: 1,\n\t[RequestStatus.HYPERBRIDGE_DELIVERED]: 2,\n\t[RequestStatus.HYPERBRIDGE_FINALIZED]: 3,\n\t[RequestStatus.DESTINATION]: 4,\n\t[RequestStatus.HYPERBRIDGE_TIMED_OUT]: 5,\n\t[RequestStatus.TIMED_OUT]: 6,\n}\n\n/**\n * Calculates the weight of a timeout status.\n * Used to determine the progression of a timeout through its lifecycle.\n * Higher weights represent more advanced states in the timeout processing.\n * @returns A record mapping each TimeoutStatus to its corresponding weight value.\n */\nexport const TIMEOUT_STATUS_WEIGHTS: Record<TimeoutStatusKey, number> = {\n\t[TimeoutStatus.PENDING_TIMEOUT]: 1,\n\t[TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT]: 2,\n\t[TimeoutStatus.HYPERBRIDGE_TIMED_OUT]: 3,\n\t[TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT]: 4,\n\t[TimeoutStatus.TIMED_OUT]: 5,\n}\n\n/**\n * Combines both request and timeout status weights into a single mapping.\n * This provides a comprehensive view of all possible states a request can be in,\n * with higher weights representing more advanced states in either the normal\n * processing pipeline or the timeout handling process.\n *\n * The weights follow this progression:\n * 0-4: Normal request processing (SOURCE to DESTINATION)\n * 5-9: Timeout handling progression (PENDING_TIMEOUT to TIMED_OUT)\n *\n * @returns A record mapping each RequestStatus and TimeoutStatus to its corresponding weight value.\n */\nexport const COMBINED_STATUS_WEIGHTS: Record<RequestStatusKey | TimeoutStatusKey, number> = {\n\t[RequestStatus.SOURCE]: 0,\n\t[RequestStatus.SOURCE_FINALIZED]: 1,\n\t[RequestStatus.HYPERBRIDGE_DELIVERED]: 2,\n\t[RequestStatus.HYPERBRIDGE_FINALIZED]: 3,\n\t[RequestStatus.DESTINATION]: 4,\n\t[TimeoutStatus.PENDING_TIMEOUT]: 5,\n\t[TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT]: 6,\n\t[TimeoutStatus.HYPERBRIDGE_TIMED_OUT]: 7,\n\t[TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT]: 8,\n\t[TimeoutStatus.TIMED_OUT]: 9,\n}\n\n/**\n * Estimates the gas required for a post request transaction on the source chain.\n * This function constructs a post request, generates mock proofs, and estimates\n * the gas cost for executing the transaction on the source chain.\n */\nexport async function estimateGasForPost(params: {\n\tpostRequest: IPostRequest\n\tsourceClient: PublicClient\n\thostLatestStateMachineHeight: bigint\n\thostAddress: HexString\n}): Promise<{ gas_fee: bigint; call_data: EstimateGasCallData }> {\n\tconst hostParams = await params.sourceClient.readContract({\n\t\taddress: params.hostAddress,\n\t\tabi: evmHost.ABI,\n\t\tfunctionName: \"hostParams\",\n\t})\n\n\tconst { root, proof, index, kIndex, treeSize } = await generateRootWithProof(params.postRequest, 2n ** 10n)\n\tconst latestStateMachineHeight = params.hostLatestStateMachineHeight\n\tconst overlayRootSlot = getStateCommitmentFieldSlot(\n\t\tBigInt(4009n), // Hyperbridge chain id\n\t\tlatestStateMachineHeight, // Hyperbridge chain height\n\t\t1, // For overlayRoot\n\t)\n\tconst postParams = {\n\t\theight: {\n\t\t\tstateMachineId: BigInt(4009n),\n\t\t\theight: latestStateMachineHeight,\n\t\t},\n\t\tmultiproof: proof,\n\t\tleafCount: treeSize,\n\t}\n\n\tconst call_data: EstimateGasCallData = [\n\t\tparams.hostAddress,\n\t\t{\n\t\t\tproof: postParams,\n\t\t\trequests: [\n\t\t\t\t{\n\t\t\t\t\trequest: {\n\t\t\t\t\t\t...params.postRequest,\n\t\t\t\t\t\tsource: toHex(params.postRequest.source),\n\t\t\t\t\t\tdest: toHex(params.postRequest.dest),\n\t\t\t\t\t},\n\t\t\t\t\tindex,\n\t\t\t\t\tkIndex,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t]\n\n\tconst gas_fee = await params.sourceClient.estimateContractGas({\n\t\taddress: hostParams.handler,\n\t\tabi: handler.ABI,\n\t\tfunctionName: \"handlePostRequests\",\n\t\targs: call_data,\n\t\tstateOverride: [\n\t\t\t{\n\t\t\t\taddress: params.hostAddress,\n\t\t\t\tstateDiff: [\n\t\t\t\t\t{\n\t\t\t\t\t\tslot: overlayRootSlot,\n\t\t\t\t\t\tvalue: root,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t})\n\n\treturn { gas_fee, call_data }\n}\n\n/**\n * Constructs the request body for a redeem escrow operation.\n * This function encodes the order commitment, beneficiary address, and token inputs\n * to match the format expected by the IntentGateway contract.\n */\nexport function constructRedeemEscrowRequestBody(order: Order, beneficiary: HexString): HexString {\n\tconst commitment = order.id as HexString\n\tconst inputs = order.inputs\n\n\t// RequestKind.RedeemEscrow is 0 as defined in the contract\n\tconst requestKind = encodePacked([\"uint8\"], [RequestKind.RedeemEscrow])\n\n\tconst requestBody = {\n\t\tcommitment: commitment as HexString,\n\t\tbeneficiary: bytes20ToBytes32(beneficiary),\n\t\ttokens: inputs,\n\t}\n\n\tconst encodedRequestBody = encodeAbiParameters(\n\t\t[\n\t\t\t{\n\t\t\t\tname: \"requestBody\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"commitment\", type: \"bytes32\" },\n\t\t\t\t\t{ name: \"beneficiary\", type: \"bytes32\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"tokens\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"token\", type: \"bytes32\" },\n\t\t\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\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\t[requestBody],\n\t)\n\n\treturn concatHex([requestKind, encodedRequestBody]) as HexString\n}\n\nexport const normalizeTimestamp = (timestamp: bigint): bigint => {\n\tif (timestamp.toString().length <= 11) {\n\t\treturn timestamp * 1000n\n\t}\n\treturn timestamp\n}\n\n/// Convert ensure a date string is in iso format before getting it's timestamp\nexport const dateStringtoTimestamp = (date: string): number => {\n\tif (!date.endsWith(\"Z\")) {\n\t\tdate = `${date}Z`\n\t}\n\treturn new Date(date).getTime()\n}\n\n/**\n * Maps testnet identifiers to mainnet identifiers for price lookup\n * @param identifier - The original token identifier (symbol or contract address)\n * @returns The mapped mainnet identifier\n */\nexport function mapTestnetToMainnet(identifier: string): string {\n\tidentifier = identifier.toLowerCase()\n\n\tswitch (identifier) {\n\t\tcase \"bnb\":\n\t\t\treturn \"wbnb\"\n\t\tcase \"eth\":\n\t\t\treturn \"weth\"\n\t\tcase \"tbnb\":\n\t\t\treturn \"wbnb\"\n\t\tcase \"0xc043f483373072f7f27420d6e7d7ad269c018e18\".toLowerCase():\n\t\t\treturn \"dai\"\n\t\tcase \"0xae13d989dac2f0debff460ac112a837c89baa7cd\".toLowerCase():\n\t\t\treturn \"wbnb\"\n\t\tcase \"0x1938165569A5463327fb206bE06d8D9253aa06b7\".toLowerCase():\n\t\t\treturn \"dai\"\n\t\tcase \"0xC625ec7D30A4b1AAEfb1304610CdAcD0d606aC92\".toLowerCase():\n\t\t\treturn \"dai\"\n\t\tcase \"0x50B1d3c7c073c9caa1Ef207365A2c9C976bD70b9\".toLowerCase():\n\t\t\treturn \"dai\"\n\t\tcase \"0xa801da100bf16d07f668f4a49e1f71fc54d05177\".toLowerCase():\n\t\t\treturn \"dai\"\n\t\tdefault:\n\t\t\treturn identifier\n\t}\n}\n\nexport async function fetchPrice(identifier: string, chainId: number = 1, apiKey?: string): Promise<number> {\n\tconst mappedIdentifier = mapTestnetToMainnet(identifier)\n\n\tconst network = new ChainConfigService().getCoingeckoId(`EVM-${chainId}`) || \"ethereum\"\n\n\tapiKey = apiKey || (typeof process !== \"undefined\" ? (process as any)?.env?.COINGECKO : undefined)\n\tconst baseUrl = apiKey ? \"https://pro-api.coingecko.com/api/v3\" : \"https://api.coingecko.com/api/v3\"\n\n\tconst url = mappedIdentifier.startsWith(\"0x\")\n\t\t? `${baseUrl}/simple/token_price/${network}?contract_addresses=${mappedIdentifier}&vs_currencies=usd`\n\t\t: `${baseUrl}/simple/price?ids=${mappedIdentifier}&vs_currencies=usd`\n\n\tconst headers = apiKey ? { \"x-cg-pro-api-key\": apiKey as string } : undefined\n\n\tconst response = await fetch(url, { headers })\n\n\tif (!response.ok) {\n\t\tthrow new Error(`CoinGecko API error: ${response.status} ${response.statusText}`)\n\t}\n\n\tconst data = await response.json()\n\tconst key = mappedIdentifier.toLowerCase()\n\n\tif (!data[key]?.usd) {\n\t\tthrow new Error(`Price not found for token: ${mappedIdentifier} on ${network}`)\n\t}\n\n\treturn data[key].usd\n}\n\n/**\n * ERC20 method signatures used for storage slot detection\n */\nexport enum ERC20Method {\n\t/** ERC20 balanceOf(address) method signature */\n\tBALANCE_OF = \"0x70a08231\",\n\t/** ERC20 allowance(address,address) method signature */\n\tALLOWANCE = \"0xdd62ed3e\",\n}\n\n/**\n * Retrieves the storage slot for a contract call using debug_traceCall\n *\n * This function uses the Ethereum debug API to trace contract execution and identify\n * the storage slot accessed during the call. It's commonly used for ERC20 token state\n * mappings like balanceOf and allowance, but can work with any contract call that\n * performs SLOAD operations.\n *\n * @param client - The viem PublicClient instance connected to an RPC node with debug API enabled\n * @param tokenAddress - The address of the contract to trace\n * @param data - The full encoded function call data (method signature + encoded parameters)\n * @returns The storage slot as a hex string\n * @throws Error if the storage slot cannot be found or if debug API is not available\n *\n * @example\n * ```ts\n * import { ERC20Method, bytes20ToBytes32 } from '@hyperbridge/sdk'\n *\n * // Get balance storage slot for ERC20\n * const balanceData = ERC20Method.BALANCE_OF + bytes20ToBytes32(userAddress).slice(2)\n * const balanceSlot = await getStorageSlot(\n * client,\n * tokenAddress,\n * balanceData as HexString\n * )\n *\n * // Get allowance storage slot for ERC20\n * const allowanceData = ERC20Method.ALLOWANCE +\n * bytes20ToBytes32(ownerAddress).slice(2) +\n * bytes20ToBytes32(spenderAddress).slice(2)\n * const allowanceSlot = await getStorageSlot(\n * client,\n * tokenAddress,\n * allowanceData as HexString\n * )\n * ```\n */\nexport async function getStorageSlot(\n\tclient: PublicClient,\n\tcontractAddress: HexString,\n\tdata: HexString,\n): Promise<string> {\n\tconst traceCallClient = client.extend((client) => ({\n\t\tasync traceCall(args: CallParameters) {\n\t\t\treturn client.request({\n\t\t\t\t// @ts-ignore\n\t\t\t\tmethod: \"debug_traceCall\",\n\t\t\t\t// @ts-ignore\n\t\t\t\tparams: [args, \"latest\", {}],\n\t\t\t})\n\t\t},\n\t}))\n\n\t// Make trace call\n\tconst response = await traceCallClient.traceCall({\n\t\tto: contractAddress,\n\t\tdata: data,\n\t})\n\tconst methodSignature = data.slice(0, 10) as HexString\n\n\t// @ts-ignore\n\tconst logs = response.structLogs\n\tfor (let i = logs.length - 1; i >= 0; i--) {\n\t\tconst log = logs[i]\n\t\tif (log.op === \"SLOAD\" && log.stack?.length >= 3) {\n\t\t\tconst sigHash = log.stack[0]\n\t\t\tconst slotHex = log.stack[log.stack.length - 1]\n\n\t\t\t// Extract method signature from data (first 4 bytes)\n\t\t\tif (sigHash === methodSignature && slotHex.length === 66) {\n\t\t\t\treturn slotHex\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow new Error(`Storage slot not found for data: ${methodSignature}`)\n}\n\n/**\n * Adjusts fee amounts between different decimal precisions.\n * Handles scaling up or down based on the decimal difference.\n *\n * @param feeInFeeToken - The fee amount to adjust\n * @param fromDecimals - The current decimal precision\n * @param toDecimals - The target decimal precision\n * @returns The adjusted fee amount with the target decimal precision\n */\nexport function adjustFeeDecimals(feeInFeeToken: bigint, fromDecimals: number, toDecimals: number): bigint {\n\tif (fromDecimals === toDecimals) return feeInFeeToken\n\tif (fromDecimals < toDecimals) {\n\t\tconst scaleFactor = BigInt(10 ** (toDecimals - fromDecimals))\n\t\treturn feeInFeeToken * scaleFactor\n\t} else {\n\t\tconst scaleFactor = BigInt(10 ** (fromDecimals - toDecimals))\n\t\treturn (feeInFeeToken + scaleFactor - 1n) / scaleFactor\n\t}\n}\n","export class AbortSignalInternal extends Error {\n\tconstructor(message: string) {\n\t\tsuper()\n\n\t\tthis.name = \"Hyperbridge/SDK/AbortSignalInternal\"\n\t\tthis.message = message\n\t}\n\n\tstatic isError(error: unknown): error is AbortSignalInternal {\n\t\treturn error instanceof AbortSignalInternal\n\t}\n}\n\nexport class ExpectedError extends Error {\n\tconstructor(message: string) {\n\t\tsuper()\n\n\t\tthis.name = \"Hyperbridge/SDK/ExpectedError\"\n\t\tthis.message = message\n\t}\n\n\tstatic isError(error: unknown): error is ExpectedError {\n\t\treturn error instanceof ExpectedError\n\t}\n}\n","import {\n\thttp,\n\ttype PublicClient,\n\tbytesToBigInt,\n\tbytesToHex,\n\tcreatePublicClient,\n\tencodeFunctionData,\n\terc20Abi,\n\thexToBytes,\n\tkeccak256,\n\tpad,\n\ttoBytes,\n\ttoHex,\n} from \"viem\"\nimport {\n\tarbitrum,\n\tarbitrumSepolia,\n\tbase,\n\tbaseSepolia,\n\tbsc,\n\tbscTestnet,\n\tgnosis,\n\tgnosisChiado,\n\tmainnet,\n\toptimism,\n\toptimismSepolia,\n\tsoneium,\n} from \"viem/chains\"\n\nimport { flatten, zip } from \"lodash-es\"\nimport { match } from \"ts-pattern\"\nimport type { GetProofParameters, Hex } from \"viem\"\n\nimport EvmHost from \"@/abis/evmHost\"\nimport evmHost from \"@/abis/evmHost\"\nimport HandlerV1 from \"@/abis/handler\"\nimport type { IChain, IIsmpMessage } from \"@/chain\"\nimport { ChainConfigService } from \"@/configs/ChainConfigService\"\nimport type { HexString, IMessage, IPostRequest, StateMachineHeight, StateMachineIdParams } from \"@/types\"\nimport {\n\tEvmStateProof,\n\tMmrProof,\n\tSubstrateStateProof,\n\tcalculateMMRSize,\n\tgenerateRootWithProof,\n\tmmrPositionToKIndex,\n} from \"@/utils\"\n\nconst chains = {\n\t[mainnet.id]: mainnet,\n\t[arbitrum.id]: arbitrum,\n\t[arbitrumSepolia.id]: arbitrumSepolia,\n\t[optimism.id]: optimism,\n\t[optimismSepolia.id]: optimismSepolia,\n\t[base.id]: base,\n\t[baseSepolia.id]: baseSepolia,\n\t[soneium.id]: soneium,\n\t[bsc.id]: bsc,\n\t[bscTestnet.id]: bscTestnet,\n\t[gnosis.id]: gnosis,\n\t[gnosisChiado.id]: gnosisChiado,\n}\n\n/**\n * The default address used as fallback when no address is provided.\n * This represents the zero address in EVM chains.\n */\nexport const DEFAULT_ADDRESS = \"0x0000000000000000000000000000000000000000\"\n\n/**\n * Parameters for an EVM chain.\n */\nexport interface EvmChainParams {\n\t/**\n\t * The chain ID of the EVM chain.\n\t */\n\tchainId: number\n\t/**\n\t * The host address of the EVM chain.\n\t */\n\thost: HexString\n\t/**\n\t * The URL of the EVM chain.\n\t */\n\turl: string\n}\n\n/**\n * Encapsulates an EVM chain.\n */\nexport class EvmChain implements IChain {\n\tprivate publicClient: PublicClient\n\tprivate chainConfigService: ChainConfigService\n\n\tconstructor(private readonly params: EvmChainParams) {\n\t\t// @ts-ignore\n\t\tthis.publicClient = createPublicClient({\n\t\t\t// @ts-ignore\n\t\t\tchain: chains[params.chainId],\n\t\t\ttransport: http(params.url),\n\t\t})\n\t\tthis.chainConfigService = new ChainConfigService()\n\t}\n\n\t// Expose minimal getters for external helpers/classes\n\tget client(): PublicClient {\n\t\treturn this.publicClient\n\t}\n\n\tget host(): HexString {\n\t\treturn this.params.host\n\t}\n\n\tget config(): ChainConfigService {\n\t\treturn this.chainConfigService\n\t}\n\n\t/**\n\t * Derives the key for the request receipt.\n\t * @param {HexString} commitment - The commitment to derive the key from.\n\t * @returns {HexString} The derived key.\n\t */\n\trequestReceiptKey(commitment: HexString): HexString {\n\t\treturn deriveMapKey(hexToBytes(commitment), REQUEST_RECEIPTS_SLOT)\n\t}\n\n\t/**\n\t * Queries the request receipt.\n\t * @param {HexString} commitment - The commitment to query.\n\t * @returns {Promise<HexString | undefined>} The relayer address responsible for delivering the request.\n\t */\n\tasync queryRequestReceipt(commitment: HexString): Promise<HexString | undefined> {\n\t\tconst relayer = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"requestReceipts\",\n\t\t\targs: [commitment],\n\t\t})\n\n\t\t// solidity returns zeroes if the storage slot is empty\n\t\treturn relayer === DEFAULT_ADDRESS ? undefined : relayer\n\t}\n\n\t/**\n\t * Queries the proof of the commitments.\n\t * @param {IMessage} message - The message to query.\n\t * @param {string} counterparty - The counterparty address.\n\t * @param {bigint} [at] - The block number to query at.\n\t * @returns {Promise<HexString>} The proof.\n\t */\n\tasync queryProof(message: IMessage, counterparty: string, at?: bigint): Promise<HexString> {\n\t\t// for each request derive the commitment key collect into a new array\n\t\tconst commitmentKeys =\n\t\t\t\"Requests\" in message\n\t\t\t\t? message.Requests.map((key) => requestCommitmentKey(key))\n\t\t\t\t: message.Responses.map((key) => responseCommitmentKey(key))\n\t\tconst config: GetProofParameters = {\n\t\t\taddress: this.params.host,\n\t\t\tstorageKeys: commitmentKeys,\n\t\t}\n\t\tif (!at) {\n\t\t\tconfig.blockTag = \"latest\"\n\t\t} else {\n\t\t\tconfig.blockNumber = at\n\t\t}\n\t\tconst proof = await this.publicClient.getProof(config)\n\t\tconst flattenedProof = Array.from(new Set(flatten(proof.storageProof.map((item) => item.proof))))\n\n\t\tconst encoded = EvmStateProof.enc({\n\t\t\tcontractProof: proof.accountProof.map((item) => Array.from(hexToBytes(item))),\n\t\t\tstorageProof: [\n\t\t\t\t[Array.from(hexToBytes(this.params.host)), flattenedProof.map((item) => Array.from(hexToBytes(item)))],\n\t\t\t],\n\t\t})\n\n\t\treturn toHex(encoded)\n\t}\n\n\t/**\n\t * Query and return the encoded storage proof for the provided keys at the given height.\n\t * @param {bigint} at - The block height at which to query the storage proof.\n\t * @param {HexString[]} keys - The keys for which to query the storage proof.\n\t * @returns {Promise<HexString>} The encoded storage proof.\n\t */\n\tasync queryStateProof(at: bigint, keys: HexString[]): Promise<HexString> {\n\t\tconst config: GetProofParameters = {\n\t\t\taddress: this.params.host,\n\t\t\tstorageKeys: keys,\n\t\t}\n\t\tif (!at) {\n\t\t\tconfig.blockTag = \"latest\"\n\t\t} else {\n\t\t\tconfig.blockNumber = at\n\t\t}\n\t\tconst proof = await this.publicClient.getProof(config)\n\t\tconst flattenedProof = Array.from(new Set(flatten(proof.storageProof.map((item) => item.proof))))\n\n\t\tconst encoded = EvmStateProof.enc({\n\t\t\tcontractProof: proof.accountProof.map((item) => Array.from(hexToBytes(item))),\n\t\t\tstorageProof: [\n\t\t\t\t[Array.from(hexToBytes(this.params.host)), flattenedProof.map((item) => Array.from(hexToBytes(item)))],\n\t\t\t],\n\t\t})\n\n\t\treturn toHex(encoded)\n\t}\n\n\t/**\n\t * Returns the current timestamp of the chain.\n\t * @returns {Promise<bigint>} The current timestamp.\n\t */\n\tasync timestamp(): Promise<bigint> {\n\t\tconst data = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"timestamp\",\n\t\t})\n\t\treturn BigInt(data)\n\t}\n\n\t/**\n\t * Get the latest state machine height for a given state machine ID.\n\t * @param {StateMachineIdParams} stateMachineId - The state machine ID.\n\t * @returns {Promise<bigint>} The latest state machine height.\n\t */\n\tasync latestStateMachineHeight(stateMachineId: StateMachineIdParams): Promise<bigint> {\n\t\tif (!this.publicClient) throw new Error(\"API not initialized\")\n\t\tconst id = stateMachineId.stateId.Polkadot || stateMachineId.stateId.Kusama\n\t\tif (!id)\n\t\t\tthrow new Error(\n\t\t\t\t\"Expected Polakdot or Kusama State machine id when reading latest state machine height on evm\",\n\t\t\t)\n\t\tconst data = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"latestStateMachineHeight\",\n\t\t\targs: [BigInt(id)],\n\t\t})\n\t\treturn data\n\t}\n\n\t/**\n\t * Get the state machine update time for a given state machine height.\n\t * @param {StateMachineHeight} stateMachineHeight - The state machine height.\n\t * @returns {Promise<bigint>} The statemachine update time in seconds.\n\t */\n\tasync stateMachineUpdateTime(stateMachineHeight: StateMachineHeight): Promise<bigint> {\n\t\tif (!this.publicClient) throw new Error(\"API not initialized\")\n\t\tconst id = stateMachineHeight.id.stateId.Polkadot || stateMachineHeight.id.stateId.Kusama\n\t\tif (!id) throw new Error(\"Expected Polkadot or Kusama State machine id when reading state machine update time\")\n\t\tconst data = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"stateMachineCommitmentUpdateTime\",\n\t\t\targs: [{ stateMachineId: BigInt(id), height: stateMachineHeight.height }],\n\t\t})\n\t\treturn data\n\t}\n\n\t/**\n\t * Get the challenge period for a given state machine id.\n\t * @param {StateMachineIdParams} stateMachineId - The state machine ID.\n\t * @returns {Promise<bigint>} The challenge period in seconds.\n\t */\n\tasync challengePeriod(stateMachineId: StateMachineIdParams): Promise<bigint> {\n\t\tif (!this.publicClient) throw new Error(\"API not initialized\")\n\t\tconst id = stateMachineId.stateId.Polkadot || stateMachineId.stateId.Kusama\n\t\tif (!id)\n\t\t\tthrow new Error(\n\t\t\t\t\"Expected Polkadot or Kusama State machine id when reading latest state machine height on evm\",\n\t\t\t)\n\t\tconst data = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"challengePeriod\",\n\t\t})\n\t\treturn data\n\t}\n\n\t/**\n\t * Encodes an ISMP message for the EVM chain.\n\t * @param {IIsmpMessage} message The ISMP message to encode.\n\t * @returns {HexString} The encoded calldata.\n\t */\n\tencode(message: IIsmpMessage): HexString {\n\t\tconst encoded = match(message)\n\t\t\t.with({ kind: \"PostRequest\" }, (request) => {\n\t\t\t\tconst mmrProof = MmrProof.dec(request.proof.proof)\n\t\t\t\tconst requests = zip(request.requests, mmrProof.leafIndexAndPos)\n\t\t\t\t\t.map(([req, leafIndexAndPos]) => {\n\t\t\t\t\t\tif (!req || !leafIndexAndPos) return\n\t\t\t\t\t\tconst [[, kIndex]] = mmrPositionToKIndex(\n\t\t\t\t\t\t\t[leafIndexAndPos?.pos],\n\t\t\t\t\t\t\tcalculateMMRSize(mmrProof.leafCount),\n\t\t\t\t\t\t)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\t\tsource: toHex(req.source),\n\t\t\t\t\t\t\t\tdest: toHex(req.dest),\n\t\t\t\t\t\t\t\tto: req.to,\n\t\t\t\t\t\t\t\tfrom: req.from,\n\t\t\t\t\t\t\t\tnonce: req.nonce,\n\t\t\t\t\t\t\t\ttimeoutTimestamp: req.timeoutTimestamp,\n\t\t\t\t\t\t\t\tbody: req.body,\n\t\t\t\t\t\t\t} as any,\n\t\t\t\t\t\t\tindex: leafIndexAndPos?.leafIndex!,\n\t\t\t\t\t\t\tkIndex,\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.filter((item) => !!item)\n\n\t\t\t\tconst proof = {\n\t\t\t\t\theight: {\n\t\t\t\t\t\tstateMachineId: BigInt(Number.parseInt(request.proof.stateMachine.split(\"-\")[1])),\n\t\t\t\t\t\theight: request.proof.height,\n\t\t\t\t\t},\n\t\t\t\t\tmultiproof: mmrProof.items.map((item) => bytesToHex(new Uint8Array(item))),\n\t\t\t\t\tleafCount: mmrProof.leafCount,\n\t\t\t\t}\n\t\t\t\tconst encoded = encodeFunctionData({\n\t\t\t\t\tabi: HandlerV1.ABI,\n\t\t\t\t\tfunctionName: \"handlePostRequests\",\n\t\t\t\t\targs: [\n\t\t\t\t\t\tthis.params.host,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\trequests,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\n\t\t\t\treturn encoded\n\t\t\t})\n\t\t\t.with({ kind: \"TimeoutPostRequest\" }, (timeout) => {\n\t\t\t\tconst proof = SubstrateStateProof.dec(timeout.proof.proof).value.storageProof.map((item) =>\n\t\t\t\t\ttoHex(new Uint8Array(item)),\n\t\t\t\t)\n\t\t\t\tconst encoded = encodeFunctionData({\n\t\t\t\t\tabi: HandlerV1.ABI,\n\t\t\t\t\tfunctionName: \"handlePostRequestTimeouts\",\n\t\t\t\t\targs: [\n\t\t\t\t\t\tthis.params.host,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\theight: {\n\t\t\t\t\t\t\t\tstateMachineId: BigInt(Number.parseInt(timeout.proof.stateMachine.split(\"-\")[1])),\n\t\t\t\t\t\t\t\theight: timeout.proof.height,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttimeouts: timeout.requests.map((req) => ({\n\t\t\t\t\t\t\t\tsource: toHex(req.source),\n\t\t\t\t\t\t\t\tdest: toHex(req.dest),\n\t\t\t\t\t\t\t\tto: req.to,\n\t\t\t\t\t\t\t\tfrom: req.from,\n\t\t\t\t\t\t\t\tnonce: req.nonce,\n\t\t\t\t\t\t\t\ttimeoutTimestamp: req.timeoutTimestamp,\n\t\t\t\t\t\t\t\tbody: req.body,\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\n\t\t\t\treturn encoded\n\t\t\t})\n\t\t\t.with({ kind: \"GetResponse\" }, (request) => {\n\t\t\t\tconst mmrProof = MmrProof.dec(request.proof.proof)\n\t\t\t\tconst responses = zip(request.responses, mmrProof.leafIndexAndPos)\n\t\t\t\t\t.map(([req, leafIndexAndPos]) => {\n\t\t\t\t\t\tif (!req || !leafIndexAndPos) return\n\t\t\t\t\t\tconst [[, kIndex]] = mmrPositionToKIndex(\n\t\t\t\t\t\t\t[leafIndexAndPos?.pos],\n\t\t\t\t\t\t\tcalculateMMRSize(mmrProof.leafCount),\n\t\t\t\t\t\t)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\t\t\tsource: toHex(req.get.source),\n\t\t\t\t\t\t\t\t\tdest: toHex(req.get.dest),\n\t\t\t\t\t\t\t\t\tfrom: req.get.from,\n\t\t\t\t\t\t\t\t\tnonce: req.get.nonce,\n\t\t\t\t\t\t\t\t\ttimeoutTimestamp: req.get.timeoutTimestamp,\n\t\t\t\t\t\t\t\t\tkeys: req.get.keys,\n\t\t\t\t\t\t\t\t\tcontext: req.get.context,\n\t\t\t\t\t\t\t\t\theight: req.get.height,\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\tvalues: req.values,\n\t\t\t\t\t\t\t} as any,\n\t\t\t\t\t\t\tindex: leafIndexAndPos?.leafIndex!,\n\t\t\t\t\t\t\tkIndex,\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.filter((item) => !!item)\n\n\t\t\t\tconst proof = {\n\t\t\t\t\theight: {\n\t\t\t\t\t\tstateMachineId: BigInt(Number.parseInt(request.proof.stateMachine.split(\"-\")[1])),\n\t\t\t\t\t\theight: request.proof.height,\n\t\t\t\t\t},\n\t\t\t\t\tmultiproof: mmrProof.items.map((item) => bytesToHex(new Uint8Array(item))),\n\t\t\t\t\tleafCount: mmrProof.leafCount,\n\t\t\t\t}\n\t\t\t\tconst encoded = encodeFunctionData({\n\t\t\t\t\tabi: HandlerV1.ABI,\n\t\t\t\t\tfunctionName: \"handleGetResponses\",\n\t\t\t\t\targs: [\n\t\t\t\t\t\tthis.params.host,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\n\t\t\t\treturn encoded\n\t\t\t})\n\t\t\t.with({ kind: \"GetRequest\" }, (message) => {\n\t\t\t\tthrow new Error(\"GetResponse is not yet supported on Substrate chains\")\n\t\t\t})\n\t\t\t.exhaustive()\n\n\t\treturn encoded\n\t}\n\n\t/**\n\t * Calculates the fee required to send a post request to the destination chain.\n\t * The fee is calculated based on the per-byte fee for the destination chain\n\t * multiplied by the size of the request body.\n\t *\n\t * @param request - The post request to calculate the fee for\n\t * @returns The total fee in wei required to send the post request\n\t */\n\tasync quote(request: IPostRequest): Promise<bigint> {\n\t\tconst perByteFee = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"perByteFee\",\n\t\t\targs: [toHex(request.dest)],\n\t\t})\n\n\t\t// Exclude 0x prefix from the body length, and get the byte length\n\t\tconst bodyByteLength = Math.floor((request.body.length - 2) / 2)\n\t\tconst length = bodyByteLength < 32 ? 32 : bodyByteLength\n\n\t\treturn perByteFee * BigInt(length)\n\t}\n\n\t/**\n\t * Estimates the gas required for a post request execution on this chain.\n\t * This function generates mock proofs for the post request, creates a state override\n\t * with the necessary overlay root, and estimates the gas cost for executing the\n\t * handlePostRequests transaction on the handler contract.\n\t *\n\t * @param request - The post request to estimate gas for\n\t * @param paraId - The ID of the parachain (Hyperbridge) that will process the request\n\t * @returns The estimated gas amount in gas units and the generated calldata\n\t */\n\tasync estimateGas(request: IPostRequest): Promise<{ gas: bigint; postRequestCalldata: HexString }> {\n\t\tconst hostParams = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"hostParams\",\n\t\t})\n\n\t\tconst { root, proof, index, kIndex, treeSize } = await generateRootWithProof(request, 2n ** 10n)\n\t\tconst latestStateMachineHeight = 6291991n\n\t\tconst paraId = 4009n\n\t\tconst overlayRootSlot = getStateCommitmentFieldSlot(\n\t\t\tparaId, // Hyperbridge chain id\n\t\t\tlatestStateMachineHeight, // Hyperbridge chain height\n\t\t\t1, // For overlayRoot\n\t\t)\n\t\tconst postParams = {\n\t\t\theight: {\n\t\t\t\tstateMachineId: BigInt(paraId),\n\t\t\t\theight: latestStateMachineHeight,\n\t\t\t},\n\t\t\tmultiproof: proof,\n\t\t\tleafCount: treeSize,\n\t\t}\n\n\t\tconst formattedRequest = {\n\t\t\t...request,\n\t\t\tsource: toHex(request.source),\n\t\t\tdest: toHex(request.dest),\n\t\t}\n\n\t\tconst contractArgs = [\n\t\t\tthis.params.host,\n\t\t\t{\n\t\t\t\tproof: postParams,\n\t\t\t\trequests: [\n\t\t\t\t\t{\n\t\t\t\t\t\trequest: formattedRequest,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tkIndex,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t] as const\n\n\t\tconst postRequestCalldata = encodeFunctionData({\n\t\t\tabi: HandlerV1.ABI,\n\t\t\tfunctionName: \"handlePostRequests\",\n\t\t\targs: contractArgs,\n\t\t})\n\n\t\tconst gas = await this.publicClient.estimateContractGas({\n\t\t\taddress: hostParams.handler,\n\t\t\tabi: HandlerV1.ABI,\n\t\t\tfunctionName: \"handlePostRequests\",\n\t\t\targs: contractArgs,\n\t\t\tstateOverride: [\n\t\t\t\t{\n\t\t\t\t\taddress: this.params.host,\n\t\t\t\t\tstateDiff: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tslot: overlayRootSlot,\n\t\t\t\t\t\t\tvalue: root,\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\n\t\treturn { gas, postRequestCalldata }\n\t}\n\n\t/**\n\t * Gets the fee token address and decimals for the chain.\n\t * This function gets the fee token address and decimals for the chain.\n\t *\n\t * @returns The fee token address and decimals\n\t */\n\tasync getFeeTokenWithDecimals(): Promise<{ address: HexString; decimals: number }> {\n\t\tconst hostParams = await this.publicClient.readContract({\n\t\t\tabi: EvmHost.ABI,\n\t\t\taddress: this.params.host,\n\t\t\tfunctionName: \"hostParams\",\n\t\t})\n\t\tconst feeTokenAddress = hostParams.feeToken\n\t\tconst feeTokenDecimals = await this.publicClient.readContract({\n\t\t\taddress: feeTokenAddress,\n\t\t\tabi: erc20Abi,\n\t\t\tfunctionName: \"decimals\",\n\t\t})\n\t\treturn { address: feeTokenAddress, decimals: feeTokenDecimals }\n\t}\n\n\t/**\n\t * Gets the nonce of the host.\n\t * This function gets the nonce of the host.\n\t *\n\t * @returns The nonce of the host\n\t */\n\tasync getHostNonce(): Promise<bigint> {\n\t\tconst nonce = await this.publicClient.readContract({\n\t\t\tabi: evmHost.ABI,\n\t\t\taddress: this.params.host,\n\t\t\tfunctionName: \"nonce\",\n\t\t})\n\n\t\treturn nonce\n\t}\n}\n\n/**\n * Slot for storing request commitments.\n */\nexport const REQUEST_COMMITMENTS_SLOT = 0n\n\n/**\n * Slot index for response commitments map\n */\nexport const RESPONSE_COMMITMENTS_SLOT = 1n\n\n/**\n * Slot index for requests receipts map\n */\nexport const REQUEST_RECEIPTS_SLOT = 2n\n\n/**\n * Slot index for response receipts map\n */\nexport const RESPONSE_RECEIPTS_SLOT = 3n\n\n/**\n * Slot index for state commitment map\n */\nexport const STATE_COMMITMENTS_SLOT = 5n\n\nfunction requestCommitmentKey(key: Hex): Hex {\n\t// First derive the map key\n\tconst keyBytes = hexToBytes(key)\n\tconst slot = REQUEST_COMMITMENTS_SLOT\n\tconst mappedKey = deriveMapKey(keyBytes, slot)\n\n\t// Convert the derived key to BigInt and add 1\n\tconst number = bytesToBigInt(hexToBytes(mappedKey)) + 1n\n\n\t// Convert back to 32-byte hex\n\treturn pad(`0x${number.toString(16)}`, { size: 32 })\n}\n\nfunction responseCommitmentKey(key: Hex): Hex {\n\t// First derive the map key\n\tconst keyBytes = hexToBytes(key)\n\tconst slot = RESPONSE_COMMITMENTS_SLOT\n\tconst mappedKey = deriveMapKey(keyBytes, slot)\n\n\t// Convert the derived key to BigInt and add 1\n\tconst number = bytesToBigInt(hexToBytes(mappedKey)) + 1n\n\n\t// Convert back to 32-byte hex\n\treturn pad(`0x${number.toString(16)}`, { size: 32 })\n}\n\nfunction deriveMapKey(key: Uint8Array, slot: bigint): Hex {\n\t// Convert slot to 32-byte big-endian representation\n\tconst slotBytes = pad(`0x${slot.toString(16)}`, { size: 32 })\n\n\t// Combine key and slot bytes\n\tconst combined = new Uint8Array([...key, ...toBytes(slotBytes)])\n\n\t// Calculate keccak256 hash\n\treturn keccak256(combined)\n}\n\n/**\n * Derives the storage slot for a specific field in the StateCommitment struct\n *\n * struct StateCommitment {\n * uint256 timestamp; // slot + 0\n * bytes32 overlayRoot; // slot + 1\n * bytes32 stateRoot; // slot + 2\n * }\n *\n * @param stateMachineId - The state machine ID\n * @param height - The block height\n * @param field - The field index in the struct (0 for timestamp, 1 for overlayRoot, 2 for stateRoot)\n * @returns The storage slot for the specific field\n */\nexport function getStateCommitmentFieldSlot(stateMachineId: bigint, height: bigint, field: 0 | 1 | 2): HexString {\n\tconst baseSlot = getStateCommitmentSlot(stateMachineId, height)\n\tconst slotNumber = bytesToBigInt(toBytes(baseSlot)) + BigInt(field)\n\treturn pad(`0x${slotNumber.toString(16)}`, { size: 32 })\n}\n\nexport function getStateCommitmentSlot(stateMachineId: bigint, height: bigint): HexString {\n\t// First level mapping: keccak256(stateMachineId . STATE_COMMITMENTS_SLOT)\n\tconst firstLevelSlot = deriveFirstLevelSlot(stateMachineId, STATE_COMMITMENTS_SLOT)\n\n\t// Second level mapping: keccak256(height . firstLevelSlot)\n\treturn deriveSecondLevelSlot(height, firstLevelSlot)\n}\n\nfunction deriveFirstLevelSlot(key: bigint, slot: bigint): HexString {\n\tconst keyHex = pad(`0x${key.toString(16)}`, { size: 32 })\n\tconst keyBytes = toBytes(keyHex)\n\n\tconst slotBytes = toBytes(pad(`0x${slot.toString(16)}`, { size: 32 }))\n\n\tconst combined = new Uint8Array([...keyBytes, ...slotBytes])\n\n\treturn keccak256(combined)\n}\n\nfunction deriveSecondLevelSlot(key: bigint, firstLevelSlot: HexString): HexString {\n\tconst keyHex = pad(`0x${key.toString(16)}`, { size: 32 })\n\tconst keyBytes = toBytes(keyHex)\n\n\tconst slotBytes = toBytes(firstLevelSlot)\n\n\tconst combined = new Uint8Array([...keyBytes, ...slotBytes])\n\n\treturn keccak256(combined)\n}\n","import { ApiPromise, WsProvider } from \"@polkadot/api\"\nimport { capitalize } from \"lodash-es\"\nimport { RpcWebSocketClient } from \"rpc-websocket-client\"\nimport { Vector, u8 } from \"scale-ts\"\nimport { match } from \"ts-pattern\"\nimport { bytesToHex, hexToBytes, toBytes, toHex } from \"viem\"\n\nimport type { IChain, IIsmpMessage } from \"@/chain\"\nimport type { HexString, IGetRequest, IMessage, IPostRequest, StateMachineHeight, StateMachineIdParams } from \"@/types\"\nimport {\n\tBasicProof,\n\tGetRequestsWithProof,\n\ttype IStateMachine,\n\tMessage,\n\tSubstrateStateProof,\n\tisEvmChain,\n\tisSubstrateChain,\n} from \"@/utils\"\nimport { ExpectedError } from \"@/utils/exceptions\"\nimport { keccakAsU8a } from \"@polkadot/util-crypto\"\n\nexport interface SubstrateChainParams {\n\t/*\n\t * ws: The WebSocket URL for the Substrate chain.\n\t */\n\tws: string\n\n\t/*\n\t * hasher: The hashing algorithm used by the Substrate chain.\n\t */\n\thasher: \"Keccak\" | \"Blake2\"\n}\n\nexport class SubstrateChain implements IChain {\n\t/*\n\t * api: The Polkadot API instance for the Substrate chain.\n\t */\n\tapi?: ApiPromise\n\tconstructor(private readonly params: SubstrateChainParams) {}\n\n\t/*\n\t * connect: Connects to the Substrate chain using the provided WebSocket URL.\n\t */\n\tpublic async connect() {\n\t\tconst wsProvider = new WsProvider(this.params.ws)\n\t\tconst typesBundle =\n\t\t\tthis.params.hasher === \"Keccak\"\n\t\t\t\t? {\n\t\t\t\t\t\tspec: {\n\t\t\t\t\t\t\tnexus: {\n\t\t\t\t\t\t\t\thasher: keccakAsU8a,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgargantua: {\n\t\t\t\t\t\t\t\thasher: keccakAsU8a,\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\tthis.api = await ApiPromise.create({\n\t\t\tprovider: wsProvider,\n\t\t\ttypesBundle,\n\t\t})\n\t}\n\n\t/**\n\t * Disconnects the Substrate chain connection.\n\t */\n\tpublic async disconnect() {\n\t\tif (this.api) {\n\t\t\tawait this.api.disconnect()\n\t\t\tthis.api = undefined\n\t\t}\n\t}\n\n\t/**\n\t * Returns the storage key for a request receipt in the child trie\n\t * The request commitment is the key\n\t * @param key - The H256 hash key (as a 0x-prefixed hex string)\n\t * @returns The storage key as a hex string\n\t */\n\trequestReceiptKey(key: HexString): HexString {\n\t\tconst prefix = new TextEncoder().encode(\"RequestReceipts\")\n\n\t\tconst keyBytes = hexToBytes(key)\n\n\t\t// Concatenate the prefix and key bytes\n\t\treturn bytesToHex(new Uint8Array([...prefix, ...keyBytes]))\n\t}\n\n\t/**\n\t * Returns the storage key for a request commitment in the child trie\n\t * The request commitment is the key\n\t * @param key - The H256 hash key (as a 0x-prefixed hex string)\n\t * @returns The storage key as a hex string\n\t */\n\trequestCommitmentKey(key: HexString): HexString {\n\t\tconst prefix = new TextEncoder().encode(\"RequestCommitments\")\n\n\t\tconst keyBytes = hexToBytes(key)\n\n\t\t// Concatenate the prefix and key bytes\n\t\treturn bytesToHex(new Uint8Array([...prefix, ...keyBytes]))\n\t}\n\n\t/**\n\t * Queries a request commitment from the ISMP child trie storage.\n\t * @param {HexString} commitment - The commitment hash to look up.\n\t * @returns {Promise<HexString | undefined>} The commitment data if found, undefined otherwise.\n\t */\n\tasync queryRequestCommitment(commitment: HexString): Promise<HexString | undefined> {\n\t\tconst prefix = toHex(\":child_storage:default:ISMP\")\n\t\tconst key = this.requestCommitmentKey(commitment)\n\n\t\tconst rpc = new RpcWebSocketClient()\n\t\tawait rpc.connect(this.params.ws)\n\t\tconst item: any = await rpc.call(\"childstate_getStorage\", [prefix, key])\n\n\t\treturn item\n\t}\n\n\t/**\n\t * Queries the request receipt.\n\t * @param {HexString} commitment - The commitment to query.\n\t * @returns {Promise<HexString | undefined>} The relayer address responsible for delivering the request.\n\t */\n\tasync queryRequestReceipt(commitment: HexString): Promise<HexString | undefined> {\n\t\tconst prefix = toHex(\":child_storage:default:ISMP\")\n\t\tconst key = this.requestReceiptKey(commitment)\n\n\t\tconst rpc = new RpcWebSocketClient()\n\t\tawait rpc.connect(this.params.ws)\n\t\tconst item: any = await rpc.call(\"childstate_getStorage\", [prefix, key])\n\n\t\treturn item\n\t}\n\n\t/**\n\t * Returns the current timestamp of the chain.\n\t * @returns {Promise<bigint>} The current timestamp.\n\t */\n\tasync timestamp(): Promise<bigint> {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\n\t\tconst now = await this.api.query.timestamp.now()\n\n\t\treturn BigInt(now.toJSON() as number) / BigInt(1000)\n\t}\n\n\t/**\n\t * Queries the proof of the commitments.\n\t * @param {IMessage} message - The message to query.\n\t * @param {string} counterparty - The counterparty address.\n\t * @param {bigint} [at] - The block number to query at.\n\t * @returns {Promise<HexString>} The proof.\n\t */\n\tasync queryProof(message: IMessage, counterparty: string, at?: bigint): Promise<HexString> {\n\t\tconst rpc = new RpcWebSocketClient()\n\t\tawait rpc.connect(this.params.ws)\n\n\t\tif (isEvmChain(counterparty)) {\n\t\t\t// for evm chains, query the mmr proof\n\t\t\tconst proof: any = await rpc.call(\"mmr_queryProof\", [Number(at), message])\n\t\t\treturn toHex(proof.proof)\n\t\t}\n\n\t\tif (isSubstrateChain(counterparty)) {\n\t\t\t// for substrate chains, we use the child trie proof\n\t\t\tconst childTrieKeys =\n\t\t\t\t\"Requests\" in message\n\t\t\t\t\t? message.Requests.map(requestCommitmentStorageKey)\n\t\t\t\t\t: message.Responses.map(responseCommitmentStorageKey)\n\t\t\tconst proof: any = await rpc.call(\"ismp_queryChildTrieProof\", [Number(at), childTrieKeys])\n\t\t\tconst basicProof = BasicProof.dec(toHex(proof.proof))\n\t\t\tconst encoded = SubstrateStateProof.enc({\n\t\t\t\ttag: \"OverlayProof\",\n\t\t\t\tvalue: {\n\t\t\t\t\thasher: {\n\t\t\t\t\t\ttag: this.params.hasher,\n\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t},\n\t\t\t\t\tstorageProof: basicProof,\n\t\t\t\t},\n\t\t\t})\n\t\t\treturn toHex(encoded)\n\t\t}\n\n\t\tthrow new ExpectedError(`Unsupported chain type for counterparty: ${counterparty}`)\n\t}\n\n\t/**\n\t * Submit an unsigned ISMP transaction to the chain. Resolves when the transaction is finalized.\n\t * @param message - The message to be submitted.\n\t * @returns A promise that resolves to an object containing the transaction hash, block hash, and block number.\n\t */\n\tasync submitUnsigned(message: IIsmpMessage): Promise<{\n\t\ttransactionHash: string\n\t\tblockHash: string\n\t\tblockNumber: number\n\t\ttimestamp: number\n\t}> {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\t\tconst { api } = this\n\n\t\tconst args = encodeISMPMessage(message)\n\t\tlet tx\n\t\tif (message.kind === \"GetRequest\") {\n\t\t\ttx = api.tx.stateCoprocessor.handleUnsigned(args)\n\t\t} else {\n\t\t\ttx = api.tx.ismp.handleUnsigned(args)\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet unsub = () => {}\n\n\t\t\ttx.send(async ({ isInBlock, isFinalized, isError, dispatchError, txHash, status }) => {\n\t\t\t\tif (isFinalized || isInBlock) {\n\t\t\t\t\tunsub()\n\t\t\t\t\tconst blockHash = isInBlock ? status.asInBlock.toHex() : status.asFinalized.toHex()\n\t\t\t\t\tconst header = await api.rpc.chain.getHeader(blockHash)\n\t\t\t\t\t// Get a decorated api instance at a specific block\n\t\t\t\t\tconst apiAt = await api.at(blockHash)\n\t\t\t\t\tconst timestamp = await apiAt.query.timestamp.now()\n\t\t\t\t\tresolve({\n\t\t\t\t\t\ttransactionHash: txHash.toHex(),\n\t\t\t\t\t\tblockHash: blockHash,\n\t\t\t\t\t\tblockNumber: header.number.toNumber(),\n\t\t\t\t\t\ttimestamp: Number(timestamp.toJSON()) / 1000,\n\t\t\t\t\t})\n\t\t\t\t} else if (isError) {\n\t\t\t\t\tunsub()\n\t\t\t\t\tconsole.error(\"Unsigned transaction failed: \", dispatchError)\n\t\t\t\t\treject(dispatchError)\n\t\t\t\t}\n\t\t\t})\n\t\t\t\t.then((unsubscribe) => {\n\t\t\t\t\tunsub = unsubscribe\n\t\t\t\t})\n\t\t\t\t.catch(reject)\n\t\t})\n\t}\n\n\t/**\n\t * Query the state proof for a given set of keys at a specific block height.\n\t * @param at The block height to query the state proof at.\n\t * @param keys The keys to query the state proof for.\n\t * @returns The state proof as a hexadecimal string.\n\t */\n\tasync queryStateProof(at: bigint, keys: HexString[]): Promise<HexString> {\n\t\tconst rpc = new RpcWebSocketClient()\n\t\tawait rpc.connect(this.params.ws)\n\t\tconst encodedKeys = keys.map((key) => Array.from(hexToBytes(key)))\n\t\tconst proof: any = await rpc.call(\"ismp_queryChildTrieProof\", [Number(at), encodedKeys])\n\t\tconst basicProof = BasicProof.dec(toHex(proof.proof))\n\t\tconst encoded = SubstrateStateProof.enc({\n\t\t\ttag: \"OverlayProof\",\n\t\t\tvalue: {\n\t\t\t\thasher: {\n\t\t\t\t\ttag: this.params.hasher,\n\t\t\t\t\tvalue: undefined,\n\t\t\t\t},\n\t\t\t\tstorageProof: basicProof,\n\t\t\t},\n\t\t})\n\t\treturn toHex(encoded)\n\t}\n\n\t/**\n\t * Get the latest state machine height for a given state machine ID.\n\t * @param {StateMachineIdParams} stateMachineId - The state machine ID.\n\t * @returns {Promise<bigint>} The latest state machine height.\n\t */\n\tasync latestStateMachineHeight(stateMachineId: StateMachineIdParams): Promise<bigint> {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\t\tconst latestHeight = await this.api.query.ismp.latestStateMachineHeight(stateMachineId)\n\t\treturn BigInt(latestHeight.toString())\n\t}\n\n\t/**\n\t * Get the state machine update time for a given state machine height.\n\t * @param {StateMachineHeight} stateMachineHeight - The state machine height.\n\t * @returns {Promise<bigint>} The statemachine update time in seconds.\n\t */\n\tasync stateMachineUpdateTime(stateMachineHeight: StateMachineHeight): Promise<bigint> {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\t\tconst updateTime = await this.api.query.ismp.stateMachineUpdateTime(stateMachineHeight)\n\t\treturn BigInt(updateTime.toString())\n\t}\n\n\t/**\n\t * Get the challenge period for a given state machine id.\n\t * @param {StateMachineIdParams} stateMachineId - The state machine ID.\n\t * @returns {Promise<bigint>} The challenge period in seconds.\n\t */\n\tasync challengePeriod(stateMachineId: StateMachineIdParams): Promise<bigint> {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\t\tconst challengePeriod = await this.api.query.ismp.challengePeriod(stateMachineId)\n\t\treturn BigInt(challengePeriod.toString())\n\t}\n\n\t/**\n\t * Encode an ISMP calldata for a substrate chain.\n\t * @param message The ISMP message to encode.\n\t * @returns The encoded message as a hexadecimal string.\n\t */\n\tencode(message: IIsmpMessage): HexString {\n\t\tconst palletIndex = this.getPalletIndex(\"Ismp\")\n\t\tconst args = encodeISMPMessage(message)\n\n\t\t// Encoding the call enum and call index\n\t\tconst call = Vector(u8, 2).enc([palletIndex, 0])\n\n\t\treturn toHex(new Uint8Array([...call, ...args]))\n\t}\n\n\t/**\n\t * Returns the index of a pallet by its name, by looking up the pallets in the runtime metadata.\n\t * @param {string} name - The name of the pallet.\n\t * @returns {number} The index of the pallet.\n\t */\n\tprivate getPalletIndex(name: string): number {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\t\tconst pallets = this.api.runtimeMetadata.asLatest.pallets.entries()\n\n\t\tfor (const p of pallets) {\n\t\t\tif (p[1].name.toString() === name) {\n\t\t\t\tconst index = p[1].index.toNumber()\n\n\t\t\t\treturn index\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(`${name} not found in runtime`)\n\t}\n}\n\nfunction requestCommitmentStorageKey(key: HexString): number[] {\n\t// Convert \"RequestCommitments\" to bytes\n\tconst prefix = new TextEncoder().encode(\"RequestCommitments\")\n\n\t// Convert hex key to bytes\n\tconst keyBytes = hexToBytes(key)\n\n\t// Combine prefix and key bytes\n\treturn Array.from(new Uint8Array([...prefix, ...keyBytes]))\n}\n\nfunction responseCommitmentStorageKey(key: HexString): number[] {\n\t// Convert \"ResponseCommitments\" to bytes\n\tconst prefix = new TextEncoder().encode(\"ResponseCommitments\")\n\n\t// Convert hex key to bytes\n\tconst keyBytes = hexToBytes(key)\n\n\t// Combine prefix and key bytes\n\treturn Array.from(new Uint8Array([...prefix, ...keyBytes]))\n}\n\n/**\n * Converts a state machine ID string to an enum value.\n * @param {string} id - The state machine ID string.\n * @returns {IStateMachine} The corresponding enum value.\n */\nexport function convertStateMachineIdToEnum(id: string): IStateMachine {\n\tlet [tag, value]: any = id.split(\"-\")\n\ttag = capitalize(tag)\n\tif ([\"Evm\", \"Polkadot\", \"Kusama\"].includes(tag)) {\n\t\tvalue = Number.parseInt(value)\n\t} else {\n\t\tvalue = Array.from(toBytes(value))\n\t}\n\n\treturn { tag, value }\n}\n\n/**\n * Converts an array of IPostRequest objects to a codec representation.\n * @param {IPostRequest} request - The array of IPostRequest objects.\n * @returns The codec representation of the requests.\n */\nfunction convertIPostRequestToCodec(request: IPostRequest) {\n\treturn {\n\t\ttag: \"Post\",\n\t\tvalue: {\n\t\t\tsource: convertStateMachineIdToEnum(request.source),\n\t\t\tdest: convertStateMachineIdToEnum(request.dest),\n\t\t\tfrom: Array.from(hexToBytes(request.from)),\n\t\t\tto: Array.from(hexToBytes(request.to)),\n\t\t\tnonce: request.nonce,\n\t\t\tbody: Array.from(hexToBytes(request.body)),\n\t\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\t},\n\t} as const\n}\n\n/**\n * Converts an IGetRequest object to a codec representation.\n * @param {IGetRequest} request - The IGetRequest object.\n * @returns The codec representation of the request.\n */\nfunction convertIGetRequestToCodec(request: IGetRequest) {\n\treturn {\n\t\tsource: convertStateMachineIdToEnum(request.source),\n\t\tdest: convertStateMachineIdToEnum(request.dest),\n\t\tfrom: Array.from(hexToBytes(request.from)),\n\t\tnonce: request.nonce,\n\t\tkeys: request.keys.map((key) => Array.from(hexToBytes(key))),\n\t\tcontext: Array.from(hexToBytes(request.context)),\n\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\theight: request.height,\n\t} as const\n}\n\nexport function encodeISMPMessage(message: IIsmpMessage): Uint8Array {\n\ttry {\n\t\treturn match(message)\n\t\t\t.with({ kind: \"PostRequest\" }, (message) => {\n\t\t\t\treturn Vector(Message).enc([\n\t\t\t\t\t{\n\t\t\t\t\t\ttag: \"RequestMessage\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\trequests: message.requests.map(\n\t\t\t\t\t\t\t\t(post_request) => convertIPostRequestToCodec(post_request).value,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\t\theight: {\n\t\t\t\t\t\t\t\t\theight: message.proof.height,\n\t\t\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\t\t\tconsensusStateId: Array.from(toBytes(message.proof.consensusStateId)),\n\t\t\t\t\t\t\t\t\t\tid: convertStateMachineIdToEnum(message.proof.stateMachine),\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\tproof: Array.from(hexToBytes(message.proof.proof)),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsigner: Array.from(hexToBytes(message.signer)),\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.with({ kind: \"GetResponse\" }, (message) => {\n\t\t\t\tthrow new Error(\"GetResponse is not yet supported on Substrate chains\")\n\t\t\t})\n\t\t\t.with({ kind: \"GetRequest\" }, (message) => {\n\t\t\t\treturn GetRequestsWithProof.enc({\n\t\t\t\t\trequests: message.requests.map((request) => convertIGetRequestToCodec(request)),\n\t\t\t\t\tsource: {\n\t\t\t\t\t\theight: {\n\t\t\t\t\t\t\theight: message.source.height,\n\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\tconsensusStateId: Array.from(toBytes(message.source.consensusStateId)),\n\t\t\t\t\t\t\t\tid: convertStateMachineIdToEnum(message.source.stateMachine),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tproof: Array.from(hexToBytes(message.source.proof)),\n\t\t\t\t\t},\n\t\t\t\t\tresponse: {\n\t\t\t\t\t\theight: {\n\t\t\t\t\t\t\theight: message.response.height,\n\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\tconsensusStateId: Array.from(toBytes(message.response.consensusStateId)),\n\t\t\t\t\t\t\t\tid: convertStateMachineIdToEnum(message.response.stateMachine),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tproof: Array.from(hexToBytes(message.response.proof)),\n\t\t\t\t\t},\n\t\t\t\t\tsigner: Array.from(hexToBytes(message.signer)),\n\t\t\t\t})\n\t\t\t})\n\t\t\t.with({ kind: \"TimeoutPostRequest\" }, (message) => {\n\t\t\t\treturn Vector(Message).enc([\n\t\t\t\t\t{\n\t\t\t\t\t\ttag: \"TimeoutMessage\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\ttag: \"Post\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\trequests: message.requests.map((r) => convertIPostRequestToCodec(r)),\n\t\t\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\t\t\theight: {\n\t\t\t\t\t\t\t\t\t\theight: message.proof.height,\n\t\t\t\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\t\t\t\tconsensusStateId: Array.from(toBytes(message.proof.consensusStateId)),\n\t\t\t\t\t\t\t\t\t\t\tid: convertStateMachineIdToEnum(message.proof.stateMachine),\n\t\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\tproof: Array.from(hexToBytes(message.proof.proof)),\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])\n\t\t\t})\n\t\t\t.exhaustive()\n\t} catch (error) {\n\t\tthrow new Error(\"Failed to encode ISMP message\", { cause: error })\n\t}\n}\n","import { EvmChain, SubstrateChain } from \"@/chain\"\nimport type {\n\tGetResponseStorageValues,\n\tHexString,\n\tIEvmConfig,\n\tIGetRequest,\n\tIMessage,\n\tIPostRequest,\n\tISubstrateConfig,\n\tStateMachineHeight,\n\tStateMachineIdParams,\n} from \"@/types\"\nimport { isEvmChain, isSubstrateChain } from \"@/utils\"\nimport { ExpectedError } from \"./utils/exceptions\"\n\nexport * from \"@/chains/evm\"\nexport * from \"@/chains/substrate\"\n\n/**\n * Type representing an ISMP message.\n */\nexport type IIsmpMessage = IRequestMessage | ITimeoutPostRequestMessage | IGetResponseMessage | IGetRequestMessage\n\nexport interface IRequestMessage {\n\t/**\n\t * The kind of message.\n\t */\n\tkind: \"PostRequest\"\n\t/**\n\t * The requests to be posted.\n\t */\n\trequests: IPostRequest[]\n\t/**\n\t * The proof of the requests.\n\t */\n\tproof: IProof\n\t/**\n\t * The signer of the message.\n\t */\n\tsigner: HexString\n}\n\nexport interface IGetRequestMessage {\n\t/**\n\t * The kind of message.\n\t */\n\tkind: \"GetRequest\"\n\t/**\n\t * The requests to be posted.\n\t */\n\trequests: IGetRequest[]\n\t/**\n\t * The proof of the requests from the source chain.\n\t */\n\tsource: IProof\n\t/**\n\t * The proof of the response from the target chain\n\t */\n\tresponse: IProof\n\t/**\n\t * The signer of the message.\n\t */\n\tsigner: HexString\n}\n\nexport interface IGetResponse {\n\t/**\n\t * The request that triggered this response.\n\t */\n\tget: IGetRequest\n\t/**\n\t * The response message.\n\t */\n\tvalues: GetResponseStorageValues[]\n}\n\nexport interface IGetResponseMessage {\n\t/**\n\t * The kind of message.\n\t */\n\tkind: \"GetResponse\"\n\t/**\n\t * The responses to be posted.\n\t */\n\tresponses: IGetResponse[]\n\t/**\n\t * The proof of the responses.\n\t */\n\tproof: IProof\n\t/**\n\t * The signer of the message.\n\t */\n\tsigner: HexString\n}\n\nexport interface ITimeoutPostRequestMessage {\n\t/**\n\t * The kind of message.\n\t */\n\tkind: \"TimeoutPostRequest\"\n\n\t/**\n\t * The requests to be posted.\n\t */\n\trequests: IPostRequest[]\n\n\t/**\n\t * The proof of the requests.\n\t */\n\tproof: IProof\n}\n\nexport interface IProof {\n\t/**\n\t * The height of the proof.\n\t */\n\theight: bigint\n\t/**\n\t * The state machine identifier of the proof.\n\t */\n\tstateMachine: string\n\n\t/**\n\t * The associated consensus state identifier of the proof.\n\t */\n\tconsensusStateId: string\n\n\t/**\n\t * The encoded storage proof\n\t */\n\tproof: HexString\n}\n\n/**\n * Interface representing a chain.\n */\nexport interface IChain {\n\t/*\n\t * Returns the current timestamp of the chain in seconds.\n\t */\n\ttimestamp(): Promise<bigint>\n\n\t/**\n\t * Returns the state trie key for the request-receipt storage item for the given request commitment.\n\t */\n\trequestReceiptKey(commitment: HexString): HexString\n\n\t/**\n\t * Query and return the request-receipt for the given request commitment.\n\t */\n\tqueryRequestReceipt(commitment: HexString): Promise<HexString | undefined>\n\n\t/**\n\t * Query and return the encoded storage proof for the provided keys at the given height.\n\t */\n\tqueryStateProof(at: bigint, keys: HexString[]): Promise<HexString>\n\n\t/*\n\t * Query and return the encoded storage proof for requests\n\t */\n\tqueryProof(message: IMessage, counterparty: string, at?: bigint): Promise<HexString>\n\n\t/*\n\t * Encode an ISMP message into the appropriate calldata for this chain.\n\t */\n\tencode(message: IIsmpMessage): HexString\n\n\t/**\n\t * Get the latest state machine height for a given state machine ID.\n\t */\n\tlatestStateMachineHeight(stateMachineId: StateMachineIdParams): Promise<bigint>\n\n\t/**\n\t * Get the challenge period for a given state machine ID.\n\t */\n\tchallengePeriod(stateMachineId: StateMachineIdParams): Promise<bigint>\n\n\t/**\n\t * Get the update time for a statemachine height.\n\t */\n\tstateMachineUpdateTime(stateMachineHeight: StateMachineHeight): Promise<bigint>\n}\n\n/**\n * Returns the chain interface for a given state machine identifier\n * @param chainConfig - Chain configuration\n * @returns Chain interface\n */\nexport async function getChain(chainConfig: IEvmConfig | ISubstrateConfig): Promise<IChain> {\n\tif (isEvmChain(chainConfig.stateMachineId)) {\n\t\tconst config = chainConfig as IEvmConfig\n\t\tconst chainId = Number.parseInt(chainConfig.stateMachineId.split(\"-\")[1])\n\t\tconst evmChain = new EvmChain({\n\t\t\tchainId,\n\t\t\turl: config.rpcUrl,\n\t\t\thost: config.host as any,\n\t\t})\n\n\t\treturn evmChain\n\t}\n\n\tif (isSubstrateChain(chainConfig.stateMachineId)) {\n\t\tconst config = chainConfig as ISubstrateConfig\n\t\tconst substrateChain = new SubstrateChain({\n\t\t\tws: config.wsUrl,\n\t\t\thasher: config.hasher,\n\t\t})\n\n\t\tawait substrateChain.connect()\n\n\t\treturn substrateChain\n\t}\n\n\tthrow new ExpectedError(`Unsupported chain: ${chainConfig.stateMachineId}`)\n}\n","export const POST_REQUEST_STATUS = `\n query RequestStatusM($hash: String!) {\n requests(\n filter: { commitment: { equalTo: $hash } }\n ) {\n nodes {\n commitment\n timeoutTimestamp\n source\n dest\n to\n from\n nonce\n body\n statusMetadata {\n nodes {\n blockHash\n blockNumber\n timestamp\n chain\n status\n transactionHash\n }\n }\n }\n }\n}\n`\n\nexport const GET_REQUEST_STATUS = `\nquery GetRequestDetails($commitment: String!) {\n getRequests(\n filter: { commitment: { equalTo: $commitment } }\n ) {\n nodes {\n id\n source\n dest\n from\n keys\n nonce\n height\n context\n timeoutTimestamp\n fee\n blockNumber\n blockHash\n transactionHash\n blockTimestamp\n status\n chain\n commitment\n statusMetadata {\n nodes {\n status\n chain\n timestamp\n blockNumber\n blockHash\n transactionHash\n }\n }\n }\n }\n}`\n\nexport const STATE_MACHINE_UPDATES_BY_HEIGHT = `\nquery StateMachineUpdatesByHeight($statemachineId: String!, $height: Int!, $chain: String!) {\n\tstateMachineUpdateEvents(\n\t\tfilter: {\n\t\t\tand: [\n\t\t\t\t{ stateMachineId: { equalTo: $statemachineId } }\n\t\t\t\t{ height: { greaterThanOrEqualTo: $height } }\n\t\t\t\t{ chain: { equalTo: $chain } }\n\t\t\t]\n\t\t}\n\t\torderBy: HEIGHT_ASC\n\t\tfirst: 1\n\t) {\n nodes {\n height\n stateMachineId\n chain\n blockHash\n blockNumber\n transactionHash\n createdAt\n }\n }\n}\n`\n\nexport const STATE_MACHINE_UPDATES_BY_TIMESTAMP = `\nquery StateMachineUpdatesByTimestamp($statemachineId: String!, $commitmentTimestamp: BigFloat!, $chain: String!) {\n\tstateMachineUpdateEvents(\n\t\tfilter: {\n\t\t\tand: [\n\t\t\t\t{ stateMachineId: { equalTo: $statemachineId } }\n\t\t\t\t{ commitmentTimestamp: { greaterThanOrEqualTo: $commitmentTimestamp } }\n \t\t\t{ chain: { equalTo: $chain } }\n\t\t\t]\n\t\t}\n\t\torderBy: COMMITMENT_TIMESTAMP_DESC\n\t\tfirst: 1\n\t) {\n nodes {\n height\n stateMachineId\n chain\n blockHash\n blockNumber\n transactionHash\n commitmentTimestamp\n createdAt\n }\n }\n }\n`\n\nexport const ASSET_TELEPORTED_BY_PARAMS = `\nquery AssetTeleportedByParams($id: String!) {\n assetTeleported(id: $id) {\n id\n from\n to\n amount\n dest\n commitment\n createdAt\n blockNumber\n }\n}\n`\n\nexport const GET_RESPONSE_BY_REQUEST_ID = `\nquery GetResponseByRequestId($requestId: String!) {\n getResponses(filter: {requestId: {equalTo: $requestId}}) {\n nodes {\n id\n commitment\n responseMessage\n }\n }\n}\n`\n\nexport const ORDER_STATUS = `\nquery OrderStatus($commitment: String!) {\n orderPlaceds(\n filter: { commitment: { equalTo: $commitment } }\n ) {\n nodes {\n id\n user\n sourceChain\n destChain\n commitment\n deadline\n nonce\n fees\n inputTokens\n inputAmounts\n inputValuesUSD\n inputUSD\n outputTokens\n outputAmounts\n outputBeneficiaries\n calldata\n status\n createdAt\n blockNumber\n blockTimestamp\n transactionHash\n statusMetadata {\n nodes {\n status\n chain\n timestamp\n blockNumber\n transactionHash\n filler\n }\n }\n }\n }\n}`\n\nexport const TOKEN_GATEWAY_ASSET_TELEPORTED_STATUS = `\nquery TokenGatewayAssetTeleportedStatus($commitment: String!) {\n tokenGatewayAssetTeleporteds(\n filter: { commitment: { equalTo: $commitment } }\n ) {\n nodes {\n id\n from\n to\n sourceChain\n destChain\n commitment\n amount\n usdValue\n assetId\n redeem\n status\n createdAt\n blockNumber\n blockTimestamp\n transactionHash\n statusMetadata {\n nodes {\n status\n chain\n timestamp\n blockNumber\n transactionHash\n }\n }\n }\n }\n}`\n\nexport const TOKEN_PRICE = `\nquery TokenPrice($symbol: String!) {\n tokenPrices(\n filter: { symbol: { equalTo: $symbol } }\n ) {\n nodes {\n id\n symbol\n address\n currency\n price\n lastUpdatedAt\n }\n }\n}`\n\nexport const TOKEN_REGISTRY = `\nquery TokenRegistry($symbol: String!) {\n tokenRegistries(\n filter: { symbol: { equalTo: $symbol } }\n ) {\n nodes {\n id\n name\n symbol\n address\n updateFrequencySeconds\n lastUpdatedAt\n createdAt\n }\n }\n}`\n","import { GraphQLClient } from \"graphql-request\"\nimport { DEFAULT_LOGGER, REQUEST_STATUS_WEIGHTS, retryPromise, sleep } from \"./utils\"\nimport type {\n\tGetRequestResponse,\n\tGetRequestWithStatus,\n\tIndexerQueryClient,\n\tRequestResponse,\n\tRequestStatusKey,\n\tPostRequestWithStatus,\n\tOrderResponse,\n\tOrderWithStatus,\n\tTokenGatewayAssetTeleportedResponse,\n\tTokenGatewayAssetTeleportedWithStatus,\n\tTokenPrice,\n\tTokenPricesResponse,\n\tTokenRegistry,\n\tTokenRegistryResponse,\n\tHexString,\n\tAssetTeleported,\n\tAssetTeleportedResponse,\n} from \"./types\"\nimport type { ConsolaInstance } from \"consola\"\nimport {\n\tGET_REQUEST_STATUS,\n\tPOST_REQUEST_STATUS,\n\tORDER_STATUS,\n\tTOKEN_GATEWAY_ASSET_TELEPORTED_STATUS,\n\tTOKEN_PRICE,\n\tTOKEN_REGISTRY,\n\tASSET_TELEPORTED_BY_PARAMS,\n} from \"./queries\"\n\nexport function createQueryClient(config: { url: string }) {\n\treturn new GraphQLClient(config.url)\n}\n\n/**\n * Queries a request by CommitmentHash\n *\n * @example\n * import { createQueryClient, queryRequest } from \"@hyperbridge/sdk\"\n *\n * const queryClient = createQueryClient({\n * url: \"http://localhost:3000\", // URL of the Hyperbridge indexer API\n * })\n * const commitmentHash = \"0x....\"\n * const request = await queryPostRequest({ commitmentHash, queryClient })\n */\nexport function queryPostRequest(params: { commitmentHash: string; queryClient: IndexerQueryClient }) {\n\treturn _queryRequestInternal(params)\n}\n\n/**\n * Query for asset teleported events by sender, recipient, and destination chain\n * @param from - The sender address\n * @param to - The recipient address\n * @param dest - The destination chain ID\n * @returns The asset teleported event if found, undefined otherwise\n */\nexport async function queryAssetTeleported(params: {\n\tid: string\n\tqueryClient: IndexerQueryClient\n}): Promise<AssetTeleported | undefined> {\n\tconst { id, queryClient } = params\n\n\twhile (true) {\n\t\tconst response = await queryClient.request<AssetTeleportedResponse>(ASSET_TELEPORTED_BY_PARAMS, {\n\t\t\tid,\n\t\t})\n\n\t\tif (response?.assetTeleported) {\n\t\t\treturn response.assetTeleported\n\t\t} else {\n\t\t\tawait sleep(2000)\n\t\t}\n\t}\n}\n\n/**\n * Queries a GET Request by CommitmentHash\n *\n * @example\n * import { createQueryClient, queryRequest } from \"@hyperbridge/sdk\"\n *\n * const queryClient = createQueryClient({\n * url: \"http://localhost:3000\", // URL of the Hyperbridge indexer API\n * })\n * const commitmentHash = \"0x....\"\n * const request = await queryGetRequest({ commitmentHash, queryClient })\n */\nexport function queryGetRequest(params: { commitmentHash: string; queryClient: IndexerQueryClient }) {\n\treturn _queryGetRequestInternal(params)\n}\n\n/**\n * Queries an order by CommitmentHash\n *\n * @example\n * import { createQueryClient, queryOrder } from \"@hyperbridge/sdk\"\n *\n * const queryClient = createQueryClient({\n * url: \"http://localhost:3000\", // URL of the Hyperbridge indexer API\n * })\n * const commitmentHash = \"0x....\"\n * const order = await queryOrder({ commitmentHash, queryClient })\n */\nexport function queryOrder(params: { commitmentHash: string; queryClient: IndexerQueryClient }) {\n\treturn _queryOrderInternal(params)\n}\n\n/**\n * Internal function to query a token gateway asset teleported by CommitmentHash\n *\n * @param params - Parameters for querying the token gateway asset teleported\n * @returns Latest status and block metadata of the token gateway asset teleported\n */\nexport async function _queryTokenGatewayAssetTeleportedInternal(\n\tparams: InternalQueryParams,\n): Promise<TokenGatewayAssetTeleportedWithStatus | undefined> {\n\tconst { commitmentHash, queryClient: client, logger = DEFAULT_LOGGER } = params\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<TokenGatewayAssetTeleportedResponse>(TOKEN_GATEWAY_ASSET_TELEPORTED_STATUS, {\n\t\t\t\tcommitment: commitmentHash,\n\t\t\t})\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `querying 'TokenGatewayAssetTeleported' with Statuses by CommitmentHash(${commitmentHash})`,\n\t\t},\n\t)\n\n\tconst first_record = response.tokenGatewayAssetTeleporteds.nodes[0]\n\tif (!first_record) return\n\n\tlogger.trace(\"`TokenGatewayAssetTeleported` found\")\n\tconst { statusMetadata, ...first_node } = first_record\n\n\tconst statuses = structuredClone(statusMetadata.nodes).map((item) => ({\n\t\tstatus: item.status,\n\t\tmetadata: {\n\t\t\tblockHash: item.blockHash,\n\t\t\tblockNumber: Number.parseInt(item.blockNumber),\n\t\t\ttransactionHash: item.transactionHash,\n\t\t\ttimestamp: BigInt(item.timestamp),\n\t\t},\n\t}))\n\n\t// sort by ascending order\n\tconst sorted = statuses.sort((a, b) => {\n\t\treturn Number(a.metadata.timestamp) - Number(b.metadata.timestamp)\n\t})\n\n\treturn {\n\t\t...first_node,\n\t\tamount: BigInt(first_node.amount),\n\t\tblockNumber: BigInt(first_node.blockNumber),\n\t\tblockTimestamp: BigInt(first_node.blockTimestamp),\n\t\tcreatedAt: new Date(first_node.createdAt),\n\t\tstatuses: sorted,\n\t}\n}\n\ntype InternalQueryParams = {\n\tcommitmentHash: string\n\tqueryClient: IndexerQueryClient\n\tlogger?: ConsolaInstance\n}\n\n/**\n * Queries a request by CommitmentHash\n\n * @param hash - Can be commitment\n * @returns Latest status and block metadata of the request\n */\nexport async function _queryRequestInternal(params: InternalQueryParams): Promise<PostRequestWithStatus | undefined> {\n\tconst { commitmentHash: hash, queryClient: client, logger: logger_ = DEFAULT_LOGGER } = params\n\n\tconst logger = logger_.withTag(\"[queryRequest]\")\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<RequestResponse>(POST_REQUEST_STATUS, {\n\t\t\t\thash,\n\t\t\t})\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `querying 'Request' with Statuses by CommitmentHash(${hash})`,\n\t\t},\n\t)\n\n\tconst first_record = response.requests.nodes[0]\n\tif (!first_record) return\n\n\tlogger.trace(\"`Request` found\")\n\tconst { statusMetadata, ...first_node } = first_record\n\n\tconst statuses = structuredClone(statusMetadata.nodes).map((item) => ({\n\t\tstatus: item.status as any,\n\t\tmetadata: {\n\t\t\tblockHash: item.blockHash,\n\t\t\tblockNumber: Number.parseInt(item.blockNumber),\n\t\t\ttransactionHash: item.transactionHash,\n\t\t\ttimestamp: item?.timestamp,\n\t\t},\n\t}))\n\n\t// sort by ascending order\n\tconst sorted = statuses.sort(\n\t\t(a, b) =>\n\t\t\tREQUEST_STATUS_WEIGHTS[a.status as RequestStatusKey] - REQUEST_STATUS_WEIGHTS[b.status as RequestStatusKey],\n\t)\n\tlogger.trace(\"Statuses found\", statuses)\n\n\tconst request: PostRequestWithStatus = {\n\t\t...first_node,\n\t\ttimeoutTimestamp: BigInt(first_node.timeoutTimestamp),\n\t\tstatuses: sorted,\n\t}\n\n\treturn request\n}\n\n/**\n * Queries a request by any of its associated hashes and returns it alongside its statuses\n * Statuses will be one of SOURCE, HYPERBRIDGE_DELIVERED and DESTINATION\n *\n * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n * @returns Latest status and block metadata of the request\n */\nexport async function _queryGetRequestInternal(params: InternalQueryParams): Promise<GetRequestWithStatus | undefined> {\n\tconst { commitmentHash, queryClient: client, logger = DEFAULT_LOGGER } = params\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<GetRequestResponse>(GET_REQUEST_STATUS, {\n\t\t\t\tcommitment: commitmentHash,\n\t\t\t})\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `query \\`IGetRequest\\` with commitment hash ${commitmentHash}`,\n\t\t},\n\t)\n\n\tif (!response.getRequests.nodes[0]) return\n\n\tlogger.trace(\"`Request` found\")\n\n\tconst statuses = response.getRequests.nodes[0].statusMetadata.nodes.map((item) => ({\n\t\tstatus: item.status as any,\n\t\tmetadata: {\n\t\t\tblockHash: item.blockHash,\n\t\t\tblockNumber: Number.parseInt(item.blockNumber),\n\t\t\ttransactionHash: item.transactionHash,\n\t\t\ttimestamp: item?.timestamp,\n\t\t},\n\t}))\n\n\t// sort by ascending order\n\tconst sorted = statuses.sort((a, b) => {\n\t\treturn (\n\t\t\tREQUEST_STATUS_WEIGHTS[a.status as RequestStatusKey] - REQUEST_STATUS_WEIGHTS[b.status as RequestStatusKey]\n\t\t)\n\t})\n\n\tconst { statusMetadata, ...rest } = response.getRequests.nodes[0]\n\n\treturn {\n\t\t...rest,\n\t\tcommitment: commitmentHash as HexString,\n\t\ttimeoutTimestamp: BigInt(rest.timeoutTimestamp),\n\t\tnonce: BigInt(rest.nonce),\n\t\theight: BigInt(rest.height),\n\t\tstatuses: sorted,\n\t}\n}\n\n/**\n * Internal function to query an order by CommitmentHash\n *\n * @param params - Parameters for querying the order\n * @returns Latest status and block metadata of the order\n */\nexport async function _queryOrderInternal(params: InternalQueryParams): Promise<OrderWithStatus | undefined> {\n\tconst { commitmentHash, queryClient: client, logger = DEFAULT_LOGGER } = params\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<OrderResponse>(ORDER_STATUS, {\n\t\t\t\tcommitment: commitmentHash,\n\t\t\t})\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `querying 'Order' with Statuses by CommitmentHash(${commitmentHash})`,\n\t\t},\n\t)\n\n\tconst first_record = response.orderPlaceds.nodes[0]\n\tif (!first_record) return\n\n\tlogger.trace(\"`Order` found\")\n\tconst { statusMetadata, ...first_node } = first_record\n\n\tconst statuses = structuredClone(statusMetadata.nodes).map((item) => ({\n\t\tstatus: item.status,\n\t\tmetadata: {\n\t\t\tblockHash: item.blockHash,\n\t\t\tblockNumber: Number.parseInt(item.blockNumber),\n\t\t\ttransactionHash: item.transactionHash,\n\t\t\ttimestamp: BigInt(item.timestamp),\n\t\t\tfiller: item.filler,\n\t\t},\n\t}))\n\n\t// sort by ascending order\n\tconst sorted = statuses.sort((a, b) => {\n\t\t// Since OrderStatus and RequestStatus are different enums, we'll just sort by timestamp\n\t\treturn Number(a.metadata.timestamp) - Number(b.metadata.timestamp)\n\t})\n\n\tconst order: OrderWithStatus = {\n\t\t...first_node,\n\t\tdeadline: BigInt(first_node.deadline),\n\t\tnonce: BigInt(first_node.nonce),\n\t\tfees: BigInt(first_node.fees),\n\t\tinputAmounts: first_node.inputAmounts.map(BigInt),\n\t\toutputAmounts: first_node.outputAmounts.map(BigInt),\n\t\tblockNumber: BigInt(first_node.blockNumber),\n\t\tblockTimestamp: BigInt(first_node.blockTimestamp),\n\t\tcreatedAt: new Date(first_node.createdAt),\n\t\tstatuses: sorted,\n\t}\n\n\treturn order\n}\n\ntype TokenPriceQueryParams = {\n\tsymbol: string\n\tqueryClient: IndexerQueryClient\n\tlogger?: ConsolaInstance\n}\n\nexport async function _queryTokenPriceInternal(params: TokenPriceQueryParams): Promise<TokenPrice | undefined> {\n\tconst { symbol, queryClient: client, logger = DEFAULT_LOGGER } = params\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<TokenPricesResponse>(TOKEN_PRICE, { symbol })\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `querying 'TokenPrice' by Symbol(${symbol})`,\n\t\t},\n\t)\n\n\tconst item = response.tokenPrices.nodes?.[0]\n\tif (!item) return\n\n\tlogger.trace(\"`TokenPrice` found\")\n\treturn item\n}\n\ntype TokenRegistryQueryParams = {\n\tsymbol: string\n\tqueryClient: IndexerQueryClient\n\tlogger?: ConsolaInstance\n}\n\nexport async function _queryTokenRegistryInternal(\n\tparams: TokenRegistryQueryParams,\n): Promise<TokenRegistry | undefined> {\n\tconst { symbol, queryClient: client, logger = DEFAULT_LOGGER } = params\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<TokenRegistryResponse>(TOKEN_REGISTRY, { symbol })\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `querying 'TokenRegistry' by Symbol(${symbol})`,\n\t\t},\n\t)\n\n\tconst item = response.tokenRegistries.nodes?.[0]\n\tif (!item) return\n\n\tlogger.trace(\"`TokenRegistry` found\")\n\n\treturn {\n\t\tid: item.id,\n\t\tname: item.name,\n\t\tsymbol: item.symbol,\n\t\taddress: item.address,\n\t\tupdateFrequencySeconds: item.updateFrequencySeconds,\n\t\tlastUpdatedAt: item.lastUpdatedAt,\n\t\tcreatedAt: new Date(item.createdAt),\n\t}\n}\n","import { type ConsolaInstance, LogLevels, createConsola } from \"consola\"\nimport { isNil, maxBy } from \"lodash-es\"\nimport { pad, toHex } from \"viem\"\n\n// @ts-ignore\nimport mergeRace from \"@async-generator/merge-race\"\n\nimport type {\n\tAssetTeleported,\n\tAssetTeleportedResponse,\n\tBlockMetadata,\n\tClientConfig,\n\tGetRequestResponse,\n\tGetRequestWithStatus,\n\tGetResponseByRequestIdResponse,\n\tHexString,\n\tOrderWithStatus,\n\tPostRequestStatus,\n\tPostRequestTimeoutStatus,\n\tPostRequestWithStatus,\n\tRequestStatusKey,\n\tRequestStatusWithMetadata,\n\tResponseCommitmentWithValues,\n\tRetryConfig,\n\tStateMachineResponse,\n\tStateMachineUpdate,\n\tTimeoutStatusKey,\n\tTokenGatewayAssetTeleportedWithStatus,\n} from \"@/types\"\n\nimport { type IChain, type SubstrateChain, getChain } from \"@/chain\"\nimport {\n\tASSET_TELEPORTED_BY_PARAMS,\n\tGET_RESPONSE_BY_REQUEST_ID,\n\tSTATE_MACHINE_UPDATES_BY_HEIGHT,\n\tSTATE_MACHINE_UPDATES_BY_TIMESTAMP,\n} from \"@/queries\"\nimport {\n\tCOMBINED_STATUS_WEIGHTS,\n\tDEFAULT_POLL_INTERVAL,\n\tREQUEST_STATUS_WEIGHTS,\n\tTIMEOUT_STATUS_WEIGHTS,\n\tdateStringtoTimestamp,\n\tparseStateMachineId,\n\tpostRequestCommitment,\n\tretryPromise,\n\tsleep,\n\twaitForChallengePeriod,\n} from \"@/utils\"\nimport {\n\t_queryGetRequestInternal,\n\t_queryOrderInternal,\n\t_queryRequestInternal,\n\t_queryTokenGatewayAssetTeleportedInternal,\n} from \"./query-client\"\n\nimport { OrderStatus, RequestStatus, TeleportStatus, TimeoutStatus } from \"@/types\"\n\nimport type { IndexerQueryClient } from \"@/types\"\nimport { AbortSignalInternal, ExpectedError } from \"./utils/exceptions\"\n\n/**\n * IndexerClient provides methods for interacting with the Hyperbridge indexer.\n *\n * This client facilitates querying and tracking cross-chain requests and their status\n * through the Hyperbridge protocol. It supports:\n *\n * - Querying state machine updates by block height or timestamp\n * - Retrieving request status information by transaction hash\n * - Monitoring request status changes through streaming interfaces\n * - Handling request timeout flows and related proof generation\n * - Tracking request finalization across source and destination chains\n *\n * The client implements automatic retries with exponential backoff for network\n * resilience and provides both simple query methods and advanced streaming\n * interfaces for real-time status tracking.\n *\n * The URLs provided in the configuration must point to archive nodes to allow the client to query for storage proofs\n * of potentially much older blocks. Regular nodes only store the state for recent blocks and will not be able\n * to provide the necessary proofs for cross-chain verification, especially in timeout scenarios.\n *\n * @example\n * ```typescript\n * const client = new IndexerClient({\n * url: \"https://indexer.hyperbridge.xyz/graphql\",\n * pollInterval: 2000,\n * source: {\n *\t\tstateMachineId: \"EVM-1\",\n * \t\tconsensusStateId: \"ETH0\"\n *\t\trpcUrl: \"\",\n *\t\thost: \"0x87ea45..\",\n * \t},\n * dest: {\n *\t\tstateMachineId: \"EVM-42161\",\n * \t\tconsensusStateId: \"ETH0\"\n *\t\trpcUrl: \"\",\n *\t\thost: \"0x87ea42345..\",\n * \t},\n * hyperbridge: {\n * stateMachineId: \"POLKADOT-3367\",\n * consensusStateId: \"DOT0\"\n * wsUrl: \"ws://localhost:9944\"\n * }\n * });\n *\n * // Query a request status\n * const status = await client.queryRequestWithStatus(\"0x1234...\");\n *\n * // Stream status updates\n * for await (const update of client.postRequestStatusStream(\"0x1234...\")) {\n * console.log(`Request status: ${update.status}`);\n * }\n * ```\n */\nexport class IndexerClient {\n\t/**\n\t * GraphQL client used for making requests to the indexer\n\t */\n\tprivate client: IndexerQueryClient\n\n\t/**\n\t * Configuration for the IndexerClient including URLs, poll intervals, and chain-specific settings\n\t */\n\tprivate config: ClientConfig\n\n\tprivate logger: ConsolaInstance\n\n\t/**\n\t * Default configuration for retry behavior when network requests fail\n\t * - maxRetries: Maximum number of retry attempts before failing\n\t * - backoffMs: Initial backoff time in milliseconds (doubles with each retry)\n\t */\n\tprivate defaultRetryConfig: RetryConfig = {\n\t\tmaxRetries: 3,\n\t\tbackoffMs: 1000,\n\t}\n\n\t/**\n\t * Creates a new IndexerClient instance\n\t */\n\tconstructor(config: PartialClientConfig) {\n\t\tthis.client = config.queryClient\n\t\tthis.config = {\n\t\t\tpollInterval: DEFAULT_POLL_INTERVAL,\n\t\t\t...config,\n\t\t}\n\t\tthis.logger = createConsola({\n\t\t\tlevel: LogLevels[config.tracing ? \"trace\" : \"info\"],\n\t\t\tformatOptions: {\n\t\t\t\tcolumns: 80,\n\t\t\t\tcolors: true,\n\t\t\t\tcompact: true,\n\t\t\t\tdate: false,\n\t\t\t},\n\t\t})\n\t}\n\n\t/**\n\t * Query for a single state machine update event greater than or equal to the given height.\n\t * @params statemachineId - ID of the state machine\n\t * @params height - Starting block height\n\t * @params chain - The identifier for the chain where the state machine update should be queried (corresponds to a stateMachineId)\n\t * @returns Closest state machine update\n\t */\n\tasync queryStateMachineUpdateByHeight({\n\t\tstatemachineId,\n\t\theight,\n\t\tchain,\n\t}: {\n\t\tstatemachineId: string\n\t\tchain: string\n\t\theight: number\n\t}): Promise<StateMachineUpdate | undefined> {\n\t\tconst logger = this.logger.withTag(\"[queryStateMachineUpdateByHeight]()\")\n\t\tconst message = `querying StateMachineId(${statemachineId}) update by Height(${height}) in chain Chain(${chain})`\n\n\t\tconst response = await this.withRetry(\n\t\t\t() => {\n\t\t\t\treturn this.client.request<StateMachineResponse>(STATE_MACHINE_UPDATES_BY_HEIGHT, {\n\t\t\t\t\tstatemachineId,\n\t\t\t\t\theight,\n\t\t\t\t\tchain,\n\t\t\t\t})\n\t\t\t},\n\t\t\t{ logger: logger, logMessage: message },\n\t\t)\n\n\t\tconst first_node = response?.stateMachineUpdateEvents?.nodes[0]\n\t\tif (first_node?.createdAt) {\n\t\t\t//@ts-ignore\n\t\t\tfirst_node.timestamp = Math.floor(dateStringtoTimestamp(first_node.createdAt) / 1000)\n\t\t}\n\t\tlogger.trace(\"Response >\", first_node)\n\n\t\t//@ts-ignore\n\t\treturn first_node\n\t}\n\n\t/**\n\t * Query for a single state machine update event greater than or equal to the given timestamp.\n\t * @params statemachineId - ID of the state machine\n\t * @params timestamp - Starting block timestamp\n\t * @params chain - The identifier for the chain where the state machine update should be queried (corresponds to a stateMachineId)\n\t * @returns Closest state machine update\n\t */\n\tasync queryStateMachineUpdateByTimestamp({\n\t\tstatemachineId,\n\t\tcommitmentTimestamp,\n\t\tchain,\n\t}: {\n\t\tstatemachineId: string\n\t\tcommitmentTimestamp: bigint\n\t\tchain: string\n\t}): Promise<StateMachineUpdate | undefined> {\n\t\tconst logger = this.logger.withTag(\"[queryStateMachineUpdateByTimestamp]\")\n\t\tconst message = `querying StateMachineId(${statemachineId}) update by Timestamp(${commitmentTimestamp}) in Chain(${chain})`\n\n\t\tconst response = await this.withRetry(\n\t\t\t() =>\n\t\t\t\tthis.client.request<StateMachineResponse>(STATE_MACHINE_UPDATES_BY_TIMESTAMP, {\n\t\t\t\t\tstatemachineId,\n\t\t\t\t\tcommitmentTimestamp: commitmentTimestamp.toString(),\n\t\t\t\t\tchain,\n\t\t\t\t}),\n\t\t\t{ logger, logMessage: message },\n\t\t)\n\n\t\tconst first_node = response?.stateMachineUpdateEvents?.nodes[0]\n\t\tif (first_node?.createdAt) {\n\t\t\t//@ts-ignore\n\t\t\tfirst_node.timestamp = Math.floor(dateStringtoTimestamp(first_node.createdAt) / 1000)\n\t\t}\n\t\tlogger.trace(\"Response >\", first_node)\n\n\t\t//@ts-ignore\n\t\treturn first_node\n\t}\n\n\t/**\n\t * Queries a request by CommitmentHash\n\t *\n\t * @param commitment_hash - Can be commitment\n\t * @returns Latest status and block metadata of the request\n\t */\n\tasync queryPostRequest(commitment_hash: HexString): Promise<PostRequestWithStatus | undefined> {\n\t\treturn _queryRequestInternal({\n\t\t\tcommitmentHash: commitment_hash,\n\t\t\tqueryClient: this.client,\n\t\t\tlogger: this.logger,\n\t\t})\n\t}\n\n\t/**\n\t * Queries a request by any of its associated hashes and returns it alongside its statuses\n\t * Statuses will be one of SOURCE, HYPERBRIDGE_DELIVERED and DESTINATION\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns Latest status and block metadata of the request\n\t */\n\tasync queryGetRequest(hash: HexString): Promise<GetRequestWithStatus | undefined> {\n\t\treturn _queryGetRequestInternal({\n\t\t\tcommitmentHash: hash,\n\t\t\tqueryClient: this.client,\n\t\t\tlogger: this.logger,\n\t\t})\n\t}\n\n\t/**\n\t * Queries the response associated with a specific request ID and returns its commitment\n\t * @param requestId - The ID of the request to find the associated response for\n\t * @returns The response associated with the given request ID, or undefined if not found\n\t */\n\tasync queryResponseByRequestId(requestId: string): Promise<ResponseCommitmentWithValues | undefined> {\n\t\tconst response = await this.withRetry(() =>\n\t\t\tthis.client.request<GetResponseByRequestIdResponse>(GET_RESPONSE_BY_REQUEST_ID, {\n\t\t\t\trequestId,\n\t\t\t}),\n\t\t)\n\n\t\t// If no responses are found or nodes array is empty, return undefined\n\t\tif (!response.getResponses.nodes.length) return undefined\n\n\t\t// Return just the first response\n\t\tconst firstResponse = response.getResponses.nodes[0]\n\n\t\treturn {\n\t\t\tcommitment: firstResponse.commitment,\n\t\t\tvalues: firstResponse.responseMessage,\n\t\t}\n\t}\n\n\t/**\n\t * Enhances a request with finality events by querying state machine updates.\n\t *\n\t * This method augments a request object with additional inferred status events\n\t * that represent chain finality confirmations. It adds:\n\t * - SOURCE_FINALIZED: When the source chain has finalized the request\n\t * - HYPERBRIDGE_FINALIZED: When Hyperbridge has finalized the delivery confirmation\n\t *\n\t * The method also generates appropriate calldata for submitting cross-chain proofs\n\t * when applicable.\n\t *\n\t * @param request - The request to enhance with finality events\n\t * @returns The request with finality events added\n\t * @private\n\t */\n\tprivate async addRequestFinalityEvents(request: PostRequestWithStatus): Promise<PostRequestWithStatus> {\n\t\tconst events: RequestStatusWithMetadata[] = []\n\n\t\tconst addFinalityEvents = (request: PostRequestWithStatus) => {\n\t\t\tthis.logger.trace(`Added ${events.length} \\`Request\\` finality events`, events)\n\n\t\t\trequest.statuses = [...request.statuses, ...events]\n\t\t\treturn request\n\t\t}\n\n\t\tlet hyperbridgeDelivered: RequestStatusWithMetadata | undefined\n\n\t\tif (request.source === this.config.hyperbridge.stateMachineId) {\n\t\t\t// the first status contains the blocknumber of the initial request\n\t\t\thyperbridgeDelivered = request.statuses[0]\n\t\t} else {\n\t\t\t// we assume there's always a SOURCE event which contains the blocknumber of the initial request\n\t\t\tconst sourceFinality = await this.queryStateMachineUpdateByHeight({\n\t\t\t\tstatemachineId: request.source,\n\t\t\t\theight: request.statuses[0].metadata.blockNumber,\n\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t})\n\n\t\t\t// no finality event found, return request as is\n\t\t\tif (!sourceFinality) return addFinalityEvents(request)\n\n\t\t\t// Insert finality event into request.statuses at index 1\n\t\t\tevents.push({\n\t\t\t\tstatus: RequestStatus.SOURCE_FINALIZED,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblockHash: sourceFinality.blockHash,\n\t\t\t\t\tblockNumber: sourceFinality.height,\n\t\t\t\t\ttransactionHash: sourceFinality.transactionHash,\n\t\t\t\t\ttimestamp: sourceFinality.timestamp,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\t// check if there's a hyperbridge delivered event\n\t\t\thyperbridgeDelivered = request.statuses.find((item) => item.status === RequestStatus.HYPERBRIDGE_DELIVERED)\n\n\t\t\tif (!hyperbridgeDelivered) return addFinalityEvents(request)\n\t\t}\n\n\t\t// no need to query finality event if destination is hyperbridge\n\t\tif (request.dest === this.config.hyperbridge.stateMachineId) {\n\t\t\treturn addFinalityEvents(request)\n\t\t}\n\n\t\tconst hyperbridgeFinality = await this.queryStateMachineUpdateByHeight({\n\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\theight: hyperbridgeDelivered.metadata.blockNumber,\n\t\t\tchain: request.dest,\n\t\t})\n\n\t\tif (!hyperbridgeFinality) return addFinalityEvents(request)\n\n\t\t// check if request receipt exists on destination chain\n\t\tconst destChain = await getChain(this.config.dest)\n\t\tconst hyperbridge = await getChain({\n\t\t\t...this.config.hyperbridge,\n\t\t\thasher: \"Keccak\",\n\t\t})\n\n\t\tconst proof = await hyperbridge.queryProof(\n\t\t\t{ Requests: [postRequestCommitment(request).commitment] },\n\t\t\trequest.dest,\n\t\t\tBigInt(hyperbridgeFinality.height),\n\t\t)\n\n\t\tconst calldata = destChain.encode({\n\t\t\tkind: \"PostRequest\",\n\t\t\tproof: {\n\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t\tproof,\n\t\t\t\theight: BigInt(hyperbridgeFinality.height),\n\t\t\t},\n\t\t\trequests: [request],\n\t\t\tsigner: pad(\"0x\"),\n\t\t})\n\n\t\tevents.push({\n\t\t\tstatus: RequestStatus.HYPERBRIDGE_FINALIZED,\n\t\t\tmetadata: {\n\t\t\t\tblockHash: hyperbridgeFinality.blockHash,\n\t\t\t\tblockNumber: hyperbridgeFinality.height,\n\t\t\t\ttransactionHash: hyperbridgeFinality.transactionHash,\n\t\t\t\ttimestamp: hyperbridgeFinality.timestamp,\n\t\t\t\tcalldata,\n\t\t\t},\n\t\t})\n\n\t\treturn addFinalityEvents(request)\n\t}\n\n\t/**\n\t * Adds timeout finality events to a request by querying for relevant timeout proofs and\n\t * chain state necessary for timeout processing.\n\t *\n\t * This method enhances a request object with additional status events related to the\n\t * timeout flow, including:\n\t * - PENDING_TIMEOUT: When a request has passed its timeout timestamp\n\t * - DESTINATION_FINALIZED: When the destination chain has finalized the timeout timestamp\n\t * - HYPERBRIDGE_FINALIZED_TIMEOUT: When hyperbridge has finalized the timeout state\n\t *\n\t * The method also generates appropriate calldata for submitting timeout proofs.\n\t *\n\t * @param request - Request to fill timeout events for\n\t * @returns Request with timeout events filled in, including any proof calldata for timeout submissions\n\t * @private\n\t */\n\tprivate async addTimeoutFinalityEvents(request: PostRequestWithStatus): Promise<PostRequestWithStatus> {\n\t\t// check if request receipt exists on destination chain\n\t\tconst destChain = await getChain(this.config.dest)\n\t\tconst hyperbridge = await getChain({\n\t\t\t...this.config.hyperbridge,\n\t\t\thasher: \"Keccak\",\n\t\t})\n\t\tconst events: RequestStatusWithMetadata[] = []\n\t\tconst commitment = postRequestCommitment(request).commitment\n\t\tconst reciept = await destChain.queryRequestReceipt(commitment)\n\t\tconst destTimestamp = await destChain.timestamp()\n\n\t\tconst addTimeoutEvents = (req: PostRequestWithStatus) => {\n\t\t\tthis.logger.trace(`Added ${events.length} timeout events`, events)\n\t\t\trequest.statuses = [...req.statuses, ...events]\n\t\t\treturn request\n\t\t}\n\n\t\tif (request.timeoutTimestamp === 0n) {\n\t\t\t// Early exit for requests with no timeout configured\n\t\t\t// This prevents unnecessary timeout processing and expensive chain queries\n\t\t\t// The events array is still empty at this point, so no timeout events are added\n\t\t\treturn addTimeoutEvents(request)\n\t\t}\n\n\t\t// request not timed out\n\t\tif (reciept || request.timeoutTimestamp > destTimestamp) {\n\t\t\treturn addTimeoutEvents(request)\n\t\t}\n\n\t\tconst is_finished = request.statuses.find((item) => item.status === RequestStatus.DESTINATION)\n\n\t\tif (!is_finished) {\n\t\t\tevents.push({\n\t\t\t\tstatus: TimeoutStatus.PENDING_TIMEOUT,\n\t\t\t\tmetadata: { blockHash: \"0x\", blockNumber: 0, transactionHash: \"0x\" },\n\t\t\t})\n\t\t}\n\n\t\tconst delivered = request.statuses.find((item) => {\n\t\t\treturn item.status === RequestStatus.HYPERBRIDGE_DELIVERED\n\t\t})\n\n\t\tlet hyperbridgeFinalized: StateMachineUpdate | undefined\n\t\tif (!delivered) {\n\t\t\t// either the request was never delivered to hyperbridge\n\t\t\t// or hyperbridge was the destination of the request\n\t\t\thyperbridgeFinalized = await this.queryStateMachineUpdateByTimestamp({\n\t\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\t\tcommitmentTimestamp: request.timeoutTimestamp,\n\t\t\t\tchain: request.source,\n\t\t\t})\n\t\t} else {\n\t\t\tconst destFinalized = await this.queryStateMachineUpdateByTimestamp({\n\t\t\t\tstatemachineId: request.dest,\n\t\t\t\tcommitmentTimestamp: request.timeoutTimestamp,\n\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t})\n\n\t\t\tif (!destFinalized) return addTimeoutEvents(request)\n\n\t\t\tevents.push({\n\t\t\t\tstatus: TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblockHash: destFinalized.blockHash,\n\t\t\t\t\tblockNumber: destFinalized.blockNumber,\n\t\t\t\t\ttransactionHash: destFinalized.transactionHash,\n\t\t\t\t\ttimestamp: destFinalized.timestamp,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\t// if the source is the hyperbridge state machine, no further action is needed\n\t\t\t// use the timeout stream to timeout on hyperbridge\n\t\t\tif (request.source === this.config.hyperbridge.stateMachineId) return request\n\n\t\t\tconst hyperbridgeTimedOut = request.statuses.find(\n\t\t\t\t(item) => item.status === TimeoutStatus.HYPERBRIDGE_TIMED_OUT,\n\t\t\t)\n\t\t\tif (!hyperbridgeTimedOut) return addTimeoutEvents(request)\n\t\t\thyperbridgeFinalized = await this.queryStateMachineUpdateByHeight({\n\t\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\t\theight: hyperbridgeTimedOut.metadata.blockNumber,\n\t\t\t\tchain: request.source,\n\t\t\t})\n\t\t}\n\n\t\tif (!hyperbridgeFinalized) return addTimeoutEvents(request)\n\n\t\tconst proof = await hyperbridge.queryStateProof(BigInt(hyperbridgeFinalized.height), [\n\t\t\thyperbridge.requestReceiptKey(commitment),\n\t\t])\n\t\tconst sourceChain = await getChain(this.config.source)\n\t\tconst calldata = sourceChain.encode({\n\t\t\tkind: \"TimeoutPostRequest\",\n\t\t\tproof: {\n\t\t\t\tproof,\n\t\t\t\theight: BigInt(hyperbridgeFinalized.height),\n\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t},\n\t\t\trequests: [\n\t\t\t\t{\n\t\t\t\t\tsource: request.source,\n\t\t\t\t\tdest: request.dest,\n\t\t\t\t\tfrom: request.from,\n\t\t\t\t\tto: request.to,\n\t\t\t\t\tnonce: request.nonce,\n\t\t\t\t\tbody: request.body,\n\t\t\t\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tevents.push({\n\t\t\tstatus: TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT,\n\t\t\tmetadata: {\n\t\t\t\tblockHash: hyperbridgeFinalized.blockHash,\n\t\t\t\tblockNumber: hyperbridgeFinalized.blockNumber,\n\t\t\t\ttransactionHash: hyperbridgeFinalized.transactionHash,\n\t\t\t\ttimestamp: hyperbridgeFinalized.timestamp,\n\t\t\t\tcalldata,\n\t\t\t},\n\t\t})\n\n\t\treturn addTimeoutEvents(request)\n\t}\n\n\t/**\n\t * Queries a request returns it alongside its statuses,\n\t * including any finalization events.\n\t * @param hash - Commitment hash\n\t * @returns Full request data with all inferred status events, including SOURCE_FINALIZED and HYPERBRIDGE_FINALIZED\n\t * @remarks Unlike queryRequest(), this method adds derived finalization status events by querying state machine updates\n\t */\n\tasync queryRequestWithStatus(hash: HexString): Promise<PostRequestWithStatus | undefined> {\n\t\tlet request = await this.queryPostRequest(hash)\n\n\t\tif (!request) return\n\t\trequest = await this.addRequestFinalityEvents(request)\n\t\trequest = await this.addTimeoutFinalityEvents(request)\n\n\t\t// ensure all statuses are sorted by weight\n\t\trequest.statuses = request.statuses.sort(\n\t\t\t(a, b) => COMBINED_STATUS_WEIGHTS[a.status] - COMBINED_STATUS_WEIGHTS[b.status],\n\t\t)\n\n\t\treturn request\n\t}\n\n\t/**\n\t * Queries a GET request and returns it alongside its statuses,\n\t * including any finalization events.\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns Full GET request data with all inferred status events, including SOURCE_FINALIZED and HYPERBRIDGE_FINALIZED\n\t * @remarks Unlike queryGetRequest(), this method adds derived finalization status events by querying state machine updates\n\t */\n\tasync queryGetRequestWithStatus(hash: HexString): Promise<GetRequestWithStatus | undefined> {\n\t\tlet request = await this.queryGetRequest(hash)\n\n\t\tif (!request) return\n\n\t\trequest = await this.addGetRequestFinalityEvents(request)\n\n\t\trequest.statuses = request.statuses.sort(\n\t\t\t(a, b) => COMBINED_STATUS_WEIGHTS[a.status] - COMBINED_STATUS_WEIGHTS[b.status],\n\t\t)\n\n\t\treturn request\n\t}\n\n\t/**\n\t * Enhances a GET request with finality events by querying state machine updates.\n\t *\n\t * This method augments a GET request object with additional inferred status events\n\t * that represent chain finality confirmations. It adds:\n\t * - SOURCE_FINALIZED: When the source chain has finalized the request\n\t * - HYPERBRIDGE_FINALIZED: When Hyperbridge has finalized the delivery confirmation and response is ready\n\t *\n\t * The method also generates appropriate calldata for submitting cross-chain proofs\n\t * when applicable.\n\t *\n\t * @param request - The GET request to enhance with finality events\n\t * @returns The request with finality events added\n\t * @private\n\t */\n\tprivate async addGetRequestFinalityEvents(request: GetRequestWithStatus): Promise<GetRequestWithStatus> {\n\t\tconst events: RequestStatusWithMetadata[] = []\n\n\t\tconst addFinalityEvents = (request: GetRequestWithStatus) => {\n\t\t\tthis.logger.trace(`Added ${events.length} \\`GetRequest\\` finality events`, events)\n\n\t\t\trequest.statuses = [...request.statuses, ...events]\n\t\t\treturn request\n\t\t}\n\n\t\tlet hyperbridgeDelivered: RequestStatusWithMetadata | undefined\n\n\t\tif (request.source === this.config.hyperbridge.stateMachineId) {\n\t\t\thyperbridgeDelivered = request.statuses[0]\n\t\t\treturn addFinalityEvents(request)\n\t\t} else {\n\t\t\tconst sourceFinality = await this.queryStateMachineUpdateByHeight({\n\t\t\t\tstatemachineId: request.source,\n\t\t\t\theight: request.statuses[0].metadata.blockNumber,\n\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t})\n\n\t\t\tif (!sourceFinality) return addFinalityEvents(request)\n\n\t\t\tevents.push({\n\t\t\t\tstatus: RequestStatus.SOURCE_FINALIZED,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblockHash: sourceFinality.blockHash,\n\t\t\t\t\tblockNumber: sourceFinality.height,\n\t\t\t\t\ttransactionHash: sourceFinality.transactionHash,\n\t\t\t\t\ttimestamp: sourceFinality.timestamp,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\thyperbridgeDelivered = request.statuses.find((item) => item.status === RequestStatus.HYPERBRIDGE_DELIVERED)\n\n\t\t\tif (!hyperbridgeDelivered) return addFinalityEvents(request)\n\t\t}\n\n\t\tconst hyperbridgeFinality = await this.queryStateMachineUpdateByHeight({\n\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\theight: hyperbridgeDelivered.metadata.blockNumber,\n\t\t\tchain: request.source,\n\t\t})\n\n\t\tif (!hyperbridgeFinality) return addFinalityEvents(request)\n\n\t\tconst sourceChain = await getChain(this.config.source)\n\t\tconst hyperbridge = await getChain({\n\t\t\t...this.config.hyperbridge,\n\t\t\thasher: \"Keccak\",\n\t\t})\n\n\t\ttry {\n\t\t\tconst response = await this.queryResponseByRequestId(request.commitment)\n\n\t\t\tif (!response) return addFinalityEvents(request)\n\n\t\t\tconst proof = await hyperbridge.queryProof(\n\t\t\t\t{ Responses: [response.commitment as HexString] },\n\t\t\t\trequest.source,\n\t\t\t\tBigInt(hyperbridgeFinality.height),\n\t\t\t)\n\n\t\t\tconst calldata = sourceChain.encode({\n\t\t\t\tkind: \"GetResponse\",\n\t\t\t\tproof: {\n\t\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t\t\tproof,\n\t\t\t\t\theight: BigInt(hyperbridgeFinality.height),\n\t\t\t\t},\n\t\t\t\tresponses: [\n\t\t\t\t\t{\n\t\t\t\t\t\tget: request,\n\t\t\t\t\t\tvalues: request.keys.map((key, index) => ({\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: (response.values[index] as HexString) || \"0x\",\n\t\t\t\t\t\t})),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tsigner: pad(\"0x\"),\n\t\t\t})\n\n\t\t\tevents.push({\n\t\t\t\tstatus: RequestStatus.HYPERBRIDGE_FINALIZED,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblockHash: hyperbridgeFinality.blockHash,\n\t\t\t\t\tblockNumber: hyperbridgeFinality.height,\n\t\t\t\t\ttransactionHash: hyperbridgeFinality.transactionHash,\n\t\t\t\t\ttimestamp: hyperbridgeFinality.timestamp,\n\t\t\t\t\tcalldata,\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tthis.logger.trace(\"Could not generate HYPERBRIDGE_FINALIZED event for GET request:\", error)\n\t\t}\n\n\t\treturn addFinalityEvents(request)\n\t}\n\n\t/**\n\t * Create a Stream of status updates for a post request.\n\t * Stream ends when either the request reaches the destination or times out.\n\t * If the stream yields TimeoutStatus.PENDING_TIMEOUT, use postRequestTimeoutStream() to begin timeout processing.\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t * @example\n\t *\n\t * let client = new IndexerClient(config)\n\t * let stream = client.postRequestStatusStream(hash)\n\t *\n\t * // you can use a for-await-of loop\n\t * for await (const status of stream) {\n\t * console.log(status)\n\t * }\n\t *\n\t * // you can also use a while loop\n\t * while (true) {\n\t * const status = await stream.next()\n\t * if (status.done) {\n\t * break\n\t * }\n\t * console.log(status.value)\n\t * }\n\t *\n\t */\n\tasync *postRequestStatusStream(hash: HexString): AsyncGenerator<RequestStatusWithMetadata, void> {\n\t\tconst controller = new AbortController()\n\t\tconst logger = this.logger.withTag(\"[postRequestStatusStream]\")\n\n\t\ttry {\n\t\t\tconst request = await this.waitOrAbort({\n\t\t\t\tsignal: controller.signal,\n\t\t\t\tpromise: () => this.queryPostRequest(hash),\n\t\t\t})\n\n\t\t\tlogger.trace(\"`Request` found\")\n\t\t\tconst chain = await getChain(this.config.dest)\n\t\t\tconst timeoutStream =\n\t\t\t\trequest.timeoutTimestamp > 0n ? this.timeoutStream(request.timeoutTimestamp, chain) : undefined\n\t\t\tconst statusStream = this.postRequestStatusStreamInternal(hash, controller.signal)\n\n\t\t\tlogger.trace(\"Listening for events\")\n\t\t\tconst combined = timeoutStream ? mergeRace(timeoutStream, statusStream) : statusStream\n\n\t\t\tlogger.trace(\"Listening for events\")\n\t\t\tlet item = await combined.next()\n\n\t\t\twhile (!item.done) {\n\t\t\t\tlogger.trace(`Yielding Event(${item.value.status})`)\n\n\t\t\t\tyield item.value\n\t\t\t\titem = await combined.next()\n\t\t\t}\n\n\t\t\tlogger.trace(\"Streaming complete\")\n\t\t} catch (error) {\n\t\t\tif (!AbortSignalInternal.isError(error)) {\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t\tcontroller.abort()\n\t\treturn\n\t}\n\n\t/*\n\t * Returns a generator that will yield true if the request is timed out\n\t * If the request does not have a timeout, it will never yield\n\t * @param request - Request to timeout\n\t */\n\tasync *timeoutStream(timeoutTimestamp: bigint, chain: IChain): AsyncGenerator<RequestStatusWithMetadata, void> {\n\t\tconst logger = this.logger.withTag(\"[timeoutStream()]\")\n\n\t\tif (timeoutTimestamp > 0n) {\n\t\t\tlet timestamp = await chain.timestamp()\n\n\t\t\twhile (timestamp < timeoutTimestamp) {\n\t\t\t\tlogger.trace(\"Comparing timeout timestamps\", { control: timeoutTimestamp, latest: timestamp })\n\n\t\t\t\tconst diff = BigInt(timeoutTimestamp) - BigInt(timestamp)\n\t\t\t\tawait this.sleep_for(Number(diff))\n\t\t\t\ttimestamp = await chain.timestamp()\n\t\t\t}\n\n\t\t\tyield {\n\t\t\t\tstatus: TimeoutStatus.PENDING_TIMEOUT,\n\t\t\t\tmetadata: { blockHash: \"0x\", blockNumber: 0, transactionHash: \"0x\" },\n\t\t\t}\n\n\t\t\treturn\n\t\t}\n\t}\n\n\t/**\n\t * Create a Stream of status updates\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t */\n\tprivate async *postRequestStatusStreamInternal(\n\t\thash: HexString,\n\t\tsignal: AbortSignal,\n\t): AsyncGenerator<RequestStatusWithMetadata, void> {\n\t\tlet request = await this.waitOrAbort({ signal, promise: () => this.queryPostRequest(hash) })\n\n\t\tlet status: RequestStatusKey =\n\t\t\trequest.source === this.config.hyperbridge.stateMachineId\n\t\t\t\t? RequestStatus.HYPERBRIDGE_DELIVERED\n\t\t\t\t: RequestStatus.SOURCE\n\n\t\tconst latestMetadata = request.statuses[request.statuses.length - 1]\n\n\t\tconst latest_request = maxBy(\n\t\t\t[status, latestMetadata.status as RequestStatusKey],\n\t\t\t(item) => REQUEST_STATUS_WEIGHTS[item],\n\t\t)\n\n\t\tif (!latest_request) return\n\n\t\t// start with the latest status\n\t\tstatus = latest_request\n\n\t\twhile (true) {\n\t\t\tswitch (status) {\n\t\t\t\t// request has been dispatched from source chain\n\t\t\t\tcase RequestStatus.SOURCE: {\n\t\t\t\t\tconst sourceUpdate = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\tthis.queryStateMachineUpdateByHeight({\n\t\t\t\t\t\t\t\tstatemachineId: request.source,\n\t\t\t\t\t\t\t\theight: request.statuses[0].metadata.blockNumber,\n\t\t\t\t\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.SOURCE_FINALIZED,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: sourceUpdate.blockHash,\n\t\t\t\t\t\t\tblockNumber: sourceUpdate.height,\n\t\t\t\t\t\t\ttransactionHash: sourceUpdate.transactionHash,\n\t\t\t\t\t\t\ttimestamp: sourceUpdate.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\n\t\t\t\t\tstatus = RequestStatus.SOURCE_FINALIZED\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// finality proofs for request has been verified on Hyperbridge\n\t\t\t\tcase RequestStatus.SOURCE_FINALIZED: {\n\t\t\t\t\t// wait for the request to be delivered on Hyperbridge\n\t\t\t\t\trequest = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () => this.queryPostRequest(hash),\n\t\t\t\t\t\tpredicate: (request) => !request || request.statuses.length < 2,\n\t\t\t\t\t})\n\n\t\t\t\t\tstatus =\n\t\t\t\t\t\trequest.dest === this.config.hyperbridge.stateMachineId\n\t\t\t\t\t\t\t? RequestStatus.DESTINATION\n\t\t\t\t\t\t\t: RequestStatus.HYPERBRIDGE_DELIVERED\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: request.statuses[1].metadata.blockHash,\n\t\t\t\t\t\t\tblockNumber: request.statuses[1].metadata.blockNumber,\n\t\t\t\t\t\t\ttransactionHash: request.statuses[1].metadata.transactionHash,\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\ttimestamp: request.statuses[1].metadata.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// the request has been verified and aggregated on Hyperbridge\n\t\t\t\tcase RequestStatus.HYPERBRIDGE_DELIVERED: {\n\t\t\t\t\t// Get the latest state machine update for hyperbridge on the destination chain\n\t\t\t\t\tconst hyperbridgeFinalized = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () => {\n\t\t\t\t\t\t\tconst stateMachineId = this.config.hyperbridge.stateMachineId\n\t\t\t\t\t\t\tconst index = request.source === stateMachineId ? 0 : 1\n\n\t\t\t\t\t\t\treturn this.queryStateMachineUpdateByHeight({\n\t\t\t\t\t\t\t\tstatemachineId: stateMachineId,\n\t\t\t\t\t\t\t\theight: request.statuses[index].metadata.blockNumber,\n\t\t\t\t\t\t\t\tchain: request.dest,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tconst destChain = await getChain(this.config.dest)\n\t\t\t\t\tconst hyperbridge = await getChain({\n\t\t\t\t\t\t...this.config.hyperbridge,\n\t\t\t\t\t\thasher: \"Keccak\",\n\t\t\t\t\t})\n\n\t\t\t\t\tconst safeFetchProof = async () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst proof_hex = await hyperbridge.queryProof(\n\t\t\t\t\t\t\t\t{ Requests: [postRequestCommitment(request).commitment] },\n\t\t\t\t\t\t\t\trequest.dest,\n\t\t\t\t\t\t\t\tBigInt(hyperbridgeFinalized.height),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn { data: proof_hex, error: null }\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\treturn { error: err as unknown, data: null }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst proof = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\tthis.withRetry(safeFetchProof, {\n\t\t\t\t\t\t\t\tbackoffMs: 2000,\n\t\t\t\t\t\t\t\tmaxRetries: 6, // <-- should fail after 2mins\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\n\t\t\t\t\tif (proof.data === null) {\n\t\t\t\t\t\tthis.logger.error(\"Failed to fetch proof:\", proof.error)\n\n\t\t\t\t\t\tthrow proof.error\n\t\t\t\t\t}\n\n\t\t\t\t\tconst calldata = destChain.encode({\n\t\t\t\t\t\tkind: \"PostRequest\",\n\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t\t\t\t\tproof: proof.data,\n\t\t\t\t\t\t\theight: BigInt(hyperbridgeFinalized.height),\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequests: [request],\n\t\t\t\t\t\tsigner: pad(\"0x\"),\n\t\t\t\t\t})\n\n\t\t\t\t\tconst { stateId } = parseStateMachineId(this.config.hyperbridge.stateMachineId)\n\n\t\t\t\t\tawait waitForChallengePeriod(destChain, {\n\t\t\t\t\t\theight: BigInt(hyperbridgeFinalized.height),\n\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\tstateId,\n\t\t\t\t\t\t\tconsensusStateId: toHex(this.config.hyperbridge.consensusStateId),\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.HYPERBRIDGE_FINALIZED,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: hyperbridgeFinalized.blockHash,\n\t\t\t\t\t\t\tblockNumber: hyperbridgeFinalized.height,\n\t\t\t\t\t\t\ttransactionHash: hyperbridgeFinalized.transactionHash,\n\t\t\t\t\t\t\ttimestamp: hyperbridgeFinalized.timestamp,\n\t\t\t\t\t\t\tcalldata,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = RequestStatus.HYPERBRIDGE_FINALIZED\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// request has been finalized by hyperbridge\n\t\t\t\tcase RequestStatus.HYPERBRIDGE_FINALIZED: {\n\t\t\t\t\t// wait for the request to be delivered to the destination\n\t\t\t\t\trequest = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () => this.queryPostRequest(hash),\n\t\t\t\t\t\tpredicate: (request) =>\n\t\t\t\t\t\t\t!request || !request.statuses.find((s) => s.status === RequestStatus.DESTINATION),\n\t\t\t\t\t})\n\n\t\t\t\t\tconst index = request.source === this.config.hyperbridge.stateMachineId ? 1 : 2\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.DESTINATION,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: request.statuses[index].metadata.blockHash,\n\t\t\t\t\t\t\tblockNumber: request.statuses[index].metadata.blockNumber,\n\t\t\t\t\t\t\ttransactionHash: request.statuses[index].metadata.transactionHash,\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\ttimestamp: request.statuses[index].metadata.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = RequestStatus.DESTINATION\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase RequestStatus.DESTINATION:\n\t\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate sleep_for(duration: number): Promise<void> {\n\t\tthis.logger.trace(`Sleeping for ${duration}ms`)\n\t\treturn sleep(duration)\n\t}\n\n\tprivate sleep_for_interval(): Promise<void> {\n\t\treturn this.sleep_for(this.config.pollInterval)\n\t}\n\n\t/**\n\t * Create a Stream of status updates for a get request.\n\t * Stream ends when either the request reaches the destination or times out.\n\t * If the stream yields TimeoutStatus.PENDING_TIMEOUT, use postRequestTimeoutStream() to begin timeout processing.\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t * @example\n\t *\n\t * let client = new IndexerClient(config)\n\t * let stream = client.getRequestStatusStream(hash)\n\t *\n\t * // you can use a for-await-of loop\n\t * for await (const status of stream) {\n\t * console.log(status)\n\t * }\n\t *\n\t * // you can also use a while loop\n\t * while (true) {\n\t * const status = await stream.next()\n\t * if (status.done) {\n\t * break\n\t * }\n\t * console.log(status.value)\n\t * }\n\t *\n\t */\n\tasync *getRequestStatusStream(hash: HexString): AsyncGenerator<RequestStatusWithMetadata, void> {\n\t\tconst controller = new AbortController()\n\t\t// wait for request to be created\n\t\ttry {\n\t\t\tconst request = await this.waitOrAbort({\n\t\t\t\tsignal: controller.signal,\n\t\t\t\tpromise: () => this.queryGetRequest(hash),\n\t\t\t})\n\n\t\t\tconst chain = await getChain(this.config.dest)\n\t\t\tconst timeoutStream =\n\t\t\t\trequest.timeoutTimestamp > 0n ? this.timeoutStream(request.timeoutTimestamp, chain) : undefined\n\t\t\tconst statusStream = this.getRequestStatusStreamInternal(hash, controller.signal)\n\t\t\tconst combined = timeoutStream ? mergeRace(timeoutStream, statusStream) : statusStream\n\n\t\t\tlet item = await combined.next()\n\t\t\twhile (!item.done) {\n\t\t\t\tyield item.value\n\t\t\t\titem = await combined.next()\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (!AbortSignalInternal.isError(error)) {\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t\tcontroller.abort()\n\t\treturn\n\t}\n\n\t/**\n\t * Create a Stream of status updates\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t */\n\tprivate async *getRequestStatusStreamInternal(\n\t\thash: HexString,\n\t\tsignal: AbortSignal,\n\t): AsyncGenerator<RequestStatusWithMetadata, void> {\n\t\tlet request = await this.waitOrAbort({ signal, promise: () => this.queryGetRequest(hash) })\n\n\t\tlet status: RequestStatusKey | undefined =\n\t\t\trequest.source === this.config.hyperbridge.stateMachineId\n\t\t\t\t? RequestStatus.HYPERBRIDGE_DELIVERED\n\t\t\t\t: RequestStatus.SOURCE\n\n\t\tconst latestMetadata = request.statuses[request.statuses.length - 1]\n\n\t\t// start with the latest status\n\t\tstatus = maxBy([status, latestMetadata.status as RequestStatusKey], (item) => REQUEST_STATUS_WEIGHTS[item])\n\n\t\tif (!status) return\n\n\t\twhile (true) {\n\t\t\tswitch (status) {\n\t\t\t\t// request has been dispatched from source chain\n\t\t\t\tcase RequestStatus.SOURCE: {\n\t\t\t\t\tconst sourceUpdate = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\tthis.queryStateMachineUpdateByHeight({\n\t\t\t\t\t\t\t\tstatemachineId: request.source,\n\t\t\t\t\t\t\t\theight: request.statuses[0].metadata.blockNumber,\n\t\t\t\t\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.SOURCE_FINALIZED,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: sourceUpdate.blockHash,\n\t\t\t\t\t\t\tblockNumber: sourceUpdate.height,\n\t\t\t\t\t\t\ttransactionHash: sourceUpdate.transactionHash,\n\t\t\t\t\t\t\ttimestamp: sourceUpdate.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = RequestStatus.SOURCE_FINALIZED\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// finality proofs for request has been verified on Hyperbridge\n\t\t\t\tcase RequestStatus.SOURCE_FINALIZED: {\n\t\t\t\t\t// wait for the request to be delivered on Hyperbridge\n\t\t\t\t\trequest = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () => this.queryGetRequest(hash),\n\t\t\t\t\t\tpredicate: (request) => !request || request.statuses.length < 2,\n\t\t\t\t\t})\n\n\t\t\t\t\tstatus =\n\t\t\t\t\t\trequest.source === this.config.hyperbridge.stateMachineId\n\t\t\t\t\t\t\t? RequestStatus.DESTINATION\n\t\t\t\t\t\t\t: RequestStatus.HYPERBRIDGE_DELIVERED\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: request.statuses[1].metadata.blockHash,\n\t\t\t\t\t\t\tblockNumber: request.statuses[1].metadata.blockNumber,\n\t\t\t\t\t\t\ttransactionHash: request.statuses[1].metadata.transactionHash,\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\ttimestamp: request.statuses[1].metadata.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// the request has been verified and aggregated on Hyperbridge\n\t\t\t\tcase RequestStatus.HYPERBRIDGE_DELIVERED: {\n\t\t\t\t\t// If Hyperbridge was the source, the request is already complete\n\t\t\t\t\tif (request.source === this.config.hyperbridge.stateMachineId) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t// Get the latest state machine update for hyperbridge on the destination chain\n\t\t\t\t\tconst hyperbridgeFinalized = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\tthis.queryStateMachineUpdateByHeight({\n\t\t\t\t\t\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t\theight: request.statuses[1].metadata.blockNumber,\n\t\t\t\t\t\t\t\tchain: request.source,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\n\t\t\t\t\tconst sourceChain = await getChain(this.config.source)\n\t\t\t\t\tconst hyperbridge = await getChain({\n\t\t\t\t\t\t...this.config.hyperbridge,\n\t\t\t\t\t\thasher: \"Keccak\",\n\t\t\t\t\t})\n\n\t\t\t\t\tconst response = await this.queryResponseByRequestId(hash)\n\n\t\t\t\t\tconst proof = await hyperbridge.queryProof(\n\t\t\t\t\t\t{ Responses: [response?.commitment as HexString] },\n\t\t\t\t\t\trequest.source,\n\t\t\t\t\t\tBigInt(hyperbridgeFinalized.height),\n\t\t\t\t\t)\n\n\t\t\t\t\tconst calldata = sourceChain.encode({\n\t\t\t\t\t\tkind: \"GetResponse\",\n\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\theight: BigInt(hyperbridgeFinalized.height),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tresponses: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tget: request,\n\t\t\t\t\t\t\t\tvalues: request.keys.map((key, index) => ({\n\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\tvalue: (response?.values[index] as HexString) || \"0x\",\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\tsigner: pad(\"0x\"),\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.HYPERBRIDGE_FINALIZED,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: hyperbridgeFinalized.blockHash,\n\t\t\t\t\t\t\tblockNumber: hyperbridgeFinalized.height,\n\t\t\t\t\t\t\ttransactionHash: hyperbridgeFinalized.transactionHash,\n\t\t\t\t\t\t\ttimestamp: hyperbridgeFinalized.timestamp,\n\t\t\t\t\t\t\tcalldata,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = RequestStatus.HYPERBRIDGE_FINALIZED\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// request has been finalized by hyperbridge\n\t\t\t\tcase RequestStatus.HYPERBRIDGE_FINALIZED: {\n\t\t\t\t\t// If Hyperbridge was the source, the request is already complete\n\t\t\t\t\tif (request.source === this.config.hyperbridge.stateMachineId) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\t// wait for the request to be delivered to the destination\n\t\t\t\t\trequest = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () => this.queryGetRequest(hash),\n\t\t\t\t\t\tpredicate: (request) =>\n\t\t\t\t\t\t\t!request || !request.statuses.find((s) => s.status === RequestStatus.DESTINATION),\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.DESTINATION,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: request.statuses[2].metadata.blockHash,\n\t\t\t\t\t\t\tblockNumber: request.statuses[2].metadata.blockNumber,\n\t\t\t\t\t\t\ttransactionHash: request.statuses[2].metadata.transactionHash,\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\ttimestamp: request.statuses[2].metadata.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = RequestStatus.DESTINATION\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase RequestStatus.DESTINATION:\n\t\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Create a Stream of status updates for a timed out post request.\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t * @example\n\t *\n\t * let client = new IndexerClient(config)\n\t * let stream = client.postRequestTimeoutStream(hash)\n\t *\n\t * // you can use a for-await-of loop\n\t * for await (const status of stream) {\n\t * console.log(status)\n\t * }\n\t *\n\t * // you can also use a while loop\n\t * while (true) {\n\t * const status = await stream.next()\n\t * if (status.done) {\n\t * break\n\t * }\n\t * console.log(status.value)\n\t * }\n\t */\n\tasync *postRequestTimeoutStream(hash: HexString): AsyncGenerator<PostRequestTimeoutStatus, void> {\n\t\tconst controller = new AbortController()\n\t\tconst logger = this.logger.withTag(\"[postRequestTimeoutStream]\")\n\n\t\ttry {\n\t\t\tconst request = await this.queryPostRequest(hash)\n\t\t\tif (!request) throw new Error(\"Request not found\")\n\n\t\t\tlogger.trace(\"`Request` found\")\n\t\t\tconst timeoutStream = this.postRequestTimeoutStreamInternal(hash, controller.signal)\n\n\t\t\tlogger.trace(\"Listening for timeout events\")\n\t\t\tlet item = await timeoutStream.next()\n\t\t\twhile (!item.done) {\n\t\t\t\tlogger.trace(`Yielding Timeout Event(${item.value.status})`)\n\n\t\t\t\tyield item.value\n\t\t\t\titem = await timeoutStream.next()\n\t\t\t}\n\n\t\t\tlogger.trace(\"Streaming complete\")\n\t\t} catch (error) {\n\t\t\tif (!AbortSignalInternal.isError(error)) {\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t\tcontroller.abort()\n\t\treturn\n\t}\n\n\t/**\n\t * Create a Stream of status updates for a timed out post request.\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t */\n\tasync *postRequestTimeoutStreamInternal(\n\t\thash: HexString,\n\t\tsignal: AbortSignal,\n\t): AsyncGenerator<PostRequestTimeoutStatus, void> {\n\t\tconst request = await this.waitOrAbort({\n\t\t\tsignal,\n\t\t\tpromise: () => this.queryPostRequest(hash),\n\t\t})\n\n\t\tconst destChain = await getChain(this.config.dest)\n\n\t\t// if the destination is hyperbridge, then just wait for hyperbridge finality\n\t\tlet status: TimeoutStatusKey =\n\t\t\trequest.dest === this.config.hyperbridge.stateMachineId\n\t\t\t\t? TimeoutStatus.HYPERBRIDGE_TIMED_OUT\n\t\t\t\t: TimeoutStatus.PENDING_TIMEOUT\n\n\t\tconst commitment = postRequestCommitment(request).commitment\n\t\tconst hyperbridge = (await getChain({\n\t\t\t...this.config.hyperbridge,\n\t\t\thasher: \"Keccak\",\n\t\t})) as unknown as SubstrateChain\n\n\t\tconst latest = request.statuses[request.statuses.length - 1]\n\t\tconst latest_request = maxBy(\n\t\t\t[status, latest.status as TimeoutStatusKey],\n\t\t\t(item) => TIMEOUT_STATUS_WEIGHTS[item],\n\t\t)\n\n\t\tif (!latest_request) {\n\t\t\treturn\n\t\t}\n\n\t\t// we're always interested in the latest status\n\t\tstatus = latest_request\n\n\t\twhile (true) {\n\t\t\tswitch (status) {\n\t\t\t\tcase TimeoutStatus.PENDING_TIMEOUT: {\n\t\t\t\t\tconst receipt = await hyperbridge.queryRequestReceipt(commitment)\n\t\t\t\t\tif (!receipt && request.source !== this.config.hyperbridge.stateMachineId) {\n\t\t\t\t\t\tstatus = TimeoutStatus.HYPERBRIDGE_TIMED_OUT\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\n\t\t\t\t\tconst update = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\tthis.queryStateMachineUpdateByTimestamp({\n\t\t\t\t\t\t\t\tstatemachineId: request.dest,\n\t\t\t\t\t\t\t\tcommitmentTimestamp: request.timeoutTimestamp,\n\t\t\t\t\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: update.blockHash,\n\t\t\t\t\t\t\tblockNumber: update.height,\n\t\t\t\t\t\t\ttransactionHash: update.transactionHash,\n\t\t\t\t\t\t\ttimestamp: update.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT: {\n\t\t\t\t\tif (request.source !== this.config.hyperbridge.stateMachineId) {\n\t\t\t\t\t\tconst receipt = await hyperbridge.queryRequestReceipt(commitment)\n\t\t\t\t\t\tif (!receipt) {\n\t\t\t\t\t\t\tstatus = TimeoutStatus.HYPERBRIDGE_TIMED_OUT\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst update = (await this.queryStateMachineUpdateByTimestamp({\n\t\t\t\t\t\tstatemachineId: request.dest,\n\t\t\t\t\t\tcommitmentTimestamp: request.timeoutTimestamp,\n\t\t\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t}))!\n\n\t\t\t\t\tconst proof = await destChain.queryStateProof(BigInt(update.height), [\n\t\t\t\t\t\tdestChain.requestReceiptKey(commitment),\n\t\t\t\t\t])\n\n\t\t\t\t\tconst { stateId } = parseStateMachineId(request.dest)\n\n\t\t\t\t\tawait waitForChallengePeriod(hyperbridge, {\n\t\t\t\t\t\theight: BigInt(update.height),\n\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\tstateId,\n\t\t\t\t\t\t\tconsensusStateId: toHex(this.config.dest.consensusStateId),\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tconst { blockHash, transactionHash, blockNumber, timestamp } = await hyperbridge.submitUnsigned({\n\t\t\t\t\t\tkind: \"TimeoutPostRequest\",\n\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\theight: BigInt(update.height),\n\t\t\t\t\t\t\tstateMachine: request.dest,\n\t\t\t\t\t\t\tconsensusStateId: this.config.dest.consensusStateId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequests: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsource: request.source,\n\t\t\t\t\t\t\t\tdest: request.dest,\n\t\t\t\t\t\t\t\tfrom: request.from,\n\t\t\t\t\t\t\t\tto: request.to,\n\t\t\t\t\t\t\t\tnonce: request.nonce,\n\t\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\n\t\t\t\t\tstatus =\n\t\t\t\t\t\trequest.source === this.config.hyperbridge.stateMachineId\n\t\t\t\t\t\t\t? TimeoutStatus.TIMED_OUT\n\t\t\t\t\t\t\t: TimeoutStatus.HYPERBRIDGE_TIMED_OUT\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash,\n\t\t\t\t\t\t\ttransactionHash,\n\t\t\t\t\t\t\tblockNumber,\n\t\t\t\t\t\t\ttimestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase TimeoutStatus.HYPERBRIDGE_TIMED_OUT: {\n\t\t\t\t\tconst hasDelivered = request.statuses.some(\n\t\t\t\t\t\t(item) => item.status === RequestStatus.HYPERBRIDGE_DELIVERED,\n\t\t\t\t\t)\n\t\t\t\t\tlet update: StateMachineUpdate | undefined\n\t\t\t\t\tif (!hasDelivered) {\n\t\t\t\t\t\t// if request was never delivered to Hyperbridge\n\t\t\t\t\t\t// then query for any state machine update > requestTimestamp\n\t\t\t\t\t\tupdate = await this.waitOrAbort({\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\t\tthis.queryStateMachineUpdateByTimestamp({\n\t\t\t\t\t\t\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t\t\tcommitmentTimestamp: request.timeoutTimestamp,\n\t\t\t\t\t\t\t\t\tchain: request.source,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst timeout = await this.waitOrAbort({\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\tpromise: async () => {\n\t\t\t\t\t\t\t\tconst req = await this.queryPostRequest(hash)\n\t\t\t\t\t\t\t\treturn req?.statuses\n\t\t\t\t\t\t\t\t\t.sort(\n\t\t\t\t\t\t\t\t\t\t(a, b) => COMBINED_STATUS_WEIGHTS[a.status] - COMBINED_STATUS_WEIGHTS[b.status],\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.pop()\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpredicate: (timeout) => !timeout || timeout?.status !== TimeoutStatus.HYPERBRIDGE_TIMED_OUT,\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\tupdate = await this.waitOrAbort({\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\tpromise: async () =>\n\t\t\t\t\t\t\t\tthis.queryStateMachineUpdateByHeight({\n\t\t\t\t\t\t\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t\t\theight: timeout.metadata.blockNumber,\n\t\t\t\t\t\t\t\t\tchain: request.source,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\n\t\t\t\t\tconst proof = await hyperbridge.queryStateProof(BigInt(update.height), [\n\t\t\t\t\t\thyperbridge.requestReceiptKey(commitment),\n\t\t\t\t\t])\n\n\t\t\t\t\tconst sourceChain = await getChain(this.config.source)\n\t\t\t\t\tconst calldata = sourceChain.encode({\n\t\t\t\t\t\tkind: \"TimeoutPostRequest\",\n\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\theight: BigInt(update.height),\n\t\t\t\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequests: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsource: request.source,\n\t\t\t\t\t\t\t\tdest: request.dest,\n\t\t\t\t\t\t\t\tfrom: request.from,\n\t\t\t\t\t\t\t\tto: request.to,\n\t\t\t\t\t\t\t\tnonce: request.nonce,\n\t\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\n\t\t\t\t\tconst { stateId } = parseStateMachineId(this.config.hyperbridge.stateMachineId)\n\n\t\t\t\t\tawait waitForChallengePeriod(sourceChain, {\n\t\t\t\t\t\theight: BigInt(update.height),\n\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\tstateId,\n\t\t\t\t\t\t\tconsensusStateId: toHex(this.config.hyperbridge.consensusStateId),\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\ttransactionHash: update.transactionHash,\n\t\t\t\t\t\t\tblockNumber: update.blockNumber,\n\t\t\t\t\t\t\tblockHash: update.blockHash,\n\t\t\t\t\t\t\ttimestamp: update.timestamp,\n\t\t\t\t\t\t\tcalldata,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT: {\n\t\t\t\t\t// wait for the request to be timed out on the source\n\t\t\t\t\tconst delivered = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: async () => {\n\t\t\t\t\t\t\tconst req = await this.queryPostRequest(hash)\n\t\t\t\t\t\t\treturn req?.statuses.find((s) => s.status === RequestStatus.TIMED_OUT)\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: TimeoutStatus.TIMED_OUT,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\ttransactionHash: delivered.metadata.transactionHash,\n\t\t\t\t\t\t\tblockNumber: delivered.metadata.blockNumber,\n\t\t\t\t\t\t\tblockHash: delivered.metadata.blockHash,\n\t\t\t\t\t\t\ttimestamp: delivered.metadata.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = TimeoutStatus.TIMED_OUT\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase TimeoutStatus.TIMED_OUT:\n\t\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Executes an async operation with exponential backoff retry\n\t * @param operation - Async function to execute\n\t * @param retryConfig - Optional retry configuration\n\t * @returns Result of the operation\n\t * @throws Last encountered error after all retries are exhausted\n\t *\n\t * @example\n\t * const result = await this.withRetry(() => this.queryStatus(hash));\n\t */\n\tprivate async withRetry<T>(operation: () => Promise<T>, retryConfig: Partial<RetryConfig> = {}): Promise<T> {\n\t\treturn retryPromise(operation, {\n\t\t\t...this.defaultRetryConfig,\n\t\t\t...retryConfig,\n\t\t})\n\t}\n\n\t/**\n\t * Query for an order by its commitment hash\n\t * @param commitment - The commitment hash of the order\n\t * @returns The order with its status if found, undefined otherwise\n\t */\n\tasync queryOrder(commitment: HexString): Promise<OrderWithStatus | undefined> {\n\t\treturn _queryOrderInternal({\n\t\t\tcommitmentHash: commitment,\n\t\t\tqueryClient: this.client,\n\t\t\tlogger: this.logger,\n\t\t})\n\t}\n\n\t/**\n\t * Create a Stream of status updates for an order.\n\t * Stream ends when the order reaches a terminal state (FILLED, REDEEMED, or REFUNDED).\n\t * @param commitment - The commitment hash of the order\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t * @example\n\t *\n\t * let client = new IndexerClient(config)\n\t * let stream = client.orderStatusStream(commitment)\n\t *\n\t * // you can use a for-await-of loop\n\t * for await (const status of stream) {\n\t * console.log(status)\n\t * }\n\t *\n\t * // you can also use a while loop\n\t * while (true) {\n\t * const status = await stream.next()\n\t * if (status.done) {\n\t * break\n\t * }\n\t * console.log(status.value)\n\t * }\n\t */\n\tasync *orderStatusStream(commitment: HexString): AsyncGenerator<\n\t\t{\n\t\t\tstatus: OrderStatus\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp: bigint\n\t\t\t\tfiller?: string\n\t\t\t}\n\t\t},\n\t\tvoid\n\t> {\n\t\tconst logger = this.logger.withTag(\"[orderStatusStream]\")\n\n\t\tlet order: OrderWithStatus | undefined\n\n\t\twhile (!order) {\n\t\t\tawait this.sleep_for_interval()\n\t\t\torder = await _queryOrderInternal({\n\t\t\t\tcommitmentHash: commitment,\n\t\t\t\tqueryClient: this.client,\n\t\t\t\tlogger: this.logger,\n\t\t\t})\n\t\t}\n\n\t\tlogger.trace(\"`Order` found\")\n\t\t// Yield initial status\n\t\tconst latestStatus = order.statuses[order.statuses.length - 1]\n\t\tyield {\n\t\t\tstatus: latestStatus.status,\n\t\t\tmetadata: latestStatus.metadata,\n\t\t}\n\n\t\t// If we're already in a terminal state, end the stream\n\t\tif ([OrderStatus.FILLED, OrderStatus.REDEEMED, OrderStatus.REFUNDED].includes(latestStatus.status)) {\n\t\t\treturn\n\t\t}\n\n\t\twhile (true) {\n\t\t\tawait this.sleep_for_interval()\n\t\t\tconst updatedOrder = await _queryOrderInternal({\n\t\t\t\tcommitmentHash: commitment,\n\t\t\t\tqueryClient: this.client,\n\t\t\t\tlogger: this.logger,\n\t\t\t})\n\n\t\t\tif (!updatedOrder) continue\n\n\t\t\tconst newLatestStatus = updatedOrder.statuses[updatedOrder.statuses.length - 1]\n\n\t\t\tif (newLatestStatus.status !== latestStatus.status) {\n\t\t\t\tyield {\n\t\t\t\t\tstatus: newLatestStatus.status,\n\t\t\t\t\tmetadata: newLatestStatus.metadata,\n\t\t\t\t}\n\n\t\t\t\tif ([OrderStatus.FILLED, OrderStatus.REDEEMED, OrderStatus.REFUNDED].includes(newLatestStatus.status)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tasync *tokenGatewayAssetTeleportedStatusStream(commitment: HexString): AsyncGenerator<\n\t\t{\n\t\t\tstatus: TeleportStatus\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp: bigint\n\t\t\t}\n\t\t},\n\t\tvoid\n\t> {\n\t\tconst logger = this.logger.withTag(\"[tokenGatewayAssetTeleportedStatusStream]\")\n\t\tlogger.trace(`Starting stream for token gateway asset teleported with commitment ${commitment}`)\n\n\t\tlet lastStatus: TeleportStatus | undefined\n\t\tlet lastBlockNumber: number | undefined\n\n\t\twhile (true) {\n\t\t\ttry {\n\t\t\t\tconst teleport = await this.queryTokenGatewayAssetTeleported(commitment)\n\t\t\t\tif (!teleport) {\n\t\t\t\t\tlogger.trace(\"No teleport found, waiting...\")\n\t\t\t\t\tawait this.sleep_for_interval()\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst statuses = teleport.statuses\n\t\t\t\tif (statuses.length === 0) {\n\t\t\t\t\tlogger.trace(\"No statuses found, waiting...\")\n\t\t\t\t\tawait this.sleep_for_interval()\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Find the latest status that we haven't seen yet\n\t\t\t\tconst latestStatus = statuses[statuses.length - 1]\n\t\t\t\tif (lastStatus === latestStatus.status && lastBlockNumber === latestStatus.metadata.blockNumber) {\n\t\t\t\t\tlogger.trace(\"No new status, waiting...\")\n\t\t\t\t\tawait this.sleep_for_interval()\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tlastStatus = latestStatus.status\n\t\t\t\tlastBlockNumber = latestStatus.metadata.blockNumber\n\n\t\t\t\tyield latestStatus\n\n\t\t\t\t// If we've reached a final status, end the stream\n\t\t\t\tif (\n\t\t\t\t\tlatestStatus.status === TeleportStatus.RECEIVED ||\n\t\t\t\t\tlatestStatus.status === TeleportStatus.REFUNDED\n\t\t\t\t) {\n\t\t\t\t\tlogger.trace(\"Final status reached, ending stream\")\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tawait this.sleep_for_interval()\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(\"Error in token gateway asset teleported status stream:\", error)\n\t\t\t\tawait this.sleep_for_interval()\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async queryTokenGatewayAssetTeleported(\n\t\tcommitment: HexString,\n\t): Promise<TokenGatewayAssetTeleportedWithStatus | undefined> {\n\t\treturn _queryTokenGatewayAssetTeleportedInternal({\n\t\t\tcommitmentHash: commitment,\n\t\t\tqueryClient: this.client,\n\t\t\tlogger: this.logger,\n\t\t})\n\t}\n\n\t/**\n\t * Aggregate transactions with commitment.\n\t * @param commitment\n\t * @returns an object containing the transaction hash, block hash, block number, timestamp.\n\t */\n\tasync aggregateTransactionWithCommitment(\n\t\tcommitment: HexString,\n\t): Promise<Awaited<ReturnType<SubstrateChain[\"submitUnsigned\"]>>> {\n\t\tconst logger = this.logger.withTag(\"aggregateTransactionWithCommitment\")\n\n\t\tconst { stateMachineId, consensusStateId } = this.config.source\n\n\t\t// check if request receipt exists on source chain\n\t\tconst sourceChain = await getChain(this.config.source)\n\t\tconst hyperbridge = (await getChain({\n\t\t\t...this.config.hyperbridge,\n\t\t\thasher: \"Keccak\",\n\t\t})) as SubstrateChain\n\n\t\tlogger.trace(\"Querying post request with commitment hash\")\n\t\tconst request = await this.queryPostRequest(commitment)\n\t\tif (!request) throw new Error(\"Request not found\")\n\n\t\tlogger.trace(\"Fetch latest stateMachineHeight\")\n\t\tconst latestStateMachineHeight = await hyperbridge.latestStateMachineHeight({\n\t\t\tstateId: parseStateMachineId(stateMachineId).stateId,\n\t\t\tconsensusStateId: consensusStateId as HexString,\n\t\t})\n\n\t\tlogger.trace(\"Query Request Proof from sourceChain\")\n\t\tconst proof = await sourceChain.queryProof(\n\t\t\t{ Requests: [commitment] },\n\t\t\tthis.config.hyperbridge.stateMachineId,\n\t\t\tlatestStateMachineHeight,\n\t\t)\n\n\t\tlogger.trace(\"Construct Extrinsic and Submit Unsigned\")\n\t\tconst calldata = await hyperbridge.submitUnsigned({\n\t\t\tkind: \"PostRequest\",\n\t\t\tproof: {\n\t\t\t\tstateMachine: this.config.source.stateMachineId,\n\t\t\t\tconsensusStateId: this.config.source.consensusStateId,\n\t\t\t\tproof,\n\t\t\t\theight: BigInt(latestStateMachineHeight),\n\t\t\t},\n\t\t\trequests: [\n\t\t\t\t{\n\t\t\t\t\tsource: request.source,\n\t\t\t\t\tdest: request.dest,\n\t\t\t\t\tfrom: request.from,\n\t\t\t\t\tto: request.to,\n\t\t\t\t\tnonce: request.nonce,\n\t\t\t\t\tbody: request.body,\n\t\t\t\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\t\t\t},\n\t\t\t],\n\t\t\tsigner: pad(\"0x\"),\n\t\t})\n\n\t\treturn calldata\n\t}\n\n\tasync waitOrAbort<T>(params: {\n\t\tsignal: AbortSignal\n\t\tpromise: () => Promise<T>\n\t\tpredicate?: (a: T) => boolean\n\t}): Promise<NonNullable<T>> {\n\t\tconst { predicate = (e) => isNil(e) } = params\n\n\t\tconst _abort = () => {\n\t\t\tif (params.signal.aborted) {\n\t\t\t\tthrow new AbortSignalInternal(\"Terminated request in 'waitOrAbort'\")\n\t\t\t}\n\t\t}\n\n\t\twhile (true) {\n\t\t\t_abort()\n\t\t\tawait this.sleep_for_interval()\n\t\t\t_abort()\n\t\t\tconst _data = await params.promise()\n\t\t\t_abort()\n\n\t\t\tif (predicate(_data)) continue\n\t\t\treturn _data as NonNullable<T>\n\t\t}\n\t}\n}\n\ninterface PartialClientConfig extends Omit<ClientConfig, \"pollInterval\"> {\n\tpollInterval?: number\n}\n","const ABI = [\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"admin\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"constructor\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"Expired\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"Filled\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InsufficientNativeToken\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidInput\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"NotExpired\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"Unauthorized\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnauthorizedCall\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnexpectedCall\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnknownOrder\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"WrongChain\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"EscrowRefunded\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"EscrowReleased\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"stateMachineId\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"gateway\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"NewDeploymentAdded\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"filler\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"OrderFilled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"user\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"sourceChain\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"destChain\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"nonce\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"fees\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"beneficiary\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct PaymentInfo[]\",\n\t\t\t\tname: \"outputs\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\tname: \"inputs\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"callData\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"OrderPlaced\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tname: \"previous\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tname: \"current\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"ParamsUpdated\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"calculateCommitmentSlotHash\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"user\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"sourceChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"destChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"deadline\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fees\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PaymentInfo[]\",\n\t\t\t\t\t\tname: \"outputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\tname: \"inputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"callData\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct Order\",\n\t\t\t\tname: \"order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"relayerFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct CancelOptions\",\n\t\t\t\tname: \"options\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"cancelOrder\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"user\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"sourceChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"destChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"deadline\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fees\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PaymentInfo[]\",\n\t\t\t\t\t\tname: \"outputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\tname: \"inputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"callData\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct Order\",\n\t\t\t\tname: \"order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"relayerFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FillOptions\",\n\t\t\t\tname: \"options\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"fillOrder\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"host\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"stateMachineId\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"instance\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct IncomingPostRequest\",\n\t\t\t\tname: \"incoming\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onAccept\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\t\t\ttype: \"address\",\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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes[]\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tinternalType: \"struct GetRequest\",\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},\n\t\t\t\t\t\t\t{\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\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tinternalType: \"struct StorageValue[]\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct GetResponse\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct IncomingGetResponse\",\n\t\t\t\tname: \"incoming\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onGetResponse\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct GetRequest\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onGetTimeout\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onPostRequestTimeout\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct PostRequest\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostResponse\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct IncomingPostResponse\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onPostResponse\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostResponse\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onPostResponseTimeout\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"params\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"user\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"sourceChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"destChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"deadline\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fees\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PaymentInfo[]\",\n\t\t\t\t\t\tname: \"outputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\tname: \"inputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"callData\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct Order\",\n\t\t\t\tname: \"order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"graffiti\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"placeOrder\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPost\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quote\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchGet\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quote\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPostResponse\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quote\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPost\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteNative\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPostResponse\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteNative\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchGet\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteNative\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tname: \"p\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"setParams\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tstateMutability: \"payable\",\n\t\ttype: \"receive\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"_feeCollectorSetter\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"constructor\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token0\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token1\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"pair\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"PairCreated\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"feeCollector_\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"SetFeeCollector\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"feeCollectorSetter_\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"SetFeeCollectorSetter\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"migrator_\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"SetMigrator\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"allPairs\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"allPairsLength\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"createPair\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"pair\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"feeCollector\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"feeCollectorSetter\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"getPair\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"migrator\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"pairCodeHash\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"_feeCollector\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"setFeeCollector\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"_feeCollectorSetter\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"setFeeCollectorSetter\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"_migrator\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"setMigrator\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tinputs: [],\n\t\tname: \"WETH\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountADesired\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountBDesired\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountAMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountBMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"addLiquidity\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountA\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountB\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenDesired\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETHMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"addLiquidityETH\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountToken\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETH\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"factory\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"getAmountIn\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"getAmountOut\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t],\n\t\tname: \"getAmountsIn\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t],\n\t\tname: \"getAmountsOut\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountA\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveA\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveB\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"quote\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountB\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountAMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountBMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidity\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountA\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountB\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETHMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidityETH\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountToken\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETH\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETHMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidityETHSupportingFeeOnTransferTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETH\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETHMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"approveMax\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"v\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"r\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"s\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidityETHWithPermit\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountToken\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETH\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETHMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"approveMax\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"v\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"r\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"s\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETH\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountAMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountBMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"approveMax\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"v\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"r\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"s\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidityWithPermit\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountA\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountB\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapETHForExactTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactETHForTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactETHForTokensSupportingFeeOnTransferTokens\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactTokensForETH\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactTokensForETHSupportingFeeOnTransferTokens\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactTokensForTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountInMax\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapTokensForExactETH\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountInMax\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapTokensForExactTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickSpacing\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"FeeAmountEnabled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"oldOwner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"newOwner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"OwnerChanged\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token0\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token1\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickSpacing\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"pool\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"PoolCreated\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t],\n\t\tname: \"createPool\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"pool\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickSpacing\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"enableFeeAmount\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t],\n\t\tname: \"feeAmountTickSpacing\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t],\n\t\tname: \"getPool\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"pool\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"owner\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"_owner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"setOwner\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"owner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"Burn\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"owner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tname: \"Collect\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"sender\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tname: \"CollectProtocol\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"sender\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"paid0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"paid1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"Flash\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationCardinalityNextOld\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationCardinalityNextNew\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t],\n\t\tname: \"IncreaseObservationCardinalityNext\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tick\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"Initialize\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"sender\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"owner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"Mint\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol0Old\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol1Old\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol0New\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol1New\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t],\n\t\tname: \"SetFeeProtocol\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"sender\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"int256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"int256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"int256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"int256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tick\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"Swap\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tname: \"burn\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0Requested\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1Requested\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tname: \"collect\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0Requested\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1Requested\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tname: \"collectProtocol\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"factory\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"fee\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"feeGrowthGlobal0X128\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"feeGrowthGlobal1X128\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"data\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"flash\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationCardinalityNext\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t],\n\t\tname: \"increaseObservationCardinalityNext\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t],\n\t\tname: \"initialize\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"liquidity\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"maxLiquidityPerTick\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"data\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"mint\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"index\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"observations\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint32\",\n\t\t\t\tname: \"blockTimestamp\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int56\",\n\t\t\t\tname: \"tickCumulative\",\n\t\t\t\ttype: \"int56\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"secondsPerLiquidityCumulativeX128\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"initialized\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint32[]\",\n\t\t\t\tname: \"secondsAgos\",\n\t\t\t\ttype: \"uint32[]\",\n\t\t\t},\n\t\t],\n\t\tname: \"observe\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int56[]\",\n\t\t\t\tname: \"tickCumulatives\",\n\t\t\t\ttype: \"int56[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160[]\",\n\t\t\t\tname: \"secondsPerLiquidityCumulativeX128s\",\n\t\t\t\ttype: \"uint160[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"key\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"positions\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"_liquidity\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"feeGrowthInside0LastX128\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"feeGrowthInside1LastX128\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"tokensOwed0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"tokensOwed1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"protocolFees\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"token0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"token1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol0\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol1\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t],\n\t\tname: \"setFeeProtocol\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"slot0\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tick\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationIndex\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationCardinality\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationCardinalityNext\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"unlocked\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"snapshotCumulativesInside\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int56\",\n\t\t\t\tname: \"tickCumulativeInside\",\n\t\t\t\ttype: \"int56\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"secondsPerLiquidityInsideX128\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32\",\n\t\t\t\tname: \"secondsInside\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"zeroForOne\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int256\",\n\t\t\t\tname: \"amountSpecified\",\n\t\t\t\ttype: \"int256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceLimitX96\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"data\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"swap\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"int256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"int256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int16\",\n\t\t\t\tname: \"wordPosition\",\n\t\t\t\ttype: \"int16\",\n\t\t\t},\n\t\t],\n\t\tname: \"tickBitmap\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"tickSpacing\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tick\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"ticks\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"liquidityGross\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int128\",\n\t\t\t\tname: \"liquidityNet\",\n\t\t\t\ttype: \"int128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"feeGrowthOutside0X128\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"feeGrowthOutside1X128\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int56\",\n\t\t\t\tname: \"tickCumulativeOutside\",\n\t\t\t\ttype: \"int56\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"secondsPerLiquidityOutsideX128\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32\",\n\t\t\t\tname: \"secondsOutside\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"initialized\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"token0\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"token1\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteExactInput\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160[]\",\n\t\t\t\tname: \"sqrtPriceX96AfterList\",\n\t\t\t\ttype: \"uint160[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32[]\",\n\t\t\t\tname: \"initializedTicksCrossedList\",\n\t\t\t\ttype: \"uint32[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"gasEstimate\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"tokenIn\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"tokenOut\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"amountIn\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint24\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint24\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint160\",\n\t\t\t\t\t\tname: \"sqrtPriceLimitX96\",\n\t\t\t\t\t\ttype: \"uint160\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct IQuoterV2.QuoteExactInputSingleParams\",\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteExactInputSingle\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96After\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32\",\n\t\t\t\tname: \"initializedTicksCrossed\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"gasEstimate\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteExactOutput\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160[]\",\n\t\t\t\tname: \"sqrtPriceX96AfterList\",\n\t\t\t\ttype: \"uint160[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32[]\",\n\t\t\t\tname: \"initializedTicksCrossedList\",\n\t\t\t\ttype: \"uint32[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"gasEstimate\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"tokenIn\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"tokenOut\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint24\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint24\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint160\",\n\t\t\t\t\t\tname: \"sqrtPriceLimitX96\",\n\t\t\t\t\t\ttype: \"uint160\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct IQuoterV2.QuoteExactOutputSingleParams\",\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteExactOutputSingle\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96After\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32\",\n\t\t\t\tname: \"initializedTicksCrossed\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"gasEstimate\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","export const UNISWAP_V4_QUOTER_ABI = [\n\t{\n\t\ttype: \"constructor\",\n\t\tinputs: [{ name: \"_poolManager\", type: \"address\", internalType: \"contract IPoolManager\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_quoteExactInput\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"exactCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"path\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct PathKey[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"intermediateCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [{ name: \"\", type: \"bytes\", internalType: \"bytes\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_quoteExactInputSingle\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactSingleParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"poolKey\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PoolKey\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"currency0\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"currency1\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"zeroForOne\", type: \"bool\", internalType: \"bool\" },\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [{ name: \"\", type: \"bytes\", internalType: \"bytes\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_quoteExactOutput\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"exactCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"path\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct PathKey[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"intermediateCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [{ name: \"\", type: \"bytes\", internalType: \"bytes\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_quoteExactOutputSingle\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactSingleParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"poolKey\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PoolKey\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"currency0\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"currency1\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"zeroForOne\", type: \"bool\", internalType: \"bool\" },\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [{ name: \"\", type: \"bytes\", internalType: \"bytes\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"msgSender\",\n\t\tinputs: [],\n\t\toutputs: [{ name: \"\", type: \"address\", internalType: \"address\" }],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"poolManager\",\n\t\tinputs: [],\n\t\toutputs: [{ name: \"\", type: \"address\", internalType: \"contract IPoolManager\" }],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"quoteExactInput\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"exactCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"path\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct PathKey[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"intermediateCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{ name: \"amountOut\", type: \"uint256\", internalType: \"uint256\" },\n\t\t\t{ name: \"gasEstimate\", type: \"uint256\", internalType: \"uint256\" },\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"quoteExactInputSingle\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactSingleParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"poolKey\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PoolKey\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"currency0\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"currency1\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"zeroForOne\", type: \"bool\", internalType: \"bool\" },\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{ name: \"amountOut\", type: \"uint256\", internalType: \"uint256\" },\n\t\t\t{ name: \"gasEstimate\", type: \"uint256\", internalType: \"uint256\" },\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"quoteExactOutput\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"exactCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"path\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct PathKey[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"intermediateCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{ name: \"amountIn\", type: \"uint256\", internalType: \"uint256\" },\n\t\t\t{ name: \"gasEstimate\", type: \"uint256\", internalType: \"uint256\" },\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"quoteExactOutputSingle\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactSingleParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"poolKey\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PoolKey\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"currency0\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"currency1\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"zeroForOne\", type: \"bool\", internalType: \"bool\" },\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{ name: \"amountIn\", type: \"uint256\", internalType: \"uint256\" },\n\t\t\t{ name: \"gasEstimate\", type: \"uint256\", internalType: \"uint256\" },\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"unlockCallback\",\n\t\tinputs: [{ name: \"data\", type: \"bytes\", internalType: \"bytes\" }],\n\t\toutputs: [{ name: \"\", type: \"bytes\", internalType: \"bytes\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"NotEnoughLiquidity\",\n\t\tinputs: [{ name: \"poolId\", type: \"bytes32\", internalType: \"PoolId\" }],\n\t},\n\t{ type: \"error\", name: \"NotPoolManager\", inputs: [] },\n\t{ type: \"error\", name: \"NotSelf\", inputs: [] },\n\t{\n\t\ttype: \"error\",\n\t\tname: \"QuoteSwap\",\n\t\tinputs: [{ name: \"amount\", type: \"uint256\", internalType: \"uint256\" }],\n\t},\n\t{ type: \"error\", name: \"UnexpectedCallSuccess\", inputs: [] },\n\t{\n\t\ttype: \"error\",\n\t\tname: \"UnexpectedRevertBytes\",\n\t\tinputs: [{ name: \"revertData\", type: \"bytes\", internalType: \"bytes\" }],\n\t},\n] as const\n","import {\n\tbytes32ToBytes20,\n\tbytes20ToBytes32,\n\tconstructRedeemEscrowRequestBody,\n\tgetStorageSlot,\n\tADDRESS_ZERO,\n\tMOCK_ADDRESS,\n\tERC20Method,\n\tadjustFeeDecimals,\n\tfetchPrice,\n} from \"@/utils\"\nimport { formatUnits, maxUint256, parseUnits, toHex } from \"viem\"\nimport { DispatchPost, type FillOptions, type HexString, type IPostRequest, type Order } from \"@/types\"\nimport IntentGatewayABI from \"@/abis/IntentGateway\"\nimport UniswapV2Factory from \"@/abis/uniswapV2Factory\"\nimport UniswapRouterV2 from \"@/abis/uniswapRouterV2\"\nimport UniswapV3Factory from \"@/abis/uniswapV3Factory\"\nimport UniswapV3Pool from \"@/abis/uniswapV3Pool\"\nimport UniswapV3Quoter from \"@/abis/uniswapV3Quoter\"\nimport { UNISWAP_V4_QUOTER_ABI } from \"@/abis/uniswapV4Quoter\"\nimport { EvmChain } from \"@/chains/evm\"\nimport { Decimal } from \"decimal.js\"\n\n/**\n * IntentGateway handles cross-chain intent operations between EVM chains.\n * It provides functionality for estimating fill orders, finding optimal swap protocols,\n * and checking order statuses across different chains.\n */\nexport class IntentGateway {\n\t/**\n\t * Creates a new IntentGateway instance for cross-chain operations.\n\t * @param source - The source EVM chain\n\t * @param dest - The destination EVM chain\n\t */\n\tconstructor(\n\t\tpublic readonly source: EvmChain,\n\t\tpublic readonly dest: EvmChain,\n\t) {}\n\n\t/**\n\t * Estimates the total cost required to fill an order, including gas fees, relayer fees,\n\t * protocol fees, and swap operations.\n\t *\n\t * @param order - The order to estimate fill costs for\n\t * @returns An object containing the estimated cost in both fee token and native token, plus the post request calldata\n\t */\n\tasync estimateFillOrder(\n\t\torder: Order,\n\t): Promise<{ feeTokenAmount: bigint; nativeTokenAmount: bigint; postRequestCalldata: HexString }> {\n\t\tconst postRequest: IPostRequest = {\n\t\t\tsource: order.destChain,\n\t\t\tdest: order.sourceChain,\n\t\t\tbody: constructRedeemEscrowRequestBody(order, MOCK_ADDRESS),\n\t\t\ttimeoutTimestamp: 0n,\n\t\t\tnonce: await this.source.getHostNonce(),\n\t\t\tfrom: this.source.config.getIntentGatewayAddress(order.destChain),\n\t\t\tto: this.source.config.getIntentGatewayAddress(order.sourceChain),\n\t\t}\n\n\t\tconst { decimals: sourceChainFeeTokenDecimals } = await this.source.getFeeTokenWithDecimals()\n\n\t\tconst { address: destChainFeeTokenAddress, decimals: destChainFeeTokenDecimals } =\n\t\t\tawait this.dest.getFeeTokenWithDecimals()\n\n\t\tconst { gas: postGasEstimate, postRequestCalldata } = await this.source.estimateGas(postRequest)\n\n\t\tconst postGasEstimateInSourceFeeToken = await this.convertGasToFeeToken(postGasEstimate, \"source\")\n\n\t\tconst relayerFeeInSourceFeeToken =\n\t\t\tpostGasEstimateInSourceFeeToken + 25n * 10n ** BigInt(sourceChainFeeTokenDecimals - 2)\n\n\t\tconst relayerFeeInDestFeeToken = adjustFeeDecimals(\n\t\t\trelayerFeeInSourceFeeToken,\n\t\t\tsourceChainFeeTokenDecimals,\n\t\t\tdestChainFeeTokenDecimals,\n\t\t)\n\n\t\tconst fillOptions: FillOptions = {\n\t\t\trelayerFee: relayerFeeInDestFeeToken,\n\t\t}\n\n\t\tconst totalEthValue = order.outputs\n\t\t\t.filter((output) => bytes32ToBytes20(output.token) === ADDRESS_ZERO)\n\t\t\t.reduce((sum, output) => sum + output.amount, 0n)\n\n\t\tconst intentGatewayAddress = this.source.config.getIntentGatewayAddress(order.destChain)\n\t\tconst testValue = toHex(maxUint256 / 2n)\n\n\t\tconst orderOverrides = await Promise.all(\n\t\t\torder.outputs.map(async (output) => {\n\t\t\t\tconst tokenAddress = bytes32ToBytes20(output.token)\n\n\t\t\t\tif (tokenAddress === ADDRESS_ZERO) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tconst stateDiffs = []\n\n\t\t\t\t\tconst balanceData = ERC20Method.BALANCE_OF + bytes20ToBytes32(MOCK_ADDRESS).slice(2)\n\t\t\t\t\tconst balanceSlot = await getStorageSlot(this.dest.client, tokenAddress, balanceData as HexString)\n\t\t\t\t\tstateDiffs.push({ slot: balanceSlot as HexString, value: testValue })\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst allowanceData =\n\t\t\t\t\t\t\tERC20Method.ALLOWANCE +\n\t\t\t\t\t\t\tbytes20ToBytes32(MOCK_ADDRESS).slice(2) +\n\t\t\t\t\t\t\tbytes20ToBytes32(intentGatewayAddress).slice(2)\n\t\t\t\t\t\tconst allowanceSlot = await getStorageSlot(\n\t\t\t\t\t\t\tthis.dest.client,\n\t\t\t\t\t\t\ttokenAddress,\n\t\t\t\t\t\t\tallowanceData as HexString,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tstateDiffs.push({ slot: allowanceSlot as HexString, value: testValue })\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.warn(`Could not find allowance slot for token ${tokenAddress}:`, e)\n\t\t\t\t\t}\n\n\t\t\t\t\treturn { address: tokenAddress, stateDiff: stateDiffs }\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.warn(`Could not find balance slot for token ${tokenAddress}:`, e)\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t}),\n\t\t).then((results) => results.filter(Boolean))\n\n\t\tlet stateOverrides = [\n\t\t\t// Mock address with ETH balance so that any chain estimation runs\n\t\t\t// even when the address doesn't hold any native token in that chain\n\t\t\t{\n\t\t\t\taddress: MOCK_ADDRESS,\n\t\t\t\tbalance: maxUint256,\n\t\t\t},\n\t\t\t...orderOverrides.map((override) => ({\n\t\t\t\taddress: override!.address,\n\t\t\t\tstateDiff: override!.stateDiff,\n\t\t\t})),\n\t\t]\n\n\t\tlet destChainFillGas = 0n\n\t\tlet filledWithNativeToken = false\n\n\t\ttry {\n\t\t\tlet protocolFeeInNativeToken = await this.quoteNative(postRequest, relayerFeeInDestFeeToken)\n\n\t\t\t// Add 0.5% markup\n\t\t\tprotocolFeeInNativeToken = protocolFeeInNativeToken + (protocolFeeInNativeToken * 50n) / 10000n\n\n\t\t\tdestChainFillGas = await this.dest.client.estimateContractGas({\n\t\t\t\tabi: IntentGatewayABI.ABI,\n\t\t\t\taddress: intentGatewayAddress,\n\t\t\t\tfunctionName: \"fillOrder\",\n\t\t\t\targs: [transformOrderForContract(order), fillOptions as any],\n\t\t\t\taccount: MOCK_ADDRESS,\n\t\t\t\tvalue: totalEthValue + protocolFeeInNativeToken,\n\t\t\t\tstateOverride: stateOverrides as any,\n\t\t\t})\n\t\t\tfilledWithNativeToken = true\n\t\t} catch {\n\t\t\tconsole.warn(\n\t\t\t\t`Could not estimate gas for fill order with native token as fees for chain ${order.destChain}, now trying with fee token as fees`,\n\t\t\t)\n\n\t\t\tconst destFeeTokenBalanceData = ERC20Method.BALANCE_OF + bytes20ToBytes32(MOCK_ADDRESS).slice(2)\n\t\t\tconst destFeeTokenBalanceSlot = await getStorageSlot(\n\t\t\t\tthis.dest.client,\n\t\t\t\tdestChainFeeTokenAddress,\n\t\t\t\tdestFeeTokenBalanceData as HexString,\n\t\t\t)\n\t\t\tconst destFeeTokenAllowanceData =\n\t\t\t\tERC20Method.ALLOWANCE +\n\t\t\t\tbytes20ToBytes32(MOCK_ADDRESS).slice(2) +\n\t\t\t\tbytes20ToBytes32(intentGatewayAddress).slice(2)\n\t\t\tconst destFeeTokenAllowanceSlot = await getStorageSlot(\n\t\t\t\tthis.dest.client,\n\t\t\t\tdestChainFeeTokenAddress,\n\t\t\t\tdestFeeTokenAllowanceData as HexString,\n\t\t\t)\n\t\t\tconst feeTokenStateDiffs = [\n\t\t\t\t{ slot: destFeeTokenBalanceSlot, value: testValue },\n\t\t\t\t{ slot: destFeeTokenAllowanceSlot, value: testValue },\n\t\t\t]\n\n\t\t\tstateOverrides.push({\n\t\t\t\taddress: destChainFeeTokenAddress,\n\t\t\t\tstateDiff: feeTokenStateDiffs as any,\n\t\t\t})\n\n\t\t\tdestChainFillGas = await this.dest.client.estimateContractGas({\n\t\t\t\tabi: IntentGatewayABI.ABI,\n\t\t\t\taddress: intentGatewayAddress,\n\t\t\t\tfunctionName: \"fillOrder\",\n\t\t\t\targs: [transformOrderForContract(order), fillOptions as any],\n\t\t\t\taccount: MOCK_ADDRESS,\n\t\t\t\tvalue: totalEthValue,\n\t\t\t\tstateOverride: stateOverrides as any,\n\t\t\t})\n\t\t}\n\n\t\tconst fillGasInDestFeeToken = await this.convertGasToFeeToken(destChainFillGas, \"dest\")\n\t\tconst fillGasInSourceFeeToken = adjustFeeDecimals(\n\t\t\tfillGasInDestFeeToken,\n\t\t\tdestChainFeeTokenDecimals,\n\t\t\tsourceChainFeeTokenDecimals,\n\t\t)\n\n\t\tconst protocolFeeInSourceFeeToken = adjustFeeDecimals(\n\t\t\tawait this.dest.quote(postRequest),\n\t\t\tdestChainFeeTokenDecimals,\n\t\t\tsourceChainFeeTokenDecimals,\n\t\t)\n\n\t\tlet totalEstimateInSourceFeeToken =\n\t\t\tfillGasInSourceFeeToken + protocolFeeInSourceFeeToken + relayerFeeInSourceFeeToken\n\n\t\tif (!filledWithNativeToken) {\n\t\t\t// Testnet block\n\t\t\ttotalEstimateInSourceFeeToken =\n\t\t\t\ttotalEstimateInSourceFeeToken + (totalEstimateInSourceFeeToken * 200n) / 10000n\n\t\t}\n\n\t\tlet totalNativeTokenAmount = await this.convertFeeTokenToNative(totalEstimateInSourceFeeToken, \"source\")\n\n\t\t// 2% buffer to avoid close call with filler's internal calculations\n\t\ttotalNativeTokenAmount = totalNativeTokenAmount + (totalNativeTokenAmount * 200n) / 10000n\n\n\t\treturn {\n\t\t\tfeeTokenAmount: totalEstimateInSourceFeeToken,\n\t\t\tnativeTokenAmount: totalNativeTokenAmount,\n\t\t\tpostRequestCalldata,\n\t\t}\n\t}\n\n\t/**\n\t * Converts fee token amounts back to the equivalent amount in native token.\n\t * Uses USD pricing to convert between fee token amounts and native token costs.\n\t *\n\t * @param feeTokenAmount - The amount in fee token (DAI)\n\t * @param getQuoteIn - Whether to use \"source\" or \"dest\" chain for the conversion\n\t * @returns The fee token amount converted to native token amount\n\t * @private\n\t */\n\tprivate async convertFeeTokenToNative(feeTokenAmount: bigint, getQuoteIn: \"source\" | \"dest\"): Promise<bigint> {\n\t\tconst client = this[getQuoteIn].client\n\t\tconst evmChainID = `EVM-${client.chain?.id}`\n\t\tconst wethAsset = this[getQuoteIn].config.getWrappedNativeAssetWithDecimals(evmChainID).asset\n\t\tconst feeToken = await this[getQuoteIn].getFeeTokenWithDecimals()\n\n\t\ttry {\n\t\t\tconst { amountOut } = await this.findBestProtocolWithAmountIn(\n\t\t\t\tgetQuoteIn,\n\t\t\t\tfeeToken.address,\n\t\t\t\twethAsset,\n\t\t\t\tfeeTokenAmount,\n\t\t\t\t\"v2\",\n\t\t\t)\n\n\t\t\tif (amountOut === 0n) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\treturn amountOut\n\t\t} catch {\n\t\t\t// Testnet block\n\t\t\tconst nativeCurrency = client.chain?.nativeCurrency\n\t\t\tconst chainId = client.chain?.id\n\t\t\tconst feeTokenAmountDecimal = new Decimal(formatUnits(feeTokenAmount, feeToken.decimals))\n\t\t\tconst nativeTokenPriceUsd = new Decimal(await fetchPrice(nativeCurrency?.symbol!, chainId))\n\t\t\tconst totalCostInNativeToken = feeTokenAmountDecimal.dividedBy(nativeTokenPriceUsd)\n\t\t\treturn parseUnits(totalCostInNativeToken.toFixed(nativeCurrency?.decimals!), nativeCurrency?.decimals!)\n\t\t}\n\t}\n\n\t/**\n\t * Converts gas costs to the equivalent amount in the fee token (DAI).\n\t * Uses USD pricing to convert between native token gas costs and fee token amounts.\n\t *\n\t * @param gasEstimate - The estimated gas units\n\t * @param gasEstimateIn - Whether to use \"source\" or \"dest\" chain for the conversion\n\t * @returns The gas cost converted to fee token amount\n\t * @private\n\t */\n\tprivate async convertGasToFeeToken(gasEstimate: bigint, gasEstimateIn: \"source\" | \"dest\"): Promise<bigint> {\n\t\tconst client = this[gasEstimateIn].client\n\t\tconst gasPrice = await client.getGasPrice()\n\t\tconst gasCostInWei = gasEstimate * gasPrice\n\t\tconst evmChainID = `EVM-${client.chain?.id}`\n\t\tconst wethAddr = this[gasEstimateIn].config.getWrappedNativeAssetWithDecimals(evmChainID).asset\n\t\tconst feeToken = await this[gasEstimateIn].getFeeTokenWithDecimals()\n\n\t\ttry {\n\t\t\tconst { amountOut } = await this.findBestProtocolWithAmountIn(\n\t\t\t\tgasEstimateIn,\n\t\t\t\twethAddr,\n\t\t\t\tfeeToken.address,\n\t\t\t\tgasCostInWei,\n\t\t\t\t\"v2\",\n\t\t\t)\n\t\t\tif (amountOut === 0n) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\treturn amountOut\n\t\t} catch {\n\t\t\t// Testnet block\n\t\t\tconst nativeCurrency = client.chain?.nativeCurrency\n\t\t\tconst chainId = client.chain?.id\n\t\t\tconst gasCostInToken = new Decimal(formatUnits(gasCostInWei, nativeCurrency?.decimals!))\n\t\t\tconst tokenPriceUsd = await fetchPrice(nativeCurrency?.symbol!, chainId)\n\t\t\tconst gasCostUsd = gasCostInToken.times(tokenPriceUsd)\n\t\t\tconst feeTokenPriceUsd = new Decimal(1) // stable coin\n\t\t\tconst gasCostInFeeToken = gasCostUsd.dividedBy(feeTokenPriceUsd)\n\t\t\treturn parseUnits(gasCostInFeeToken.toFixed(feeToken.decimals), feeToken.decimals)\n\t\t}\n\t}\n\n\t/**\n\t * Gets a quote for the native token cost of dispatching a post request.\n\t *\n\t * @param postRequest - The post request to quote\n\t * @param fee - The fee amount in fee token\n\t * @returns The native token amount required\n\t */\n\tasync quoteNative(postRequest: IPostRequest, fee: bigint): Promise<bigint> {\n\t\tconst dispatchPost: DispatchPost = {\n\t\t\tdest: toHex(postRequest.dest),\n\t\t\tto: postRequest.to,\n\t\t\tbody: postRequest.body,\n\t\t\ttimeout: postRequest.timeoutTimestamp,\n\t\t\tfee: fee,\n\t\t\tpayer: postRequest.from,\n\t\t}\n\n\t\tconst quoteNative = await this.dest.client.readContract({\n\t\t\taddress: this.dest.config.getIntentGatewayAddress(postRequest.dest),\n\t\t\tabi: IntentGatewayABI.ABI,\n\t\t\tfunctionName: \"quoteNative\",\n\t\t\targs: [dispatchPost] as any,\n\t\t})\n\n\t\treturn quoteNative\n\t}\n\n\t/**\n\t * Finds the best Uniswap protocol (V2, V3, or V4) for swapping tokens given a desired output amount.\n\t * Compares liquidity and pricing across different protocols and fee tiers.\n\t *\n\t * @param getQuoteIn - Whether to use \"source\" or \"dest\" chain for the swap\n\t * @param tokenIn - The address of the input token\n\t * @param tokenOut - The address of the output token\n\t * @param amountOut - The desired output amount\n\t * @returns Object containing the best protocol, required input amount, and fee tier (for V3/V4)\n\t */\n\tasync findBestProtocolWithAmountOut(\n\t\tgetQuoteIn: \"source\" | \"dest\",\n\t\ttokenIn: HexString,\n\t\ttokenOut: HexString,\n\t\tamountOut: bigint,\n\t): Promise<{ protocol: \"v2\" | \"v3\" | \"v4\" | null; amountIn: bigint; fee?: number }> {\n\t\tconst client = this[getQuoteIn].client\n\t\tconst evmChainID = `EVM-${client.chain?.id}`\n\t\tlet amountInV2 = maxUint256\n\t\tlet amountInV3 = maxUint256\n\t\tlet amountInV4 = maxUint256\n\t\tlet bestV3Fee = 0\n\t\tlet bestV4Fee = 0\n\t\tconst commonFees = [100, 500, 3000, 10000]\n\n\t\tconst v2Router = this.source.config.getUniswapRouterV2Address(evmChainID)\n\t\tconst v2Factory = this.source.config.getUniswapV2FactoryAddress(evmChainID)\n\t\tconst v3Factory = this.source.config.getUniswapV3FactoryAddress(evmChainID)\n\t\tconst v3Quoter = this.source.config.getUniswapV3QuoterAddress(evmChainID)\n\t\tconst v4Quoter = this.source.config.getUniswapV4QuoterAddress(evmChainID)\n\n\t\t// For V2/V3, convert native addresses to WETH for quotes\n\t\tconst wethAsset = this.source.config.getWrappedNativeAssetWithDecimals(evmChainID).asset\n\t\tconst tokenInForQuote = tokenIn === ADDRESS_ZERO ? wethAsset : tokenIn\n\t\tconst tokenOutForQuote = tokenOut === ADDRESS_ZERO ? wethAsset : tokenOut\n\n\t\t// V2 Protocol Check\n\t\ttry {\n\t\t\tconst v2PairExists = (await client.readContract({\n\t\t\t\taddress: v2Factory,\n\t\t\t\tabi: UniswapV2Factory.ABI,\n\t\t\t\tfunctionName: \"getPair\",\n\t\t\t\targs: [tokenInForQuote, tokenOutForQuote],\n\t\t\t})) as HexString\n\n\t\t\tif (v2PairExists !== ADDRESS_ZERO) {\n\t\t\t\tconst v2AmountIn = (await client.readContract({\n\t\t\t\t\taddress: v2Router,\n\t\t\t\t\tabi: UniswapRouterV2.ABI,\n\t\t\t\t\tfunctionName: \"getAmountsIn\",\n\t\t\t\t\targs: [amountOut, [tokenInForQuote, tokenOutForQuote]],\n\t\t\t\t})) as bigint[]\n\n\t\t\t\tamountInV2 = v2AmountIn[0]\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"V2 quote failed:\", error)\n\t\t}\n\n\t\t// V3 Protocol Check - Find the best pool with best quote\n\t\tlet bestV3AmountIn = maxUint256\n\n\t\tfor (const fee of commonFees) {\n\t\t\ttry {\n\t\t\t\tconst pool = await client.readContract({\n\t\t\t\t\taddress: v3Factory,\n\t\t\t\t\tabi: UniswapV3Factory.ABI,\n\t\t\t\t\tfunctionName: \"getPool\",\n\t\t\t\t\targs: [tokenInForQuote, tokenOutForQuote, fee],\n\t\t\t\t})\n\n\t\t\t\tif (pool !== ADDRESS_ZERO) {\n\t\t\t\t\tconst liquidity = await client.readContract({\n\t\t\t\t\t\taddress: pool,\n\t\t\t\t\t\tabi: UniswapV3Pool.ABI,\n\t\t\t\t\t\tfunctionName: \"liquidity\",\n\t\t\t\t\t})\n\n\t\t\t\t\tif (liquidity > BigInt(0)) {\n\t\t\t\t\t\t// Use simulateContract for V3 quoter (handles revert-based returns)\n\t\t\t\t\t\tconst quoteResult = (\n\t\t\t\t\t\t\tawait client.simulateContract({\n\t\t\t\t\t\t\t\taddress: v3Quoter,\n\t\t\t\t\t\t\t\tabi: UniswapV3Quoter.ABI,\n\t\t\t\t\t\t\t\tfunctionName: \"quoteExactOutputSingle\",\n\t\t\t\t\t\t\t\targs: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttokenIn: tokenInForQuote,\n\t\t\t\t\t\t\t\t\t\ttokenOut: tokenOutForQuote,\n\t\t\t\t\t\t\t\t\t\tfee: fee,\n\t\t\t\t\t\t\t\t\t\tamount: amountOut,\n\t\t\t\t\t\t\t\t\t\tsqrtPriceLimitX96: BigInt(0),\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).result as [bigint, bigint, number, bigint]\n\n\t\t\t\t\t\tconst amountIn = quoteResult[0]\n\n\t\t\t\t\t\tif (amountIn < bestV3AmountIn) {\n\t\t\t\t\t\t\tbestV3AmountIn = amountIn\n\t\t\t\t\t\t\tbestV3Fee = fee\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`V3 quote failed for fee ${fee}, continuing to next fee tier`)\n\t\t\t}\n\t\t}\n\n\t\tamountInV3 = bestV3AmountIn\n\n\t\t// V4 Protocol Check - Find the best pool with best quote (uses native addresses directly)\n\t\tlet bestV4AmountIn = maxUint256\n\n\t\tfor (const fee of commonFees) {\n\t\t\ttry {\n\t\t\t\t// Create pool key for V4 - can use native addresses directly\n\t\t\t\tconst currency0 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenIn : tokenOut\n\t\t\t\tconst currency1 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenOut : tokenIn\n\n\t\t\t\tconst zeroForOne = tokenIn.toLowerCase() === currency0.toLowerCase()\n\n\t\t\t\tconst poolKey = {\n\t\t\t\t\tcurrency0: currency0,\n\t\t\t\t\tcurrency1: currency1,\n\t\t\t\t\tfee: fee,\n\t\t\t\t\ttickSpacing: this.getTickSpacing(fee),\n\t\t\t\t\thooks: ADDRESS_ZERO, // No hooks\n\t\t\t\t}\n\n\t\t\t\t// Get quote from V4 quoter\n\t\t\t\tconst quoteResult = (\n\t\t\t\t\tawait client.simulateContract({\n\t\t\t\t\t\taddress: v4Quoter,\n\t\t\t\t\t\tabi: UNISWAP_V4_QUOTER_ABI,\n\t\t\t\t\t\tfunctionName: \"quoteExactOutputSingle\",\n\t\t\t\t\t\targs: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpoolKey: poolKey,\n\t\t\t\t\t\t\t\tzeroForOne: zeroForOne,\n\t\t\t\t\t\t\t\texactAmount: amountOut,\n\t\t\t\t\t\t\t\thookData: \"0x\", // Empty hook data\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).result as [bigint, bigint] // [amountIn, gasEstimate]\n\n\t\t\t\tconst amountIn = quoteResult[0]\n\n\t\t\t\tif (amountIn < bestV4AmountIn) {\n\t\t\t\t\tbestV4AmountIn = amountIn\n\t\t\t\t\tbestV4Fee = fee\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`V4 quote failed for fee ${fee}, continuing to next fee tier`)\n\t\t\t}\n\t\t}\n\n\t\tamountInV4 = bestV4AmountIn\n\n\t\tif (amountInV2 === maxUint256 && amountInV3 === maxUint256 && amountInV4 === maxUint256) {\n\t\t\t// No liquidity in any protocol\n\t\t\treturn {\n\t\t\t\tprotocol: null,\n\t\t\t\tamountIn: maxUint256,\n\t\t\t}\n\t\t}\n\n\t\t// Prefer V4 when V4 is close to the best of V2/V3 (within thresholdBps)\n\t\tif (amountInV4 !== maxUint256) {\n\t\t\tconst thresholdBps = 100n // 1%\n\t\t\tif (amountInV3 !== maxUint256 && this.isWithinThreshold(amountInV4, amountInV3, thresholdBps)) {\n\t\t\t\treturn { protocol: \"v4\", amountIn: amountInV4, fee: bestV4Fee }\n\t\t\t}\n\t\t\tif (amountInV2 !== maxUint256 && this.isWithinThreshold(amountInV4, amountInV2, thresholdBps)) {\n\t\t\t\treturn { protocol: \"v4\", amountIn: amountInV4, fee: bestV4Fee }\n\t\t\t}\n\t\t}\n\n\t\tconst minAmount = [\n\t\t\t{ protocol: \"v2\" as const, amountIn: amountInV2 },\n\t\t\t{ protocol: \"v3\" as const, amountIn: amountInV3, fee: bestV3Fee },\n\t\t\t{ protocol: \"v4\" as const, amountIn: amountInV4, fee: bestV4Fee },\n\t\t].reduce((best, current) => (current.amountIn < best.amountIn ? current : best))\n\n\t\tif (minAmount.protocol === \"v2\") {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v2\",\n\t\t\t\tamountIn: amountInV2,\n\t\t\t}\n\t\t} else if (minAmount.protocol === \"v3\") {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v3\",\n\t\t\t\tamountIn: amountInV3,\n\t\t\t\tfee: bestV3Fee,\n\t\t\t}\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v4\",\n\t\t\t\tamountIn: amountInV4,\n\t\t\t\tfee: bestV4Fee,\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Finds the best Uniswap protocol (V2, V3, or V4) for swapping tokens given an input amount.\n\t * Compares liquidity and pricing across different protocols and fee tiers.\n\t *\n\t * @param getQuoteIn - Whether to use \"source\" or \"dest\" chain for the swap\n\t * @param tokenIn - The address of the input token\n\t * @param tokenOut - The address of the output token\n\t * @param amountIn - The input amount to swap\n\t * @param selectedProtocol - Optional specific protocol to use (\"v2\", \"v3\", or \"v4\")\n\t * @returns Object containing the best protocol, expected output amount, and fee tier (for V3/V4)\n\t */\n\tasync findBestProtocolWithAmountIn(\n\t\tgetQuoteIn: \"source\" | \"dest\",\n\t\ttokenIn: HexString,\n\t\ttokenOut: HexString,\n\t\tamountIn: bigint,\n\t\tselectedProtocol?: \"v2\" | \"v3\" | \"v4\",\n\t): Promise<{ protocol: \"v2\" | \"v3\" | \"v4\" | null; amountOut: bigint; fee?: number }> {\n\t\tconst client = this[getQuoteIn].client\n\t\tconst evmChainID = `EVM-${client.chain?.id}`\n\t\tlet amountOutV2 = BigInt(0)\n\t\tlet amountOutV3 = BigInt(0)\n\t\tlet amountOutV4 = BigInt(0)\n\t\tlet bestV3Fee = 0\n\t\tlet bestV4Fee = 0\n\t\tconst commonFees = [100, 500, 3000, 10000]\n\n\t\tconst v2Router = this.source.config.getUniswapRouterV2Address(evmChainID)\n\t\tconst v2Factory = this.source.config.getUniswapV2FactoryAddress(evmChainID)\n\t\tconst v3Factory = this.source.config.getUniswapV3FactoryAddress(evmChainID)\n\t\tconst v3Quoter = this.source.config.getUniswapV3QuoterAddress(evmChainID)\n\t\tconst v4Quoter = this.source.config.getUniswapV4QuoterAddress(evmChainID)\n\n\t\t// For V2/V3, convert native addresses to WETH for quotes\n\t\tconst wethAsset = this.source.config.getWrappedNativeAssetWithDecimals(evmChainID).asset\n\t\tconst tokenInForQuote = tokenIn === ADDRESS_ZERO ? wethAsset : tokenIn\n\t\tconst tokenOutForQuote = tokenOut === ADDRESS_ZERO ? wethAsset : tokenOut\n\n\t\t// V2 Protocol Check\n\t\ttry {\n\t\t\tconst v2PairExists = (await client.readContract({\n\t\t\t\taddress: v2Factory,\n\t\t\t\tabi: UniswapV2Factory.ABI,\n\t\t\t\tfunctionName: \"getPair\",\n\t\t\t\targs: [tokenInForQuote, tokenOutForQuote],\n\t\t\t})) as HexString\n\n\t\t\tif (v2PairExists !== ADDRESS_ZERO) {\n\t\t\t\tconst v2AmountOut = (await client.readContract({\n\t\t\t\t\taddress: v2Router,\n\t\t\t\t\tabi: UniswapRouterV2.ABI,\n\t\t\t\t\tfunctionName: \"getAmountsOut\",\n\t\t\t\t\targs: [amountIn, [tokenInForQuote, tokenOutForQuote]],\n\t\t\t\t})) as bigint[]\n\n\t\t\t\tamountOutV2 = v2AmountOut[1]\n\t\t\t\tif (selectedProtocol === \"v2\") {\n\t\t\t\t\treturn { protocol: \"v2\", amountOut: amountOutV2 }\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"V2 quote failed:\", error)\n\t\t}\n\n\t\t// V3 Protocol Check - Find the best pool with best quote\n\t\tlet bestV3AmountOut = BigInt(0)\n\n\t\tfor (const fee of commonFees) {\n\t\t\ttry {\n\t\t\t\tconst pool = await client.readContract({\n\t\t\t\t\taddress: v3Factory,\n\t\t\t\t\tabi: UniswapV3Factory.ABI,\n\t\t\t\t\tfunctionName: \"getPool\",\n\t\t\t\t\targs: [tokenInForQuote, tokenOutForQuote, fee],\n\t\t\t\t})\n\n\t\t\t\tif (pool !== ADDRESS_ZERO) {\n\t\t\t\t\tconst liquidity = await client.readContract({\n\t\t\t\t\t\taddress: pool,\n\t\t\t\t\t\tabi: UniswapV3Pool.ABI,\n\t\t\t\t\t\tfunctionName: \"liquidity\",\n\t\t\t\t\t})\n\n\t\t\t\t\tif (liquidity > BigInt(0)) {\n\t\t\t\t\t\t// Use simulateContract for V3 quoter (handles revert-based returns)\n\t\t\t\t\t\tconst quoteResult = (\n\t\t\t\t\t\t\tawait client.simulateContract({\n\t\t\t\t\t\t\t\taddress: v3Quoter,\n\t\t\t\t\t\t\t\tabi: UniswapV3Quoter.ABI,\n\t\t\t\t\t\t\t\tfunctionName: \"quoteExactInputSingle\",\n\t\t\t\t\t\t\t\targs: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttokenIn: tokenInForQuote,\n\t\t\t\t\t\t\t\t\t\ttokenOut: tokenOutForQuote,\n\t\t\t\t\t\t\t\t\t\tfee: fee,\n\t\t\t\t\t\t\t\t\t\tamountIn: amountIn,\n\t\t\t\t\t\t\t\t\t\tsqrtPriceLimitX96: BigInt(0),\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).result as [bigint, bigint, number, bigint]\n\n\t\t\t\t\t\tconst amountOut = quoteResult[0]\n\n\t\t\t\t\t\tif (amountOut > bestV3AmountOut) {\n\t\t\t\t\t\t\tbestV3AmountOut = amountOut\n\t\t\t\t\t\t\tbestV3Fee = fee\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`V3 quote failed for fee ${fee}, continuing to next fee tier`)\n\t\t\t}\n\t\t}\n\n\t\tamountOutV3 = bestV3AmountOut\n\n\t\tif (selectedProtocol === \"v3\") {\n\t\t\treturn { protocol: \"v3\", amountOut: amountOutV3, fee: bestV3Fee }\n\t\t}\n\n\t\t// V4 Protocol Check - Find the best pool with best quote (uses native addresses directly)\n\t\tlet bestV4AmountOut = BigInt(0)\n\n\t\tfor (const fee of commonFees) {\n\t\t\ttry {\n\t\t\t\t// Create pool key for V4 - can use native addresses directly\n\t\t\t\tconst currency0 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenIn : tokenOut\n\t\t\t\tconst currency1 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenOut : tokenIn\n\n\t\t\t\tconst zeroForOne = tokenIn.toLowerCase() === currency0.toLowerCase()\n\n\t\t\t\tconst poolKey = {\n\t\t\t\t\tcurrency0: currency0,\n\t\t\t\t\tcurrency1: currency1,\n\t\t\t\t\tfee: fee,\n\t\t\t\t\ttickSpacing: this.getTickSpacing(fee),\n\t\t\t\t\thooks: ADDRESS_ZERO, // No hooks\n\t\t\t\t}\n\n\t\t\t\t// Get quote from V4 quoter\n\t\t\t\tconst quoteResult = (\n\t\t\t\t\tawait client.simulateContract({\n\t\t\t\t\t\taddress: v4Quoter,\n\t\t\t\t\t\tabi: UNISWAP_V4_QUOTER_ABI,\n\t\t\t\t\t\tfunctionName: \"quoteExactInputSingle\",\n\t\t\t\t\t\targs: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpoolKey: poolKey,\n\t\t\t\t\t\t\t\tzeroForOne: zeroForOne,\n\t\t\t\t\t\t\t\texactAmount: amountIn,\n\t\t\t\t\t\t\t\thookData: \"0x\", // Empty hook data\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).result as [bigint, bigint] // [amountOut, gasEstimate]\n\n\t\t\t\tconst amountOut = quoteResult[0]\n\n\t\t\t\tif (amountOut > bestV4AmountOut) {\n\t\t\t\t\tbestV4AmountOut = amountOut\n\t\t\t\t\tbestV4Fee = fee\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`V4 quote failed for fee ${fee}, continuing to next fee tier`)\n\t\t\t}\n\t\t}\n\n\t\tamountOutV4 = bestV4AmountOut\n\n\t\tif (selectedProtocol === \"v4\") {\n\t\t\treturn { protocol: \"v4\", amountOut: amountOutV4, fee: bestV4Fee }\n\t\t}\n\n\t\tif (amountOutV2 === BigInt(0) && amountOutV3 === BigInt(0) && amountOutV4 === BigInt(0)) {\n\t\t\t// No liquidity in any protocol\n\t\t\treturn {\n\t\t\t\tprotocol: null,\n\t\t\t\tamountOut: BigInt(0),\n\t\t\t}\n\t\t}\n\n\t\t// Prefer V4 when V4 is close to the best of V2/V3 (within thresholdBps)\n\t\tif (amountOutV4 !== BigInt(0)) {\n\t\t\tconst thresholdBps = 100n // 1%\n\t\t\tif (amountOutV3 !== BigInt(0) && this.isWithinThreshold(amountOutV4, amountOutV3, thresholdBps)) {\n\t\t\t\treturn { protocol: \"v4\", amountOut: amountOutV4, fee: bestV4Fee }\n\t\t\t}\n\t\t\tif (amountOutV2 !== BigInt(0) && this.isWithinThreshold(amountOutV4, amountOutV2, thresholdBps)) {\n\t\t\t\treturn { protocol: \"v4\", amountOut: amountOutV4, fee: bestV4Fee }\n\t\t\t}\n\t\t}\n\n\t\tconst maxAmount = [\n\t\t\t{ protocol: \"v2\" as const, amountOut: amountOutV2 },\n\t\t\t{ protocol: \"v3\" as const, amountOut: amountOutV3, fee: bestV3Fee },\n\t\t\t{ protocol: \"v4\" as const, amountOut: amountOutV4, fee: bestV4Fee },\n\t\t].reduce((best, current) => (current.amountOut > best.amountOut ? current : best))\n\n\t\tif (maxAmount.protocol === \"v2\") {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v2\",\n\t\t\t\tamountOut: amountOutV2,\n\t\t\t}\n\t\t} else if (maxAmount.protocol === \"v3\") {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v3\",\n\t\t\t\tamountOut: amountOutV3,\n\t\t\t\tfee: bestV3Fee,\n\t\t\t}\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v4\",\n\t\t\t\tamountOut: amountOutV4,\n\t\t\t\tfee: bestV4Fee,\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if an order has been filled by verifying the commitment status on-chain.\n\t * Reads the storage slot corresponding to the order's commitment hash.\n\t *\n\t * @param order - The order to check\n\t * @returns True if the order has been filled, false otherwise\n\t */\n\tasync isOrderFilled(order: Order): Promise<boolean> {\n\t\tconst intentGatewayAddress = this.source.config.getIntentGatewayAddress(order.destChain)\n\n\t\tlet filledSlot = await this.dest.client.readContract({\n\t\t\tabi: IntentGatewayABI.ABI,\n\t\t\taddress: intentGatewayAddress,\n\t\t\tfunctionName: \"calculateCommitmentSlotHash\",\n\t\t\targs: [order.id as HexString],\n\t\t})\n\n\t\tconst filledStatus = await this.dest.client.getStorageAt({\n\t\t\taddress: intentGatewayAddress,\n\t\t\tslot: filledSlot,\n\t\t})\n\t\treturn filledStatus !== \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n\t}\n\n\t/**\n\t * Returns the tick spacing for a given fee tier in Uniswap V4\n\t * @param fee - The fee tier in basis points\n\t * @returns The tick spacing value\n\t */\n\tprivate getTickSpacing(fee: number): number {\n\t\tswitch (fee) {\n\t\t\tcase 100: // 0.01%\n\t\t\t\treturn 1\n\t\t\tcase 500: // 0.05%\n\t\t\t\treturn 10\n\t\t\tcase 3000: // 0.30%\n\t\t\t\treturn 60\n\t\t\tcase 10000: // 1.00%\n\t\t\t\treturn 200\n\t\t\tdefault:\n\t\t\t\treturn 60 // Default to medium\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if candidate <= reference * (1 + thresholdBps/10000)\n\t * @param candidate - The candidate amount to compare\n\t * @param reference - The reference amount\n\t * @param thresholdBps - The threshold in basis points\n\t * @returns True if candidate is within threshold of reference\n\t */\n\tprivate isWithinThreshold(candidate: bigint, reference: bigint, thresholdBps: bigint): boolean {\n\t\tconst basisPoints = 10000n\n\t\treturn candidate * basisPoints <= reference * (basisPoints + thresholdBps)\n\t}\n}\n\n/**\n * Transforms an Order object into the format expected by the smart contract.\n * Converts chain IDs to hex format and restructures input/output arrays.\n *\n * @param order - The order to transform\n * @returns The order in contract-compatible format\n */\nfunction transformOrderForContract(order: Order) {\n\treturn {\n\t\tsourceChain: toHex(order.sourceChain),\n\t\tdestChain: toHex(order.destChain),\n\t\tfees: order.fees,\n\t\tcallData: order.callData,\n\t\tdeadline: order.deadline,\n\t\tnonce: order.nonce,\n\t\tinputs: order.inputs.map((input) => ({\n\t\t\ttoken: input.token,\n\t\t\tamount: input.amount,\n\t\t})),\n\t\toutputs: order.outputs.map((output) => ({\n\t\t\ttoken: output.token,\n\t\t\tamount: output.amount,\n\t\t\tbeneficiary: output.beneficiary,\n\t\t})),\n\t\tuser: order.user,\n\t}\n}\n","import { hexToBytes, pad, bytesToHex } from \"viem\"\nimport type { ApiPromise } from \"@polkadot/api\"\nimport { Struct, Vector, u8, u64, _void, Option, u128, bool } from \"scale-ts\"\nimport { H256, StateMachine } from \"@/utils/substrate\"\nimport type { HexString } from \"@/types\"\nimport { convertStateMachineIdToEnum } from \"@/chain\"\nimport { keccakAsU8a, xxhashAsU8a } from \"@polkadot/util-crypto\"\nimport type { Option as PolakdotOption } from \"@polkadot/types\"\nimport type { EventRecord, StorageData } from \"@polkadot/types/interfaces\"\nimport type { SignerOptions } from \"@polkadot/api/types\"\nimport type { HyperbridgeTxEvents } from \"./xcmGateway\"\n\nexport type Params = {\n\t/** Asset symbol for the teleport operation */\n\tsymbol: string\n\t/**\n\t * Destination state machine identifier (e.g., \"EVM-1\", \"SUBSTRATE-cere\")\n\t * that specifies the target blockchain or network\n\t */\n\tdestination: string\n\t/**\n\t * Recipient address in hexadecimal format where the assets will be sent\n\t * on the destination chain\n\t */\n\trecipient: HexString\n\t/**\n\t * Amount of tokens to teleport, represented as a bigint to handle\n\t * large numeric values precisely\n\t */\n\tamount: bigint\n\t/**\n\t * Request timeout in block numbers or timestamp, after which the\n\t * teleport operation will be considered failed\n\t */\n\ttimeout: bigint\n\t/**\n\t * Address of the token gateway contract on the destination chain\n\t * that will process the teleported assets\n\t */\n\ttokenGatewayAddress: Uint8Array\n\t/**\n\t * Fee paid to relayers who process the cross-chain transaction,\n\t * represented as a bigint\n\t */\n\trelayerFee: bigint\n\t/**\n\t * Optional call data to be executed on the destination chain\n\t * as part of the teleport operation\n\t */\n\tcallData?: Uint8Array\n\t/**\n\t * Flag indicating whether to automatically redeem the tokens\n\t * for erc20\n\t */\n\tredeem: boolean\n}\n\nconst TeleportParams = Struct({\n\t/// StateMachine\n\tdestination: StateMachine,\n\t/// Receipient\n\trecepient: H256,\n\t/// Amount\n\tamount: u128,\n\t/// Request timeout\n\ttimeout: u64,\n\t/// Token gateway address\n\ttokenGatewayAddress: Vector(u8),\n\t/// Relayer fee\n\trelayerFee: u128,\n\t/// Call data\n\tcallData: Option(Vector(u8)),\n\t/// Redeem\n\tredeem: bool,\n})\n\nasync function fetchLocalAssetId(params: { api: ApiPromise; assetId: Uint8Array }) {\n\tconst { api, assetId } = params\n\n\t// twox_128\n\tconst palletPrefix = xxhashAsU8a(\"TokenGateway\", 128)\n\t// twox_128\n\tconst storagePrefix = xxhashAsU8a(\"LocalAssets\", 128)\n\n\tconst full_key = new Uint8Array([...palletPrefix, ...storagePrefix, ...assetId])\n\n\tconst hexKey = bytesToHex(full_key)\n\n\t// read account balance\n\n\tconst storage_value: PolakdotOption<StorageData> = (await api.rpc.state.getStorage(\n\t\thexKey,\n\t)) as PolakdotOption<StorageData>\n\n\tif (storage_value.isSome) {\n\t\tconst assetId = storage_value.value.toU8a()\n\n\t\treturn assetId\n\t}\n\n\treturn null\n}\n\n/**\n * Teleports assets from Substrate to other chains via the token gateway\n *\n * Note: There is no guarantee that both Dispatched and Finalized events will be yielded.\n * Consumers should listen for either one of these events instead of expecting both.\n *\n *\n * @param apiPromise - Polkadot API instance\n * @param who - SS58Address\n * @param params - Teleport parameters\n * @param params.symbol - Asset symbol\n * @param params.destination - Target state machine ID\n * @param params.recipient - Recipient address\n * @param params.amount - Amount to teleport\n * @param params.timeout - Operation timeout\n * @param params.tokenGatewayAddress - Gateway contract address\n * @param params.relayerFee - Fee for the relayer\n * @param params.redeem - Whether to redeem on arrival\n * @param params.callData - Optional additional call data\n * @param options - Signer options\n * @yields {HyperbridgeTxEvents} Stream of events indicating transaction status\n * @throws Error when asset ID is unknown or transaction fails\n */\nexport async function teleport(teleport_param: {\n\twho: string\n\tparams: Params\n\tapiPromise: ApiPromise\n\toptions: Partial<SignerOptions>\n}): Promise<ReadableStream<HyperbridgeTxEvents>> {\n\tconst { who, options, params, apiPromise } = teleport_param\n\n\tconst substrateComplianceAddr = (address: HexString, stateMachine: string) => {\n\t\tif (stateMachine.startsWith(\"EVM-\")) return pad(address, { size: 32, dir: \"left\" })\n\n\t\treturn address\n\t}\n\n\tconst assetId = keccakAsU8a(params.symbol)\n\n\t// Fetch scale encoded local asset id\n\n\tconst scaleEncodedAssetId = await fetchLocalAssetId({ api: apiPromise, assetId })\n\n\tif (scaleEncodedAssetId === null) {\n\t\tthrow new Error(\"Unknown asset id provided\")\n\t}\n\n\tconst destination = convertStateMachineIdToEnum(params.destination)\n\n\tconst recipient = hexToBytes(substrateComplianceAddr(params.recipient, params.destination))\n\n\tconst teleportParams = {\n\t\tdestination: destination,\n\t\trecepient: Array.from(recipient),\n\t\tamount: params.amount,\n\t\ttimeout: BigInt(params.timeout),\n\t\ttokenGatewayAddress: Array.from(params.tokenGatewayAddress),\n\t\trelayerFee: BigInt(params.relayerFee),\n\t\tredeem: params.redeem,\n\t\tcallData: params.callData ? Array.from(params.callData) : undefined,\n\t}\n\n\tconst encoded = TeleportParams.enc(teleportParams)\n\tconst fullCallData = new Uint8Array([...scaleEncodedAssetId, ...encoded])\n\n\tconst tx = apiPromise.tx.tokenGateway.teleport(fullCallData)\n\tlet unsub = () => {}\n\tlet closed = false\n\n\tconst stream = new ReadableStream<HyperbridgeTxEvents>(\n\t\t{\n\t\t\tasync start(controller) {\n\t\t\t\tunsub = await tx.signAndSend(who, options, async (result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { isInBlock, isError, dispatchError, txHash, isFinalized, status } = result\n\t\t\t\t\t\t// @ts-expect-error Type Mismatch\n\t\t\t\t\t\tconst events = result.events as ISubmittableResult[\"events\"]\n\n\t\t\t\t\t\tif (isError) {\n\t\t\t\t\t\t\tconsole.error(\"Transaction failed: \", dispatchError)\n\t\t\t\t\t\t\tcontroller.enqueue({ kind: \"Error\", error: dispatchError })\n\t\t\t\t\t\t\tunsub?.()\n\t\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\t\tclosed = true\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (status.type === \"Ready\") {\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\tkind: \"Ready\",\n\t\t\t\t\t\t\t\ttransaction_hash: txHash.toHex(),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (isInBlock || isFinalized) {\n\t\t\t\t\t\t\tconst commitment_hash = readIsmpCommitmentHash(events)\n\t\t\t\t\t\t\tconst blockHash = isInBlock ? status.asInBlock.toHex() : status.asFinalized.toHex()\n\n\t\t\t\t\t\t\tif (!commitment_hash) {\n\t\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\t\tkind: \"Error\",\n\t\t\t\t\t\t\t\t\terror: new Error(\"Commitment Hash missing\"),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\treturn controller.close()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst header = await apiPromise.rpc.chain.getHeader(blockHash)\n\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\tkind: isInBlock ? \"Dispatched\" : \"Finalized\",\n\t\t\t\t\t\t\t\ttransaction_hash: txHash.toHex(),\n\t\t\t\t\t\t\t\tblock_number: header.number.toBigInt(),\n\t\t\t\t\t\t\t\tcommitment: commitment_hash,\n\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\tif (isFinalized) {\n\t\t\t\t\t\t\t\tunsub?.()\n\t\t\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\t\t\tclosed = true\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t// For some unknown reason the call back is called again after unsubscribing, this check prevents it from trying to push an event to the closed stream\n\t\t\t\t\t\tif (closed) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\tkind: \"Error\",\n\t\t\t\t\t\t\terror: String(err),\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\tcancel: () => unsub?.(),\n\t\t},\n\t\t{\n\t\t\thighWaterMark: 3,\n\t\t\tsize: () => 1,\n\t\t},\n\t)\n\n\treturn stream\n}\n\nfunction readIsmpCommitmentHash(events: EventRecord[]): HexString | undefined {\n\tfor (const record of events) {\n\t\tconst { event } = record\n\n\t\tif (event.section === \"ismp\" && event.method === \"Request\") {\n\t\t\tconst commitment = event.data[3].toHex()\n\n\t\t\tif (!commitment) return\n\n\t\t\treturn commitment\n\t\t}\n\t}\n}\n","import type { ApiPromise } from \"@polkadot/api\"\nimport type { HexString } from \"@/types\"\nimport type { SignerOptions } from \"@polkadot/api/types\"\nimport { u8aToHex, hexToU8a } from \"@polkadot/util\"\nimport { decodeAddress, keccakAsHex } from \"@polkadot/util-crypto\"\nimport { parseUnits } from \"viem\"\nimport { sleep, StateMachine } from \"@/utils\"\nimport { Bytes, Struct, Tuple, u128, u64, u8 } from \"scale-ts\"\n\nconst MultiAccount = Struct({\n\tsubstrate_account: Bytes(32),\n\tevm_account: Bytes(20),\n\tdest_state_machine: StateMachine,\n\ttimeout: u64,\n\taccount_nonce: u64,\n})\n\nexport type HyperbridgeTxEvents =\n\t| {\n\t\t\tkind: \"Ready\"\n\t\t\ttransaction_hash: HexString\n\t\t\tmessage_id?: HexString\n\t }\n\t| {\n\t\t\tkind: \"Dispatched\"\n\t\t\ttransaction_hash: HexString\n\t\t\tblock_number: bigint\n\t\t\tmessage_id?: HexString\n\t\t\tcommitment: HexString\n\t }\n\t| {\n\t\t\tkind: \"Finalized\"\n\t\t\ttransaction_hash: HexString\n\t\t\tmessage_id?: HexString\n\t\t\tblock_number?: bigint\n\t\t\tcommitment?: HexString\n\t }\n\t| {\n\t\t\tkind: \"Error\"\n\t\t\terror: unknown\n\t }\n\nconst DECIMALS = 10\n/**\n * Parameters for teleporting DOT from Polkadot relay chain to EVM-based destination\n */\nexport type XcmGatewayParams = {\n\t/**\n\t * Destination state machine ID (chain ID) where assets will be teleported to\n\t * This value identifies the specific EVM chain in the destination network\n\t */\n\tdestination: number\n\n\t/**\n\t * The recipient address on the destination chain (in hex format)\n\t * This is the EVM address that will receive the teleported assets\n\t */\n\trecipient: HexString\n\n\t/**\n\t * Amount of DOT to teleport\n\t * This will be converted to the appropriate format internally\n\t */\n\tamount: number\n\n\t/**\n\t * Request timeout value in blocks or timestamp\n\t * Specifies how long the teleport request remains valid before expiring\n\t */\n\ttimeout: bigint\n\n\t/**\n\t * The parachain ID of the Hyperbridge\n\t */\n\tparaId: number\n}\n\n/**\n * Teleports DOT tokens from Polkadot relay chain to an EVM-based destination chain\n * using XCM (Cross-Consensus Message Format) and uses the indexer client to track\n * the transaction instead of polling hyperbridge blocks.\n *\n * This function initiates a teleport transaction, monitors its status through the indexer,\n * and yields events about the transaction's progress through a ReadableStream.\n * It handles the complete lifecycle of a teleport operation:\n * 1. Transaction preparation and signing\n * 2. Broadcasting to the relay chain\n * 3. Tracking the transaction via the indexer client\n * 4. Yielding events about transaction status\n *\n * Note: There is no guarantee that both Dispatched and Finalized events will be yielded.\n * Consumers should listen for either one of these events instead of expecting both.\n *\n * @param relayApi - Polkadot API instance connected to the relay chain\n * @param hyperbridge - Polkadot API instance connected to the Hyperbridge parachain\n * @param who - Sender's SS58Address address\n * @param options - Transaction signing options\n * @param params - Teleport parameters including destination, recipient, and amount\n * @param indexerClient - The indexer client to track the transaction\n * @param pollInterval - Optional polling interval in milliseconds (default: 2000)\n * @yields {HyperbridgeTxEvents} Stream of events indicating transaction status\n */\nexport async function teleportDot(param_: {\n\tsourceApi: ApiPromise\n\tsourceIsAssetHub: boolean\n\twho: string\n\txcmGatewayParams: XcmGatewayParams\n\toptions: Partial<SignerOptions>\n}): Promise<ReadableStream<HyperbridgeTxEvents>> {\n\tconst { sourceApi, sourceIsAssetHub, who, options, xcmGatewayParams: params } = param_\n\tlet { nonce: accountNonce } = (await sourceApi.query.system.account(who)) as any\n\n\tlet encoded_message = MultiAccount.enc({\n\t\tsubstrate_account: decodeAddress(who),\n\t\tevm_account: hexToU8a(params.recipient),\n\t\tdest_state_machine: { tag: \"Evm\", value: params.destination },\n\t\ttimeout: params.timeout,\n\t\taccount_nonce: accountNonce,\n\t})\n\n\tlet message_id = keccakAsHex(encoded_message)\n\n\t// Set up the transaction parameters\n\tconst beneficiary = {\n\t\tV3: {\n\t\t\tparents: 0,\n\t\t\tinterior: {\n\t\t\t\tX4: [\n\t\t\t\t\t{\n\t\t\t\t\t\tAccountId32: {\n\t\t\t\t\t\t\tid: u8aToHex(decodeAddress(who)),\n\t\t\t\t\t\t\tnetwork: null,\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\tAccountKey20: {\n\t\t\t\t\t\t\tnetwork: {\n\t\t\t\t\t\t\t\tEthereum: {\n\t\t\t\t\t\t\t\t\tchainId: params.destination,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tkey: params.recipient,\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\tGeneralIndex: params.timeout,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tGeneralIndex: accountNonce,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t}\n\n\tlet assets\n\tlet destination\n\n\tif (sourceIsAssetHub) {\n\t\tdestination = {\n\t\t\tV3: {\n\t\t\t\tparents: 1,\n\t\t\t\tinterior: {\n\t\t\t\t\tX1: {\n\t\t\t\t\t\tParachain: params.paraId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tassets = {\n\t\t\tV3: [\n\t\t\t\t{\n\t\t\t\t\tid: {\n\t\t\t\t\t\tConcrete: {\n\t\t\t\t\t\t\tparents: 1,\n\t\t\t\t\t\t\tinterior: \"Here\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tfun: {\n\t\t\t\t\t\tFungible: parseUnits(params.amount.toString(), DECIMALS),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t} else {\n\t\tdestination = {\n\t\t\tV3: {\n\t\t\t\tparents: 0,\n\t\t\t\tinterior: {\n\t\t\t\t\tX1: {\n\t\t\t\t\t\tParachain: params.paraId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tassets = {\n\t\t\tV3: [\n\t\t\t\t{\n\t\t\t\t\tid: {\n\t\t\t\t\t\tConcrete: {\n\t\t\t\t\t\t\tparents: 0,\n\t\t\t\t\t\t\tinterior: \"Here\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tfun: {\n\t\t\t\t\t\tFungible: parseUnits(params.amount.toString(), DECIMALS),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n\n\tconst feeAssetItem = 0\n\tconst weightLimit = \"Unlimited\"\n\n\tlet tx\n\n\tif (sourceIsAssetHub) {\n\t\ttx = sourceApi.tx.polkadotXcm.limitedReserveTransferAssets(\n\t\t\tdestination,\n\t\t\tbeneficiary,\n\t\t\tassets,\n\t\t\tfeeAssetItem,\n\t\t\tweightLimit,\n\t\t)\n\t} else {\n\t\ttx = sourceApi.tx.xcmPallet.limitedReserveTransferAssets(\n\t\t\tdestination,\n\t\t\tbeneficiary,\n\t\t\tassets,\n\t\t\tfeeAssetItem,\n\t\t\tweightLimit,\n\t\t)\n\t}\n\n\tlet closed = false\n\t// Create the stream to report events\n\tlet unsubscribe: () => void\n\tconst stream = new ReadableStream<HyperbridgeTxEvents>(\n\t\t{\n\t\t\tasync start(controller) {\n\t\t\t\tunsubscribe = await tx.signAndSend(who, options, async (result: any) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { status, dispatchError, txHash } = result\n\n\t\t\t\t\t\tif (dispatchError) {\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\tkind: \"Error\",\n\t\t\t\t\t\t\t\terror: `Error watching extrinsic: ${dispatchError.toString()}`,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tunsubscribe?.()\n\t\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\t\tclosed = true\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (status.isReady) {\n\t\t\t\t\t\t\t// Send tx hash as soon as it is available\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\tkind: \"Ready\",\n\t\t\t\t\t\t\t\ttransaction_hash: txHash.toHex(),\n\t\t\t\t\t\t\t\tmessage_id,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} else if (status.isInBlock || status.isFinalized) {\n\t\t\t\t\t\t\t// Send event with the status kind (either Dispatched or Finalized)\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\tkind: \"Finalized\",\n\t\t\t\t\t\t\t\ttransaction_hash: txHash.toHex(),\n\t\t\t\t\t\t\t\tmessage_id,\n\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t// We can end the stream because indexer only indexes finalized events from hyperbridge\n\t\t\t\t\t\t\tclosed = true\n\t\t\t\t\t\t\tunsubscribe?.()\n\t\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t// For some unknown reason the call back is called again after unsubscribing, this check prevents it from trying to push an event to the closed stream\n\t\t\t\t\t\tif (closed) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\tkind: \"Error\",\n\t\t\t\t\t\t\terror: String(err),\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\tcancel() {\n\t\t\t\t// This is called if the reader cancels,\n\t\t\t\tunsubscribe?.()\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\thighWaterMark: 3,\n\t\t\tsize: () => 1,\n\t\t},\n\t)\n\n\treturn stream\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/ckb-mmr-wasm/dist/node/node.js","../../src/types/index.ts","../../src/abis/evmHost.ts","../../src/abis/handler.ts","../../src/configs/chain.ts","../../src/configs/ChainConfigService.ts","../../src/utils/mmr.ts","../../src/utils/substrate.ts","../../src/utils.ts","../../src/utils/exceptions.ts","../../src/chains/evm.ts","../../src/chains/substrate.ts","../../src/chain.ts","../../src/queries.ts","../../src/query-client.ts","../../src/client.ts","../../src/abis/IntentGateway.ts","../../src/abis/uniswapV2Factory.ts","../../src/abis/uniswapRouterV2.ts","../../src/abis/uniswapV3Factory.ts","../../src/abis/uniswapV3Pool.ts","../../src/abis/uniswapV3Quoter.ts","../../src/abis/uniswapV4Quoter.ts","../../src/protocols/intents.ts","../../src/utils/tokenGateway.ts","../../src/utils/xcmGateway.ts"],"names":["ptr","TextDecoder","TextEncoder","HyperClientStatus","OrderStatus","TeleportStatus","RequestKind","ABI","Chains","env","generate_root_with_proof","encodePacked","wasm","toHex","hexToBytes","ERC20Method","client","mainnet","arbitrum","base","bsc","bscTestnet","gnosisChiado","bytesToHex","encoded","message","keccak256","Vector","u8","toBytes","match","createConsola","LogLevels","request","pad","timeout","teleport","Struct","u64","Option","assetId","keccakAsU8a","assets","parseUnits"],"mappings":"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","file":"index.js","sourcesContent":["import { readFileSync } from \"node:fs\"\nimport { join } from \"node:path\"\nimport { TextDecoder, TextEncoder } from \"node:util\"\n\nlet wasm\n\n// new URL('.', import.meta.url).pathname doesn't work fine with Nextjs\n// so I switched to this method of resolving the directory\nconst full_path = import.meta.url.split(\"/\").slice(1)\nconst __dirname = `${full_path.slice(0, full_path.length - 1).join(\"/\")}/`\n\nlet cachedTextDecoder = new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n\ncachedTextDecoder.decode()\n\nlet cachedUint8ArrayMemory0 = null\n\nfunction getUint8ArrayMemory0() {\n\tif (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n\t\tcachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer)\n\t}\n\treturn cachedUint8ArrayMemory0\n}\n\nfunction getStringFromWasm0(ptr, len) {\n\tptr = ptr >>> 0\n\treturn cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len))\n}\n\nlet WASM_VECTOR_LEN = 0\n\nlet cachedTextEncoder = new TextEncoder(\"utf-8\")\n\nconst encodeString =\n\ttypeof cachedTextEncoder.encodeInto === \"function\"\n\t\t? function (arg, view) {\n\t\t\t\treturn cachedTextEncoder.encodeInto(arg, view)\n\t\t\t}\n\t\t: function (arg, view) {\n\t\t\t\tconst buf = cachedTextEncoder.encode(arg)\n\t\t\t\tview.set(buf)\n\t\t\t\treturn {\n\t\t\t\t\tread: arg.length,\n\t\t\t\t\twritten: buf.length,\n\t\t\t\t}\n\t\t\t}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\tif (realloc === undefined) {\n\t\tconst buf = cachedTextEncoder.encode(arg)\n\t\tconst ptr = malloc(buf.length, 1) >>> 0\n\t\tgetUint8ArrayMemory0()\n\t\t\t.subarray(ptr, ptr + buf.length)\n\t\t\t.set(buf)\n\t\tWASM_VECTOR_LEN = buf.length\n\t\treturn ptr\n\t}\n\n\tlet len = arg.length\n\tlet ptr = malloc(len, 1) >>> 0\n\n\tconst mem = getUint8ArrayMemory0()\n\n\tlet offset = 0\n\n\tfor (; offset < len; offset++) {\n\t\tconst code = arg.charCodeAt(offset)\n\t\tif (code > 0x7f) break\n\t\tmem[ptr + offset] = code\n\t}\n\n\tif (offset !== len) {\n\t\tif (offset !== 0) {\n\t\t\targ = arg.slice(offset)\n\t\t}\n\t\tptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0\n\t\tconst view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len)\n\t\tconst ret = encodeString(arg, view)\n\n\t\toffset += ret.written\n\t\tptr = realloc(ptr, len, offset, 1) >>> 0\n\t}\n\n\tWASM_VECTOR_LEN = offset\n\treturn ptr\n}\n\nfunction isLikeNone(x) {\n\treturn x === undefined || x === null\n}\n\nlet cachedDataViewMemory0 = null\n\nfunction getDataViewMemory0() {\n\tif (\n\t\tcachedDataViewMemory0 === null ||\n\t\tcachedDataViewMemory0.buffer.detached === true ||\n\t\t(cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)\n\t) {\n\t\tcachedDataViewMemory0 = new DataView(wasm.memory.buffer)\n\t}\n\treturn cachedDataViewMemory0\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n\tconst ptr = malloc(arg.length * 1, 1) >>> 0\n\tgetUint8ArrayMemory0().set(arg, ptr / 1)\n\tWASM_VECTOR_LEN = arg.length\n\treturn ptr\n}\n\nfunction takeFromExternrefTable0(idx) {\n\tconst value = wasm.__wbindgen_export_0.get(idx)\n\twasm.__externref_table_dealloc(idx)\n\treturn value\n}\n\n/**\n * @param {Uint8Array} calldata_bytes\n * @param {bigint} tree_size\n * @returns {string}\n */\nexport function generate_root_with_proof(calldata_bytes, tree_size) {\n\tlet deferred3_0\n\tlet deferred3_1\n\ttry {\n\t\tconst ptr0 = passArray8ToWasm0(calldata_bytes, wasm.__wbindgen_malloc)\n\t\tconst len0 = WASM_VECTOR_LEN\n\t\tconst ret = wasm.generate_root_with_proof(ptr0, len0, tree_size)\n\t\tvar ptr2 = ret[0]\n\t\tvar len2 = ret[1]\n\t\tif (ret[3]) {\n\t\t\tptr2 = 0\n\t\t\tlen2 = 0\n\t\t\tthrow takeFromExternrefTable0(ret[2])\n\t\t}\n\t\tdeferred3_0 = ptr2\n\t\tdeferred3_1 = len2\n\t\treturn getStringFromWasm0(ptr2, len2)\n\t} finally {\n\t\twasm.__wbindgen_free(deferred3_0, deferred3_1, 1)\n\t}\n}\n\nfunction addToExternrefTable0(obj) {\n\tconst idx = wasm.__externref_table_alloc()\n\twasm.__wbindgen_export_0.set(idx, obj)\n\treturn idx\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n\tconst ptr = malloc(array.length * 4, 4) >>> 0\n\tfor (let i = 0; i < array.length; i++) {\n\t\tconst add = addToExternrefTable0(array[i])\n\t\tgetDataViewMemory0().setUint32(ptr + 4 * i, add, true)\n\t}\n\tWASM_VECTOR_LEN = array.length\n\treturn ptr\n}\n\n/**\n * @param {string} root_hex\n * @param {string[]} proof_hex\n * @param {bigint} mmr_size\n * @param {bigint} leaf_position\n * @param {Uint8Array} calldata_bytes\n * @returns {boolean}\n */\nexport function verify_proof(root_hex, proof_hex, mmr_size, leaf_position, calldata_bytes) {\n\tconst ptr0 = passStringToWasm0(root_hex, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc)\n\tconst len0 = WASM_VECTOR_LEN\n\tconst ptr1 = passArrayJsValueToWasm0(proof_hex, wasm.__wbindgen_malloc)\n\tconst len1 = WASM_VECTOR_LEN\n\tconst ptr2 = passArray8ToWasm0(calldata_bytes, wasm.__wbindgen_malloc)\n\tconst len2 = WASM_VECTOR_LEN\n\tconst ret = wasm.verify_proof(ptr0, len0, ptr1, len1, mmr_size, leaf_position, ptr2, len2)\n\tif (ret[2]) {\n\t\tthrow takeFromExternrefTable0(ret[1])\n\t}\n\treturn ret[0] !== 0\n}\n\nconst KeccakMergeFinalization =\n\ttypeof FinalizationRegistry === \"undefined\"\n\t\t? { register: () => {}, unregister: () => {} }\n\t\t: new FinalizationRegistry((ptr) => wasm.__wbg_keccakmerge_free(ptr >>> 0, 1))\n\nexport class KeccakMerge {\n\t__destroy_into_raw() {\n\t\tconst ptr = this.__wbg_ptr\n\t\tthis.__wbg_ptr = 0\n\t\tKeccakMergeFinalization.unregister(this)\n\t\treturn ptr\n\t}\n\n\tfree() {\n\t\tconst ptr = this.__destroy_into_raw()\n\t\twasm.__wbg_keccakmerge_free(ptr, 0)\n\t}\n}\n\nexport function __wbindgen_error_new(arg0, arg1) {\n\tconst ret = new Error(getStringFromWasm0(arg0, arg1))\n\treturn ret\n}\n\nexport function __wbindgen_init_externref_table() {\n\tconst table = wasm.__wbindgen_export_0\n\tconst offset = table.grow(4)\n\ttable.set(0, undefined)\n\ttable.set(offset + 0, undefined)\n\ttable.set(offset + 1, null)\n\ttable.set(offset + 2, true)\n\ttable.set(offset + 3, false)\n}\n\nexport function __wbindgen_string_get(arg0, arg1) {\n\tconst obj = arg1\n\tconst ret = typeof obj === \"string\" ? obj : undefined\n\tvar ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc)\n\tvar len1 = WASM_VECTOR_LEN\n\tgetDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true)\n\tgetDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true)\n}\n\nexport function __wbindgen_throw(arg0, arg1) {\n\tthrow new Error(getStringFromWasm0(arg0, arg1))\n}\n\n// Load and initialize the WebAssembly module\nconst wasmPath = join(__dirname, \"./node_bg.wasm\")\nconst wasmBytes = readFileSync(wasmPath)\n\nconst bindings = {\n\tgenerate_root_with_proof,\n\tverify_proof,\n\tKeccakMerge,\n\t__wbindgen_error_new,\n\t__wbindgen_init_externref_table,\n\t__wbindgen_string_get,\n\t__wbindgen_throw,\n}\n\nconst wasmModule = new WebAssembly.Module(wasmBytes)\nconst wasmInstance = new WebAssembly.Instance(wasmModule, {\n\t__wbindgen_placeholder__: bindings,\n})\nwasm = wasmInstance.exports\nexport const __wasm = wasm\n\nwasm.__wbindgen_start()\n\nexport default function init() {\n\tconsole.log(\"CKB MMR WASM initialized\")\n}\n","import type { ConsolaInstance } from \"consola\"\nimport type { GraphQLClient } from \"graphql-request\"\nimport type { ContractFunctionArgs, Hex, Log } from \"viem\"\nimport type HandlerV1 from \"@/abis/handler\"\n\nexport type EstimateGasCallData = ContractFunctionArgs<\n\ttypeof HandlerV1.ABI,\n\t\"nonpayable\" | \"payable\",\n\t\"handlePostRequests\"\n>\n\nexport type HexString = `0x${string}`\n\nexport interface IConfig {\n\t// confuration object for the source chain\n\tsource: IEvmConfig | ISubstrateConfig\n\t// confuration object for the destination chain\n\tdest: IEvmConfig | ISubstrateConfig\n\t// confuration object for hyperbridge\n\thyperbridge: IHyperbridgeConfig\n\t// Flag to enable tracing console logs\n\ttracing?: boolean\n}\n\nexport interface IEvmConfig {\n\t// rpc url of the chain\n\trpcUrl: string\n\t// state machine identifier as a string\n\tstateMachineId: string\n\t// contract address of the `IsmpHost` on this chain\n\thost: string\n\t// consensus state identifier of this chain on hyperbridge\n\tconsensusStateId: string\n}\n\nexport interface ISubstrateConfig {\n\t// rpc url of the chain\n\twsUrl: string\n\t// consensus state identifier of this chain on hyperbridge\n\tconsensusStateId: string\n\t// consensus state identifier of this chain on hyperbridge\n\thasher: \"Keccak\" | \"Blake2\"\n\t// state machine identifier as a string\n\tstateMachineId: string\n}\n\nexport interface IHyperbridgeConfig {\n\t// websocket rpc endpoint for hyperbridge\n\twsUrl: string\n\t// state machine identifier as a string\n\tstateMachineId: string\n\t// consensus state identifier of hyperbridge on the destination chain\n\tconsensusStateId: string\n}\n\nexport interface IPostRequest {\n\t// The source state machine of this request.\n\tsource: string\n\t// The destination state machine of this request.\n\tdest: string\n\t// Module Id of the sending module\n\tfrom: HexString\n\t// Module ID of the receiving module\n\tto: HexString\n\t// The nonce of this request on the source chain\n\tnonce: bigint\n\t// Encoded request body.\n\tbody: HexString\n\t// Timestamp which this request expires in seconds.\n\ttimeoutTimestamp: bigint\n}\n\nexport interface IGetRequest {\n\t// The source state machine of this request.\n\tsource: string\n\t// The destination state machine of this request.\n\tdest: string\n\t// Module Id of the sending module\n\tfrom: HexString\n\t// The nonce of this request on the source chain\n\tnonce: bigint\n\t// Height at which to read the state machine.\n\theight: bigint\n\t/// Raw Storage keys that would be used to fetch the values from the counterparty\n\t/// For deriving storage keys for ink contract fields follow the guide in the link below\n\t/// `<https://use.ink/datastructures/storage-in-metadata#a-full-example>`\n\t/// The algorithms for calculating raw storage keys for different substrate pallet storage\n\t/// types are described in the following links\n\t/// `<https://github.com/paritytech/substrate/blob/master/frame/support/src/storage/types/map.rs#L34-L42>`\n\t/// `<https://github.com/paritytech/substrate/blob/master/frame/support/src/storage/types/double_map.rs#L34-L44>`\n\t/// `<https://github.com/paritytech/substrate/blob/master/frame/support/src/storage/types/nmap.rs#L39-L48>`\n\t/// `<https://github.com/paritytech/substrate/blob/master/frame/support/src/storage/types/value.rs#L37>`\n\t/// For fetching keys from EVM contracts each key should be 52 bytes\n\t/// This should be a concatenation of contract address and slot hash\n\tkeys: HexString[]\n\t// Timestamp which this request expires in seconds.\n\ttimeoutTimestamp: bigint\n\tcontext: HexString\n}\n\nexport interface GetResponseStorageValues {\n\tkey: HexString\n\tvalue: HexString\n}\n\nexport interface IPostResponse {\n\t// The request that triggered this response.\n\tpost: IPostRequest\n\t// The response message.\n\tresponse: string\n\t// Timestamp at which this response expires in seconds.\n\ttimeoutTimestamp: bigint\n}\n\nexport type IMessage = { Requests: HexString[] } | { Responses: HexString[] }\n\nexport type IndexerQueryClient = GraphQLClient\n\nexport interface ClientConfig {\n\tpollInterval: number\n\tqueryClient: IndexerQueryClient\n\ttracing?: boolean\n\tsource: IEvmConfig | ISubstrateConfig\n\tdest: IEvmConfig | ISubstrateConfig\n\thyperbridge: IHyperbridgeConfig\n}\n\nexport interface RetryConfig {\n\tmaxRetries: number\n\t/**\n\t * @description The initial backoff time in milliseconds before the first retry attempt.\n\t */\n\tbackoffMs: number\n\tlogMessage?: string\n\tlogger?: ConsolaInstance\n}\n\nexport interface IsmpRequest {\n\tsource: string\n\tdest: string\n\tfrom: string\n\tto: string\n\tnonce: bigint\n\tbody: string\n\ttimeoutTimestamp: bigint\n\tstorage_key?: string\n}\n\nexport const RequestStatus = Object.freeze({\n\tSOURCE: \"SOURCE\",\n\tSOURCE_FINALIZED: \"SOURCE_FINALIZED\",\n\tHYPERBRIDGE_DELIVERED: \"HYPERBRIDGE_DELIVERED\",\n\tHYPERBRIDGE_FINALIZED: \"HYPERBRIDGE_FINALIZED\",\n\tDESTINATION: \"DESTINATION\",\n\tTIMED_OUT: \"TIMED_OUT\",\n\tHYPERBRIDGE_TIMED_OUT: \"HYPERBRIDGE_TIMED_OUT\",\n})\nexport type RequestStatus = typeof RequestStatus\nexport type RequestStatusKey = keyof typeof RequestStatus\n\nexport const TimeoutStatus = Object.freeze({\n\tPENDING_TIMEOUT: \"PENDING_TIMEOUT\",\n\tDESTINATION_FINALIZED_TIMEOUT: \"DESTINATION_FINALIZED_TIMEOUT\",\n\tHYPERBRIDGE_TIMED_OUT: \"HYPERBRIDGE_TIMED_OUT\",\n\tHYPERBRIDGE_FINALIZED_TIMEOUT: \"HYPERBRIDGE_FINALIZED_TIMEOUT\",\n\tTIMED_OUT: \"TIMED_OUT\",\n})\n\nexport type TimeoutStatus = typeof TimeoutStatus\nexport type TimeoutStatusKey = keyof typeof TimeoutStatus\n\nexport type AllStatusKey = RequestStatusKey | TimeoutStatusKey\n\nexport enum HyperClientStatus {\n\tPENDING = \"PENDING\",\n\tSOURCE_FINALIZED = \"SOURCE_FINALIZED\",\n\tHYPERBRIDGE_FINALIZED = \"HYPERBRIDGE_FINALIZED\",\n\tHYPERBRIDGE_VERIFIED = \"HYPERBRIDGE_VERIFIED\",\n\tDESTINATION = \"DESTINATION\",\n\tTIMED_OUT = \"TIMED_OUT\",\n\tHYPERBRIDGE_TIMED_OUT = \"HYPERBRIDGE_TIMED_OUT\",\n\tERROR = \"ERROR\",\n}\n\nexport enum OrderStatus {\n\tPLACED = \"PLACED\",\n\tFILLED = \"FILLED\",\n\tREDEEMED = \"REDEEMED\",\n\tREFUNDED = \"REFUNDED\",\n}\n\nexport enum TeleportStatus {\n\tTELEPORTED = \"TELEPORTED\",\n\tRECEIVED = \"RECEIVED\",\n\tREFUNDED = \"REFUNDED\",\n}\n\nexport interface TokenGatewayAssetTeleportedResponse {\n\ttokenGatewayAssetTeleporteds: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tfrom: string\n\t\t\tto: string\n\t\t\tsourceChain: string\n\t\t\tdestChain: string\n\t\t\tcommitment: string\n\t\t\tamount: string\n\t\t\tusdValue: string\n\t\t\tassetId: string\n\t\t\tredeem: boolean\n\t\t\tstatus: TeleportStatus\n\t\t\tcreatedAt: string\n\t\t\tblockNumber: string\n\t\t\tblockTimestamp: string\n\t\t\ttransactionHash: string\n\t\t\tstatusMetadata: {\n\t\t\t\tnodes: Array<{\n\t\t\t\t\tstatus: TeleportStatus\n\t\t\t\t\tchain: string\n\t\t\t\t\ttimestamp: string\n\t\t\t\t\tblockNumber: string\n\t\t\t\t\tblockHash: string\n\t\t\t\t\ttransactionHash: string\n\t\t\t\t}>\n\t\t\t}\n\t\t}>\n\t}\n}\n\nexport interface TokenGatewayAssetTeleportedWithStatus {\n\tid: string\n\tfrom: string\n\tto: string\n\tsourceChain: string\n\tdestChain: string\n\tcommitment: string\n\tamount: bigint\n\tusdValue: string\n\tassetId: string\n\tredeem: boolean\n\tstatus: TeleportStatus\n\tcreatedAt: Date\n\tblockNumber: bigint\n\tblockTimestamp: bigint\n\ttransactionHash: string\n\tstatuses: Array<{\n\t\tstatus: TeleportStatus\n\t\tmetadata: {\n\t\t\tblockHash: string\n\t\t\tblockNumber: number\n\t\t\ttransactionHash: string\n\t\t\ttimestamp: bigint\n\t\t}\n\t}>\n}\n\nexport interface BlockMetadata {\n\tblockHash: string\n\tblockNumber: number\n\ttransactionHash: string\n\tcalldata?: string\n\ttimestamp?: number\n}\n\nexport interface PostRequestStatus {\n\tstatus: RequestStatusKey\n\tmetadata: Partial<BlockMetadata>\n}\n\nexport interface PostRequestTimeoutStatus {\n\tstatus: TimeoutStatusKey\n\tmetadata?: Partial<BlockMetadata>\n}\n\nexport interface StateMachineUpdate {\n\theight: number\n\tchain: string\n\tblockHash: string\n\tblockNumber: number\n\ttransactionHash: string\n\ttransactionIndex: number\n\tstateMachineId: string\n\ttimestamp: number\n}\n\nexport interface RequestResponse {\n\trequests: {\n\t\tnodes: Array<{\n\t\t\tsource: string\n\t\t\tdest: string\n\t\t\tto: HexString\n\t\t\tfrom: HexString\n\t\t\tnonce: bigint\n\t\t\tbody: HexString\n\t\t\ttimeoutTimestamp: bigint\n\t\t\tstatusMetadata: {\n\t\t\t\tnodes: Array<{\n\t\t\t\t\tblockHash: string\n\t\t\t\t\tblockNumber: string\n\t\t\t\t\ttimestamp: string\n\t\t\t\t\tchain: string\n\t\t\t\t\tstatus: string\n\t\t\t\t\ttransactionHash: string\n\t\t\t\t}>\n\t\t\t}\n\t\t}>\n\t}\n}\n\nexport interface GetRequestResponse {\n\tgetRequests: {\n\t\tnodes: Array<{\n\t\t\tsource: string\n\t\t\tdest: string\n\t\t\tto: HexString\n\t\t\tfrom: HexString\n\t\t\tnonce: bigint\n\t\t\theight: bigint\n\t\t\tkeys: HexString[]\n\t\t\tcontext: HexString\n\t\t\ttimeoutTimestamp: bigint\n\t\t\tstatusMetadata: {\n\t\t\t\tnodes: Array<{\n\t\t\t\t\tblockHash: string\n\t\t\t\t\tblockNumber: string\n\t\t\t\t\ttimestamp: string\n\t\t\t\t\tchain: string\n\t\t\t\t\tstatus: string\n\t\t\t\t\ttransactionHash: string\n\t\t\t\t}>\n\t\t\t}\n\t\t}>\n\t}\n}\n\nexport type RequestStatusWithMetadata =\n\t| {\n\t\t\tstatus: RequestStatus[\"SOURCE\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: RequestStatus[\"SOURCE_FINALIZED\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: RequestStatus[\"HYPERBRIDGE_DELIVERED\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: RequestStatus[\"HYPERBRIDGE_FINALIZED\"]\n\t\t\tmetadata: {\n\t\t\t\tcalldata: Hex\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: RequestStatus[\"DESTINATION\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: TimeoutStatus[\"PENDING_TIMEOUT\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: TimeoutStatus[\"DESTINATION_FINALIZED_TIMEOUT\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: TimeoutStatus[\"HYPERBRIDGE_TIMED_OUT\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: TimeoutStatus[\"HYPERBRIDGE_FINALIZED_TIMEOUT\"]\n\t\t\tmetadata: {\n\t\t\t\tcalldata: Hex\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\t| {\n\t\t\tstatus: TimeoutStatus[\"TIMED_OUT\"]\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp?: number\n\t\t\t}\n\t }\n\ninterface GenericRequestWithStatuses {\n\tsource: string\n\tdest: string\n\tfrom: HexString\n\tnonce: bigint\n\ttimeoutTimestamp: bigint\n\tstatuses: Array<RequestStatusWithMetadata>\n}\n\nexport interface PostRequestWithStatus extends GenericRequestWithStatuses {\n\tto: HexString\n\tbody: HexString\n}\n\nexport interface GetRequestWithStatus extends GenericRequestWithStatuses {\n\theight: bigint\n\tkeys: HexString[]\n\tcontext: HexString\n\tcommitment: HexString\n}\n\nexport interface GetResponseByRequestIdResponse {\n\tgetResponses: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tcommitment: string\n\t\t\tresponseMessage: string[]\n\t\t}>\n\t}\n}\n\nexport interface ResponseCommitmentWithValues {\n\tcommitment: string\n\tvalues: string[]\n}\n\nexport interface RequestCommitment {\n\trequests: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tcommitment: string\n\t\t}>\n\t}\n}\n\nexport interface StateMachineResponse {\n\tstateMachineUpdateEvents: {\n\t\tnodes: {\n\t\t\theight: number\n\t\t\tchain: string\n\t\t\tblockHash: string\n\t\t\tblockNumber: number\n\t\t\ttransactionHash: string\n\t\t\ttransactionIndex: number\n\t\t\tstateMachineId: string\n\t\t\tcreatedAt: string\n\t\t}[]\n\t}\n}\n\nexport interface AssetTeleported {\n\tid: string\n\tfrom: string\n\tto: string\n\tamount: bigint\n\tdest: string\n\tcommitment: HexString\n\tcreatedAt: Date\n\tblockNumber: number\n}\n\nexport interface AssetTeleportedResponse {\n\tassetTeleported: AssetTeleported\n}\n\nexport interface StateMachineIdParams {\n\tstateId: { Evm?: number; Substrate?: HexString; Polkadot?: number; Kusama?: number }\n\tconsensusStateId: HexString\n}\n\n/**\n * Configuration for a blockchain chain\n */\nexport interface ChainConfig {\n\t/**\n\t * The unique identifier for the chain\n\t */\n\tchainId: number\n\n\t/**\n\t * The RPC URL to connect to the chain\n\t */\n\trpcUrl: string\n\n\t/**\n\t * The address of the IntentGateway contract on this chain\n\t */\n\tintentGatewayAddress: string\n}\n\n/**\n * Represents token information for an order\n */\nexport interface TokenInfo {\n\t/**\n\t * The address of the ERC20 token\n\t * address(0) is used as a sentinel for the native token\n\t */\n\ttoken: HexString\n\n\t/**\n\t * The amount of the token\n\t */\n\tamount: bigint\n}\n\n/**\n * Represents payment information for an order\n */\nexport interface PaymentInfo extends TokenInfo {\n\t/**\n\t * The address to receive the output tokens\n\t */\n\tbeneficiary: HexString\n}\n\n/**\n * Represents an order in the IntentGateway\n */\nexport interface Order {\n\t/**\n\t * The unique identifier for the order\n\t */\n\tid?: string\n\n\t/**\n\t * The address of the user who is initiating the transfer\n\t */\n\tuser: HexString\n\n\t/**\n\t * The state machine identifier of the origin chain\n\t */\n\tsourceChain: string\n\n\t/**\n\t * The state machine identifier of the destination chain\n\t */\n\tdestChain: string\n\n\t/**\n\t * The block number by which the order must be filled on the destination chain\n\t */\n\tdeadline: bigint\n\n\t/**\n\t * The nonce of the order\n\t */\n\tnonce: bigint\n\n\t/**\n\t * Represents the dispatch fees associated with the IntentGateway\n\t */\n\tfees: bigint\n\n\t/**\n\t * The tokens that the filler will provide\n\t */\n\toutputs: PaymentInfo[]\n\n\t/**\n\t * The tokens that are escrowed for the filler\n\t */\n\tinputs: TokenInfo[]\n\n\t/**\n\t * A bytes array to store the calls if any\n\t */\n\tcallData: HexString\n\n\t// Additional Data\n\t/**\n\t * The transaction hash of the order\n\t */\n\ttransactionHash?: HexString\n}\n\nexport interface DecodedOrderPlacedLog extends Log {\n\teventName: string\n\targs: {\n\t\tuser: HexString\n\t\tsourceChain: Hex\n\t\tdestChain: Hex\n\t\tdeadline: bigint\n\t\tnonce: bigint\n\t\tfees: bigint\n\t\toutputs: Array<{\n\t\t\ttoken: HexString\n\t\t\tamount: bigint\n\t\t\tbeneficiary: HexString\n\t\t}>\n\t\tinputs: Array<{\n\t\t\ttoken: HexString\n\t\t\tamount: bigint\n\t\t}>\n\t\tcallData: HexString\n\t}\n\ttransactionHash: HexString\n}\n\n/**\n * Options for filling an order\n */\nexport interface FillOptions {\n\t/**\n\t * The fee paid to the relayer for processing transactions\n\t */\n\trelayerFee: bigint\n}\n\n/**\n * Options for canceling an order\n */\nexport interface CancelOptions {\n\t/**\n\t * The fee paid to the relayer for processing transactions\n\t */\n\trelayerFee: string\n\n\t/**\n\t * Stores the height value\n\t */\n\theight: string\n}\n\n/**\n * Represents a new deployment of IntentGateway\n */\nexport interface NewDeployment {\n\t/**\n\t * Identifier for the state machine\n\t */\n\tstateMachineId: HexString\n\n\t/**\n\t * The gateway identifier\n\t */\n\tgateway: HexString\n}\n\n/**\n * Represents the body of a request\n */\nexport interface RequestBody {\n\t/**\n\t * Represents the commitment of an order\n\t */\n\tcommitment: HexString\n\n\t/**\n\t * Stores the identifier for the beneficiary\n\t */\n\tbeneficiary: HexString\n\n\t/**\n\t * An array of token identifiers\n\t */\n\ttokens: TokenInfo[]\n}\n\n/**\n * Represents the parameters for the IntentGateway module\n */\nexport interface IntentGatewayParams {\n\t/**\n\t * The address of the host contract\n\t */\n\thost: string\n\n\t/**\n\t * Address of the dispatcher contract responsible for handling intents\n\t */\n\tdispatcher: string\n}\n\n/**\n * Enum representing the different kinds of incoming requests\n */\nexport enum RequestKind {\n\t/**\n\t * Identifies a request for redeeming an escrow\n\t */\n\tRedeemEscrow = 0,\n\n\t/**\n\t * Identifies a request for recording new contract deployments\n\t */\n\tNewDeployment = 1,\n\n\t/**\n\t * Identifies a request for updating parameters\n\t */\n\tUpdateParams = 2,\n}\n\n/**\n * Configuration for the IntentFiller\n */\nexport interface FillerConfig {\n\t/**\n\t * Policy for determining confirmation requirements\n\t */\n\tconfirmationPolicy: {\n\t\tgetConfirmationBlocks: (chainId: number, amountUsd: number) => number\n\t}\n\n\t/**\n\t * Maximum number of orders to process concurrently\n\t */\n\tmaxConcurrentOrders?: number\n\n\t/**\n\t * Minimum profitability threshold to consider filling an order\n\t * Expressed as a percentage (e.g., 0.5 = 0.5%)\n\t */\n\tminProfitabilityThreshold?: number\n\n\t/**\n\t * Gas price strategy for each chain\n\t * Maps chainId to a gas price strategy function\n\t */\n\tgasPriceStrategy?: Record<string, () => Promise<string>>\n\n\t/**\n\t * Maximum gas price willing to pay for each chain\n\t * Maps chainId to maximum gas price in wei\n\t */\n\tmaxGasPrice?: Record<string, string>\n\n\t/**\n\t * Retry configuration for failed transactions\n\t */\n\tretryConfig?: {\n\t\t/**\n\t\t * Maximum number of retry attempts\n\t\t */\n\t\tmaxAttempts: number\n\n\t\t/**\n\t\t * Initial delay between retries in ms\n\t\t */\n\t\tinitialDelayMs: number\n\t}\n\n\t/**\n\t * Configuration for the pending queue\n\t */\n\tpendingQueueConfig?: {\n\t\t/**\n\t\t * Delay in milliseconds before rechecking an order for confirmations\n\t\t * Default: 30000 (30 seconds)\n\t\t */\n\t\trecheckDelayMs?: number\n\n\t\t/**\n\t\t * Maximum number of times to recheck an order before giving up\n\t\t * Default: 10\n\t\t */\n\t\tmaxRechecks?: number\n\t}\n}\n\n/**\n * Result of an order execution attempt\n */\nexport interface ExecutionResult {\n\t/**\n\t * Whether the execution was successful\n\t */\n\tsuccess: boolean\n\n\t/**\n\t * The transaction hash if successful\n\t */\n\ttxHash?: string\n\n\t/**\n\t * Error message if unsuccessful\n\t */\n\terror?: string\n\n\t/**\n\t * Gas used by the transaction\n\t */\n\tgasUsed?: string\n\n\t/**\n\t * Gas price used for the transaction\n\t */\n\tgasPrice?: string\n\n\t/**\n\t * Total transaction cost in wei\n\t */\n\ttxCost?: string\n\n\t/**\n\t * Block number when the transaction was confirmed\n\t */\n\tconfirmedAtBlock?: number\n\n\t/**\n\t * Timestamp when the transaction was confirmed\n\t */\n\tconfirmedAt?: Date\n\n\t/**\n\t * Actual profitability achieved\n\t */\n\tactualProfitability?: number\n\n\t/**\n\t * Strategy used to fill the order\n\t */\n\tstrategyUsed?: string\n\n\t/**\n\t * Any tokens exchanged during the fill process\n\t */\n\texchanges?: Array<{\n\t\tfromToken: HexString\n\t\ttoToken: HexString\n\t\tfromAmount: string\n\t\ttoAmount: string\n\t\texchangeRate: string\n\t}>\n\n\t/**\n\t * The time it took to fill the order\n\t */\n\tprocessingTimeMs?: number\n}\n\n/**\n * Represents a dispatch post for cross-chain communication\n */\nexport interface DispatchPost {\n\t/**\n\t * Bytes representation of the destination state machine\n\t */\n\tdest: HexString\n\n\t/**\n\t * The destination module\n\t */\n\tto: HexString\n\n\t/**\n\t * The request body\n\t */\n\tbody: HexString\n\n\t/**\n\t * Timeout for this request in seconds\n\t */\n\ttimeout: bigint\n\n\t/**\n\t * The amount put up to be paid to the relayer,\n\t * this is charged in `IIsmpHost.feeToken` to `msg.sender`\n\t */\n\tfee: bigint\n\n\t/**\n\t * Who pays for this request?\n\t */\n\tpayer: HexString\n}\n\nexport interface DispatchGet {\n\t/**\n\t * Bytes representation of the destination state machine\n\t */\n\tdest: HexString\n\n\t/**\n\t * Height at which to read the state machine\n\t */\n\theight: bigint\n\n\t/**\n\t * Raw storage keys to fetch values from the counterparty\n\t */\n\tkeys: HexString[]\n\n\t/**\n\t * Timeout for this request in seconds\n\t */\n\ttimeout: bigint\n\n\t/**\n\t * The amount put up to be paid to the relayer\n\t */\n\tfee: bigint\n\n\t/**\n\t * Context for the request\n\t */\n\tcontext: HexString\n}\n\nexport interface StateMachineHeight {\n\tid: {\n\t\tstateId: { Evm?: number; Substrate?: HexString; Polkadot?: number; Kusama?: number }\n\t\tconsensusStateId: HexString\n\t}\n\theight: bigint\n}\n\n/**\n * The EvmHost protocol parameters\n */\nexport interface HostParams {\n\t/**\n\t * The default timeout in seconds for messages. If messages are dispatched\n\t * with a timeout value lower than this this value will be used instead\n\t */\n\tdefaultTimeout: bigint\n\t/**\n\t * The default per byte fee\n\t */\n\tperByteFee: bigint\n\t/**\n\t * The cost for applications to access the hyperbridge state commitment.\n\t * They might do so because the hyperbridge state contains the verified state commitments\n\t * for all chains and they want to directly read the state of these chains state bypassing\n\t * the ISMP protocol entirely.\n\t */\n\tstateCommitmentFee: bigint\n\t/**\n\t * The fee token contract address. This will typically be DAI.\n\t * but we allow it to be configurable to prevent future regrets.\n\t */\n\tfeeToken: HexString\n\t/**\n\t * The admin account, this only has the rights to freeze, or unfreeze the bridge\n\t */\n\tadmin: HexString\n\t/**\n\t * Ismp message handler contract. This performs all verification logic\n\t * needed to validate cross-chain messages before they are dispatched to local modules\n\t */\n\thandler: HexString\n\t/**\n\t * The authorized host manager contract, is itself an `IIsmpModule`\n\t * which receives governance requests from the Hyperbridge chain to either\n\t * withdraw revenue from the host or update its protocol parameters\n\t */\n\thostManager: HexString\n\t/**\n\t * The local UniswapV2Router02 contract, used for swapping the native token to the feeToken.\n\t */\n\tuniswapV2: HexString\n\t/**\n\t * The unstaking period of Polkadot's validators. In order to prevent long-range attacks\n\t */\n\tunStakingPeriod: bigint\n\t/**\n\t * Minimum challenge period for state commitments in seconds\n\t */\n\tchallengePeriod: bigint\n\t/**\n\t * The consensus client contract which handles consensus proof verification\n\t */\n\tconsensusClient: HexString\n\t/**\n\t * State machines whose state commitments are accepted\n\t */\n\treadonly stateMachines: readonly bigint[]\n\t/**\n\t * The state machine identifier for hyperbridge\n\t */\n\thyperbridge: HexString\n}\n\nexport interface OrderStatusMetadata {\n\tstatus: OrderStatus\n\tchain: string\n\ttimestamp: bigint\n\tblockNumber: string\n\ttransactionHash: string\n\tfiller?: string\n}\n\nexport interface OrderWithStatus {\n\tid: string\n\tuser: string\n\tsourceChain: string\n\tdestChain: string\n\tcommitment: string\n\tdeadline: bigint\n\tnonce: bigint\n\tfees: bigint\n\tinputTokens: string[]\n\tinputAmounts: bigint[]\n\tinputValuesUSD: string[]\n\tinputUSD: string\n\toutputTokens: string[]\n\toutputAmounts: bigint[]\n\toutputBeneficiaries: string[]\n\tcalldata: string\n\tstatus: OrderStatus\n\tcreatedAt: Date\n\tblockNumber: bigint\n\tblockTimestamp: bigint\n\ttransactionHash: string\n\tstatuses: Array<{\n\t\tstatus: OrderStatus\n\t\tmetadata: {\n\t\t\tblockHash: string\n\t\t\tblockNumber: number\n\t\t\ttransactionHash: string\n\t\t\ttimestamp: bigint\n\t\t\tfiller?: string\n\t\t}\n\t}>\n}\n\nexport interface OrderResponse {\n\torderPlaceds: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tuser: string\n\t\t\tsourceChain: string\n\t\t\tdestChain: string\n\t\t\tcommitment: string\n\t\t\tdeadline: string\n\t\t\tnonce: string\n\t\t\tfees: string\n\t\t\tinputTokens: string[]\n\t\t\tinputAmounts: string[]\n\t\t\tinputValuesUSD: string[]\n\t\t\tinputUSD: string\n\t\t\toutputTokens: string[]\n\t\t\toutputAmounts: string[]\n\t\t\toutputBeneficiaries: string[]\n\t\t\tcalldata: string\n\t\t\tstatus: OrderStatus\n\t\t\tcreatedAt: string\n\t\t\tblockNumber: string\n\t\t\tblockTimestamp: string\n\t\t\ttransactionHash: string\n\t\t\tstatusMetadata: {\n\t\t\t\tnodes: Array<{\n\t\t\t\t\tstatus: OrderStatus\n\t\t\t\t\tchain: string\n\t\t\t\t\ttimestamp: string\n\t\t\t\t\tblockNumber: string\n\t\t\t\t\tblockHash: string\n\t\t\t\t\ttransactionHash: string\n\t\t\t\t\tfiller?: string\n\t\t\t\t}>\n\t\t\t}\n\t\t}>\n\t}\n}\n\nexport interface TokenPrice {\n\tsymbol: string\n\taddress?: string\n\tcurrency: string\n\tprice: string\n\tlastUpdatedAt: bigint\n}\n\nexport interface TokenPricesResponse {\n\ttokenPrices: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tsymbol: string\n\t\t\taddress: string\n\t\t\tcurrency: string\n\t\t\tprice: string\n\t\t\tlastUpdatedAt: bigint\n\t\t}>\n\t}\n}\n\nexport interface TokenRegistry {\n\tid: string\n\tname: string\n\tsymbol: string\n\taddress?: string\n\tupdateFrequencySeconds: number\n\tlastUpdatedAt: bigint\n\tcreatedAt: Date\n}\n\nexport interface TokenRegistryResponse {\n\ttokenRegistries: {\n\t\tnodes: Array<{\n\t\t\tid: string\n\t\t\tname: string\n\t\t\tsymbol: string\n\t\t\taddress: string\n\t\t\tupdateFrequencySeconds: number\n\t\t\tlastUpdatedAt: bigint\n\t\t\tcreatedAt: string\n\t\t}>\n\t}\n}\n","const ABI = [\n\t{\n\t\tinputs: [],\n\t\tname: \"CannotChangeFeeToken\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"DuplicateResponse\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"FrozenHost\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidAddressLength\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidConsensusClient\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidHandler\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidHostManager\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidHyperbridgeId\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidStateMachinesLength\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidUnstakingPeriod\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnauthorizedAccount\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnauthorizedAction\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnauthorizedResponse\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnknownRequest\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnknownResponse\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"WithdrawalFailed\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"source\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"from\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\tname: \"keys\",\n\t\t\t\ttype: \"bytes[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"nonce\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"context\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"GetRequestEvent\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"GetRequestHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t],\n\t\tname: \"GetRequestTimeoutHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"enum FrozenStatus\",\n\t\t\t\tname: \"status\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t],\n\t\tname: \"HostFrozen\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultTimeout\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultPerByteFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateCommitmentFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"feeToken\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"admin\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"handler\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"hostManager\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"uniswapV2\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"unStakingPeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"challengePeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"consensusClient\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\t\t\tname: \"stateMachines\",\n\t\t\t\t\t\ttype: \"uint256[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\tname: \"stateIdHash\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"perByteFee\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PerByteFee[]\",\n\t\t\t\t\t\tname: \"perByteFees\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"hyperbridge\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct HostParams\",\n\t\t\t\tname: \"oldParams\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultTimeout\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultPerByteFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateCommitmentFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"feeToken\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"admin\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"handler\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"hostManager\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"uniswapV2\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"unStakingPeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"challengePeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"consensusClient\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\t\t\tname: \"stateMachines\",\n\t\t\t\t\t\ttype: \"uint256[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\tname: \"stateIdHash\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"perByteFee\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PerByteFee[]\",\n\t\t\t\t\t\tname: \"perByteFees\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"hyperbridge\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct HostParams\",\n\t\t\t\tname: \"newParams\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"HostParamsUpdated\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"beneficiary\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"native\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tname: \"HostWithdrawal\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"source\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"from\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"nonce\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"body\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostRequestEvent\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostRequestHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostRequestTimeoutHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"source\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"from\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"nonce\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"body\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"responseTimeoutTimestamp\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostResponseEvent\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"newFee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostResponseFunded\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostResponseHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"dest\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t],\n\t\tname: \"PostResponseTimeoutHandled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"newFee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"RequestFunded\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"caller\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"StateCommitmentRead\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"stateMachineId\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"timestamp\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"overlayRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"stateRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct StateCommitment\",\n\t\t\t\tname: \"stateCommitment\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"fisherman\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"StateCommitmentVetoed\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"stateMachineId\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"StateMachineUpdated\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"admin\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"chainId\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"challengePeriod\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"consensusClient\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"consensusState\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"consensusUpdateTime\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"fisherman\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"deleteStateMachineCommitment\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPostResponse\",\n\t\t\t\tname: \"post\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatch\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPost\",\n\t\t\t\tname: \"post\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatch\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchGet\",\n\t\t\t\tname: \"get\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatch\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostResponse\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchIncoming\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchIncoming\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes[]\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct GetRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\tname: \"key\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\tname: \"value\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct StorageValue[]\",\n\t\t\t\t\t\tname: \"values\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct GetResponse\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"relayer\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchIncoming\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostResponse\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"sender\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FeeMetadata\",\n\t\t\t\tname: \"meta\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchTimeOut\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"sender\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FeeMetadata\",\n\t\t\t\tname: \"meta\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchTimeOut\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct GetRequest\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"sender\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FeeMetadata\",\n\t\t\t\tname: \"meta\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"dispatchTimeOut\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"feeToken\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"frozen\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"enum FrozenStatus\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"fundRequest\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"fundResponse\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"host\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"hostParams\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultTimeout\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultPerByteFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateCommitmentFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"feeToken\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"admin\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"handler\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"hostManager\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"uniswapV2\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"unStakingPeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"challengePeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"consensusClient\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\t\t\tname: \"stateMachines\",\n\t\t\t\t\t\ttype: \"uint256[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\tname: \"stateIdHash\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"perByteFee\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PerByteFee[]\",\n\t\t\t\t\t\tname: \"perByteFees\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"hyperbridge\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct HostParams\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"hyperbridge\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"id\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"latestStateMachineHeight\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"nonce\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"stateId\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"perByteFee\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"requestCommitments\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"sender\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FeeMetadata\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"requestReceipts\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"responded\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"responseCommitments\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"sender\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FeeMetadata\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"responseReceipts\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"responseCommitment\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct ResponseReceipt\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"state\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"timestamp\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"overlayRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"stateRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateCommitment\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"setConsensusState\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"enum FrozenStatus\",\n\t\t\t\tname: \"newState\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t],\n\t\tname: \"setFrozenState\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"stateCommitmentFee\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"stateMachineCommitment\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"timestamp\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"overlayRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"stateRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateCommitment\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"stateMachineCommitmentUpdateTime\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"parachainId\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"id\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"stateMachineId\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"state\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"storeConsensusState\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"timestamp\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"overlayRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"stateRoot\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct StateCommitment\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"storeStateMachineCommitment\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"timestamp\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"unStakingPeriod\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"uniswapV2Router\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultTimeout\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"defaultPerByteFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"stateCommitmentFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"feeToken\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"admin\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"handler\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"hostManager\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"uniswapV2\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"unStakingPeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"challengePeriod\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"consensusClient\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\t\t\tname: \"stateMachines\",\n\t\t\t\t\t\ttype: \"uint256[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\tname: \"stateIdHash\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"perByteFee\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PerByteFee[]\",\n\t\t\t\t\t\tname: \"perByteFees\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"hyperbridge\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct HostParams\",\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"updateHostParams\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"paraId\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"height\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"vetoes\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"beneficiary\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bool\",\n\t\t\t\t\t\tname: \"native\",\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct WithdrawParams\",\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"withdraw\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tstateMutability: \"payable\",\n\t\ttype: \"receive\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tinputs: [],\n\t\tname: \"ChallengePeriodNotElapsed\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"ConsensusClientExpired\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"DuplicateMessage\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"HostFrozen\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidMessageDestination\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidProof\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"MessageNotTimedOut\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"MessageTimedOut\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"StateCommitmentNotFound\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnknownMessage\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"proof\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"handleConsensus\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes[]\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct GetRequest[]\",\n\t\t\t\t\t\tname: \"timeouts\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct GetTimeoutMessage\",\n\t\t\t\tname: \"message\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handleGetRequestTimeouts\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32[]\",\n\t\t\t\t\t\t\t\tname: \"multiproof\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"leafCount\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct Proof\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tcomponents: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tinternalType: \"struct GetRequest\",\n\t\t\t\t\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\t\t\t\t\ttype: \"tuple\",\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\tcomponents: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"key\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"value\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tinternalType: \"struct StorageValue[]\",\n\t\t\t\t\t\t\t\t\t\tname: \"values\",\n\t\t\t\t\t\t\t\t\t\ttype: \"tuple[]\",\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\tinternalType: \"struct GetResponse\",\n\t\t\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"index\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"kIndex\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct GetResponseLeaf[]\",\n\t\t\t\t\t\tname: \"responses\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct GetResponseMessage\",\n\t\t\t\tname: \"message\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handleGetResponses\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest[]\",\n\t\t\t\t\t\tname: \"timeouts\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostRequestTimeoutMessage\",\n\t\t\t\tname: \"message\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handlePostRequestTimeouts\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32[]\",\n\t\t\t\t\t\t\t\tname: \"multiproof\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"leafCount\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct Proof\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct PostRequest\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"index\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"kIndex\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequestLeaf[]\",\n\t\t\t\t\t\tname: \"requests\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostRequestMessage\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handlePostRequests\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct PostRequest\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostResponse[]\",\n\t\t\t\t\t\tname: \"timeouts\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostResponseTimeoutMessage\",\n\t\t\t\tname: \"message\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handlePostResponseTimeouts\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"contract IIsmpHost\",\n\t\t\t\tname: \"host\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"stateMachineId\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint256\",\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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct StateMachineHeight\",\n\t\t\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32[]\",\n\t\t\t\t\t\t\t\tname: \"multiproof\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"leafCount\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct Proof\",\n\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tcomponents: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\t\t\t\t\ttype: \"tuple\",\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\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tinternalType: \"struct PostResponse\",\n\t\t\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"index\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"kIndex\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostResponseLeaf[]\",\n\t\t\t\t\t\tname: \"responses\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostResponseMessage\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"handlePostResponses\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes4\",\n\t\t\t\tname: \"interfaceId\",\n\t\t\t\ttype: \"bytes4\",\n\t\t\t},\n\t\t],\n\t\tname: \"supportsInterface\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","\nimport { Chain, bscTestnet, gnosisChiado, sepolia, mainnet, bsc, base, arbitrum } from \"viem/chains\"\n\nexport enum Chains {\n\tBSC_CHAPEL = \"EVM-97\",\n\tGNOSIS_CHIADO = \"EVM-10200\",\n\tHYPERBRIDGE_GARGANTUA = \"KUSAMA-4009\",\n\tSEPOLIA = \"EVM-11155111\",\n\tMAINNET = \"EVM-1\",\n\tBSC_MAINNET = \"EVM-56\",\n\tARBITRUM_MAINNET = \"EVM-42161\",\n\tBASE_MAINNET = \"EVM-8453\"\n}\n\ntype AddressMap = {\n\t[key: string]: {\n\t\t[K in Chains]?: `0x${string}`\n\t}\n}\n\ntype RpcMap = Record<Chains, string>\n\nexport const chainIds = {\n\t[Chains.BSC_CHAPEL]: 97,\n\t[Chains.GNOSIS_CHIADO]: 10200,\n\t[Chains.HYPERBRIDGE_GARGANTUA]: 4009,\n\t[Chains.SEPOLIA]: 11155111,\n\t[Chains.MAINNET]: 1,\n\t[Chains.BSC_MAINNET]: 56,\n\t[Chains.ARBITRUM_MAINNET]: 42161,\n\t[Chains.BASE_MAINNET]: 8453\n} as const\n\nexport type ChainId = typeof chainIds\n\nexport const viemChains: Record<string, Chain> = {\n\t\"97\": bscTestnet,\n\t\"10200\": gnosisChiado,\n\t\"11155111\": sepolia,\n\t\"1\": mainnet,\n\t\"56\": bsc,\n\t\"42161\": arbitrum,\n\t\"8453\": base\n}\n\nexport const WrappedNativeDecimals = {\n\t[Chains.BSC_CHAPEL]: 18,\n\t[Chains.GNOSIS_CHIADO]: 18,\n\t[Chains.SEPOLIA]: 18,\n\t[Chains.MAINNET]: 18,\n\t[Chains.BSC_MAINNET]: 18,\n\t[Chains.ARBITRUM_MAINNET]: 18,\n\t[Chains.BASE_MAINNET]: 18\n}\n\nexport const assets = {\n\t[Chains.BSC_CHAPEL]: {\n\t\tWETH: \"0xae13d989dac2f0debff460ac112a837c89baa7cd\".toLowerCase(),\n\t\tDAI: \"0x1938165569A5463327fb206bE06d8D9253aa06b7\".toLowerCase(),\n\t\tUSDC: \"0xC625ec7D30A4b1AAEfb1304610CdAcD0d606aC92\".toLowerCase(),\n\t\tUSDT: \"0xc043f483373072f7f27420d6e7d7ad269c018e18\".toLowerCase()\n\t},\n\t[Chains.GNOSIS_CHIADO]: {\n\t\tWETH: \"0x0000000000000000000000000000000000000000\".toLowerCase(),\n\t\tDAI: \"0x50B1d3c7c073c9caa1Ef207365A2c9C976bD70b9\".toLowerCase(),\n\t\tUSDC: \"0x0000000000000000000000000000000000000000\".toLowerCase(),\n\t\tUSDT: \"0x0000000000000000000000000000000000000000\".toLowerCase()\n\t},\n\t[Chains.SEPOLIA]: {\n\t\tWETH: \"0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9\".toLowerCase(),\n\t\tUSDC: \"0x0000000000000000000000000000000000000000\".toLowerCase(),\n\t\tUSDT: \"0x0000000000000000000000000000000000000000\".toLowerCase(),\n\t\tDAI: \"0x0000000000000000000000000000000000000000\".toLowerCase()\n\t},\n\t[Chains.MAINNET]: {\n\t\tWETH: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\".toLowerCase(),\n\t\tDAI: \"0x6B175474E89094C44Da98b954EedeAC495271d0F\".toLowerCase(),\n\t\tUSDC: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\".toLowerCase(),\n\t\tUSDT: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\".toLowerCase()\n\t},\n\t[Chains.BSC_MAINNET]: {\n\t\tWETH: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\".toLowerCase(),\n\t\tDAI: \"0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3\".toLowerCase(),\n\t\tUSDC: \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\".toLowerCase(),\n\t\tUSDT: \"0x55d398326f99059fF775485246999027B3197955\".toLowerCase()\n\t},\n\t[Chains.ARBITRUM_MAINNET]: {\n\t\tWETH: \"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1\".toLowerCase(),\n\t\tDAI: \"0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1\".toLowerCase(),\n\t\tUSDC: \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\".toLowerCase(),\n\t\tUSDT: \"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9\".toLowerCase()\n\t},\n\t[Chains.BASE_MAINNET]: {\n\t\tWETH: \"0x4200000000000000000000000000000000000006\".toLowerCase(),\n\t\tDAI: \"0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb\".toLowerCase(),\n\t\tUSDC: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\".toLowerCase(),\n\t\tUSDT: \"0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2\".toLowerCase()\n\t}\n}\n\nexport const addresses: AddressMap = {\n\tIntentGateway: {\n\t\t[Chains.BSC_CHAPEL]: \"0x016b6ffC9f890d1e28f9Fdb9eaDA776b02F89509\",\n\t\t[Chains.GNOSIS_CHIADO]: \"0x016b6ffC9f890d1e28f9Fdb9eaDA776b02F89509\",\n\t\t[Chains.SEPOLIA]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0xd54165e45926720b062C192a5bacEC64d5bB08DA\",\n\t\t[Chains.BSC_MAINNET]: \"0xd54165e45926720b062C192a5bacEC64d5bB08DA\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0xd54165e45926720b062C192a5bacEC64d5bB08DA\",\n\t\t[Chains.BASE_MAINNET]: \"0xd54165e45926720b062C192a5bacEC64d5bB08DA\"\n\t},\n\tHost: {\n\t\t[Chains.BSC_CHAPEL]: \"0x8Aa0Dea6D675d785A882967Bf38183f6117C09b7\",\n\t\t[Chains.GNOSIS_CHIADO]: \"0x58a41b89f4871725e5d898d98ef4bf917601c5eb\",\n\t\t[Chains.SEPOLIA]: \"0x2EdB74C269948b60ec1000040E104cef0eABaae8\",\n\t\t[Chains.MAINNET]: \"0x792A6236AF69787C40cF76b69B4c8c7B28c4cA20\",\n\t\t[Chains.BSC_MAINNET]: \"0x24B5d421Ec373FcA57325dd2F0C074009Af021F7\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0xE05AFD4Eb2ce6d65c40e1048381BD0Ef8b4B299e\",\n\t\t[Chains.BASE_MAINNET]: \"0x6FFe92e4d7a9D589549644544780e6725E84b248\"\n\t},\n\tUniswapRouter02: {\n\t\t[Chains.BSC_CHAPEL]: \"0x9639379819420704457B07A0C33B678D9E0F8Df0\",\n\t\t[Chains.GNOSIS_CHIADO]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.SEPOLIA]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\n\t\t[Chains.BSC_MAINNET]: \"0x10ED43C718714eb63d5aA57B78B54704E256024E\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24\",\n\t\t[Chains.BASE_MAINNET]: \"0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24\"\n\t},\n\tUniswapV2Factory: {\n\t\t[Chains.BSC_CHAPEL]: \"0x12e036669DA18F4A2777853d6e2136b32AceEC86\",\n\t\t[Chains.GNOSIS_CHIADO]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.SEPOLIA]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\",\n\t\t[Chains.BSC_MAINNET]: \"0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9\",\n\t\t[Chains.BASE_MAINNET]: \"0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6\"\n\t},\n\tBatchExecutor: {\n\t\t[Chains.BSC_CHAPEL]: \"0x4CC58B5D8FBf838d062E4b21F75C327835B5F0ef\",\n\t\t[Chains.MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniversalRouter: {\n\t\t[Chains.BSC_CHAPEL]: \"0xcc6d5ece3d4a57245bf5a2f64f3ed9179b81f714\",\n\t\t[Chains.MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniswapV3Router: {\n\t\t[Chains.BSC_CHAPEL]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniswapV3Factory: {\n\t\t[Chains.BSC_CHAPEL]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniswapV3Quoter: {\n\t\t[Chains.BSC_CHAPEL]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x61fFE014bA17989E743c5F6cB21bF9697530B21e\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniswapV4PoolManager: {\n\t\t[Chains.BSC_CHAPEL]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tUniswapV4Quoter: {\n\t\t[Chains.BSC_CHAPEL]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.MAINNET]: \"0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203\",\n\t\t[Chains.BSC_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.ARBITRUM_MAINNET]: \"0x0000000000000000000000000000000000000000\",\n\t\t[Chains.BASE_MAINNET]: \"0x0000000000000000000000000000000000000000\"\n\t},\n\tCalldispatcher: {\n\t\t[Chains.SEPOLIA]: \"0xC7f13b6D03A0A7F3239d38897503E90553ABe155\"\n\t}\n}\n\nexport const createRpcUrls = (env: NodeJS.ProcessEnv): RpcMap => ({\n\t[Chains.BSC_CHAPEL]: env.BSC_CHAPEL || \"https://bnb-testnet.api.onfinality.io/public\",\n\t[Chains.GNOSIS_CHIADO]: env.GNOSIS_CHIADO || \"https://gnosis-chiado-rpc.publicnode.com\",\n\t[Chains.HYPERBRIDGE_GARGANTUA]: env.HYPERBRIDGE_GARGANTUA || \"\",\n\t[Chains.SEPOLIA]: env.SEPOLIA || \"https://1rpc.io/sepolia\",\n\t[Chains.MAINNET]: env.ETH_MAINNET || \"https://eth-mainnet.g.alchemy.com/v2/demo\",\n\t[Chains.BSC_MAINNET]: env.BSC_MAINNET || \"https://binance.llamarpc.com\",\n\t[Chains.ARBITRUM_MAINNET]: env.ARBITRUM_MAINNET || \"https://arbitrum-one.public.blastapi.io\",\n\t[Chains.BASE_MAINNET]: env.BASE_MAINNET || \"https://base-mainnet.public.blastapi.io\"\n})\n\nexport const consensusStateIds = {\n\t[Chains.BSC_CHAPEL]: \"BSC0\",\n\t[Chains.GNOSIS_CHIADO]: \"GNO0\",\n\t[Chains.HYPERBRIDGE_GARGANTUA]: \"PAS0\",\n\t[Chains.SEPOLIA]: \"ETH0\",\n\t[Chains.MAINNET]: \"ETH0\",\n\t[Chains.BSC_MAINNET]: \"BSC0\",\n\t[Chains.ARBITRUM_MAINNET]: \"ETH0\",\n\t[Chains.BASE_MAINNET]: \"ETH0\"\n}\n\nexport const coingeckoIds = {\n\t[Chains.BSC_CHAPEL]: \"binance-smart-chain\",\n\t[Chains.GNOSIS_CHIADO]: \"gnosis\",\n\t[Chains.HYPERBRIDGE_GARGANTUA]: \"hyperbridge\",\n\t[Chains.SEPOLIA]: \"ethereum\",\n\t[Chains.MAINNET]: \"ethereum\",\n\t[Chains.BSC_MAINNET]: \"binance-smart-chain\",\n\t[Chains.ARBITRUM_MAINNET]: \"arbitrum-one\",\n\t[Chains.BASE_MAINNET]: \"base\"\n}\n","import { toHex } from \"viem\"\nimport type { ChainConfig, HexString } from \"@/types\"\nimport {\n\taddresses,\n\tassets,\n\tchainIds,\n\tconsensusStateIds,\n\tcoingeckoIds,\n\tChains,\n\tWrappedNativeDecimals,\n\tcreateRpcUrls,\n} from \"@/configs/chain\"\n\nexport class ChainConfigService {\n\tprivate rpcUrls: Record<Chains, string>\n\n\tconstructor(env: NodeJS.ProcessEnv = process.env) {\n\t\tthis.rpcUrls = createRpcUrls(env)\n\t}\n\n\tgetChainConfig(chain: string): ChainConfig {\n\t\treturn {\n\t\t\tchainId: chainIds[chain as keyof typeof chainIds],\n\t\t\trpcUrl: this.rpcUrls[chain as Chains],\n\t\t\tintentGatewayAddress: addresses.IntentGateway[chain as keyof typeof addresses.IntentGateway]!,\n\t\t}\n\t}\n\n\tgetIntentGatewayAddress(chain: string): `0x${string}` {\n\t\treturn addresses.IntentGateway[chain as keyof typeof addresses.IntentGateway]! as `0x${string}`\n\t}\n\n\tgetHostAddress(chain: string): `0x${string}` {\n\t\treturn addresses.Host[chain as keyof typeof addresses.Host]! as `0x${string}`\n\t}\n\n\tgetWrappedNativeAssetWithDecimals(chain: string): { asset: HexString; decimals: number } {\n\t\treturn {\n\t\t\tasset: assets[chain as keyof typeof assets].WETH as HexString,\n\t\t\tdecimals: WrappedNativeDecimals[chain as keyof typeof WrappedNativeDecimals],\n\t\t}\n\t}\n\n\tgetDaiAsset(chain: string): HexString {\n\t\treturn assets[chain as keyof typeof assets].DAI as HexString\n\t}\n\n\tgetUsdtAsset(chain: string): HexString {\n\t\treturn assets[chain as keyof typeof assets].USDT as HexString\n\t}\n\n\tgetUsdcAsset(chain: string): HexString {\n\t\treturn assets[chain as keyof typeof assets].USDC as HexString\n\t}\n\n\tgetChainId(chain: string): number {\n\t\treturn chainIds[chain as keyof typeof chainIds]\n\t}\n\n\tgetConsensusStateId(chain: string): HexString {\n\t\treturn toHex(consensusStateIds[chain as keyof typeof consensusStateIds])\n\t}\n\n\tgetHyperbridgeChainId(): number {\n\t\treturn chainIds[Chains.HYPERBRIDGE_GARGANTUA]\n\t}\n\n\tgetRpcUrl(chain: string): string {\n\t\treturn this.rpcUrls[chain as Chains]\n\t}\n\n\tgetUniswapRouterV2Address(chain: string): HexString {\n\t\treturn addresses.UniswapRouter02[chain as keyof typeof addresses.UniswapRouter02]! as HexString\n\t}\n\n\tgetUniswapV2FactoryAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV2Factory[chain as keyof typeof addresses.UniswapV2Factory]! as HexString\n\t}\n\n\tgetBatchExecutorAddress(chain: string): HexString {\n\t\treturn addresses.BatchExecutor[chain as keyof typeof addresses.BatchExecutor]! as HexString\n\t}\n\n\tgetUniversalRouterAddress(chain: string): HexString {\n\t\treturn addresses.UniversalRouter[chain as keyof typeof addresses.UniversalRouter]! as HexString\n\t}\n\n\tgetUniswapV3RouterAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV3Router[chain as keyof typeof addresses.UniswapV3Router]! as HexString\n\t}\n\n\tgetUniswapV3FactoryAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV3Factory[chain as keyof typeof addresses.UniswapV3Factory]! as HexString\n\t}\n\n\tgetUniswapV3QuoterAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV3Quoter[chain as keyof typeof addresses.UniswapV3Quoter]! as HexString\n\t}\n\n\tgetUniswapV4PoolManagerAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV4PoolManager[chain as keyof typeof addresses.UniswapV4PoolManager]! as HexString\n\t}\n\n\tgetUniswapV4QuoterAddress(chain: string): HexString {\n\t\treturn addresses.UniswapV4Quoter[chain as keyof typeof addresses.UniswapV4Quoter]! as HexString\n\t}\n\n\tgetCoingeckoId(chain: string): string | undefined {\n\t\treturn coingeckoIds[chain as keyof typeof coingeckoIds]\n\t}\n}\n","import { hexToBytes } from \"viem\"\nimport { env, hasWindow, isNode } from \"std-env\"\nimport { postRequestCommitment } from \"@/utils\"\nimport type { HexString, IPostRequest } from \"@/types\"\n\n/**\n * Gets peak position for a given height\n */\nfunction getPeakPosByHeight(height: number): bigint {\n\treturn (1n << BigInt(height + 1)) - 2n\n}\n\n/**\n * Gets the height and position of the leftmost peak\n */\nfunction leftPeakHeightPos(mmrSize: bigint): [number, bigint] {\n\tlet height = 1\n\tlet prevPos = 0n\n\tlet pos = getPeakPosByHeight(height)\n\n\twhile (pos < mmrSize) {\n\t\theight += 1\n\t\tprevPos = pos\n\t\tpos = getPeakPosByHeight(height)\n\t}\n\n\treturn [height - 1, prevPos]\n}\n\n/**\n * Gets the right peak at a given height and position\n */\nfunction getRightPeak(initialHeight: number, initialPos: bigint, mmrSize: bigint): [number, bigint] | null {\n\tlet height = initialHeight\n\tlet pos = initialPos\n\n\t// move to right sibling pos\n\tpos += siblingOffset(height)\n\n\t// loop until we find a pos in mmr\n\twhile (pos > mmrSize - 1n) {\n\t\tif (height === 0) {\n\t\t\treturn null\n\t\t}\n\t\t// move to left child\n\t\tpos -= parentOffset(height - 1)\n\t\theight -= 1\n\t}\n\n\treturn [height, pos]\n}\n\n/**\n * Gets all peaks in the MMR\n */\nfunction getPeaks(mmrSize: bigint): bigint[] {\n\tconst positions: bigint[] = []\n\tlet [height, pos] = leftPeakHeightPos(mmrSize)\n\n\tpositions.push(pos)\n\n\twhile (height > 0) {\n\t\tconst peak = getRightPeak(height, pos, mmrSize)\n\t\tif (!peak) break\n\t\t;[height, pos] = peak\n\t\tpositions.push(pos)\n\t}\n\n\treturn positions\n}\n\n/**\n * Checks if a number consists of all ones in its binary representation\n */\nfunction allOnes(num: bigint): boolean {\n\tif (num === 0n) return false\n\treturn num\n\t\t.toString(2)\n\t\t.split(\"\")\n\t\t.every((bit) => bit === \"1\")\n}\n\n/**\n * Calculates the position after jumping left in the tree\n */\nfunction jumpLeft(pos: bigint): bigint {\n\tconst bitLength = pos.toString(2).length\n\tconst mostSignificantBits = 1n << BigInt(bitLength - 1)\n\treturn pos - (mostSignificantBits - 1n)\n}\n\n/**\n * Calculates the height of a position in the tree\n */\nfunction posHeightInTree(initialPos: bigint): number {\n\tlet pos = initialPos + 1n\n\n\twhile (!allOnes(pos)) {\n\t\tpos = jumpLeft(pos)\n\t}\n\n\treturn pos.toString(2).length - 1\n}\n\n/**\n * Calculates the parent offset for a given height\n */\nfunction parentOffset(height: number): bigint {\n\treturn 2n << BigInt(height)\n}\n\n/**\n * Calculates the sibling offset for a given height\n */\nfunction siblingOffset(height: number): bigint {\n\treturn (2n << BigInt(height)) - 1n\n}\n\n/**\n * Takes elements from a vector while they satisfy a predicate\n */\nfunction takeWhileVec<T>(v: T[], p: (item: T) => boolean): T[] {\n\tconst index = v.findIndex((item) => !p(item))\n\tif (index === -1) {\n\t\tconst result = [...v]\n\t\tv.length = 0\n\t\treturn result\n\t}\n\treturn v.splice(0, index)\n}\n\n/**\n * Converts a node's MMR position to its k-index\n * @param leaves - Array of leaf positions\n * @param mmrSize - Size of the MMR\n * @returns Array of tuples containing position and k-index\n */\nexport function mmrPositionToKIndex(initialLeaves: bigint[], mmrSize: bigint): Array<[bigint, bigint]> {\n\tconst leaves = [...initialLeaves]\n\tconst peaks = getPeaks(mmrSize)\n\tconst leavesWithKIndices: Array<[bigint, bigint]> = []\n\n\tfor (const peak of peaks) {\n\t\tconst peakLeaves = takeWhileVec(leaves, (pos) => pos <= peak)\n\n\t\tif (peakLeaves.length > 0) {\n\t\t\tfor (const pos of peakLeaves) {\n\t\t\t\tconst height = posHeightInTree(peak)\n\t\t\t\tlet index = 0n\n\t\t\t\tlet parentPos = peak\n\n\t\t\t\tfor (let h = height; h >= 1; h--) {\n\t\t\t\t\tconst leftChild = parentPos - parentOffset(h - 1)\n\t\t\t\t\tconst rightChild = leftChild + siblingOffset(h - 1)\n\t\t\t\t\tindex *= 2n\n\n\t\t\t\t\tif (leftChild >= pos) {\n\t\t\t\t\t\tparentPos = leftChild\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparentPos = rightChild\n\t\t\t\t\t\tindex += 1n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tleavesWithKIndices.push([pos, index])\n\t\t\t}\n\t\t}\n\t}\n\n\treturn leavesWithKIndices\n}\n\n/**\n * Calculate the total size of MMR (number of nodes) from the number of leaves.\n * @param numberOfLeaves - The number of leaves in the MMR\n * @returns The total size of the MMR (total number of nodes)\n */\nexport function calculateMMRSize(numberOfLeaves: bigint): bigint {\n\tconst numberOfPeaks = numberOfLeaves.toString(2).split(\"1\").length - 1\n\treturn 2n * numberOfLeaves - BigInt(numberOfPeaks)\n}\n\n/**\n * Generates a Merkle Mountain Range (MMR) root hash and proof for a post request.\n *\n * This function takes a post request and tree size, encodes it according to the PostRequest format,\n * and generates both the MMR root hash and a proof. The function builds an MMR with `treeSize` leaves,\n * where most leaves are variations of the encoded request (XORed with their index), except for the\n * last leaf, which is the unmodified request. The proof is generated for this unmodified leaf.\n *\n * @param postRequest - The post request to generate the MMR root and proof for\n * @param treeSize - Controls how many leaves will be added to the MMR (exactly `treeSize` leaves)\n * @returns An object containing:\n * - root: The MMR root hash as a hex string\n * - proof: An array of hex strings representing the MMR proof for the unmodified request\n * - index: The index of the unmodified request in the MMR\n * - kIndex: The k-index of the unmodified request in the MMR\n * - treeSize: The number of leaves in the MMR\n * - mmrSize: The size of the MMR in nodes\n */\nexport async function generateRootWithProof(\n\tpostRequest: IPostRequest,\n\ttreeSize: bigint,\n): Promise<{ root: HexString; proof: HexString[]; index: bigint; kIndex: bigint; treeSize: bigint; mmrSize: bigint }> {\n\tconst { generate_root_with_proof } = await load_ckb_mmr()\n\tconst { commitment: hash, encodePacked } = postRequestCommitment(postRequest)\n\n\tconst result = JSON.parse(generate_root_with_proof(hexToBytes(encodePacked), treeSize))\n\tconst { root, proof, mmr_size, leaf_positions, keccak_hash_calldata } = result\n\n\tif (keccak_hash_calldata !== hash) {\n\t\tconsole.log(\"keccak_hash\", keccak_hash_calldata)\n\t\tconsole.log(\"hash\", hash)\n\t\tthrow new Error(\"Abi keccak hash mismatch\")\n\t}\n\n\tconst [[, kIndex]] = mmrPositionToKIndex(leaf_positions, BigInt(mmr_size))\n\n\treturn {\n\t\troot: root as HexString,\n\t\tproof: proof as HexString[],\n\t\tindex: treeSize - 1n,\n\t\tkIndex,\n\t\ttreeSize,\n\t\tmmrSize: mmr_size,\n\t}\n}\n\nasync function load_ckb_mmr() {\n\tif (hasWindow) {\n\t\tconst wasm = await import(\"@/ckb-utils/web\")\n\t\tawait wasm.default()\n\n\t\treturn wasm\n\t}\n\n\tif (isNode) {\n\t\tconst wasm = await import(\"@/ckb-utils/node\")\n\t\treturn wasm\n\t}\n\n\tthrow new Error(`SDK not setup for ${env}`)\n}\n\nexport async function __test() {\n\tconst { generate_root_with_proof } = await load_ckb_mmr()\n\n\treturn generate_root_with_proof(new Uint8Array(), 120n)\n}\n","import { Struct, Vector, u8, u64, Tuple, Enum, _void, u32, Option } from \"scale-ts\"\n\nexport type IStateMachine =\n\t| {\n\t\t\ttag: \"Evm\"\n\t\t\tvalue: number\n\t }\n\t| {\n\t\t\ttag: \"Polkadot\"\n\t\t\tvalue: number\n\t }\n\t| {\n\t\t\ttag: \"Kusama\"\n\t\t\tvalue: number\n\t }\n\t| {\n\t\t\ttag: \"Substrate\"\n\t\t\tvalue: number[]\n\t }\n\t| {\n\t\t\ttag: \"Tendermint\"\n\t\t\tvalue: number[]\n\t }\n\nexport const H256 = Vector(u8, 32)\n\nexport const EvmStateProof = Struct({\n\t/**\n\t * Proof of the contract state.\n\t */\n\tcontractProof: Vector(Vector(u8)),\n\t/**\n\t * Proof of the storage state.\n\t */\n\tstorageProof: Vector(Tuple(Vector(u8), Vector(Vector(u8)))),\n})\n\nexport const SubstrateHashing = Enum({\n\t/* For chains that use keccak as their hashing algo */\n\tKeccak: _void,\n\t/* For chains that use blake2b as their hashing algo */\n\tBlake2: _void,\n})\n\nexport const SubstrateStateMachineProof = Struct({\n\t/**\n\t * The hasher used to hash the state machine state.\n\t */\n\thasher: SubstrateHashing,\n\t/**\n\t * Proof of the state machine state.\n\t */\n\tstorageProof: Vector(Vector(u8)),\n})\n\nexport const SubstrateStateProof = Enum({\n\t/*\n\t * Uses overlay root for verification\n\t */\n\tOverlayProof: SubstrateStateMachineProof,\n\t/*\n\t * Uses state root for verification\n\t */\n\tStateProof: SubstrateStateMachineProof,\n})\n\nexport const BasicProof = Vector(Vector(u8))\n\nexport const LeafIndexAndPos = Struct({\n\t/*\n\t * Leaf index\n\t */\n\tleafIndex: u64,\n\t/*\n\t * Leaf position in the MMR\n\t */\n\tpos: u64,\n})\n\nexport const MmrProof = Struct({\n\t/*\n\t * Proof of the leaf index and position.\n\t */\n\tleafIndexAndPos: Vector(LeafIndexAndPos),\n\t/*\n\t * Proof of the leaf data.\n\t */\n\tleafCount: u64,\n\t/*\n\t * Proof elements (hashes of siblings of inner nodes on the path to the leaf).\n\t */\n\titems: Vector(H256),\n})\n\nexport const ConsensusStateId = Vector(u8, 4)\n\nexport const ConsensusMessage = Struct({\n\t/*\n\t * Consensus message data.\n\t */\n\tconsensusProof: Vector(u8),\n\t/*\n\t * Consensus state Id\n\t */\n\tconsensusStateId: ConsensusStateId,\n\t/*\n\t * Public key of the sender\n\t */\n\tsigner: Vector(u8),\n})\n\nexport const FraudProofMessage = Struct({\n\t/*\n\t * The first valid consensus proof\n\t */\n\tproof1: Vector(u8),\n\t/*\n\t * The second valid consensus proof\n\t */\n\tproof2: Vector(u8),\n\t/*\n\t * Consensus state Id\n\t */\n\tconsensusStateId: ConsensusStateId,\n})\n\nexport const StateMachine = Enum({\n\t/*\n\t * Evm state machines\n\t */\n\tEvm: u32,\n\t/*\n\t * Polkadot parachains\n\t */\n\tPolkadot: u32,\n\t/*\n\t * Kusama parachains\n\t */\n\tKusama: u32,\n\t/*\n\t * Substrate-based standalone chain\n\t */\n\tSubstrate: ConsensusStateId,\n\t/*\n\t * Tendermint chains\n\t */\n\tTendermint: ConsensusStateId,\n})\n\nexport const StateMachineId = Struct({\n\t/*\n\t * The state machine id\n\t */\n\tid: StateMachine,\n\t/*\n\t * The consensus state id\n\t */\n\tconsensusStateId: ConsensusStateId,\n})\n\nexport const StateMachineHeight = Struct({\n\t/*\n\t * The state machine id\n\t */\n\tid: StateMachineId,\n\t/*\n\t * The height of the state machine\n\t */\n\theight: u64,\n})\n\nexport const Proof = Struct({\n\t/*\n\t * The height of the state machine\n\t */\n\theight: StateMachineHeight,\n\t/*\n\t * The proof\n\t */\n\tproof: Vector(u8),\n})\n\nexport const PostRequest = Struct({\n\t/*\n\t * The source state machine of this request.\n\t */\n\tsource: StateMachine,\n\t/*\n\t * The destination state machine of this request.\n\t */\n\tdest: StateMachine,\n\t/*\n\t * The nonce of this request on the source chain\n\t */\n\tnonce: u64,\n\t/*\n\t * Module identifier of the sending module\n\t */\n\tfrom: Vector(u8),\n\t/*\n\t * Module identifier of the receiving module\n\t */\n\tto: Vector(u8),\n\t/*\n\t * Timestamp which this request expires in seconds.\n\t */\n\ttimeoutTimestamp: u64,\n\t/*\n\t * Encoded request body\n\t */\n\tbody: Vector(u8),\n})\n\nexport const PostResponse = Struct({\n\t/*\n\t * The request that triggered this response.\n\t */\n\tpost: PostRequest,\n\t/*\n\t * The response message.\n\t */\n\tresponse: Vector(u8),\n\t/*\n\t * Timestamp at which this response expires in seconds.\n\t */\n\ttimeoutTimestamp: u64,\n})\n\nexport const GetRequest = Struct({\n\t/*\n\t * The source state machine of this request.\n\t */\n\tsource: StateMachine,\n\t/*\n\t * The destination state machine of this request.\n\t */\n\tdest: StateMachine,\n\t/*\n\t * The nonce of this request on the source chain\n\t */\n\tnonce: u64,\n\t/*\n\t * Module identifier of the sending module\n\t */\n\tfrom: Vector(u8),\n\t/*\n\t * Raw Storage keys that would be used to fetch the values from the counterparty\n\t * For deriving storage keys for ink contract fields follow the guide in the link below\n\t * `<https://use.ink/datastructures/storage-in-metadata#a-full-example>`\n\t * Substrate Keys\n\t */\n\tkeys: Vector(Vector(u8)),\n\t/*\n\t * The height of the state machine\n\t */\n\theight: u64,\n\t/*\n\t * Some application-specific metadata relating to this request\n\t */\n\tcontext: Vector(u8),\n\t/*\n\t * Host timestamp at which this request expires in seconds\n\t */\n\ttimeoutTimestamp: u64,\n})\n\nexport const StorageValue = Struct({\n\t/*\n\t * The request storage keys\n\t */\n\tkey: Vector(u8),\n\t/*\n\t * The verified value\n\t */\n\tvalue: Option(Vector(u8)),\n})\n\nexport const GetResponse = Struct({\n\t/*\n\t * The Get request that triggered this response.\n\t */\n\tget: GetRequest,\n\t/*\n\t * Values derived from the state proof\n\t */\n\tvalues: Vector(StorageValue),\n})\n\nexport const Request = Enum({\n\t/*\n\t * A post request allows a module on a state machine to send arbitrary bytes to another module\n\t * living in another state machine.\n\t */\n\tPost: PostRequest,\n\t/*\n\t * A get request allows a module on a state machine to read the storage of another module\n\t * living in another state machine.\n\t */\n\tGet: GetRequest,\n})\n\nexport const Response = Enum({\n\t/*\n\t * The response to a POST request\n\t */\n\tPost: PostResponse,\n\t/*\n\t * The response to a GET request\n\t */\n\tGet: GetResponse,\n})\n\nexport const RequestMessage = Struct({\n\t/*\n\t * Requests from source chain\n\t */\n\trequests: Vector(PostRequest),\n\t/*\n\t * Membership batch proof for these requests\n\t */\n\tproof: Proof,\n\t/*\n\t * Signer information. Ideally should be their account identifier\n\t */\n\tsigner: Vector(u8),\n})\n\nexport const RequestResponse = Enum({\n\t/*\n\t * A set of requests\n\t */\n\tRequest: Vector(Request),\n\t/*\n\t * A set of responses\n\t */\n\tResponse: Vector(Response),\n})\n\nexport const ResponseMessage = Struct({\n\t/*\n\t * A set of either POST requests or responses to be handled\n\t */\n\tdatagram: Vector(RequestResponse),\n\t/*\n\t * Membership batch proof for these requests/responses\n\t */\n\tproof: Proof,\n\t/*\n\t * Signer information. Ideally should be their account identifier\n\t */\n\tsigner: Vector(u8),\n})\n\nexport const TimeoutMessage = Enum({\n\t/*\n\t * A non memership proof for POST requests\n\t */\n\tPost: Struct({\n\t\t/*\n\t\t * Timed out requests\n\t\t */\n\t\trequests: Vector(Request),\n\t\t/*\n\t\t * Membership batch proof for these requests\n\t\t */\n\t\tproof: Proof,\n\t}),\n\t/*\n\t * A non memership proof for POST responses\n\t */\n\tPostResponse: Struct({\n\t\t/*\n\t\t * Timed out responses\n\t\t */\n\t\tresponses: Vector(Response),\n\t\t/*\n\t\t * Membership batch proof for these responses\n\t\t */\n\t\tproof: Proof,\n\t}),\n\t/*\n\t * There are no proofs for Get timeouts\n\t */\n\tGet: Struct({\n\t\t/*\n\t\t * Timed out requests\n\t\t */\n\t\trequests: Vector(Request),\n\t}),\n})\n\nexport const GetRequestsWithProof = Struct({\n\t/*\n\t * Requests to be fetched\n\t */\n\trequests: Vector(GetRequest),\n\n\t/*\n\t * Membership batch proof for these requests\n\t */\n\tsource: Proof,\n\n\t/*\n\t * Storage proof for these responses\n\t */\n\tresponse: Proof,\n\n\t/*\n\t * Signer information. Ideally should be their account identifier\n\t */\n\tsigner: Vector(u8),\n})\n\nexport const Message = Enum({\n\t/*\n\t * A consensus update message\n\t */\n\tConsensusMessage: ConsensusMessage,\n\t/*\n\t * A fraud proof message\n\t */\n\tFraudProofMessage: FraudProofMessage,\n\t/*\n\t * A request message\n\t */\n\tRequestMessage: RequestMessage,\n\t/*\n\t * A response message\n\t */\n\tResponseMessage: ResponseMessage,\n\t/*\n\t * A request timeout message\n\t */\n\tTimeoutMessage: TimeoutMessage,\n})\n","import {\n\ttype HexString,\n\ttype IGetRequest,\n\ttype IPostRequest,\n\tRequestKind,\n\tRequestStatus,\n\ttype StateMachineHeight,\n\tTimeoutStatus,\n} from \"@/types\"\nimport type { EstimateGasCallData, Order, RequestStatusKey, RetryConfig, TimeoutStatusKey } from \"@/types\"\nimport { LogLevels, createConsola } from \"consola\"\nimport {\n\ttype CallParameters,\n\ttype PublicClient,\n\tbytesToHex,\n\tconcatHex,\n\tencodeAbiParameters,\n\tencodePacked,\n\thexToBytes,\n\tkeccak256,\n\ttoHex,\n} from \"viem\"\nimport evmHost from \"./abis/evmHost\"\nimport handler from \"./abis/handler\"\nimport { type IChain, getStateCommitmentFieldSlot } from \"./chain\"\nimport { _queryRequestInternal } from \"./query-client\"\nimport { generateRootWithProof } from \"./utils\"\nimport { ChainConfigService } from \"./configs/ChainConfigService\"\n\nexport * from \"./utils/mmr\"\nexport * from \"./utils/substrate\"\n\nexport const DEFAULT_POLL_INTERVAL = 5_000\nexport const ADDRESS_ZERO = \"0x0000000000000000000000000000000000000000\" as HexString\nexport const MOCK_ADDRESS = \"0x1234567890123456789012345678901234567890\" as HexString\nexport const DUMMY_PRIVATE_KEY = \"0x0000000000000000000000000000000000000000000000000000000000000000\" as HexString\nexport const DEFAULT_GRAFFITI = \"0x0000000000000000000000000000000000000000000000000000000000000000\" as HexString\n\n/**\n * Sleeps for the specified number of milliseconds.\n * @param ms The number of milliseconds to sleep.\n */\nexport function sleep(ms?: number): Promise<void> {\n\treturn new Promise((resolve) => setTimeout(resolve, ms || DEFAULT_POLL_INTERVAL))\n}\n\n/**\n * Waits for the challenge period to elapse on a chain.\n * This function will sleep until the challenge period has elapsed.\n *\n * @param chain The chain object implementing IChain interface\n * @param stateMachineHeight The state machine height to wait for\n * @returns Promise that resolves when the challenge period has elapsed\n */\nexport async function waitForChallengePeriod(chain: IChain, stateMachineHeight: StateMachineHeight): Promise<void> {\n\t// Get the challenge period for this state machine\n\tconst challengePeriod = await chain.challengePeriod(stateMachineHeight.id)\n\n\tif (challengePeriod === BigInt(0)) return\n\n\t// Get the state machine update time\n\tconst updateTime = await chain.stateMachineUpdateTime(stateMachineHeight)\n\t// Check current timestamp\n\tlet currentTimestamp = await chain.timestamp()\n\t// Calculate time passed since update\n\tlet timeElapsed = currentTimestamp - updateTime\n\n\tif (timeElapsed > challengePeriod) return\n\n\t// First sleep for the whole challenge period\n\tawait sleep(Number(challengePeriod) * 1000)\n\n\t// Keep sleeping until challenge period has fully elapsed\n\twhile (timeElapsed <= challengePeriod) {\n\t\t// Sleep for remaining time\n\t\tconst remainingTime = challengePeriod - timeElapsed\n\t\tawait sleep(Number(remainingTime) * 1000)\n\n\t\t// Check timestamp again\n\t\tcurrentTimestamp = await chain.timestamp()\n\t\ttimeElapsed = currentTimestamp - updateTime\n\t}\n}\n\n/**\n * Checks if the given state machine ID represents an EVM chain.\n * @param stateMachineId The state machine ID to check.\n */\nexport function isEvmChain(stateMachineId: string): boolean {\n\treturn stateMachineId.startsWith(\"EVM\")\n}\n\n/**\n * Checks if the given state machine ID represents a Substrate chain.\n * @param stateMachineId The state machine ID to check.\n */\nexport function isSubstrateChain(stateMachineId: string): boolean {\n\treturn (\n\t\tstateMachineId.startsWith(\"POLKADOT\") ||\n\t\tstateMachineId.startsWith(\"KUSAMA\") ||\n\t\tstateMachineId.startsWith(\"SUBSTRATE\")\n\t)\n}\n\n/**\n * Converts a state machine ID string to a stateId object.\n * Handles formats like:\n * - \"EVM-97\" → { Evm: 97 }\n * - \"SUBSTRATE-cere\" → { Substrate: \"0x63657265\" } (hex encoded UTF-8 bytes)\n * - \"POLKADOT-3367\" → { Polkadot: 3367 }\n * - \"KUSAMA-123\" → { Kusama: 123 }\n *\n * @param stateMachineId The state machine ID string\n * @returns A stateId object conforming to the StateMachineIdParams interface\n */\nexport function parseStateMachineId(stateMachineId: string): {\n\tstateId: { Evm?: number; Substrate?: HexString; Polkadot?: number; Kusama?: number }\n} {\n\tconst [type, value] = stateMachineId.split(\"-\")\n\n\tif (!type || !value) {\n\t\tthrow new Error(\n\t\t\t`Invalid state machine ID format: ${stateMachineId}. Expected format like \"EVM-97\" or \"SUBSTRATE-cere\"`,\n\t\t)\n\t}\n\n\tconst stateId: { Evm?: number; Substrate?: HexString; Polkadot?: number; Kusama?: number } = {}\n\n\tswitch (type.toUpperCase()) {\n\t\tcase \"EVM\": {\n\t\t\tconst evmChainId = Number.parseInt(value, 10)\n\t\t\tif (Number.isNaN(evmChainId)) {\n\t\t\t\tthrow new Error(`Invalid EVM chain ID: ${value}. Expected a number.`)\n\t\t\t}\n\t\t\tstateId.Evm = evmChainId\n\t\t\tbreak\n\t\t}\n\n\t\tcase \"SUBSTRATE\": {\n\t\t\t// Convert the string to hex-encoded UTF-8 bytes\n\t\t\tconst bytes = Buffer.from(value, \"utf8\")\n\t\t\tstateId.Substrate = `0x${bytes.toString(\"hex\")}` as HexString\n\t\t\tbreak\n\t\t}\n\n\t\tcase \"POLKADOT\": {\n\t\t\tconst polkadotChainId = Number.parseInt(value, 10)\n\t\t\tif (Number.isNaN(polkadotChainId)) {\n\t\t\t\tthrow new Error(`Invalid Polkadot chain ID: ${value}. Expected a number.`)\n\t\t\t}\n\t\t\tstateId.Polkadot = polkadotChainId\n\t\t\tbreak\n\t\t}\n\n\t\tcase \"KUSAMA\": {\n\t\t\tconst kusamaChainId = Number.parseInt(value, 10)\n\t\t\tif (Number.isNaN(kusamaChainId)) {\n\t\t\t\tthrow new Error(`Invalid Kusama chain ID: ${value}. Expected a number.`)\n\t\t\t}\n\t\t\tstateId.Kusama = kusamaChainId\n\t\t\tbreak\n\t\t}\n\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported chain type: ${type}. Expected one of: EVM, SUBSTRATE, POLKADOT, KUSAMA.`)\n\t}\n\n\treturn { stateId }\n}\n\n/**\n * Checks if the given string is a valid UTF-8 string.\n * @param str The string to check.\n */\nexport function isValidUTF8(str: string): boolean {\n\treturn Buffer.from(str).toString(\"utf8\") === str\n}\n\n/**\n * Calculates the commitment hash for a post request.\n * @param post The post request to calculate the commitment hash for.\n * @returns The commitment hash and the encode packed data.\n */\nexport function postRequestCommitment(post: IPostRequest): { commitment: HexString; encodePacked: HexString } {\n\tconst data = encodePacked(\n\t\t[\"bytes\", \"bytes\", \"uint64\", \"uint64\", \"bytes\", \"bytes\", \"bytes\"],\n\t\t[toHex(post.source), toHex(post.dest), post.nonce, post.timeoutTimestamp, post.from, post.to, post.body],\n\t)\n\n\treturn {\n\t\tcommitment: keccak256(data),\n\t\tencodePacked: data,\n\t}\n}\n\nexport function orderCommitment(order: Order): HexString {\n\tconst encodedOrder = encodeAbiParameters(\n\t\t[\n\t\t\t{\n\t\t\t\tname: \"order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"user\", type: \"bytes32\" },\n\t\t\t\t\t{ name: \"sourceChain\", type: \"bytes\" },\n\t\t\t\t\t{ name: \"destChain\", type: \"bytes\" },\n\t\t\t\t\t{ name: \"deadline\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"nonce\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"fees\", type: \"uint256\" },\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\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"token\", type: \"bytes32\" },\n\t\t\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\n\t\t\t\t\t\t\t{ name: \"beneficiary\", type: \"bytes32\" },\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\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"token\", type: \"bytes32\" },\n\t\t\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"callData\", type: \"bytes\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\t[\n\t\t\t{\n\t\t\t\tuser: order.user,\n\t\t\t\tsourceChain: order.sourceChain.startsWith(\"0x\")\n\t\t\t\t\t? (order.sourceChain as `0x${string}`)\n\t\t\t\t\t: toHex(order.sourceChain),\n\t\t\t\tdestChain: order.destChain.startsWith(\"0x\")\n\t\t\t\t\t? (order.destChain as `0x${string}`)\n\t\t\t\t\t: toHex(order.destChain),\n\t\t\t\tdeadline: order.deadline,\n\t\t\t\tnonce: order.nonce,\n\t\t\t\tfees: order.fees,\n\t\t\t\toutputs: order.outputs,\n\t\t\t\tinputs: order.inputs,\n\t\t\t\tcallData: order.callData,\n\t\t\t},\n\t\t],\n\t)\n\n\treturn keccak256(encodedOrder)\n}\n\n/**\n * Converts a bytes32 token address to bytes20 format\n * This removes the extra padded zeros from the address\n */\nexport function bytes32ToBytes20(bytes32Address: string): HexString {\n\tif (bytes32Address === ADDRESS_ZERO) {\n\t\treturn ADDRESS_ZERO\n\t}\n\n\tconst bytes = hexToBytes(bytes32Address as HexString)\n\tconst addressBytes = bytes.slice(12)\n\treturn bytesToHex(addressBytes) as HexString\n}\n\nexport function bytes20ToBytes32(bytes20Address: string): HexString {\n\treturn `0x${bytes20Address.slice(2).padStart(64, \"0\")}` as HexString\n}\n\nexport function hexToString(hex: string): string {\n\tconst hexWithoutPrefix = hex.startsWith(\"0x\") ? hex.slice(2) : hex\n\n\tconst bytes = new Uint8Array(hexWithoutPrefix.length / 2)\n\tfor (let i = 0; i < hexWithoutPrefix.length; i += 2) {\n\t\tbytes[i / 2] = Number.parseInt(hexWithoutPrefix.slice(i, i + 2), 16)\n\t}\n\n\treturn new TextDecoder().decode(bytes)\n}\n\nexport const DEFAULT_LOGGER = createConsola({\n\tlevel: LogLevels.silent,\n})\n\n/**\n * Retries a promise-returning operation with exponential backoff.\n * This function will attempt to execute the operation up to maxRetries times,\n * with an exponential backoff delay between attempts.\n *\n * @param operation The async operation to retry\n * @param retryConfig Configuration object containing retry parameters\n * @returns Promise that resolves with the operation result or rejects with the last error\n */\nexport async function retryPromise<T>(operation: () => Promise<T>, retryConfig: RetryConfig): Promise<T> {\n\tconst { logger = DEFAULT_LOGGER, logMessage = \"Retry operation failed\" } = retryConfig\n\n\tlet lastError: unknown\n\tfor (let i = 0; i < retryConfig.maxRetries; i++) {\n\t\ttry {\n\t\t\treturn await operation()\n\t\t} catch (error) {\n\t\t\tlogger.trace(`Retrying(${i}) > ${logMessage}`)\n\t\t\tlastError = error\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, retryConfig.backoffMs * 2 ** i))\n\t\t}\n\t}\n\n\tthrow lastError\n}\n\n/**\n * Calculates the commitment hash for a get request.\n * @param get The get request to calculate the commitment hash for.\n * @returns The commitment hash.\n */\nexport function getRequestCommitment(get: IGetRequest): HexString {\n\tconst keysEncoding = \"0x\".concat(get.keys.map((key) => key.slice(2)).join(\"\"))\n\treturn keccak256(\n\t\tencodePacked(\n\t\t\t[\"bytes\", \"bytes\", \"uint64\", \"uint64\", \"uint64\", \"bytes\", \"bytes\", \"bytes\"],\n\t\t\t[\n\t\t\t\ttoHex(get.source),\n\t\t\t\ttoHex(get.dest),\n\t\t\t\tget.nonce,\n\t\t\t\tget.height,\n\t\t\t\tget.timeoutTimestamp,\n\t\t\t\tget.from,\n\t\t\t\tkeysEncoding as HexString,\n\t\t\t\tget.context,\n\t\t\t],\n\t\t),\n\t)\n}\n\n/**\n ** Calculates the weight of a request status.\n * Used to determine the progression of a request through its lifecycle.\n * Higher weights represent more advanced states in the processing pipeline.\n * @returns A record mapping each RequestStatus to its corresponding weight value.\n */\nexport const REQUEST_STATUS_WEIGHTS: Record<RequestStatusKey, number> = {\n\t[RequestStatus.SOURCE]: 0,\n\t[RequestStatus.SOURCE_FINALIZED]: 1,\n\t[RequestStatus.HYPERBRIDGE_DELIVERED]: 2,\n\t[RequestStatus.HYPERBRIDGE_FINALIZED]: 3,\n\t[RequestStatus.DESTINATION]: 4,\n\t[RequestStatus.HYPERBRIDGE_TIMED_OUT]: 5,\n\t[RequestStatus.TIMED_OUT]: 6,\n}\n\n/**\n * Calculates the weight of a timeout status.\n * Used to determine the progression of a timeout through its lifecycle.\n * Higher weights represent more advanced states in the timeout processing.\n * @returns A record mapping each TimeoutStatus to its corresponding weight value.\n */\nexport const TIMEOUT_STATUS_WEIGHTS: Record<TimeoutStatusKey, number> = {\n\t[TimeoutStatus.PENDING_TIMEOUT]: 1,\n\t[TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT]: 2,\n\t[TimeoutStatus.HYPERBRIDGE_TIMED_OUT]: 3,\n\t[TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT]: 4,\n\t[TimeoutStatus.TIMED_OUT]: 5,\n}\n\n/**\n * Combines both request and timeout status weights into a single mapping.\n * This provides a comprehensive view of all possible states a request can be in,\n * with higher weights representing more advanced states in either the normal\n * processing pipeline or the timeout handling process.\n *\n * The weights follow this progression:\n * 0-4: Normal request processing (SOURCE to DESTINATION)\n * 5-9: Timeout handling progression (PENDING_TIMEOUT to TIMED_OUT)\n *\n * @returns A record mapping each RequestStatus and TimeoutStatus to its corresponding weight value.\n */\nexport const COMBINED_STATUS_WEIGHTS: Record<RequestStatusKey | TimeoutStatusKey, number> = {\n\t[RequestStatus.SOURCE]: 0,\n\t[RequestStatus.SOURCE_FINALIZED]: 1,\n\t[RequestStatus.HYPERBRIDGE_DELIVERED]: 2,\n\t[RequestStatus.HYPERBRIDGE_FINALIZED]: 3,\n\t[RequestStatus.DESTINATION]: 4,\n\t[TimeoutStatus.PENDING_TIMEOUT]: 5,\n\t[TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT]: 6,\n\t[TimeoutStatus.HYPERBRIDGE_TIMED_OUT]: 7,\n\t[TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT]: 8,\n\t[TimeoutStatus.TIMED_OUT]: 9,\n}\n\n/**\n * Estimates the gas required for a post request transaction on the source chain.\n * This function constructs a post request, generates mock proofs, and estimates\n * the gas cost for executing the transaction on the source chain.\n */\nexport async function estimateGasForPost(params: {\n\tpostRequest: IPostRequest\n\tsourceClient: PublicClient\n\thostLatestStateMachineHeight: bigint\n\thostAddress: HexString\n}): Promise<{ gas_fee: bigint; call_data: EstimateGasCallData }> {\n\tconst hostParams = await params.sourceClient.readContract({\n\t\taddress: params.hostAddress,\n\t\tabi: evmHost.ABI,\n\t\tfunctionName: \"hostParams\",\n\t})\n\n\tconst { root, proof, index, kIndex, treeSize } = await generateRootWithProof(params.postRequest, 2n ** 10n)\n\tconst latestStateMachineHeight = params.hostLatestStateMachineHeight\n\tconst overlayRootSlot = getStateCommitmentFieldSlot(\n\t\tBigInt(4009n), // Hyperbridge chain id\n\t\tlatestStateMachineHeight, // Hyperbridge chain height\n\t\t1, // For overlayRoot\n\t)\n\tconst postParams = {\n\t\theight: {\n\t\t\tstateMachineId: BigInt(4009n),\n\t\t\theight: latestStateMachineHeight,\n\t\t},\n\t\tmultiproof: proof,\n\t\tleafCount: treeSize,\n\t}\n\n\tconst call_data: EstimateGasCallData = [\n\t\tparams.hostAddress,\n\t\t{\n\t\t\tproof: postParams,\n\t\t\trequests: [\n\t\t\t\t{\n\t\t\t\t\trequest: {\n\t\t\t\t\t\t...params.postRequest,\n\t\t\t\t\t\tsource: toHex(params.postRequest.source),\n\t\t\t\t\t\tdest: toHex(params.postRequest.dest),\n\t\t\t\t\t},\n\t\t\t\t\tindex,\n\t\t\t\t\tkIndex,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t]\n\n\tconst gas_fee = await params.sourceClient.estimateContractGas({\n\t\taddress: hostParams.handler,\n\t\tabi: handler.ABI,\n\t\tfunctionName: \"handlePostRequests\",\n\t\targs: call_data,\n\t\tstateOverride: [\n\t\t\t{\n\t\t\t\taddress: params.hostAddress,\n\t\t\t\tstateDiff: [\n\t\t\t\t\t{\n\t\t\t\t\t\tslot: overlayRootSlot,\n\t\t\t\t\t\tvalue: root,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t})\n\n\treturn { gas_fee, call_data }\n}\n\n/**\n * Constructs the request body for a redeem escrow operation.\n * This function encodes the order commitment, beneficiary address, and token inputs\n * to match the format expected by the IntentGateway contract.\n */\nexport function constructRedeemEscrowRequestBody(order: Order, beneficiary: HexString): HexString {\n\tconst commitment = order.id as HexString\n\tconst inputs = order.inputs\n\n\t// RequestKind.RedeemEscrow is 0 as defined in the contract\n\tconst requestKind = encodePacked([\"uint8\"], [RequestKind.RedeemEscrow])\n\n\tconst requestBody = {\n\t\tcommitment: commitment as HexString,\n\t\tbeneficiary: bytes20ToBytes32(beneficiary),\n\t\ttokens: inputs,\n\t}\n\n\tconst encodedRequestBody = encodeAbiParameters(\n\t\t[\n\t\t\t{\n\t\t\t\tname: \"requestBody\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"commitment\", type: \"bytes32\" },\n\t\t\t\t\t{ name: \"beneficiary\", type: \"bytes32\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"tokens\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"token\", type: \"bytes32\" },\n\t\t\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\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\t[requestBody],\n\t)\n\n\treturn concatHex([requestKind, encodedRequestBody]) as HexString\n}\n\nexport const normalizeTimestamp = (timestamp: bigint): bigint => {\n\tif (timestamp.toString().length <= 11) {\n\t\treturn timestamp * 1000n\n\t}\n\treturn timestamp\n}\n\n/// Convert ensure a date string is in iso format before getting it's timestamp\nexport const dateStringtoTimestamp = (date: string): number => {\n\tif (!date.endsWith(\"Z\")) {\n\t\tdate = `${date}Z`\n\t}\n\treturn new Date(date).getTime()\n}\n\n/**\n * Maps testnet identifiers to mainnet identifiers for price lookup\n * @param identifier - The original token identifier (symbol or contract address)\n * @returns The mapped mainnet identifier\n */\nexport function mapTestnetToMainnet(identifier: string): string {\n\tidentifier = identifier.toLowerCase()\n\n\tswitch (identifier) {\n\t\tcase \"bnb\":\n\t\t\treturn \"wbnb\"\n\t\tcase \"eth\":\n\t\t\treturn \"weth\"\n\t\tcase \"tbnb\":\n\t\t\treturn \"wbnb\"\n\t\tcase \"0xc043f483373072f7f27420d6e7d7ad269c018e18\".toLowerCase():\n\t\t\treturn \"dai\"\n\t\tcase \"0xae13d989dac2f0debff460ac112a837c89baa7cd\".toLowerCase():\n\t\t\treturn \"wbnb\"\n\t\tcase \"0x1938165569A5463327fb206bE06d8D9253aa06b7\".toLowerCase():\n\t\t\treturn \"dai\"\n\t\tcase \"0xC625ec7D30A4b1AAEfb1304610CdAcD0d606aC92\".toLowerCase():\n\t\t\treturn \"dai\"\n\t\tcase \"0x50B1d3c7c073c9caa1Ef207365A2c9C976bD70b9\".toLowerCase():\n\t\t\treturn \"dai\"\n\t\tcase \"0xa801da100bf16d07f668f4a49e1f71fc54d05177\".toLowerCase():\n\t\t\treturn \"dai\"\n\t\tdefault:\n\t\t\treturn identifier\n\t}\n}\n\nexport async function fetchPrice(identifier: string, chainId = 1, apiKey?: string): Promise<number> {\n\tconst mappedIdentifier = mapTestnetToMainnet(identifier)\n\n\tconst network = new ChainConfigService().getCoingeckoId(`EVM-${chainId}`) || \"ethereum\"\n\n\tapiKey = apiKey || (typeof process !== \"undefined\" ? (process as any)?.env?.COINGECKO : undefined)\n\tconst baseUrl = apiKey ? \"https://pro-api.coingecko.com/api/v3\" : \"https://api.coingecko.com/api/v3\"\n\n\tconst url = mappedIdentifier.startsWith(\"0x\")\n\t\t? `${baseUrl}/simple/token_price/${network}?contract_addresses=${mappedIdentifier}&vs_currencies=usd`\n\t\t: `${baseUrl}/simple/price?ids=${mappedIdentifier}&vs_currencies=usd`\n\n\tconst headers = apiKey ? { \"x-cg-pro-api-key\": apiKey as string } : undefined\n\n\tconst response = await fetch(url, { headers })\n\n\tif (!response.ok) {\n\t\tthrow new Error(`CoinGecko API error: ${response.status} ${response.statusText}`)\n\t}\n\n\tconst data = await response.json()\n\tconst key = mappedIdentifier.toLowerCase()\n\n\tif (!data[key]?.usd) {\n\t\tthrow new Error(`Price not found for token: ${mappedIdentifier} on ${network}`)\n\t}\n\n\treturn data[key].usd\n}\n\n/**\n * ERC20 method signatures used for storage slot detection\n */\nexport enum ERC20Method {\n\t/** ERC20 balanceOf(address) method signature */\n\tBALANCE_OF = \"0x70a08231\",\n\t/** ERC20 allowance(address,address) method signature */\n\tALLOWANCE = \"0xdd62ed3e\",\n}\n\n/**\n * Retrieves the storage slot for a contract call using debug_traceCall\n *\n * This function uses the Ethereum debug API to trace contract execution and identify\n * the storage slot accessed during the call. It's commonly used for ERC20 token state\n * mappings like balanceOf and allowance, but can work with any contract call that\n * performs SLOAD operations.\n *\n * @param client - The viem PublicClient instance connected to an RPC node with debug API enabled\n * @param tokenAddress - The address of the contract to trace\n * @param data - The full encoded function call data (method signature + encoded parameters)\n * @returns The storage slot as a hex string\n * @throws Error if the storage slot cannot be found or if debug API is not available\n *\n * @example\n * ```ts\n * import { ERC20Method, bytes20ToBytes32 } from '@hyperbridge/sdk'\n *\n * // Get balance storage slot for ERC20\n * const balanceData = ERC20Method.BALANCE_OF + bytes20ToBytes32(userAddress).slice(2)\n * const balanceSlot = await getStorageSlot(\n * client,\n * tokenAddress,\n * balanceData as HexString\n * )\n *\n * // Get allowance storage slot for ERC20\n * const allowanceData = ERC20Method.ALLOWANCE +\n * bytes20ToBytes32(ownerAddress).slice(2) +\n * bytes20ToBytes32(spenderAddress).slice(2)\n * const allowanceSlot = await getStorageSlot(\n * client,\n * tokenAddress,\n * allowanceData as HexString\n * )\n * ```\n */\nexport async function getStorageSlot(\n\tclient: PublicClient,\n\tcontractAddress: HexString,\n\tdata: HexString,\n): Promise<string> {\n\tconst traceCallClient = client.extend((client) => ({\n\t\tasync traceCall(args: CallParameters) {\n\t\t\treturn client.request({\n\t\t\t\t// @ts-ignore\n\t\t\t\tmethod: \"debug_traceCall\",\n\t\t\t\t// @ts-ignore\n\t\t\t\tparams: [args, \"latest\", {}],\n\t\t\t})\n\t\t},\n\t}))\n\n\t// Make trace call\n\tconst response = await traceCallClient.traceCall({\n\t\tto: contractAddress,\n\t\tdata: data,\n\t})\n\tconst methodSignature = data.slice(0, 10) as HexString\n\n\t// @ts-ignore\n\tconst logs = response.structLogs\n\tfor (let i = logs.length - 1; i >= 0; i--) {\n\t\tconst log = logs[i]\n\t\tif (log.op === \"SLOAD\" && log.stack?.length >= 3) {\n\t\t\tconst sigHash = log.stack[0]\n\t\t\tconst slotHex = log.stack[log.stack.length - 1]\n\n\t\t\t// Extract method signature from data (first 4 bytes)\n\t\t\tif (sigHash === methodSignature && slotHex.length === 66) {\n\t\t\t\treturn slotHex\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow new Error(`Storage slot not found for data: ${methodSignature}`)\n}\n\n/**\n * Adjusts fee amounts between different decimal precisions.\n * Handles scaling up or down based on the decimal difference.\n *\n * @param feeInFeeToken - The fee amount to adjust\n * @param fromDecimals - The current decimal precision\n * @param toDecimals - The target decimal precision\n * @returns The adjusted fee amount with the target decimal precision\n */\nexport function adjustFeeDecimals(feeInFeeToken: bigint, fromDecimals: number, toDecimals: number): bigint {\n\tif (fromDecimals === toDecimals) return feeInFeeToken\n\tif (fromDecimals < toDecimals) {\n\t\tconst scaleFactor = BigInt(10 ** (toDecimals - fromDecimals))\n\t\treturn feeInFeeToken * scaleFactor\n\t} else {\n\t\tconst scaleFactor = BigInt(10 ** (fromDecimals - toDecimals))\n\t\treturn (feeInFeeToken + scaleFactor - 1n) / scaleFactor\n\t}\n}\n","export class AbortSignalInternal extends Error {\n\tconstructor(message: string) {\n\t\tsuper()\n\n\t\tthis.name = \"Hyperbridge/SDK/AbortSignalInternal\"\n\t\tthis.message = message\n\t}\n\n\tstatic isError(error: unknown): error is AbortSignalInternal {\n\t\treturn error instanceof AbortSignalInternal\n\t}\n}\n\nexport class ExpectedError extends Error {\n\tconstructor(message: string) {\n\t\tsuper()\n\n\t\tthis.name = \"Hyperbridge/SDK/ExpectedError\"\n\t\tthis.message = message\n\t}\n\n\tstatic isError(error: unknown): error is ExpectedError {\n\t\treturn error instanceof ExpectedError\n\t}\n}\n","import {\n\thttp,\n\ttype PublicClient,\n\tbytesToBigInt,\n\tbytesToHex,\n\tcreatePublicClient,\n\tencodeFunctionData,\n\terc20Abi,\n\thexToBytes,\n\tkeccak256,\n\tpad,\n\ttoBytes,\n\ttoHex,\n} from \"viem\"\nimport {\n\tarbitrum,\n\tarbitrumSepolia,\n\tbase,\n\tbaseSepolia,\n\tbsc,\n\tbscTestnet,\n\tgnosis,\n\tgnosisChiado,\n\tmainnet,\n\toptimism,\n\toptimismSepolia,\n\tsoneium,\n} from \"viem/chains\"\n\nimport { flatten, zip } from \"lodash-es\"\nimport { match } from \"ts-pattern\"\nimport type { GetProofParameters, Hex } from \"viem\"\n\nimport EvmHost from \"@/abis/evmHost\"\nimport evmHost from \"@/abis/evmHost\"\nimport HandlerV1 from \"@/abis/handler\"\nimport type { IChain, IIsmpMessage } from \"@/chain\"\nimport { ChainConfigService } from \"@/configs/ChainConfigService\"\nimport type { HexString, IMessage, IPostRequest, StateMachineHeight, StateMachineIdParams } from \"@/types\"\nimport {\n\tEvmStateProof,\n\tMmrProof,\n\tSubstrateStateProof,\n\tcalculateMMRSize,\n\tgenerateRootWithProof,\n\tmmrPositionToKIndex,\n} from \"@/utils\"\n\nconst chains = {\n\t[mainnet.id]: mainnet,\n\t[arbitrum.id]: arbitrum,\n\t[arbitrumSepolia.id]: arbitrumSepolia,\n\t[optimism.id]: optimism,\n\t[optimismSepolia.id]: optimismSepolia,\n\t[base.id]: base,\n\t[baseSepolia.id]: baseSepolia,\n\t[soneium.id]: soneium,\n\t[bsc.id]: bsc,\n\t[bscTestnet.id]: bscTestnet,\n\t[gnosis.id]: gnosis,\n\t[gnosisChiado.id]: gnosisChiado,\n}\n\n/**\n * The default address used as fallback when no address is provided.\n * This represents the zero address in EVM chains.\n */\nexport const DEFAULT_ADDRESS = \"0x0000000000000000000000000000000000000000\"\n\n/**\n * Parameters for an EVM chain.\n */\nexport interface EvmChainParams {\n\t/**\n\t * The chain ID of the EVM chain.\n\t */\n\tchainId: number\n\t/**\n\t * The host address of the EVM chain.\n\t */\n\thost: HexString\n\t/**\n\t * The URL of the EVM chain.\n\t */\n\turl: string\n}\n\n/**\n * Encapsulates an EVM chain.\n */\nexport class EvmChain implements IChain {\n\tprivate publicClient: PublicClient\n\tprivate chainConfigService: ChainConfigService\n\n\tconstructor(private readonly params: EvmChainParams) {\n\t\t// @ts-ignore\n\t\tthis.publicClient = createPublicClient({\n\t\t\t// @ts-ignore\n\t\t\tchain: chains[params.chainId],\n\t\t\ttransport: http(params.url),\n\t\t})\n\t\tthis.chainConfigService = new ChainConfigService()\n\t}\n\n\t// Expose minimal getters for external helpers/classes\n\tget client(): PublicClient {\n\t\treturn this.publicClient\n\t}\n\n\tget host(): HexString {\n\t\treturn this.params.host\n\t}\n\n\tget config(): ChainConfigService {\n\t\treturn this.chainConfigService\n\t}\n\n\t/**\n\t * Derives the key for the request receipt.\n\t * @param {HexString} commitment - The commitment to derive the key from.\n\t * @returns {HexString} The derived key.\n\t */\n\trequestReceiptKey(commitment: HexString): HexString {\n\t\treturn deriveMapKey(hexToBytes(commitment), REQUEST_RECEIPTS_SLOT)\n\t}\n\n\t/**\n\t * Queries the request receipt.\n\t * @param {HexString} commitment - The commitment to query.\n\t * @returns {Promise<HexString | undefined>} The relayer address responsible for delivering the request.\n\t */\n\tasync queryRequestReceipt(commitment: HexString): Promise<HexString | undefined> {\n\t\tconst relayer = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"requestReceipts\",\n\t\t\targs: [commitment],\n\t\t})\n\n\t\t// solidity returns zeroes if the storage slot is empty\n\t\treturn relayer === DEFAULT_ADDRESS ? undefined : relayer\n\t}\n\n\t/**\n\t * Queries the proof of the commitments.\n\t * @param {IMessage} message - The message to query.\n\t * @param {string} counterparty - The counterparty address.\n\t * @param {bigint} [at] - The block number to query at.\n\t * @returns {Promise<HexString>} The proof.\n\t */\n\tasync queryProof(message: IMessage, counterparty: string, at?: bigint): Promise<HexString> {\n\t\t// for each request derive the commitment key collect into a new array\n\t\tconst commitmentKeys =\n\t\t\t\"Requests\" in message\n\t\t\t\t? message.Requests.map((key) => requestCommitmentKey(key))\n\t\t\t\t: message.Responses.map((key) => responseCommitmentKey(key))\n\t\tconst config: GetProofParameters = {\n\t\t\taddress: this.params.host,\n\t\t\tstorageKeys: commitmentKeys,\n\t\t}\n\t\tif (!at) {\n\t\t\tconfig.blockTag = \"latest\"\n\t\t} else {\n\t\t\tconfig.blockNumber = at\n\t\t}\n\t\tconst proof = await this.publicClient.getProof(config)\n\t\tconst flattenedProof = Array.from(new Set(flatten(proof.storageProof.map((item) => item.proof))))\n\n\t\tconst encoded = EvmStateProof.enc({\n\t\t\tcontractProof: proof.accountProof.map((item) => Array.from(hexToBytes(item))),\n\t\t\tstorageProof: [\n\t\t\t\t[Array.from(hexToBytes(this.params.host)), flattenedProof.map((item) => Array.from(hexToBytes(item)))],\n\t\t\t],\n\t\t})\n\n\t\treturn toHex(encoded)\n\t}\n\n\t/**\n\t * Query and return the encoded storage proof for the provided keys at the given height.\n\t * @param {bigint} at - The block height at which to query the storage proof.\n\t * @param {HexString[]} keys - The keys for which to query the storage proof.\n\t * @returns {Promise<HexString>} The encoded storage proof.\n\t */\n\tasync queryStateProof(at: bigint, keys: HexString[]): Promise<HexString> {\n\t\tconst config: GetProofParameters = {\n\t\t\taddress: this.params.host,\n\t\t\tstorageKeys: keys,\n\t\t}\n\t\tif (!at) {\n\t\t\tconfig.blockTag = \"latest\"\n\t\t} else {\n\t\t\tconfig.blockNumber = at\n\t\t}\n\t\tconst proof = await this.publicClient.getProof(config)\n\t\tconst flattenedProof = Array.from(new Set(flatten(proof.storageProof.map((item) => item.proof))))\n\n\t\tconst encoded = EvmStateProof.enc({\n\t\t\tcontractProof: proof.accountProof.map((item) => Array.from(hexToBytes(item))),\n\t\t\tstorageProof: [\n\t\t\t\t[Array.from(hexToBytes(this.params.host)), flattenedProof.map((item) => Array.from(hexToBytes(item)))],\n\t\t\t],\n\t\t})\n\n\t\treturn toHex(encoded)\n\t}\n\n\t/**\n\t * Returns the current timestamp of the chain.\n\t * @returns {Promise<bigint>} The current timestamp.\n\t */\n\tasync timestamp(): Promise<bigint> {\n\t\tconst data = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"timestamp\",\n\t\t})\n\t\treturn BigInt(data)\n\t}\n\n\t/**\n\t * Get the latest state machine height for a given state machine ID.\n\t * @param {StateMachineIdParams} stateMachineId - The state machine ID.\n\t * @returns {Promise<bigint>} The latest state machine height.\n\t */\n\tasync latestStateMachineHeight(stateMachineId: StateMachineIdParams): Promise<bigint> {\n\t\tif (!this.publicClient) throw new Error(\"API not initialized\")\n\t\tconst id = stateMachineId.stateId.Polkadot || stateMachineId.stateId.Kusama\n\t\tif (!id)\n\t\t\tthrow new Error(\n\t\t\t\t\"Expected Polakdot or Kusama State machine id when reading latest state machine height on evm\",\n\t\t\t)\n\t\tconst data = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"latestStateMachineHeight\",\n\t\t\targs: [BigInt(id)],\n\t\t})\n\t\treturn data\n\t}\n\n\t/**\n\t * Get the state machine update time for a given state machine height.\n\t * @param {StateMachineHeight} stateMachineHeight - The state machine height.\n\t * @returns {Promise<bigint>} The statemachine update time in seconds.\n\t */\n\tasync stateMachineUpdateTime(stateMachineHeight: StateMachineHeight): Promise<bigint> {\n\t\tif (!this.publicClient) throw new Error(\"API not initialized\")\n\t\tconst id = stateMachineHeight.id.stateId.Polkadot || stateMachineHeight.id.stateId.Kusama\n\t\tif (!id) throw new Error(\"Expected Polkadot or Kusama State machine id when reading state machine update time\")\n\t\tconst data = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"stateMachineCommitmentUpdateTime\",\n\t\t\targs: [{ stateMachineId: BigInt(id), height: stateMachineHeight.height }],\n\t\t})\n\t\treturn data\n\t}\n\n\t/**\n\t * Get the challenge period for a given state machine id.\n\t * @param {StateMachineIdParams} stateMachineId - The state machine ID.\n\t * @returns {Promise<bigint>} The challenge period in seconds.\n\t */\n\tasync challengePeriod(stateMachineId: StateMachineIdParams): Promise<bigint> {\n\t\tif (!this.publicClient) throw new Error(\"API not initialized\")\n\t\tconst id = stateMachineId.stateId.Polkadot || stateMachineId.stateId.Kusama\n\t\tif (!id)\n\t\t\tthrow new Error(\n\t\t\t\t\"Expected Polkadot or Kusama State machine id when reading latest state machine height on evm\",\n\t\t\t)\n\t\tconst data = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"challengePeriod\",\n\t\t})\n\t\treturn data\n\t}\n\n\t/**\n\t * Encodes an ISMP message for the EVM chain.\n\t * @param {IIsmpMessage} message The ISMP message to encode.\n\t * @returns {HexString} The encoded calldata.\n\t */\n\tencode(message: IIsmpMessage): HexString {\n\t\tconst encoded = match(message)\n\t\t\t.with({ kind: \"PostRequest\" }, (request) => {\n\t\t\t\tconst mmrProof = MmrProof.dec(request.proof.proof)\n\t\t\t\tconst requests = zip(request.requests, mmrProof.leafIndexAndPos)\n\t\t\t\t\t.map(([req, leafIndexAndPos]) => {\n\t\t\t\t\t\tif (!req || !leafIndexAndPos) return\n\t\t\t\t\t\tconst [[, kIndex]] = mmrPositionToKIndex(\n\t\t\t\t\t\t\t[leafIndexAndPos?.pos],\n\t\t\t\t\t\t\tcalculateMMRSize(mmrProof.leafCount),\n\t\t\t\t\t\t)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\t\tsource: toHex(req.source),\n\t\t\t\t\t\t\t\tdest: toHex(req.dest),\n\t\t\t\t\t\t\t\tto: req.to,\n\t\t\t\t\t\t\t\tfrom: req.from,\n\t\t\t\t\t\t\t\tnonce: req.nonce,\n\t\t\t\t\t\t\t\ttimeoutTimestamp: req.timeoutTimestamp,\n\t\t\t\t\t\t\t\tbody: req.body,\n\t\t\t\t\t\t\t} as any,\n\t\t\t\t\t\t\tindex: leafIndexAndPos?.leafIndex!,\n\t\t\t\t\t\t\tkIndex,\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.filter((item) => !!item)\n\n\t\t\t\tconst proof = {\n\t\t\t\t\theight: {\n\t\t\t\t\t\tstateMachineId: BigInt(Number.parseInt(request.proof.stateMachine.split(\"-\")[1])),\n\t\t\t\t\t\theight: request.proof.height,\n\t\t\t\t\t},\n\t\t\t\t\tmultiproof: mmrProof.items.map((item) => bytesToHex(new Uint8Array(item))),\n\t\t\t\t\tleafCount: mmrProof.leafCount,\n\t\t\t\t}\n\t\t\t\tconst encoded = encodeFunctionData({\n\t\t\t\t\tabi: HandlerV1.ABI,\n\t\t\t\t\tfunctionName: \"handlePostRequests\",\n\t\t\t\t\targs: [\n\t\t\t\t\t\tthis.params.host,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\trequests,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\n\t\t\t\treturn encoded\n\t\t\t})\n\t\t\t.with({ kind: \"TimeoutPostRequest\" }, (timeout) => {\n\t\t\t\tconst proof = SubstrateStateProof.dec(timeout.proof.proof).value.storageProof.map((item) =>\n\t\t\t\t\ttoHex(new Uint8Array(item)),\n\t\t\t\t)\n\t\t\t\tconst encoded = encodeFunctionData({\n\t\t\t\t\tabi: HandlerV1.ABI,\n\t\t\t\t\tfunctionName: \"handlePostRequestTimeouts\",\n\t\t\t\t\targs: [\n\t\t\t\t\t\tthis.params.host,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\theight: {\n\t\t\t\t\t\t\t\tstateMachineId: BigInt(Number.parseInt(timeout.proof.stateMachine.split(\"-\")[1])),\n\t\t\t\t\t\t\t\theight: timeout.proof.height,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttimeouts: timeout.requests.map((req) => ({\n\t\t\t\t\t\t\t\tsource: toHex(req.source),\n\t\t\t\t\t\t\t\tdest: toHex(req.dest),\n\t\t\t\t\t\t\t\tto: req.to,\n\t\t\t\t\t\t\t\tfrom: req.from,\n\t\t\t\t\t\t\t\tnonce: req.nonce,\n\t\t\t\t\t\t\t\ttimeoutTimestamp: req.timeoutTimestamp,\n\t\t\t\t\t\t\t\tbody: req.body,\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\n\t\t\t\treturn encoded\n\t\t\t})\n\t\t\t.with({ kind: \"GetResponse\" }, (request) => {\n\t\t\t\tconst mmrProof = MmrProof.dec(request.proof.proof)\n\t\t\t\tconst responses = zip(request.responses, mmrProof.leafIndexAndPos)\n\t\t\t\t\t.map(([req, leafIndexAndPos]) => {\n\t\t\t\t\t\tif (!req || !leafIndexAndPos) return\n\t\t\t\t\t\tconst [[, kIndex]] = mmrPositionToKIndex(\n\t\t\t\t\t\t\t[leafIndexAndPos?.pos],\n\t\t\t\t\t\t\tcalculateMMRSize(mmrProof.leafCount),\n\t\t\t\t\t\t)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\t\t\tsource: toHex(req.get.source),\n\t\t\t\t\t\t\t\t\tdest: toHex(req.get.dest),\n\t\t\t\t\t\t\t\t\tfrom: req.get.from,\n\t\t\t\t\t\t\t\t\tnonce: req.get.nonce,\n\t\t\t\t\t\t\t\t\ttimeoutTimestamp: req.get.timeoutTimestamp,\n\t\t\t\t\t\t\t\t\tkeys: req.get.keys,\n\t\t\t\t\t\t\t\t\tcontext: req.get.context,\n\t\t\t\t\t\t\t\t\theight: req.get.height,\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\tvalues: req.values,\n\t\t\t\t\t\t\t} as any,\n\t\t\t\t\t\t\tindex: leafIndexAndPos?.leafIndex!,\n\t\t\t\t\t\t\tkIndex,\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.filter((item) => !!item)\n\n\t\t\t\tconst proof = {\n\t\t\t\t\theight: {\n\t\t\t\t\t\tstateMachineId: BigInt(Number.parseInt(request.proof.stateMachine.split(\"-\")[1])),\n\t\t\t\t\t\theight: request.proof.height,\n\t\t\t\t\t},\n\t\t\t\t\tmultiproof: mmrProof.items.map((item) => bytesToHex(new Uint8Array(item))),\n\t\t\t\t\tleafCount: mmrProof.leafCount,\n\t\t\t\t}\n\t\t\t\tconst encoded = encodeFunctionData({\n\t\t\t\t\tabi: HandlerV1.ABI,\n\t\t\t\t\tfunctionName: \"handleGetResponses\",\n\t\t\t\t\targs: [\n\t\t\t\t\t\tthis.params.host,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\n\t\t\t\treturn encoded\n\t\t\t})\n\t\t\t.with({ kind: \"GetRequest\" }, (message) => {\n\t\t\t\tthrow new Error(\"GetResponse is not yet supported on Substrate chains\")\n\t\t\t})\n\t\t\t.exhaustive()\n\n\t\treturn encoded\n\t}\n\n\t/**\n\t * Calculates the fee required to send a post request to the destination chain.\n\t * The fee is calculated based on the per-byte fee for the destination chain\n\t * multiplied by the size of the request body.\n\t *\n\t * @param request - The post request to calculate the fee for\n\t * @returns The total fee in wei required to send the post request\n\t */\n\tasync quote(request: IPostRequest): Promise<bigint> {\n\t\tconst perByteFee = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"perByteFee\",\n\t\t\targs: [toHex(request.dest)],\n\t\t})\n\n\t\t// Exclude 0x prefix from the body length, and get the byte length\n\t\tconst bodyByteLength = Math.floor((request.body.length - 2) / 2)\n\t\tconst length = bodyByteLength < 32 ? 32 : bodyByteLength\n\n\t\treturn perByteFee * BigInt(length)\n\t}\n\n\t/**\n\t * Estimates the gas required for a post request execution on this chain.\n\t * This function generates mock proofs for the post request, creates a state override\n\t * with the necessary overlay root, and estimates the gas cost for executing the\n\t * handlePostRequests transaction on the handler contract.\n\t *\n\t * @param request - The post request to estimate gas for\n\t * @param paraId - The ID of the parachain (Hyperbridge) that will process the request\n\t * @returns The estimated gas amount in gas units and the generated calldata\n\t */\n\tasync estimateGas(request: IPostRequest): Promise<{ gas: bigint; postRequestCalldata: HexString }> {\n\t\tconst hostParams = await this.publicClient.readContract({\n\t\t\taddress: this.params.host,\n\t\t\tabi: EvmHost.ABI,\n\t\t\tfunctionName: \"hostParams\",\n\t\t})\n\n\t\tconst { root, proof, index, kIndex, treeSize } = await generateRootWithProof(request, 2n ** 10n)\n\t\tconst latestStateMachineHeight = 6291991n\n\t\tconst paraId = 4009n\n\t\tconst overlayRootSlot = getStateCommitmentFieldSlot(\n\t\t\tparaId, // Hyperbridge chain id\n\t\t\tlatestStateMachineHeight, // Hyperbridge chain height\n\t\t\t1, // For overlayRoot\n\t\t)\n\t\tconst postParams = {\n\t\t\theight: {\n\t\t\t\tstateMachineId: BigInt(paraId),\n\t\t\t\theight: latestStateMachineHeight,\n\t\t\t},\n\t\t\tmultiproof: proof,\n\t\t\tleafCount: treeSize,\n\t\t}\n\n\t\tconst formattedRequest = {\n\t\t\t...request,\n\t\t\tsource: toHex(request.source),\n\t\t\tdest: toHex(request.dest),\n\t\t}\n\n\t\tconst contractArgs = [\n\t\t\tthis.params.host,\n\t\t\t{\n\t\t\t\tproof: postParams,\n\t\t\t\trequests: [\n\t\t\t\t\t{\n\t\t\t\t\t\trequest: formattedRequest,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tkIndex,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t] as const\n\n\t\tconst postRequestCalldata = encodeFunctionData({\n\t\t\tabi: HandlerV1.ABI,\n\t\t\tfunctionName: \"handlePostRequests\",\n\t\t\targs: contractArgs,\n\t\t})\n\n\t\tconst gas = await this.publicClient.estimateContractGas({\n\t\t\taddress: hostParams.handler,\n\t\t\tabi: HandlerV1.ABI,\n\t\t\tfunctionName: \"handlePostRequests\",\n\t\t\targs: contractArgs,\n\t\t\tstateOverride: [\n\t\t\t\t{\n\t\t\t\t\taddress: this.params.host,\n\t\t\t\t\tstateDiff: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tslot: overlayRootSlot,\n\t\t\t\t\t\t\tvalue: root,\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\n\t\treturn { gas, postRequestCalldata }\n\t}\n\n\t/**\n\t * Gets the fee token address and decimals for the chain.\n\t * This function gets the fee token address and decimals for the chain.\n\t *\n\t * @returns The fee token address and decimals\n\t */\n\tasync getFeeTokenWithDecimals(): Promise<{ address: HexString; decimals: number }> {\n\t\tconst hostParams = await this.publicClient.readContract({\n\t\t\tabi: EvmHost.ABI,\n\t\t\taddress: this.params.host,\n\t\t\tfunctionName: \"hostParams\",\n\t\t})\n\t\tconst feeTokenAddress = hostParams.feeToken\n\t\tconst feeTokenDecimals = await this.publicClient.readContract({\n\t\t\taddress: feeTokenAddress,\n\t\t\tabi: erc20Abi,\n\t\t\tfunctionName: \"decimals\",\n\t\t})\n\t\treturn { address: feeTokenAddress, decimals: feeTokenDecimals }\n\t}\n\n\t/**\n\t * Gets the nonce of the host.\n\t * This function gets the nonce of the host.\n\t *\n\t * @returns The nonce of the host\n\t */\n\tasync getHostNonce(): Promise<bigint> {\n\t\tconst nonce = await this.publicClient.readContract({\n\t\t\tabi: evmHost.ABI,\n\t\t\taddress: this.params.host,\n\t\t\tfunctionName: \"nonce\",\n\t\t})\n\n\t\treturn nonce\n\t}\n}\n\n/**\n * Slot for storing request commitments.\n */\nexport const REQUEST_COMMITMENTS_SLOT = 0n\n\n/**\n * Slot index for response commitments map\n */\nexport const RESPONSE_COMMITMENTS_SLOT = 1n\n\n/**\n * Slot index for requests receipts map\n */\nexport const REQUEST_RECEIPTS_SLOT = 2n\n\n/**\n * Slot index for response receipts map\n */\nexport const RESPONSE_RECEIPTS_SLOT = 3n\n\n/**\n * Slot index for state commitment map\n */\nexport const STATE_COMMITMENTS_SLOT = 5n\n\nfunction requestCommitmentKey(key: Hex): Hex {\n\t// First derive the map key\n\tconst keyBytes = hexToBytes(key)\n\tconst slot = REQUEST_COMMITMENTS_SLOT\n\tconst mappedKey = deriveMapKey(keyBytes, slot)\n\n\t// Convert the derived key to BigInt and add 1\n\tconst number = bytesToBigInt(hexToBytes(mappedKey)) + 1n\n\n\t// Convert back to 32-byte hex\n\treturn pad(`0x${number.toString(16)}`, { size: 32 })\n}\n\nfunction responseCommitmentKey(key: Hex): Hex {\n\t// First derive the map key\n\tconst keyBytes = hexToBytes(key)\n\tconst slot = RESPONSE_COMMITMENTS_SLOT\n\tconst mappedKey = deriveMapKey(keyBytes, slot)\n\n\t// Convert the derived key to BigInt and add 1\n\tconst number = bytesToBigInt(hexToBytes(mappedKey)) + 1n\n\n\t// Convert back to 32-byte hex\n\treturn pad(`0x${number.toString(16)}`, { size: 32 })\n}\n\nfunction deriveMapKey(key: Uint8Array, slot: bigint): Hex {\n\t// Convert slot to 32-byte big-endian representation\n\tconst slotBytes = pad(`0x${slot.toString(16)}`, { size: 32 })\n\n\t// Combine key and slot bytes\n\tconst combined = new Uint8Array([...key, ...toBytes(slotBytes)])\n\n\t// Calculate keccak256 hash\n\treturn keccak256(combined)\n}\n\n/**\n * Derives the storage slot for a specific field in the StateCommitment struct\n *\n * struct StateCommitment {\n * uint256 timestamp; // slot + 0\n * bytes32 overlayRoot; // slot + 1\n * bytes32 stateRoot; // slot + 2\n * }\n *\n * @param stateMachineId - The state machine ID\n * @param height - The block height\n * @param field - The field index in the struct (0 for timestamp, 1 for overlayRoot, 2 for stateRoot)\n * @returns The storage slot for the specific field\n */\nexport function getStateCommitmentFieldSlot(stateMachineId: bigint, height: bigint, field: 0 | 1 | 2): HexString {\n\tconst baseSlot = getStateCommitmentSlot(stateMachineId, height)\n\tconst slotNumber = bytesToBigInt(toBytes(baseSlot)) + BigInt(field)\n\treturn pad(`0x${slotNumber.toString(16)}`, { size: 32 })\n}\n\nexport function getStateCommitmentSlot(stateMachineId: bigint, height: bigint): HexString {\n\t// First level mapping: keccak256(stateMachineId . STATE_COMMITMENTS_SLOT)\n\tconst firstLevelSlot = deriveFirstLevelSlot(stateMachineId, STATE_COMMITMENTS_SLOT)\n\n\t// Second level mapping: keccak256(height . firstLevelSlot)\n\treturn deriveSecondLevelSlot(height, firstLevelSlot)\n}\n\nfunction deriveFirstLevelSlot(key: bigint, slot: bigint): HexString {\n\tconst keyHex = pad(`0x${key.toString(16)}`, { size: 32 })\n\tconst keyBytes = toBytes(keyHex)\n\n\tconst slotBytes = toBytes(pad(`0x${slot.toString(16)}`, { size: 32 }))\n\n\tconst combined = new Uint8Array([...keyBytes, ...slotBytes])\n\n\treturn keccak256(combined)\n}\n\nfunction deriveSecondLevelSlot(key: bigint, firstLevelSlot: HexString): HexString {\n\tconst keyHex = pad(`0x${key.toString(16)}`, { size: 32 })\n\tconst keyBytes = toBytes(keyHex)\n\n\tconst slotBytes = toBytes(firstLevelSlot)\n\n\tconst combined = new Uint8Array([...keyBytes, ...slotBytes])\n\n\treturn keccak256(combined)\n}\n","import { ApiPromise, WsProvider } from \"@polkadot/api\"\nimport { capitalize } from \"lodash-es\"\nimport { RpcWebSocketClient } from \"rpc-websocket-client\"\nimport { Vector, u8 } from \"scale-ts\"\nimport { match } from \"ts-pattern\"\nimport { bytesToHex, hexToBytes, toBytes, toHex } from \"viem\"\n\nimport type { IChain, IIsmpMessage } from \"@/chain\"\nimport type { HexString, IGetRequest, IMessage, IPostRequest, StateMachineHeight, StateMachineIdParams } from \"@/types\"\nimport {\n\tBasicProof,\n\tGetRequestsWithProof,\n\ttype IStateMachine,\n\tMessage,\n\tSubstrateStateProof,\n\tisEvmChain,\n\tisSubstrateChain,\n} from \"@/utils\"\nimport { ExpectedError } from \"@/utils/exceptions\"\nimport { keccakAsU8a } from \"@polkadot/util-crypto\"\n\nexport interface SubstrateChainParams {\n\t/*\n\t * ws: The WebSocket URL for the Substrate chain.\n\t */\n\tws: string\n\n\t/*\n\t * hasher: The hashing algorithm used by the Substrate chain.\n\t */\n\thasher: \"Keccak\" | \"Blake2\"\n}\n\nexport class SubstrateChain implements IChain {\n\t/*\n\t * api: The Polkadot API instance for the Substrate chain.\n\t */\n\tapi?: ApiPromise\n\tconstructor(private readonly params: SubstrateChainParams) {}\n\n\t/*\n\t * connect: Connects to the Substrate chain using the provided WebSocket URL.\n\t */\n\tpublic async connect() {\n\t\tconst wsProvider = new WsProvider(this.params.ws)\n\t\tconst typesBundle =\n\t\t\tthis.params.hasher === \"Keccak\"\n\t\t\t\t? {\n\t\t\t\t\t\tspec: {\n\t\t\t\t\t\t\tnexus: {\n\t\t\t\t\t\t\t\thasher: keccakAsU8a,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgargantua: {\n\t\t\t\t\t\t\t\thasher: keccakAsU8a,\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\tthis.api = await ApiPromise.create({\n\t\t\tprovider: wsProvider,\n\t\t\ttypesBundle,\n\t\t})\n\t}\n\n\t/**\n\t * Disconnects the Substrate chain connection.\n\t */\n\tpublic async disconnect() {\n\t\tif (this.api) {\n\t\t\tawait this.api.disconnect()\n\t\t\tthis.api = undefined\n\t\t}\n\t}\n\n\t/**\n\t * Returns the storage key for a request receipt in the child trie\n\t * The request commitment is the key\n\t * @param key - The H256 hash key (as a 0x-prefixed hex string)\n\t * @returns The storage key as a hex string\n\t */\n\trequestReceiptKey(key: HexString): HexString {\n\t\tconst prefix = new TextEncoder().encode(\"RequestReceipts\")\n\n\t\tconst keyBytes = hexToBytes(key)\n\n\t\t// Concatenate the prefix and key bytes\n\t\treturn bytesToHex(new Uint8Array([...prefix, ...keyBytes]))\n\t}\n\n\t/**\n\t * Returns the storage key for a request commitment in the child trie\n\t * The request commitment is the key\n\t * @param key - The H256 hash key (as a 0x-prefixed hex string)\n\t * @returns The storage key as a hex string\n\t */\n\trequestCommitmentKey(key: HexString): HexString {\n\t\tconst prefix = new TextEncoder().encode(\"RequestCommitments\")\n\n\t\tconst keyBytes = hexToBytes(key)\n\n\t\t// Concatenate the prefix and key bytes\n\t\treturn bytesToHex(new Uint8Array([...prefix, ...keyBytes]))\n\t}\n\n\t/**\n\t * Queries a request commitment from the ISMP child trie storage.\n\t * @param {HexString} commitment - The commitment hash to look up.\n\t * @returns {Promise<HexString | undefined>} The commitment data if found, undefined otherwise.\n\t */\n\tasync queryRequestCommitment(commitment: HexString): Promise<HexString | undefined> {\n\t\tconst prefix = toHex(\":child_storage:default:ISMP\")\n\t\tconst key = this.requestCommitmentKey(commitment)\n\n\t\tconst rpc = new RpcWebSocketClient()\n\t\tawait rpc.connect(this.params.ws)\n\t\tconst item: any = await rpc.call(\"childstate_getStorage\", [prefix, key])\n\n\t\treturn item\n\t}\n\n\t/**\n\t * Queries the request receipt.\n\t * @param {HexString} commitment - The commitment to query.\n\t * @returns {Promise<HexString | undefined>} The relayer address responsible for delivering the request.\n\t */\n\tasync queryRequestReceipt(commitment: HexString): Promise<HexString | undefined> {\n\t\tconst prefix = toHex(\":child_storage:default:ISMP\")\n\t\tconst key = this.requestReceiptKey(commitment)\n\n\t\tconst rpc = new RpcWebSocketClient()\n\t\tawait rpc.connect(this.params.ws)\n\t\tconst item: any = await rpc.call(\"childstate_getStorage\", [prefix, key])\n\n\t\treturn item\n\t}\n\n\t/**\n\t * Returns the current timestamp of the chain.\n\t * @returns {Promise<bigint>} The current timestamp.\n\t */\n\tasync timestamp(): Promise<bigint> {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\n\t\tconst now = await this.api.query.timestamp.now()\n\n\t\treturn BigInt(now.toJSON() as number) / BigInt(1000)\n\t}\n\n\t/**\n\t * Queries the proof of the commitments.\n\t * @param {IMessage} message - The message to query.\n\t * @param {string} counterparty - The counterparty address.\n\t * @param {bigint} [at] - The block number to query at.\n\t * @returns {Promise<HexString>} The proof.\n\t */\n\tasync queryProof(message: IMessage, counterparty: string, at?: bigint): Promise<HexString> {\n\t\tconst rpc = new RpcWebSocketClient()\n\t\tawait rpc.connect(this.params.ws)\n\n\t\tif (isEvmChain(counterparty)) {\n\t\t\t// for evm chains, query the mmr proof\n\t\t\tconst proof: any = await rpc.call(\"mmr_queryProof\", [Number(at), message])\n\t\t\treturn toHex(proof.proof)\n\t\t}\n\n\t\tif (isSubstrateChain(counterparty)) {\n\t\t\t// for substrate chains, we use the child trie proof\n\t\t\tconst childTrieKeys =\n\t\t\t\t\"Requests\" in message\n\t\t\t\t\t? message.Requests.map(requestCommitmentStorageKey)\n\t\t\t\t\t: message.Responses.map(responseCommitmentStorageKey)\n\t\t\tconst proof: any = await rpc.call(\"ismp_queryChildTrieProof\", [Number(at), childTrieKeys])\n\t\t\tconst basicProof = BasicProof.dec(toHex(proof.proof))\n\t\t\tconst encoded = SubstrateStateProof.enc({\n\t\t\t\ttag: \"OverlayProof\",\n\t\t\t\tvalue: {\n\t\t\t\t\thasher: {\n\t\t\t\t\t\ttag: this.params.hasher,\n\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t},\n\t\t\t\t\tstorageProof: basicProof,\n\t\t\t\t},\n\t\t\t})\n\t\t\treturn toHex(encoded)\n\t\t}\n\n\t\tthrow new ExpectedError(`Unsupported chain type for counterparty: ${counterparty}`)\n\t}\n\n\t/**\n\t * Submit an unsigned ISMP transaction to the chain. Resolves when the transaction is finalized.\n\t * @param message - The message to be submitted.\n\t * @returns A promise that resolves to an object containing the transaction hash, block hash, and block number.\n\t */\n\tasync submitUnsigned(message: IIsmpMessage): Promise<{\n\t\ttransactionHash: string\n\t\tblockHash: string\n\t\tblockNumber: number\n\t\ttimestamp: number\n\t}> {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\t\tconst { api } = this\n\n\t\tconst args = encodeISMPMessage(message)\n\t\tlet tx\n\t\tif (message.kind === \"GetRequest\") {\n\t\t\ttx = api.tx.stateCoprocessor.handleUnsigned(args)\n\t\t} else {\n\t\t\ttx = api.tx.ismp.handleUnsigned(args)\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet unsub = () => {}\n\n\t\t\ttx.send(async ({ isInBlock, isFinalized, isError, dispatchError, txHash, status }) => {\n\t\t\t\tif (isFinalized || isInBlock) {\n\t\t\t\t\tunsub()\n\t\t\t\t\tconst blockHash = isInBlock ? status.asInBlock.toHex() : status.asFinalized.toHex()\n\t\t\t\t\tconst header = await api.rpc.chain.getHeader(blockHash)\n\t\t\t\t\t// Get a decorated api instance at a specific block\n\t\t\t\t\tconst apiAt = await api.at(blockHash)\n\t\t\t\t\tconst timestamp = await apiAt.query.timestamp.now()\n\t\t\t\t\tresolve({\n\t\t\t\t\t\ttransactionHash: txHash.toHex(),\n\t\t\t\t\t\tblockHash: blockHash,\n\t\t\t\t\t\tblockNumber: header.number.toNumber(),\n\t\t\t\t\t\ttimestamp: Number(timestamp.toJSON()) / 1000,\n\t\t\t\t\t})\n\t\t\t\t} else if (isError) {\n\t\t\t\t\tunsub()\n\t\t\t\t\tconsole.error(\"Unsigned transaction failed: \", dispatchError)\n\t\t\t\t\treject(dispatchError)\n\t\t\t\t}\n\t\t\t})\n\t\t\t\t.then((unsubscribe) => {\n\t\t\t\t\tunsub = unsubscribe\n\t\t\t\t})\n\t\t\t\t.catch(reject)\n\t\t})\n\t}\n\n\t/**\n\t * Query the state proof for a given set of keys at a specific block height.\n\t * @param at The block height to query the state proof at.\n\t * @param keys The keys to query the state proof for.\n\t * @returns The state proof as a hexadecimal string.\n\t */\n\tasync queryStateProof(at: bigint, keys: HexString[]): Promise<HexString> {\n\t\tconst rpc = new RpcWebSocketClient()\n\t\tawait rpc.connect(this.params.ws)\n\t\tconst encodedKeys = keys.map((key) => Array.from(hexToBytes(key)))\n\t\tconst proof: any = await rpc.call(\"ismp_queryChildTrieProof\", [Number(at), encodedKeys])\n\t\tconst basicProof = BasicProof.dec(toHex(proof.proof))\n\t\tconst encoded = SubstrateStateProof.enc({\n\t\t\ttag: \"OverlayProof\",\n\t\t\tvalue: {\n\t\t\t\thasher: {\n\t\t\t\t\ttag: this.params.hasher,\n\t\t\t\t\tvalue: undefined,\n\t\t\t\t},\n\t\t\t\tstorageProof: basicProof,\n\t\t\t},\n\t\t})\n\t\treturn toHex(encoded)\n\t}\n\n\t/**\n\t * Get the latest state machine height for a given state machine ID.\n\t * @param {StateMachineIdParams} stateMachineId - The state machine ID.\n\t * @returns {Promise<bigint>} The latest state machine height.\n\t */\n\tasync latestStateMachineHeight(stateMachineId: StateMachineIdParams): Promise<bigint> {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\t\tconst latestHeight = await this.api.query.ismp.latestStateMachineHeight(stateMachineId)\n\t\treturn BigInt(latestHeight.toString())\n\t}\n\n\t/**\n\t * Get the state machine update time for a given state machine height.\n\t * @param {StateMachineHeight} stateMachineHeight - The state machine height.\n\t * @returns {Promise<bigint>} The statemachine update time in seconds.\n\t */\n\tasync stateMachineUpdateTime(stateMachineHeight: StateMachineHeight): Promise<bigint> {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\t\tconst updateTime = await this.api.query.ismp.stateMachineUpdateTime(stateMachineHeight)\n\t\treturn BigInt(updateTime.toString())\n\t}\n\n\t/**\n\t * Get the challenge period for a given state machine id.\n\t * @param {StateMachineIdParams} stateMachineId - The state machine ID.\n\t * @returns {Promise<bigint>} The challenge period in seconds.\n\t */\n\tasync challengePeriod(stateMachineId: StateMachineIdParams): Promise<bigint> {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\t\tconst challengePeriod = await this.api.query.ismp.challengePeriod(stateMachineId)\n\t\treturn BigInt(challengePeriod.toString())\n\t}\n\n\t/**\n\t * Encode an ISMP calldata for a substrate chain.\n\t * @param message The ISMP message to encode.\n\t * @returns The encoded message as a hexadecimal string.\n\t */\n\tencode(message: IIsmpMessage): HexString {\n\t\tconst palletIndex = this.getPalletIndex(\"Ismp\")\n\t\tconst args = encodeISMPMessage(message)\n\n\t\t// Encoding the call enum and call index\n\t\tconst call = Vector(u8, 2).enc([palletIndex, 0])\n\n\t\treturn toHex(new Uint8Array([...call, ...args]))\n\t}\n\n\t/**\n\t * Returns the index of a pallet by its name, by looking up the pallets in the runtime metadata.\n\t * @param {string} name - The name of the pallet.\n\t * @returns {number} The index of the pallet.\n\t */\n\tprivate getPalletIndex(name: string): number {\n\t\tif (!this.api) throw new Error(\"API not initialized\")\n\t\tconst pallets = this.api.runtimeMetadata.asLatest.pallets.entries()\n\n\t\tfor (const p of pallets) {\n\t\t\tif (p[1].name.toString() === name) {\n\t\t\t\tconst index = p[1].index.toNumber()\n\n\t\t\t\treturn index\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(`${name} not found in runtime`)\n\t}\n}\n\nfunction requestCommitmentStorageKey(key: HexString): number[] {\n\t// Convert \"RequestCommitments\" to bytes\n\tconst prefix = new TextEncoder().encode(\"RequestCommitments\")\n\n\t// Convert hex key to bytes\n\tconst keyBytes = hexToBytes(key)\n\n\t// Combine prefix and key bytes\n\treturn Array.from(new Uint8Array([...prefix, ...keyBytes]))\n}\n\nfunction responseCommitmentStorageKey(key: HexString): number[] {\n\t// Convert \"ResponseCommitments\" to bytes\n\tconst prefix = new TextEncoder().encode(\"ResponseCommitments\")\n\n\t// Convert hex key to bytes\n\tconst keyBytes = hexToBytes(key)\n\n\t// Combine prefix and key bytes\n\treturn Array.from(new Uint8Array([...prefix, ...keyBytes]))\n}\n\n/**\n * Converts a state machine ID string to an enum value.\n * @param {string} id - The state machine ID string.\n * @returns {IStateMachine} The corresponding enum value.\n */\nexport function convertStateMachineIdToEnum(id: string): IStateMachine {\n\tlet [tag, value]: any = id.split(\"-\")\n\ttag = capitalize(tag)\n\tif ([\"Evm\", \"Polkadot\", \"Kusama\"].includes(tag)) {\n\t\tvalue = Number.parseInt(value)\n\t} else {\n\t\tvalue = Array.from(toBytes(value))\n\t}\n\n\treturn { tag, value }\n}\n\n/**\n * Converts an array of IPostRequest objects to a codec representation.\n * @param {IPostRequest} request - The array of IPostRequest objects.\n * @returns The codec representation of the requests.\n */\nfunction convertIPostRequestToCodec(request: IPostRequest) {\n\treturn {\n\t\ttag: \"Post\",\n\t\tvalue: {\n\t\t\tsource: convertStateMachineIdToEnum(request.source),\n\t\t\tdest: convertStateMachineIdToEnum(request.dest),\n\t\t\tfrom: Array.from(hexToBytes(request.from)),\n\t\t\tto: Array.from(hexToBytes(request.to)),\n\t\t\tnonce: request.nonce,\n\t\t\tbody: Array.from(hexToBytes(request.body)),\n\t\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\t},\n\t} as const\n}\n\n/**\n * Converts an IGetRequest object to a codec representation.\n * @param {IGetRequest} request - The IGetRequest object.\n * @returns The codec representation of the request.\n */\nfunction convertIGetRequestToCodec(request: IGetRequest) {\n\treturn {\n\t\tsource: convertStateMachineIdToEnum(request.source),\n\t\tdest: convertStateMachineIdToEnum(request.dest),\n\t\tfrom: Array.from(hexToBytes(request.from)),\n\t\tnonce: request.nonce,\n\t\tkeys: request.keys.map((key) => Array.from(hexToBytes(key))),\n\t\tcontext: Array.from(hexToBytes(request.context)),\n\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\theight: request.height,\n\t} as const\n}\n\nexport function encodeISMPMessage(message: IIsmpMessage): Uint8Array {\n\ttry {\n\t\treturn match(message)\n\t\t\t.with({ kind: \"PostRequest\" }, (message) => {\n\t\t\t\treturn Vector(Message).enc([\n\t\t\t\t\t{\n\t\t\t\t\t\ttag: \"RequestMessage\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\trequests: message.requests.map(\n\t\t\t\t\t\t\t\t(post_request) => convertIPostRequestToCodec(post_request).value,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\t\theight: {\n\t\t\t\t\t\t\t\t\theight: message.proof.height,\n\t\t\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\t\t\tconsensusStateId: Array.from(toBytes(message.proof.consensusStateId)),\n\t\t\t\t\t\t\t\t\t\tid: convertStateMachineIdToEnum(message.proof.stateMachine),\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\tproof: Array.from(hexToBytes(message.proof.proof)),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsigner: Array.from(hexToBytes(message.signer)),\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.with({ kind: \"GetResponse\" }, (message) => {\n\t\t\t\tthrow new Error(\"GetResponse is not yet supported on Substrate chains\")\n\t\t\t})\n\t\t\t.with({ kind: \"GetRequest\" }, (message) => {\n\t\t\t\treturn GetRequestsWithProof.enc({\n\t\t\t\t\trequests: message.requests.map((request) => convertIGetRequestToCodec(request)),\n\t\t\t\t\tsource: {\n\t\t\t\t\t\theight: {\n\t\t\t\t\t\t\theight: message.source.height,\n\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\tconsensusStateId: Array.from(toBytes(message.source.consensusStateId)),\n\t\t\t\t\t\t\t\tid: convertStateMachineIdToEnum(message.source.stateMachine),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tproof: Array.from(hexToBytes(message.source.proof)),\n\t\t\t\t\t},\n\t\t\t\t\tresponse: {\n\t\t\t\t\t\theight: {\n\t\t\t\t\t\t\theight: message.response.height,\n\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\tconsensusStateId: Array.from(toBytes(message.response.consensusStateId)),\n\t\t\t\t\t\t\t\tid: convertStateMachineIdToEnum(message.response.stateMachine),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tproof: Array.from(hexToBytes(message.response.proof)),\n\t\t\t\t\t},\n\t\t\t\t\tsigner: Array.from(hexToBytes(message.signer)),\n\t\t\t\t})\n\t\t\t})\n\t\t\t.with({ kind: \"TimeoutPostRequest\" }, (message) => {\n\t\t\t\treturn Vector(Message).enc([\n\t\t\t\t\t{\n\t\t\t\t\t\ttag: \"TimeoutMessage\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\ttag: \"Post\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\trequests: message.requests.map((r) => convertIPostRequestToCodec(r)),\n\t\t\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\t\t\theight: {\n\t\t\t\t\t\t\t\t\t\theight: message.proof.height,\n\t\t\t\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\t\t\t\tconsensusStateId: Array.from(toBytes(message.proof.consensusStateId)),\n\t\t\t\t\t\t\t\t\t\t\tid: convertStateMachineIdToEnum(message.proof.stateMachine),\n\t\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\tproof: Array.from(hexToBytes(message.proof.proof)),\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])\n\t\t\t})\n\t\t\t.exhaustive()\n\t} catch (error) {\n\t\tthrow new Error(\"Failed to encode ISMP message\", { cause: error })\n\t}\n}\n","import { EvmChain, SubstrateChain } from \"@/chain\"\nimport type {\n\tGetResponseStorageValues,\n\tHexString,\n\tIEvmConfig,\n\tIGetRequest,\n\tIMessage,\n\tIPostRequest,\n\tISubstrateConfig,\n\tStateMachineHeight,\n\tStateMachineIdParams,\n} from \"@/types\"\nimport { isEvmChain, isSubstrateChain } from \"@/utils\"\nimport { ExpectedError } from \"./utils/exceptions\"\n\nexport * from \"@/chains/evm\"\nexport * from \"@/chains/substrate\"\n\n/**\n * Type representing an ISMP message.\n */\nexport type IIsmpMessage = IRequestMessage | ITimeoutPostRequestMessage | IGetResponseMessage | IGetRequestMessage\n\nexport interface IRequestMessage {\n\t/**\n\t * The kind of message.\n\t */\n\tkind: \"PostRequest\"\n\t/**\n\t * The requests to be posted.\n\t */\n\trequests: IPostRequest[]\n\t/**\n\t * The proof of the requests.\n\t */\n\tproof: IProof\n\t/**\n\t * The signer of the message.\n\t */\n\tsigner: HexString\n}\n\nexport interface IGetRequestMessage {\n\t/**\n\t * The kind of message.\n\t */\n\tkind: \"GetRequest\"\n\t/**\n\t * The requests to be posted.\n\t */\n\trequests: IGetRequest[]\n\t/**\n\t * The proof of the requests from the source chain.\n\t */\n\tsource: IProof\n\t/**\n\t * The proof of the response from the target chain\n\t */\n\tresponse: IProof\n\t/**\n\t * The signer of the message.\n\t */\n\tsigner: HexString\n}\n\nexport interface IGetResponse {\n\t/**\n\t * The request that triggered this response.\n\t */\n\tget: IGetRequest\n\t/**\n\t * The response message.\n\t */\n\tvalues: GetResponseStorageValues[]\n}\n\nexport interface IGetResponseMessage {\n\t/**\n\t * The kind of message.\n\t */\n\tkind: \"GetResponse\"\n\t/**\n\t * The responses to be posted.\n\t */\n\tresponses: IGetResponse[]\n\t/**\n\t * The proof of the responses.\n\t */\n\tproof: IProof\n\t/**\n\t * The signer of the message.\n\t */\n\tsigner: HexString\n}\n\nexport interface ITimeoutPostRequestMessage {\n\t/**\n\t * The kind of message.\n\t */\n\tkind: \"TimeoutPostRequest\"\n\n\t/**\n\t * The requests to be posted.\n\t */\n\trequests: IPostRequest[]\n\n\t/**\n\t * The proof of the requests.\n\t */\n\tproof: IProof\n}\n\nexport interface IProof {\n\t/**\n\t * The height of the proof.\n\t */\n\theight: bigint\n\t/**\n\t * The state machine identifier of the proof.\n\t */\n\tstateMachine: string\n\n\t/**\n\t * The associated consensus state identifier of the proof.\n\t */\n\tconsensusStateId: string\n\n\t/**\n\t * The encoded storage proof\n\t */\n\tproof: HexString\n}\n\n/**\n * Interface representing a chain.\n */\nexport interface IChain {\n\t/*\n\t * Returns the current timestamp of the chain in seconds.\n\t */\n\ttimestamp(): Promise<bigint>\n\n\t/**\n\t * Returns the state trie key for the request-receipt storage item for the given request commitment.\n\t */\n\trequestReceiptKey(commitment: HexString): HexString\n\n\t/**\n\t * Query and return the request-receipt for the given request commitment.\n\t */\n\tqueryRequestReceipt(commitment: HexString): Promise<HexString | undefined>\n\n\t/**\n\t * Query and return the encoded storage proof for the provided keys at the given height.\n\t */\n\tqueryStateProof(at: bigint, keys: HexString[]): Promise<HexString>\n\n\t/*\n\t * Query and return the encoded storage proof for requests\n\t */\n\tqueryProof(message: IMessage, counterparty: string, at?: bigint): Promise<HexString>\n\n\t/*\n\t * Encode an ISMP message into the appropriate calldata for this chain.\n\t */\n\tencode(message: IIsmpMessage): HexString\n\n\t/**\n\t * Get the latest state machine height for a given state machine ID.\n\t */\n\tlatestStateMachineHeight(stateMachineId: StateMachineIdParams): Promise<bigint>\n\n\t/**\n\t * Get the challenge period for a given state machine ID.\n\t */\n\tchallengePeriod(stateMachineId: StateMachineIdParams): Promise<bigint>\n\n\t/**\n\t * Get the update time for a statemachine height.\n\t */\n\tstateMachineUpdateTime(stateMachineHeight: StateMachineHeight): Promise<bigint>\n}\n\n/**\n * Returns the chain interface for a given state machine identifier\n * @param chainConfig - Chain configuration\n * @returns Chain interface\n */\nexport async function getChain(chainConfig: IEvmConfig | ISubstrateConfig): Promise<IChain> {\n\tif (isEvmChain(chainConfig.stateMachineId)) {\n\t\tconst config = chainConfig as IEvmConfig\n\t\tconst chainId = Number.parseInt(chainConfig.stateMachineId.split(\"-\")[1])\n\t\tconst evmChain = new EvmChain({\n\t\t\tchainId,\n\t\t\turl: config.rpcUrl,\n\t\t\thost: config.host as any,\n\t\t})\n\n\t\treturn evmChain\n\t}\n\n\tif (isSubstrateChain(chainConfig.stateMachineId)) {\n\t\tconst config = chainConfig as ISubstrateConfig\n\t\tconst substrateChain = new SubstrateChain({\n\t\t\tws: config.wsUrl,\n\t\t\thasher: config.hasher,\n\t\t})\n\n\t\tawait substrateChain.connect()\n\n\t\treturn substrateChain\n\t}\n\n\tthrow new ExpectedError(`Unsupported chain: ${chainConfig.stateMachineId}`)\n}\n","export const POST_REQUEST_STATUS = `\n query RequestStatusM($hash: String!) {\n requests(\n filter: { commitment: { equalTo: $hash } }\n ) {\n nodes {\n commitment\n timeoutTimestamp\n source\n dest\n to\n from\n nonce\n body\n statusMetadata {\n nodes {\n blockHash\n blockNumber\n timestamp\n chain\n status\n transactionHash\n }\n }\n }\n }\n}\n`\n\nexport const GET_REQUEST_STATUS = `\nquery GetRequestDetails($commitment: String!) {\n getRequests(\n filter: { commitment: { equalTo: $commitment } }\n ) {\n nodes {\n id\n source\n dest\n from\n keys\n nonce\n height\n context\n timeoutTimestamp\n fee\n blockNumber\n blockHash\n transactionHash\n blockTimestamp\n status\n chain\n commitment\n statusMetadata {\n nodes {\n status\n chain\n timestamp\n blockNumber\n blockHash\n transactionHash\n }\n }\n }\n }\n}`\n\nexport const STATE_MACHINE_UPDATES_BY_HEIGHT = `\nquery StateMachineUpdatesByHeight($statemachineId: String!, $height: Int!, $chain: String!) {\n\tstateMachineUpdateEvents(\n\t\tfilter: {\n\t\t\tand: [\n\t\t\t\t{ stateMachineId: { equalTo: $statemachineId } }\n\t\t\t\t{ height: { greaterThanOrEqualTo: $height } }\n\t\t\t\t{ chain: { equalTo: $chain } }\n\t\t\t]\n\t\t}\n\t\torderBy: HEIGHT_ASC\n\t\tfirst: 1\n\t) {\n nodes {\n height\n stateMachineId\n chain\n blockHash\n blockNumber\n transactionHash\n createdAt\n }\n }\n}\n`\n\nexport const STATE_MACHINE_UPDATES_BY_TIMESTAMP = `\nquery StateMachineUpdatesByTimestamp($statemachineId: String!, $commitmentTimestamp: BigFloat!, $chain: String!) {\n\tstateMachineUpdateEvents(\n\t\tfilter: {\n\t\t\tand: [\n\t\t\t\t{ stateMachineId: { equalTo: $statemachineId } }\n\t\t\t\t{ commitmentTimestamp: { greaterThanOrEqualTo: $commitmentTimestamp } }\n \t\t\t{ chain: { equalTo: $chain } }\n\t\t\t]\n\t\t}\n\t\torderBy: COMMITMENT_TIMESTAMP_DESC\n\t\tfirst: 1\n\t) {\n nodes {\n height\n stateMachineId\n chain\n blockHash\n blockNumber\n transactionHash\n commitmentTimestamp\n createdAt\n }\n }\n }\n`\n\nexport const ASSET_TELEPORTED_BY_PARAMS = `\nquery AssetTeleportedByParams($id: String!) {\n assetTeleported(id: $id) {\n id\n from\n to\n amount\n dest\n commitment\n createdAt\n blockNumber\n }\n}\n`\n\nexport const GET_RESPONSE_BY_REQUEST_ID = `\nquery GetResponseByRequestId($requestId: String!) {\n getResponses(filter: {requestId: {equalTo: $requestId}}) {\n nodes {\n id\n commitment\n responseMessage\n }\n }\n}\n`\n\nexport const ORDER_STATUS = `\nquery OrderStatus($commitment: String!) {\n orderPlaceds(\n filter: { commitment: { equalTo: $commitment } }\n ) {\n nodes {\n id\n user\n sourceChain\n destChain\n commitment\n deadline\n nonce\n fees\n inputTokens\n inputAmounts\n inputValuesUSD\n inputUSD\n outputTokens\n outputAmounts\n outputBeneficiaries\n calldata\n status\n createdAt\n blockNumber\n blockTimestamp\n transactionHash\n statusMetadata {\n nodes {\n status\n chain\n timestamp\n blockNumber\n transactionHash\n filler\n }\n }\n }\n }\n}`\n\nexport const TOKEN_GATEWAY_ASSET_TELEPORTED_STATUS = `\nquery TokenGatewayAssetTeleportedStatus($commitment: String!) {\n tokenGatewayAssetTeleporteds(\n filter: { commitment: { equalTo: $commitment } }\n ) {\n nodes {\n id\n from\n to\n sourceChain\n destChain\n commitment\n amount\n usdValue\n assetId\n redeem\n status\n createdAt\n blockNumber\n blockTimestamp\n transactionHash\n statusMetadata {\n nodes {\n status\n chain\n timestamp\n blockNumber\n transactionHash\n }\n }\n }\n }\n}`\n\nexport const TOKEN_PRICE = `\nquery TokenPrice($symbol: String!) {\n tokenPrices(\n filter: { symbol: { equalTo: $symbol } }\n ) {\n nodes {\n id\n symbol\n address\n currency\n price\n lastUpdatedAt\n }\n }\n}`\n\nexport const TOKEN_REGISTRY = `\nquery TokenRegistry($symbol: String!) {\n tokenRegistries(\n filter: { symbol: { equalTo: $symbol } }\n ) {\n nodes {\n id\n name\n symbol\n address\n updateFrequencySeconds\n lastUpdatedAt\n createdAt\n }\n }\n}`\n","import type { ConsolaInstance } from \"consola\"\nimport { GraphQLClient } from \"graphql-request\"\nimport {\n\tASSET_TELEPORTED_BY_PARAMS,\n\tGET_REQUEST_STATUS,\n\tORDER_STATUS,\n\tPOST_REQUEST_STATUS,\n\tTOKEN_GATEWAY_ASSET_TELEPORTED_STATUS,\n\tTOKEN_PRICE,\n\tTOKEN_REGISTRY,\n} from \"./queries\"\nimport type {\n\tAssetTeleported,\n\tAssetTeleportedResponse,\n\tGetRequestResponse,\n\tGetRequestWithStatus,\n\tHexString,\n\tIndexerQueryClient,\n\tOrderResponse,\n\tOrderWithStatus,\n\tPostRequestWithStatus,\n\tRequestResponse,\n\tRequestStatusKey,\n\tTokenGatewayAssetTeleportedResponse,\n\tTokenGatewayAssetTeleportedWithStatus,\n\tTokenPrice,\n\tTokenPricesResponse,\n\tTokenRegistry,\n\tTokenRegistryResponse,\n} from \"./types\"\nimport { DEFAULT_LOGGER, REQUEST_STATUS_WEIGHTS, retryPromise, sleep } from \"./utils\"\n\nexport function createQueryClient(config: { url: string }) {\n\treturn new GraphQLClient(config.url)\n}\n\n/**\n * Queries a request by CommitmentHash\n *\n * @example\n * import { createQueryClient, queryRequest } from \"@hyperbridge/sdk\"\n *\n * const queryClient = createQueryClient({\n * url: \"http://localhost:3000\", // URL of the Hyperbridge indexer API\n * })\n * const commitmentHash = \"0x....\"\n * const request = await queryPostRequest({ commitmentHash, queryClient })\n */\nexport function queryPostRequest(params: { commitmentHash: string; queryClient: IndexerQueryClient }) {\n\treturn _queryRequestInternal(params)\n}\n\n/**\n * Query for asset teleported events by sender, recipient, and destination chain\n * @param id - Encoded Message Id\n * @returns The asset teleported event if found, undefined otherwise\n */\nexport async function queryAssetTeleported(params: {\n\tid: HexString\n\tqueryClient: IndexerQueryClient\n}): Promise<AssetTeleported | undefined> {\n\tconst { id, queryClient } = params\n\n\treturn await retryPromise(\n\t\tasync () => {\n\t\t\tconst response = await queryClient.request<AssetTeleportedResponse>(ASSET_TELEPORTED_BY_PARAMS, { id })\n\n\t\t\tif (!response?.assetTeleported) {\n\t\t\t\tthrow new Error(`AssetTeleportedEvent not found for ${id}`)\n\t\t\t}\n\n\t\t\treturn response.assetTeleported\n\t\t},\n\t\t{\n\t\t\tlogMessage: \"queryingAssetTeleported\",\n\t\t\tbackoffMs: 15000,\n\t\t\tmaxRetries: 15,\n\t\t},\n\t)\n}\n\n/**\n * Queries a GET Request by CommitmentHash\n *\n * @example\n * import { createQueryClient, queryRequest } from \"@hyperbridge/sdk\"\n *\n * const queryClient = createQueryClient({\n * url: \"http://localhost:3000\", // URL of the Hyperbridge indexer API\n * })\n * const commitmentHash = \"0x....\"\n * const request = await queryGetRequest({ commitmentHash, queryClient })\n */\nexport function queryGetRequest(params: { commitmentHash: string; queryClient: IndexerQueryClient }) {\n\treturn _queryGetRequestInternal(params)\n}\n\n/**\n * Queries an order by CommitmentHash\n *\n * @example\n * import { createQueryClient, queryOrder } from \"@hyperbridge/sdk\"\n *\n * const queryClient = createQueryClient({\n * url: \"http://localhost:3000\", // URL of the Hyperbridge indexer API\n * })\n * const commitmentHash = \"0x....\"\n * const order = await queryOrder({ commitmentHash, queryClient })\n */\nexport function queryOrder(params: { commitmentHash: string; queryClient: IndexerQueryClient }) {\n\treturn _queryOrderInternal(params)\n}\n\n/**\n * Internal function to query a token gateway asset teleported by CommitmentHash\n *\n * @param params - Parameters for querying the token gateway asset teleported\n * @returns Latest status and block metadata of the token gateway asset teleported\n */\nexport async function _queryTokenGatewayAssetTeleportedInternal(\n\tparams: InternalQueryParams,\n): Promise<TokenGatewayAssetTeleportedWithStatus | undefined> {\n\tconst { commitmentHash, queryClient: client, logger = DEFAULT_LOGGER } = params\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<TokenGatewayAssetTeleportedResponse>(TOKEN_GATEWAY_ASSET_TELEPORTED_STATUS, {\n\t\t\t\tcommitment: commitmentHash,\n\t\t\t})\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `querying 'TokenGatewayAssetTeleported' with Statuses by CommitmentHash(${commitmentHash})`,\n\t\t},\n\t)\n\n\tconst first_record = response.tokenGatewayAssetTeleporteds.nodes[0]\n\tif (!first_record) return\n\n\tlogger.trace(\"`TokenGatewayAssetTeleported` found\")\n\tconst { statusMetadata, ...first_node } = first_record\n\n\tconst statuses = structuredClone(statusMetadata.nodes).map((item) => ({\n\t\tstatus: item.status,\n\t\tmetadata: {\n\t\t\tblockHash: item.blockHash,\n\t\t\tblockNumber: Number.parseInt(item.blockNumber),\n\t\t\ttransactionHash: item.transactionHash,\n\t\t\ttimestamp: BigInt(item.timestamp),\n\t\t},\n\t}))\n\n\t// sort by ascending order\n\tconst sorted = statuses.sort((a, b) => {\n\t\treturn Number(a.metadata.timestamp) - Number(b.metadata.timestamp)\n\t})\n\n\treturn {\n\t\t...first_node,\n\t\tamount: BigInt(first_node.amount),\n\t\tblockNumber: BigInt(first_node.blockNumber),\n\t\tblockTimestamp: BigInt(first_node.blockTimestamp),\n\t\tcreatedAt: new Date(first_node.createdAt),\n\t\tstatuses: sorted,\n\t}\n}\n\ntype InternalQueryParams = {\n\tcommitmentHash: string\n\tqueryClient: IndexerQueryClient\n\tlogger?: ConsolaInstance\n}\n\n/**\n * Queries a request by CommitmentHash\n\n * @param hash - Can be commitment\n * @returns Latest status and block metadata of the request\n */\nexport async function _queryRequestInternal(params: InternalQueryParams): Promise<PostRequestWithStatus | undefined> {\n\tconst { commitmentHash: hash, queryClient: client, logger: logger_ = DEFAULT_LOGGER } = params\n\n\tconst logger = logger_.withTag(\"[queryRequest]\")\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<RequestResponse>(POST_REQUEST_STATUS, {\n\t\t\t\thash,\n\t\t\t})\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `querying 'Request' with Statuses by CommitmentHash(${hash})`,\n\t\t},\n\t)\n\n\tconst first_record = response.requests.nodes[0]\n\tif (!first_record) return\n\n\tlogger.trace(\"`Request` found\")\n\tconst { statusMetadata, ...first_node } = first_record\n\n\tconst statuses = structuredClone(statusMetadata.nodes).map((item) => ({\n\t\tstatus: item.status as any,\n\t\tmetadata: {\n\t\t\tblockHash: item.blockHash,\n\t\t\tblockNumber: Number.parseInt(item.blockNumber),\n\t\t\ttransactionHash: item.transactionHash,\n\t\t\ttimestamp: item?.timestamp,\n\t\t},\n\t}))\n\n\t// sort by ascending order\n\tconst sorted = statuses.sort(\n\t\t(a, b) =>\n\t\t\tREQUEST_STATUS_WEIGHTS[a.status as RequestStatusKey] - REQUEST_STATUS_WEIGHTS[b.status as RequestStatusKey],\n\t)\n\tlogger.trace(\"Statuses found\", statuses)\n\n\tconst request: PostRequestWithStatus = {\n\t\t...first_node,\n\t\ttimeoutTimestamp: BigInt(first_node.timeoutTimestamp),\n\t\tstatuses: sorted,\n\t}\n\n\treturn request\n}\n\n/**\n * Queries a request by any of its associated hashes and returns it alongside its statuses\n * Statuses will be one of SOURCE, HYPERBRIDGE_DELIVERED and DESTINATION\n *\n * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n * @returns Latest status and block metadata of the request\n */\nexport async function _queryGetRequestInternal(params: InternalQueryParams): Promise<GetRequestWithStatus | undefined> {\n\tconst { commitmentHash, queryClient: client, logger = DEFAULT_LOGGER } = params\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<GetRequestResponse>(GET_REQUEST_STATUS, {\n\t\t\t\tcommitment: commitmentHash,\n\t\t\t})\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `query \\`IGetRequest\\` with commitment hash ${commitmentHash}`,\n\t\t},\n\t)\n\n\tif (!response.getRequests.nodes[0]) return\n\n\tlogger.trace(\"`Request` found\")\n\n\tconst statuses = response.getRequests.nodes[0].statusMetadata.nodes.map((item) => ({\n\t\tstatus: item.status as any,\n\t\tmetadata: {\n\t\t\tblockHash: item.blockHash,\n\t\t\tblockNumber: Number.parseInt(item.blockNumber),\n\t\t\ttransactionHash: item.transactionHash,\n\t\t\ttimestamp: item?.timestamp,\n\t\t},\n\t}))\n\n\t// sort by ascending order\n\tconst sorted = statuses.sort((a, b) => {\n\t\treturn (\n\t\t\tREQUEST_STATUS_WEIGHTS[a.status as RequestStatusKey] - REQUEST_STATUS_WEIGHTS[b.status as RequestStatusKey]\n\t\t)\n\t})\n\n\tconst { statusMetadata, ...rest } = response.getRequests.nodes[0]\n\n\treturn {\n\t\t...rest,\n\t\tcommitment: commitmentHash as HexString,\n\t\ttimeoutTimestamp: BigInt(rest.timeoutTimestamp),\n\t\tnonce: BigInt(rest.nonce),\n\t\theight: BigInt(rest.height),\n\t\tstatuses: sorted,\n\t}\n}\n\n/**\n * Internal function to query an order by CommitmentHash\n *\n * @param params - Parameters for querying the order\n * @returns Latest status and block metadata of the order\n */\nexport async function _queryOrderInternal(params: InternalQueryParams): Promise<OrderWithStatus | undefined> {\n\tconst { commitmentHash, queryClient: client, logger = DEFAULT_LOGGER } = params\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<OrderResponse>(ORDER_STATUS, {\n\t\t\t\tcommitment: commitmentHash,\n\t\t\t})\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `querying 'Order' with Statuses by CommitmentHash(${commitmentHash})`,\n\t\t},\n\t)\n\n\tconst first_record = response.orderPlaceds.nodes[0]\n\tif (!first_record) return\n\n\tlogger.trace(\"`Order` found\")\n\tconst { statusMetadata, ...first_node } = first_record\n\n\tconst statuses = structuredClone(statusMetadata.nodes).map((item) => ({\n\t\tstatus: item.status,\n\t\tmetadata: {\n\t\t\tblockHash: item.blockHash,\n\t\t\tblockNumber: Number.parseInt(item.blockNumber),\n\t\t\ttransactionHash: item.transactionHash,\n\t\t\ttimestamp: BigInt(item.timestamp),\n\t\t\tfiller: item.filler,\n\t\t},\n\t}))\n\n\t// sort by ascending order\n\tconst sorted = statuses.sort((a, b) => {\n\t\t// Since OrderStatus and RequestStatus are different enums, we'll just sort by timestamp\n\t\treturn Number(a.metadata.timestamp) - Number(b.metadata.timestamp)\n\t})\n\n\tconst order: OrderWithStatus = {\n\t\t...first_node,\n\t\tdeadline: BigInt(first_node.deadline),\n\t\tnonce: BigInt(first_node.nonce),\n\t\tfees: BigInt(first_node.fees),\n\t\tinputAmounts: first_node.inputAmounts.map(BigInt),\n\t\toutputAmounts: first_node.outputAmounts.map(BigInt),\n\t\tblockNumber: BigInt(first_node.blockNumber),\n\t\tblockTimestamp: BigInt(first_node.blockTimestamp),\n\t\tcreatedAt: new Date(first_node.createdAt),\n\t\tstatuses: sorted,\n\t}\n\n\treturn order\n}\n\ntype TokenPriceQueryParams = {\n\tsymbol: string\n\tqueryClient: IndexerQueryClient\n\tlogger?: ConsolaInstance\n}\n\nexport async function _queryTokenPriceInternal(params: TokenPriceQueryParams): Promise<TokenPrice | undefined> {\n\tconst { symbol, queryClient: client, logger = DEFAULT_LOGGER } = params\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<TokenPricesResponse>(TOKEN_PRICE, { symbol })\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `querying 'TokenPrice' by Symbol(${symbol})`,\n\t\t},\n\t)\n\n\tconst item = response.tokenPrices.nodes?.[0]\n\tif (!item) return\n\n\tlogger.trace(\"`TokenPrice` found\")\n\treturn item\n}\n\ntype TokenRegistryQueryParams = {\n\tsymbol: string\n\tqueryClient: IndexerQueryClient\n\tlogger?: ConsolaInstance\n}\n\nexport async function _queryTokenRegistryInternal(\n\tparams: TokenRegistryQueryParams,\n): Promise<TokenRegistry | undefined> {\n\tconst { symbol, queryClient: client, logger = DEFAULT_LOGGER } = params\n\n\tconst response = await retryPromise(\n\t\t() => {\n\t\t\treturn client.request<TokenRegistryResponse>(TOKEN_REGISTRY, { symbol })\n\t\t},\n\t\t{\n\t\t\tmaxRetries: 3,\n\t\t\tbackoffMs: 1000,\n\t\t\tlogger,\n\t\t\tlogMessage: `querying 'TokenRegistry' by Symbol(${symbol})`,\n\t\t},\n\t)\n\n\tconst item = response.tokenRegistries.nodes?.[0]\n\tif (!item) return\n\n\tlogger.trace(\"`TokenRegistry` found\")\n\n\treturn {\n\t\tid: item.id,\n\t\tname: item.name,\n\t\tsymbol: item.symbol,\n\t\taddress: item.address,\n\t\tupdateFrequencySeconds: item.updateFrequencySeconds,\n\t\tlastUpdatedAt: item.lastUpdatedAt,\n\t\tcreatedAt: new Date(item.createdAt),\n\t}\n}\n","import { type ConsolaInstance, LogLevels, createConsola } from \"consola\"\nimport { isNil, maxBy } from \"lodash-es\"\nimport { pad, toHex } from \"viem\"\n\n// @ts-ignore\nimport mergeRace from \"@async-generator/merge-race\"\n\nimport type {\n\tAssetTeleported,\n\tAssetTeleportedResponse,\n\tBlockMetadata,\n\tClientConfig,\n\tGetRequestResponse,\n\tGetRequestWithStatus,\n\tGetResponseByRequestIdResponse,\n\tHexString,\n\tOrderWithStatus,\n\tPostRequestStatus,\n\tPostRequestTimeoutStatus,\n\tPostRequestWithStatus,\n\tRequestStatusKey,\n\tRequestStatusWithMetadata,\n\tResponseCommitmentWithValues,\n\tRetryConfig,\n\tStateMachineResponse,\n\tStateMachineUpdate,\n\tTimeoutStatusKey,\n\tTokenGatewayAssetTeleportedWithStatus,\n} from \"@/types\"\n\nimport { type IChain, type SubstrateChain, getChain } from \"@/chain\"\nimport {\n\tASSET_TELEPORTED_BY_PARAMS,\n\tGET_RESPONSE_BY_REQUEST_ID,\n\tSTATE_MACHINE_UPDATES_BY_HEIGHT,\n\tSTATE_MACHINE_UPDATES_BY_TIMESTAMP,\n} from \"@/queries\"\nimport {\n\tCOMBINED_STATUS_WEIGHTS,\n\tDEFAULT_POLL_INTERVAL,\n\tREQUEST_STATUS_WEIGHTS,\n\tTIMEOUT_STATUS_WEIGHTS,\n\tdateStringtoTimestamp,\n\tparseStateMachineId,\n\tpostRequestCommitment,\n\tretryPromise,\n\tsleep,\n\twaitForChallengePeriod,\n} from \"@/utils\"\nimport {\n\t_queryGetRequestInternal,\n\t_queryOrderInternal,\n\t_queryRequestInternal,\n\t_queryTokenGatewayAssetTeleportedInternal,\n} from \"./query-client\"\n\nimport { OrderStatus, RequestStatus, TeleportStatus, TimeoutStatus } from \"@/types\"\n\nimport type { IndexerQueryClient } from \"@/types\"\nimport { AbortSignalInternal, ExpectedError } from \"./utils/exceptions\"\n\n/**\n * IndexerClient provides methods for interacting with the Hyperbridge indexer.\n *\n * This client facilitates querying and tracking cross-chain requests and their status\n * through the Hyperbridge protocol. It supports:\n *\n * - Querying state machine updates by block height or timestamp\n * - Retrieving request status information by transaction hash\n * - Monitoring request status changes through streaming interfaces\n * - Handling request timeout flows and related proof generation\n * - Tracking request finalization across source and destination chains\n *\n * The client implements automatic retries with exponential backoff for network\n * resilience and provides both simple query methods and advanced streaming\n * interfaces for real-time status tracking.\n *\n * The URLs provided in the configuration must point to archive nodes to allow the client to query for storage proofs\n * of potentially much older blocks. Regular nodes only store the state for recent blocks and will not be able\n * to provide the necessary proofs for cross-chain verification, especially in timeout scenarios.\n *\n * @example\n * ```typescript\n * const client = new IndexerClient({\n * url: \"https://indexer.hyperbridge.xyz/graphql\",\n * pollInterval: 2000,\n * source: {\n *\t\tstateMachineId: \"EVM-1\",\n * \t\tconsensusStateId: \"ETH0\"\n *\t\trpcUrl: \"\",\n *\t\thost: \"0x87ea45..\",\n * \t},\n * dest: {\n *\t\tstateMachineId: \"EVM-42161\",\n * \t\tconsensusStateId: \"ETH0\"\n *\t\trpcUrl: \"\",\n *\t\thost: \"0x87ea42345..\",\n * \t},\n * hyperbridge: {\n * stateMachineId: \"POLKADOT-3367\",\n * consensusStateId: \"DOT0\"\n * wsUrl: \"ws://localhost:9944\"\n * }\n * });\n *\n * // Query a request status\n * const status = await client.queryRequestWithStatus(\"0x1234...\");\n *\n * // Stream status updates\n * for await (const update of client.postRequestStatusStream(\"0x1234...\")) {\n * console.log(`Request status: ${update.status}`);\n * }\n * ```\n */\nexport class IndexerClient {\n\t/**\n\t * GraphQL client used for making requests to the indexer\n\t */\n\tprivate client: IndexerQueryClient\n\n\t/**\n\t * Configuration for the IndexerClient including URLs, poll intervals, and chain-specific settings\n\t */\n\tprivate config: ClientConfig\n\n\tprivate logger: ConsolaInstance\n\n\t/**\n\t * Default configuration for retry behavior when network requests fail\n\t * - maxRetries: Maximum number of retry attempts before failing\n\t * - backoffMs: Initial backoff time in milliseconds (doubles with each retry)\n\t */\n\tprivate defaultRetryConfig: RetryConfig = {\n\t\tmaxRetries: 3,\n\t\tbackoffMs: 1000,\n\t}\n\n\t/**\n\t * Creates a new IndexerClient instance\n\t */\n\tconstructor(config: PartialClientConfig) {\n\t\tthis.client = config.queryClient\n\t\tthis.config = {\n\t\t\tpollInterval: DEFAULT_POLL_INTERVAL,\n\t\t\t...config,\n\t\t}\n\t\tthis.logger = createConsola({\n\t\t\tlevel: LogLevels[config.tracing ? \"trace\" : \"info\"],\n\t\t\tformatOptions: {\n\t\t\t\tcolumns: 80,\n\t\t\t\tcolors: true,\n\t\t\t\tcompact: true,\n\t\t\t\tdate: false,\n\t\t\t},\n\t\t})\n\t}\n\n\t/**\n\t * Query for a single state machine update event greater than or equal to the given height.\n\t * @params statemachineId - ID of the state machine\n\t * @params height - Starting block height\n\t * @params chain - The identifier for the chain where the state machine update should be queried (corresponds to a stateMachineId)\n\t * @returns Closest state machine update\n\t */\n\tasync queryStateMachineUpdateByHeight({\n\t\tstatemachineId,\n\t\theight,\n\t\tchain,\n\t}: {\n\t\tstatemachineId: string\n\t\tchain: string\n\t\theight: number\n\t}): Promise<StateMachineUpdate | undefined> {\n\t\tconst logger = this.logger.withTag(\"[queryStateMachineUpdateByHeight]()\")\n\t\tconst message = `querying StateMachineId(${statemachineId}) update by Height(${height}) in chain Chain(${chain})`\n\n\t\tconst response = await this.withRetry(\n\t\t\t() => {\n\t\t\t\treturn this.client.request<StateMachineResponse>(STATE_MACHINE_UPDATES_BY_HEIGHT, {\n\t\t\t\t\tstatemachineId,\n\t\t\t\t\theight,\n\t\t\t\t\tchain,\n\t\t\t\t})\n\t\t\t},\n\t\t\t{ logger: logger, logMessage: message },\n\t\t)\n\n\t\tconst first_node = response?.stateMachineUpdateEvents?.nodes[0]\n\t\tif (first_node?.createdAt) {\n\t\t\t//@ts-ignore\n\t\t\tfirst_node.timestamp = Math.floor(dateStringtoTimestamp(first_node.createdAt) / 1000)\n\t\t}\n\t\tlogger.trace(\"Response >\", first_node)\n\n\t\t//@ts-ignore\n\t\treturn first_node\n\t}\n\n\t/**\n\t * Query for a single state machine update event greater than or equal to the given timestamp.\n\t * @params statemachineId - ID of the state machine\n\t * @params timestamp - Starting block timestamp\n\t * @params chain - The identifier for the chain where the state machine update should be queried (corresponds to a stateMachineId)\n\t * @returns Closest state machine update\n\t */\n\tasync queryStateMachineUpdateByTimestamp({\n\t\tstatemachineId,\n\t\tcommitmentTimestamp,\n\t\tchain,\n\t}: {\n\t\tstatemachineId: string\n\t\tcommitmentTimestamp: bigint\n\t\tchain: string\n\t}): Promise<StateMachineUpdate | undefined> {\n\t\tconst logger = this.logger.withTag(\"[queryStateMachineUpdateByTimestamp]\")\n\t\tconst message = `querying StateMachineId(${statemachineId}) update by Timestamp(${commitmentTimestamp}) in Chain(${chain})`\n\n\t\tconst response = await this.withRetry(\n\t\t\t() =>\n\t\t\t\tthis.client.request<StateMachineResponse>(STATE_MACHINE_UPDATES_BY_TIMESTAMP, {\n\t\t\t\t\tstatemachineId,\n\t\t\t\t\tcommitmentTimestamp: commitmentTimestamp.toString(),\n\t\t\t\t\tchain,\n\t\t\t\t}),\n\t\t\t{ logger, logMessage: message },\n\t\t)\n\n\t\tconst first_node = response?.stateMachineUpdateEvents?.nodes[0]\n\t\tif (first_node?.createdAt) {\n\t\t\t//@ts-ignore\n\t\t\tfirst_node.timestamp = Math.floor(dateStringtoTimestamp(first_node.createdAt) / 1000)\n\t\t}\n\t\tlogger.trace(\"Response >\", first_node)\n\n\t\t//@ts-ignore\n\t\treturn first_node\n\t}\n\n\t/**\n\t * Queries a request by CommitmentHash\n\t *\n\t * @param commitment_hash - Can be commitment\n\t * @returns Latest status and block metadata of the request\n\t */\n\tasync queryPostRequest(commitment_hash: HexString): Promise<PostRequestWithStatus | undefined> {\n\t\treturn _queryRequestInternal({\n\t\t\tcommitmentHash: commitment_hash,\n\t\t\tqueryClient: this.client,\n\t\t\tlogger: this.logger,\n\t\t})\n\t}\n\n\t/**\n\t * Queries a request by any of its associated hashes and returns it alongside its statuses\n\t * Statuses will be one of SOURCE, HYPERBRIDGE_DELIVERED and DESTINATION\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns Latest status and block metadata of the request\n\t */\n\tasync queryGetRequest(hash: HexString): Promise<GetRequestWithStatus | undefined> {\n\t\treturn _queryGetRequestInternal({\n\t\t\tcommitmentHash: hash,\n\t\t\tqueryClient: this.client,\n\t\t\tlogger: this.logger,\n\t\t})\n\t}\n\n\t/**\n\t * Queries the response associated with a specific request ID and returns its commitment\n\t * @param requestId - The ID of the request to find the associated response for\n\t * @returns The response associated with the given request ID, or undefined if not found\n\t */\n\tasync queryResponseByRequestId(requestId: string): Promise<ResponseCommitmentWithValues | undefined> {\n\t\tconst response = await this.withRetry(() =>\n\t\t\tthis.client.request<GetResponseByRequestIdResponse>(GET_RESPONSE_BY_REQUEST_ID, {\n\t\t\t\trequestId,\n\t\t\t}),\n\t\t)\n\n\t\t// If no responses are found or nodes array is empty, return undefined\n\t\tif (!response.getResponses.nodes.length) return undefined\n\n\t\t// Return just the first response\n\t\tconst firstResponse = response.getResponses.nodes[0]\n\n\t\treturn {\n\t\t\tcommitment: firstResponse.commitment,\n\t\t\tvalues: firstResponse.responseMessage,\n\t\t}\n\t}\n\n\t/**\n\t * Enhances a request with finality events by querying state machine updates.\n\t *\n\t * This method augments a request object with additional inferred status events\n\t * that represent chain finality confirmations. It adds:\n\t * - SOURCE_FINALIZED: When the source chain has finalized the request\n\t * - HYPERBRIDGE_FINALIZED: When Hyperbridge has finalized the delivery confirmation\n\t *\n\t * The method also generates appropriate calldata for submitting cross-chain proofs\n\t * when applicable.\n\t *\n\t * @param request - The request to enhance with finality events\n\t * @returns The request with finality events added\n\t * @private\n\t */\n\tprivate async addRequestFinalityEvents(request: PostRequestWithStatus): Promise<PostRequestWithStatus> {\n\t\tconst events: RequestStatusWithMetadata[] = []\n\n\t\tconst addFinalityEvents = (request: PostRequestWithStatus) => {\n\t\t\tthis.logger.trace(`Added ${events.length} \\`Request\\` finality events`, events)\n\n\t\t\trequest.statuses = [...request.statuses, ...events]\n\t\t\treturn request\n\t\t}\n\n\t\tlet hyperbridgeDelivered: RequestStatusWithMetadata | undefined\n\n\t\tif (request.source === this.config.hyperbridge.stateMachineId) {\n\t\t\t// the first status contains the blocknumber of the initial request\n\t\t\thyperbridgeDelivered = request.statuses[0]\n\t\t} else {\n\t\t\t// we assume there's always a SOURCE event which contains the blocknumber of the initial request\n\t\t\tconst sourceFinality = await this.queryStateMachineUpdateByHeight({\n\t\t\t\tstatemachineId: request.source,\n\t\t\t\theight: request.statuses[0].metadata.blockNumber,\n\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t})\n\n\t\t\t// no finality event found, return request as is\n\t\t\tif (!sourceFinality) return addFinalityEvents(request)\n\n\t\t\t// Insert finality event into request.statuses at index 1\n\t\t\tevents.push({\n\t\t\t\tstatus: RequestStatus.SOURCE_FINALIZED,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblockHash: sourceFinality.blockHash,\n\t\t\t\t\tblockNumber: sourceFinality.height,\n\t\t\t\t\ttransactionHash: sourceFinality.transactionHash,\n\t\t\t\t\ttimestamp: sourceFinality.timestamp,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\t// check if there's a hyperbridge delivered event\n\t\t\thyperbridgeDelivered = request.statuses.find((item) => item.status === RequestStatus.HYPERBRIDGE_DELIVERED)\n\n\t\t\tif (!hyperbridgeDelivered) return addFinalityEvents(request)\n\t\t}\n\n\t\t// no need to query finality event if destination is hyperbridge\n\t\tif (request.dest === this.config.hyperbridge.stateMachineId) {\n\t\t\treturn addFinalityEvents(request)\n\t\t}\n\n\t\tconst hyperbridgeFinality = await this.queryStateMachineUpdateByHeight({\n\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\theight: hyperbridgeDelivered.metadata.blockNumber,\n\t\t\tchain: request.dest,\n\t\t})\n\n\t\tif (!hyperbridgeFinality) return addFinalityEvents(request)\n\n\t\t// check if request receipt exists on destination chain\n\t\tconst destChain = await getChain(this.config.dest)\n\t\tconst hyperbridge = await getChain({\n\t\t\t...this.config.hyperbridge,\n\t\t\thasher: \"Keccak\",\n\t\t})\n\n\t\tconst proof = await hyperbridge.queryProof(\n\t\t\t{ Requests: [postRequestCommitment(request).commitment] },\n\t\t\trequest.dest,\n\t\t\tBigInt(hyperbridgeFinality.height),\n\t\t)\n\n\t\tconst calldata = destChain.encode({\n\t\t\tkind: \"PostRequest\",\n\t\t\tproof: {\n\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t\tproof,\n\t\t\t\theight: BigInt(hyperbridgeFinality.height),\n\t\t\t},\n\t\t\trequests: [request],\n\t\t\tsigner: pad(\"0x\"),\n\t\t})\n\n\t\tevents.push({\n\t\t\tstatus: RequestStatus.HYPERBRIDGE_FINALIZED,\n\t\t\tmetadata: {\n\t\t\t\tblockHash: hyperbridgeFinality.blockHash,\n\t\t\t\tblockNumber: hyperbridgeFinality.height,\n\t\t\t\ttransactionHash: hyperbridgeFinality.transactionHash,\n\t\t\t\ttimestamp: hyperbridgeFinality.timestamp,\n\t\t\t\tcalldata,\n\t\t\t},\n\t\t})\n\n\t\treturn addFinalityEvents(request)\n\t}\n\n\t/**\n\t * Adds timeout finality events to a request by querying for relevant timeout proofs and\n\t * chain state necessary for timeout processing.\n\t *\n\t * This method enhances a request object with additional status events related to the\n\t * timeout flow, including:\n\t * - PENDING_TIMEOUT: When a request has passed its timeout timestamp\n\t * - DESTINATION_FINALIZED: When the destination chain has finalized the timeout timestamp\n\t * - HYPERBRIDGE_FINALIZED_TIMEOUT: When hyperbridge has finalized the timeout state\n\t *\n\t * The method also generates appropriate calldata for submitting timeout proofs.\n\t *\n\t * @param request - Request to fill timeout events for\n\t * @returns Request with timeout events filled in, including any proof calldata for timeout submissions\n\t * @private\n\t */\n\tprivate async addTimeoutFinalityEvents(request: PostRequestWithStatus): Promise<PostRequestWithStatus> {\n\t\t// check if request receipt exists on destination chain\n\t\tconst destChain = await getChain(this.config.dest)\n\t\tconst hyperbridge = await getChain({\n\t\t\t...this.config.hyperbridge,\n\t\t\thasher: \"Keccak\",\n\t\t})\n\t\tconst events: RequestStatusWithMetadata[] = []\n\t\tconst commitment = postRequestCommitment(request).commitment\n\t\tconst reciept = await destChain.queryRequestReceipt(commitment)\n\t\tconst destTimestamp = await destChain.timestamp()\n\n\t\tconst addTimeoutEvents = (req: PostRequestWithStatus) => {\n\t\t\tthis.logger.trace(`Added ${events.length} timeout events`, events)\n\t\t\trequest.statuses = [...req.statuses, ...events]\n\t\t\treturn request\n\t\t}\n\n\t\tif (request.timeoutTimestamp === 0n) {\n\t\t\t// Early exit for requests with no timeout configured\n\t\t\t// This prevents unnecessary timeout processing and expensive chain queries\n\t\t\t// The events array is still empty at this point, so no timeout events are added\n\t\t\treturn addTimeoutEvents(request)\n\t\t}\n\n\t\t// request not timed out\n\t\tif (reciept || request.timeoutTimestamp > destTimestamp) {\n\t\t\treturn addTimeoutEvents(request)\n\t\t}\n\n\t\tconst is_finished = request.statuses.find((item) => item.status === RequestStatus.DESTINATION)\n\n\t\tif (!is_finished) {\n\t\t\tevents.push({\n\t\t\t\tstatus: TimeoutStatus.PENDING_TIMEOUT,\n\t\t\t\tmetadata: { blockHash: \"0x\", blockNumber: 0, transactionHash: \"0x\" },\n\t\t\t})\n\t\t}\n\n\t\tconst delivered = request.statuses.find((item) => {\n\t\t\treturn item.status === RequestStatus.HYPERBRIDGE_DELIVERED\n\t\t})\n\n\t\tlet hyperbridgeFinalized: StateMachineUpdate | undefined\n\t\tif (!delivered) {\n\t\t\t// either the request was never delivered to hyperbridge\n\t\t\t// or hyperbridge was the destination of the request\n\t\t\thyperbridgeFinalized = await this.queryStateMachineUpdateByTimestamp({\n\t\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\t\tcommitmentTimestamp: request.timeoutTimestamp,\n\t\t\t\tchain: request.source,\n\t\t\t})\n\t\t} else {\n\t\t\tconst destFinalized = await this.queryStateMachineUpdateByTimestamp({\n\t\t\t\tstatemachineId: request.dest,\n\t\t\t\tcommitmentTimestamp: request.timeoutTimestamp,\n\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t})\n\n\t\t\tif (!destFinalized) return addTimeoutEvents(request)\n\n\t\t\tevents.push({\n\t\t\t\tstatus: TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblockHash: destFinalized.blockHash,\n\t\t\t\t\tblockNumber: destFinalized.blockNumber,\n\t\t\t\t\ttransactionHash: destFinalized.transactionHash,\n\t\t\t\t\ttimestamp: destFinalized.timestamp,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\t// if the source is the hyperbridge state machine, no further action is needed\n\t\t\t// use the timeout stream to timeout on hyperbridge\n\t\t\tif (request.source === this.config.hyperbridge.stateMachineId) return request\n\n\t\t\tconst hyperbridgeTimedOut = request.statuses.find(\n\t\t\t\t(item) => item.status === TimeoutStatus.HYPERBRIDGE_TIMED_OUT,\n\t\t\t)\n\t\t\tif (!hyperbridgeTimedOut) return addTimeoutEvents(request)\n\t\t\thyperbridgeFinalized = await this.queryStateMachineUpdateByHeight({\n\t\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\t\theight: hyperbridgeTimedOut.metadata.blockNumber,\n\t\t\t\tchain: request.source,\n\t\t\t})\n\t\t}\n\n\t\tif (!hyperbridgeFinalized) return addTimeoutEvents(request)\n\n\t\tconst proof = await hyperbridge.queryStateProof(BigInt(hyperbridgeFinalized.height), [\n\t\t\thyperbridge.requestReceiptKey(commitment),\n\t\t])\n\t\tconst sourceChain = await getChain(this.config.source)\n\t\tconst calldata = sourceChain.encode({\n\t\t\tkind: \"TimeoutPostRequest\",\n\t\t\tproof: {\n\t\t\t\tproof,\n\t\t\t\theight: BigInt(hyperbridgeFinalized.height),\n\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t},\n\t\t\trequests: [\n\t\t\t\t{\n\t\t\t\t\tsource: request.source,\n\t\t\t\t\tdest: request.dest,\n\t\t\t\t\tfrom: request.from,\n\t\t\t\t\tto: request.to,\n\t\t\t\t\tnonce: request.nonce,\n\t\t\t\t\tbody: request.body,\n\t\t\t\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tevents.push({\n\t\t\tstatus: TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT,\n\t\t\tmetadata: {\n\t\t\t\tblockHash: hyperbridgeFinalized.blockHash,\n\t\t\t\tblockNumber: hyperbridgeFinalized.blockNumber,\n\t\t\t\ttransactionHash: hyperbridgeFinalized.transactionHash,\n\t\t\t\ttimestamp: hyperbridgeFinalized.timestamp,\n\t\t\t\tcalldata,\n\t\t\t},\n\t\t})\n\n\t\treturn addTimeoutEvents(request)\n\t}\n\n\t/**\n\t * Queries a request returns it alongside its statuses,\n\t * including any finalization events.\n\t * @param hash - Commitment hash\n\t * @returns Full request data with all inferred status events, including SOURCE_FINALIZED and HYPERBRIDGE_FINALIZED\n\t * @remarks Unlike queryRequest(), this method adds derived finalization status events by querying state machine updates\n\t */\n\tasync queryRequestWithStatus(hash: HexString): Promise<PostRequestWithStatus | undefined> {\n\t\tlet request = await this.queryPostRequest(hash)\n\n\t\tif (!request) return\n\t\trequest = await this.addRequestFinalityEvents(request)\n\t\trequest = await this.addTimeoutFinalityEvents(request)\n\n\t\t// ensure all statuses are sorted by weight\n\t\trequest.statuses = request.statuses.sort(\n\t\t\t(a, b) => COMBINED_STATUS_WEIGHTS[a.status] - COMBINED_STATUS_WEIGHTS[b.status],\n\t\t)\n\n\t\treturn request\n\t}\n\n\t/**\n\t * Queries a GET request and returns it alongside its statuses,\n\t * including any finalization events.\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns Full GET request data with all inferred status events, including SOURCE_FINALIZED and HYPERBRIDGE_FINALIZED\n\t * @remarks Unlike queryGetRequest(), this method adds derived finalization status events by querying state machine updates\n\t */\n\tasync queryGetRequestWithStatus(hash: HexString): Promise<GetRequestWithStatus | undefined> {\n\t\tlet request = await this.queryGetRequest(hash)\n\n\t\tif (!request) return\n\n\t\trequest = await this.addGetRequestFinalityEvents(request)\n\n\t\trequest.statuses = request.statuses.sort(\n\t\t\t(a, b) => COMBINED_STATUS_WEIGHTS[a.status] - COMBINED_STATUS_WEIGHTS[b.status],\n\t\t)\n\n\t\treturn request\n\t}\n\n\t/**\n\t * Enhances a GET request with finality events by querying state machine updates.\n\t *\n\t * This method augments a GET request object with additional inferred status events\n\t * that represent chain finality confirmations. It adds:\n\t * - SOURCE_FINALIZED: When the source chain has finalized the request\n\t * - HYPERBRIDGE_FINALIZED: When Hyperbridge has finalized the delivery confirmation and response is ready\n\t *\n\t * The method also generates appropriate calldata for submitting cross-chain proofs\n\t * when applicable.\n\t *\n\t * @param request - The GET request to enhance with finality events\n\t * @returns The request with finality events added\n\t * @private\n\t */\n\tprivate async addGetRequestFinalityEvents(request: GetRequestWithStatus): Promise<GetRequestWithStatus> {\n\t\tconst events: RequestStatusWithMetadata[] = []\n\n\t\tconst addFinalityEvents = (request: GetRequestWithStatus) => {\n\t\t\tthis.logger.trace(`Added ${events.length} \\`GetRequest\\` finality events`, events)\n\n\t\t\trequest.statuses = [...request.statuses, ...events]\n\t\t\treturn request\n\t\t}\n\n\t\tlet hyperbridgeDelivered: RequestStatusWithMetadata | undefined\n\n\t\tif (request.source === this.config.hyperbridge.stateMachineId) {\n\t\t\thyperbridgeDelivered = request.statuses[0]\n\t\t\treturn addFinalityEvents(request)\n\t\t} else {\n\t\t\tconst sourceFinality = await this.queryStateMachineUpdateByHeight({\n\t\t\t\tstatemachineId: request.source,\n\t\t\t\theight: request.statuses[0].metadata.blockNumber,\n\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t})\n\n\t\t\tif (!sourceFinality) return addFinalityEvents(request)\n\n\t\t\tevents.push({\n\t\t\t\tstatus: RequestStatus.SOURCE_FINALIZED,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblockHash: sourceFinality.blockHash,\n\t\t\t\t\tblockNumber: sourceFinality.height,\n\t\t\t\t\ttransactionHash: sourceFinality.transactionHash,\n\t\t\t\t\ttimestamp: sourceFinality.timestamp,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\thyperbridgeDelivered = request.statuses.find((item) => item.status === RequestStatus.HYPERBRIDGE_DELIVERED)\n\n\t\t\tif (!hyperbridgeDelivered) return addFinalityEvents(request)\n\t\t}\n\n\t\tconst hyperbridgeFinality = await this.queryStateMachineUpdateByHeight({\n\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\theight: hyperbridgeDelivered.metadata.blockNumber,\n\t\t\tchain: request.source,\n\t\t})\n\n\t\tif (!hyperbridgeFinality) return addFinalityEvents(request)\n\n\t\tconst sourceChain = await getChain(this.config.source)\n\t\tconst hyperbridge = await getChain({\n\t\t\t...this.config.hyperbridge,\n\t\t\thasher: \"Keccak\",\n\t\t})\n\n\t\ttry {\n\t\t\tconst response = await this.queryResponseByRequestId(request.commitment)\n\n\t\t\tif (!response) return addFinalityEvents(request)\n\n\t\t\tconst proof = await hyperbridge.queryProof(\n\t\t\t\t{ Responses: [response.commitment as HexString] },\n\t\t\t\trequest.source,\n\t\t\t\tBigInt(hyperbridgeFinality.height),\n\t\t\t)\n\n\t\t\tconst calldata = sourceChain.encode({\n\t\t\t\tkind: \"GetResponse\",\n\t\t\t\tproof: {\n\t\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t\t\tproof,\n\t\t\t\t\theight: BigInt(hyperbridgeFinality.height),\n\t\t\t\t},\n\t\t\t\tresponses: [\n\t\t\t\t\t{\n\t\t\t\t\t\tget: request,\n\t\t\t\t\t\tvalues: request.keys.map((key, index) => ({\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: (response.values[index] as HexString) || \"0x\",\n\t\t\t\t\t\t})),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tsigner: pad(\"0x\"),\n\t\t\t})\n\n\t\t\tevents.push({\n\t\t\t\tstatus: RequestStatus.HYPERBRIDGE_FINALIZED,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblockHash: hyperbridgeFinality.blockHash,\n\t\t\t\t\tblockNumber: hyperbridgeFinality.height,\n\t\t\t\t\ttransactionHash: hyperbridgeFinality.transactionHash,\n\t\t\t\t\ttimestamp: hyperbridgeFinality.timestamp,\n\t\t\t\t\tcalldata,\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tthis.logger.trace(\"Could not generate HYPERBRIDGE_FINALIZED event for GET request:\", error)\n\t\t}\n\n\t\treturn addFinalityEvents(request)\n\t}\n\n\t/**\n\t * Create a Stream of status updates for a post request.\n\t * Stream ends when either the request reaches the destination or times out.\n\t * If the stream yields TimeoutStatus.PENDING_TIMEOUT, use postRequestTimeoutStream() to begin timeout processing.\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t * @example\n\t *\n\t * let client = new IndexerClient(config)\n\t * let stream = client.postRequestStatusStream(hash)\n\t *\n\t * // you can use a for-await-of loop\n\t * for await (const status of stream) {\n\t * console.log(status)\n\t * }\n\t *\n\t * // you can also use a while loop\n\t * while (true) {\n\t * const status = await stream.next()\n\t * if (status.done) {\n\t * break\n\t * }\n\t * console.log(status.value)\n\t * }\n\t *\n\t */\n\tasync *postRequestStatusStream(hash: HexString): AsyncGenerator<RequestStatusWithMetadata, void> {\n\t\tconst controller = new AbortController()\n\t\tconst logger = this.logger.withTag(\"[postRequestStatusStream]\")\n\n\t\ttry {\n\t\t\tconst request = await this.waitOrAbort({\n\t\t\t\tsignal: controller.signal,\n\t\t\t\tpromise: () => this.queryPostRequest(hash),\n\t\t\t})\n\n\t\t\tlogger.trace(\"`Request` found\")\n\t\t\tconst chain = await getChain(this.config.dest)\n\t\t\tconst timeoutStream =\n\t\t\t\trequest.timeoutTimestamp > 0n ? this.timeoutStream(request.timeoutTimestamp, chain) : undefined\n\t\t\tconst statusStream = this.postRequestStatusStreamInternal(hash, controller.signal)\n\n\t\t\tlogger.trace(\"Listening for events\")\n\t\t\tconst combined = timeoutStream ? mergeRace(timeoutStream, statusStream) : statusStream\n\n\t\t\tlogger.trace(\"Listening for events\")\n\t\t\tlet item = await combined.next()\n\n\t\t\twhile (!item.done) {\n\t\t\t\tlogger.trace(`Yielding Event(${item.value.status})`)\n\n\t\t\t\tyield item.value\n\t\t\t\titem = await combined.next()\n\t\t\t}\n\n\t\t\tlogger.trace(\"Streaming complete\")\n\t\t} catch (error) {\n\t\t\tif (!AbortSignalInternal.isError(error)) {\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t\tcontroller.abort()\n\t\treturn\n\t}\n\n\t/*\n\t * Returns a generator that will yield true if the request is timed out\n\t * If the request does not have a timeout, it will never yield\n\t * @param request - Request to timeout\n\t */\n\tasync *timeoutStream(timeoutTimestamp: bigint, chain: IChain): AsyncGenerator<RequestStatusWithMetadata, void> {\n\t\tconst logger = this.logger.withTag(\"[timeoutStream()]\")\n\n\t\tif (timeoutTimestamp > 0n) {\n\t\t\tlet timestamp = await chain.timestamp()\n\n\t\t\twhile (timestamp < timeoutTimestamp) {\n\t\t\t\tlogger.trace(\"Comparing timeout timestamps\", { control: timeoutTimestamp, latest: timestamp })\n\n\t\t\t\tconst diff = BigInt(timeoutTimestamp) - BigInt(timestamp)\n\t\t\t\tawait this.sleep_for(Number(diff))\n\t\t\t\ttimestamp = await chain.timestamp()\n\t\t\t}\n\n\t\t\tyield {\n\t\t\t\tstatus: TimeoutStatus.PENDING_TIMEOUT,\n\t\t\t\tmetadata: { blockHash: \"0x\", blockNumber: 0, transactionHash: \"0x\" },\n\t\t\t}\n\n\t\t\treturn\n\t\t}\n\t}\n\n\t/**\n\t * Create a Stream of status updates\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t */\n\tprivate async *postRequestStatusStreamInternal(\n\t\thash: HexString,\n\t\tsignal: AbortSignal,\n\t): AsyncGenerator<RequestStatusWithMetadata, void> {\n\t\tlet request = await this.waitOrAbort({ signal, promise: () => this.queryPostRequest(hash) })\n\n\t\tlet status: RequestStatusKey =\n\t\t\trequest.source === this.config.hyperbridge.stateMachineId\n\t\t\t\t? RequestStatus.HYPERBRIDGE_DELIVERED\n\t\t\t\t: RequestStatus.SOURCE\n\n\t\tconst latestMetadata = request.statuses[request.statuses.length - 1]\n\n\t\tconst latest_request = maxBy(\n\t\t\t[status, latestMetadata.status as RequestStatusKey],\n\t\t\t(item) => REQUEST_STATUS_WEIGHTS[item],\n\t\t)\n\n\t\tif (!latest_request) return\n\n\t\t// start with the latest status\n\t\tstatus = latest_request\n\n\t\twhile (true) {\n\t\t\tswitch (status) {\n\t\t\t\t// request has been dispatched from source chain\n\t\t\t\tcase RequestStatus.SOURCE: {\n\t\t\t\t\tconst sourceUpdate = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\tthis.queryStateMachineUpdateByHeight({\n\t\t\t\t\t\t\t\tstatemachineId: request.source,\n\t\t\t\t\t\t\t\theight: request.statuses[0].metadata.blockNumber,\n\t\t\t\t\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.SOURCE_FINALIZED,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: sourceUpdate.blockHash,\n\t\t\t\t\t\t\tblockNumber: sourceUpdate.height,\n\t\t\t\t\t\t\ttransactionHash: sourceUpdate.transactionHash,\n\t\t\t\t\t\t\ttimestamp: sourceUpdate.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\n\t\t\t\t\tstatus = RequestStatus.SOURCE_FINALIZED\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// finality proofs for request has been verified on Hyperbridge\n\t\t\t\tcase RequestStatus.SOURCE_FINALIZED: {\n\t\t\t\t\t// wait for the request to be delivered on Hyperbridge\n\t\t\t\t\trequest = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () => this.queryPostRequest(hash),\n\t\t\t\t\t\tpredicate: (request) => !request || request.statuses.length < 2,\n\t\t\t\t\t})\n\n\t\t\t\t\tstatus =\n\t\t\t\t\t\trequest.dest === this.config.hyperbridge.stateMachineId\n\t\t\t\t\t\t\t? RequestStatus.DESTINATION\n\t\t\t\t\t\t\t: RequestStatus.HYPERBRIDGE_DELIVERED\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: request.statuses[1].metadata.blockHash,\n\t\t\t\t\t\t\tblockNumber: request.statuses[1].metadata.blockNumber,\n\t\t\t\t\t\t\ttransactionHash: request.statuses[1].metadata.transactionHash,\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\ttimestamp: request.statuses[1].metadata.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// the request has been verified and aggregated on Hyperbridge\n\t\t\t\tcase RequestStatus.HYPERBRIDGE_DELIVERED: {\n\t\t\t\t\t// Get the latest state machine update for hyperbridge on the destination chain\n\t\t\t\t\tconst hyperbridgeFinalized = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () => {\n\t\t\t\t\t\t\tconst stateMachineId = this.config.hyperbridge.stateMachineId\n\t\t\t\t\t\t\tconst index = request.source === stateMachineId ? 0 : 1\n\n\t\t\t\t\t\t\treturn this.queryStateMachineUpdateByHeight({\n\t\t\t\t\t\t\t\tstatemachineId: stateMachineId,\n\t\t\t\t\t\t\t\theight: request.statuses[index].metadata.blockNumber,\n\t\t\t\t\t\t\t\tchain: request.dest,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tconst destChain = await getChain(this.config.dest)\n\t\t\t\t\tconst hyperbridge = await getChain({\n\t\t\t\t\t\t...this.config.hyperbridge,\n\t\t\t\t\t\thasher: \"Keccak\",\n\t\t\t\t\t})\n\n\t\t\t\t\tconst safeFetchProof = async () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst proof_hex = await hyperbridge.queryProof(\n\t\t\t\t\t\t\t\t{ Requests: [postRequestCommitment(request).commitment] },\n\t\t\t\t\t\t\t\trequest.dest,\n\t\t\t\t\t\t\t\tBigInt(hyperbridgeFinalized.height),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn { data: proof_hex, error: null }\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\treturn { error: err as unknown, data: null }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst proof = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\tthis.withRetry(safeFetchProof, {\n\t\t\t\t\t\t\t\tbackoffMs: 2000,\n\t\t\t\t\t\t\t\tmaxRetries: 6, // <-- should fail after 2mins\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\n\t\t\t\t\tif (proof.data === null) {\n\t\t\t\t\t\tthis.logger.error(\"Failed to fetch proof:\", proof.error)\n\n\t\t\t\t\t\tthrow proof.error\n\t\t\t\t\t}\n\n\t\t\t\t\tconst calldata = destChain.encode({\n\t\t\t\t\t\tkind: \"PostRequest\",\n\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t\t\t\t\tproof: proof.data,\n\t\t\t\t\t\t\theight: BigInt(hyperbridgeFinalized.height),\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequests: [request],\n\t\t\t\t\t\tsigner: pad(\"0x\"),\n\t\t\t\t\t})\n\n\t\t\t\t\tconst { stateId } = parseStateMachineId(this.config.hyperbridge.stateMachineId)\n\n\t\t\t\t\tawait waitForChallengePeriod(destChain, {\n\t\t\t\t\t\theight: BigInt(hyperbridgeFinalized.height),\n\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\tstateId,\n\t\t\t\t\t\t\tconsensusStateId: toHex(this.config.hyperbridge.consensusStateId),\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.HYPERBRIDGE_FINALIZED,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: hyperbridgeFinalized.blockHash,\n\t\t\t\t\t\t\tblockNumber: hyperbridgeFinalized.height,\n\t\t\t\t\t\t\ttransactionHash: hyperbridgeFinalized.transactionHash,\n\t\t\t\t\t\t\ttimestamp: hyperbridgeFinalized.timestamp,\n\t\t\t\t\t\t\tcalldata,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = RequestStatus.HYPERBRIDGE_FINALIZED\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// request has been finalized by hyperbridge\n\t\t\t\tcase RequestStatus.HYPERBRIDGE_FINALIZED: {\n\t\t\t\t\t// wait for the request to be delivered to the destination\n\t\t\t\t\trequest = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () => this.queryPostRequest(hash),\n\t\t\t\t\t\tpredicate: (request) =>\n\t\t\t\t\t\t\t!request || !request.statuses.find((s) => s.status === RequestStatus.DESTINATION),\n\t\t\t\t\t})\n\n\t\t\t\t\tconst index = request.source === this.config.hyperbridge.stateMachineId ? 1 : 2\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.DESTINATION,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: request.statuses[index].metadata.blockHash,\n\t\t\t\t\t\t\tblockNumber: request.statuses[index].metadata.blockNumber,\n\t\t\t\t\t\t\ttransactionHash: request.statuses[index].metadata.transactionHash,\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\ttimestamp: request.statuses[index].metadata.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = RequestStatus.DESTINATION\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase RequestStatus.DESTINATION:\n\t\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate sleep_for(duration: number): Promise<void> {\n\t\tthis.logger.trace(`Sleeping for ${duration}ms`)\n\t\treturn sleep(duration)\n\t}\n\n\tprivate sleep_for_interval(): Promise<void> {\n\t\treturn this.sleep_for(this.config.pollInterval)\n\t}\n\n\t/**\n\t * Create a Stream of status updates for a get request.\n\t * Stream ends when either the request reaches the destination or times out.\n\t * If the stream yields TimeoutStatus.PENDING_TIMEOUT, use postRequestTimeoutStream() to begin timeout processing.\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t * @example\n\t *\n\t * let client = new IndexerClient(config)\n\t * let stream = client.getRequestStatusStream(hash)\n\t *\n\t * // you can use a for-await-of loop\n\t * for await (const status of stream) {\n\t * console.log(status)\n\t * }\n\t *\n\t * // you can also use a while loop\n\t * while (true) {\n\t * const status = await stream.next()\n\t * if (status.done) {\n\t * break\n\t * }\n\t * console.log(status.value)\n\t * }\n\t *\n\t */\n\tasync *getRequestStatusStream(hash: HexString): AsyncGenerator<RequestStatusWithMetadata, void> {\n\t\tconst controller = new AbortController()\n\t\t// wait for request to be created\n\t\ttry {\n\t\t\tconst request = await this.waitOrAbort({\n\t\t\t\tsignal: controller.signal,\n\t\t\t\tpromise: () => this.queryGetRequest(hash),\n\t\t\t})\n\n\t\t\tconst chain = await getChain(this.config.dest)\n\t\t\tconst timeoutStream =\n\t\t\t\trequest.timeoutTimestamp > 0n ? this.timeoutStream(request.timeoutTimestamp, chain) : undefined\n\t\t\tconst statusStream = this.getRequestStatusStreamInternal(hash, controller.signal)\n\t\t\tconst combined = timeoutStream ? mergeRace(timeoutStream, statusStream) : statusStream\n\n\t\t\tlet item = await combined.next()\n\t\t\twhile (!item.done) {\n\t\t\t\tyield item.value\n\t\t\t\titem = await combined.next()\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (!AbortSignalInternal.isError(error)) {\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t\tcontroller.abort()\n\t\treturn\n\t}\n\n\t/**\n\t * Create a Stream of status updates\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t */\n\tprivate async *getRequestStatusStreamInternal(\n\t\thash: HexString,\n\t\tsignal: AbortSignal,\n\t): AsyncGenerator<RequestStatusWithMetadata, void> {\n\t\tlet request = await this.waitOrAbort({ signal, promise: () => this.queryGetRequest(hash) })\n\n\t\tlet status: RequestStatusKey | undefined =\n\t\t\trequest.source === this.config.hyperbridge.stateMachineId\n\t\t\t\t? RequestStatus.HYPERBRIDGE_DELIVERED\n\t\t\t\t: RequestStatus.SOURCE\n\n\t\tconst latestMetadata = request.statuses[request.statuses.length - 1]\n\n\t\t// start with the latest status\n\t\tstatus = maxBy([status, latestMetadata.status as RequestStatusKey], (item) => REQUEST_STATUS_WEIGHTS[item])\n\n\t\tif (!status) return\n\n\t\twhile (true) {\n\t\t\tswitch (status) {\n\t\t\t\t// request has been dispatched from source chain\n\t\t\t\tcase RequestStatus.SOURCE: {\n\t\t\t\t\tconst sourceUpdate = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\tthis.queryStateMachineUpdateByHeight({\n\t\t\t\t\t\t\t\tstatemachineId: request.source,\n\t\t\t\t\t\t\t\theight: request.statuses[0].metadata.blockNumber,\n\t\t\t\t\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.SOURCE_FINALIZED,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: sourceUpdate.blockHash,\n\t\t\t\t\t\t\tblockNumber: sourceUpdate.height,\n\t\t\t\t\t\t\ttransactionHash: sourceUpdate.transactionHash,\n\t\t\t\t\t\t\ttimestamp: sourceUpdate.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = RequestStatus.SOURCE_FINALIZED\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// finality proofs for request has been verified on Hyperbridge\n\t\t\t\tcase RequestStatus.SOURCE_FINALIZED: {\n\t\t\t\t\t// wait for the request to be delivered on Hyperbridge\n\t\t\t\t\trequest = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () => this.queryGetRequest(hash),\n\t\t\t\t\t\tpredicate: (request) => !request || request.statuses.length < 2,\n\t\t\t\t\t})\n\n\t\t\t\t\tstatus =\n\t\t\t\t\t\trequest.source === this.config.hyperbridge.stateMachineId\n\t\t\t\t\t\t\t? RequestStatus.DESTINATION\n\t\t\t\t\t\t\t: RequestStatus.HYPERBRIDGE_DELIVERED\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: request.statuses[1].metadata.blockHash,\n\t\t\t\t\t\t\tblockNumber: request.statuses[1].metadata.blockNumber,\n\t\t\t\t\t\t\ttransactionHash: request.statuses[1].metadata.transactionHash,\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\ttimestamp: request.statuses[1].metadata.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// the request has been verified and aggregated on Hyperbridge\n\t\t\t\tcase RequestStatus.HYPERBRIDGE_DELIVERED: {\n\t\t\t\t\t// If Hyperbridge was the source, the request is already complete\n\t\t\t\t\tif (request.source === this.config.hyperbridge.stateMachineId) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t// Get the latest state machine update for hyperbridge on the destination chain\n\t\t\t\t\tconst hyperbridgeFinalized = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\tthis.queryStateMachineUpdateByHeight({\n\t\t\t\t\t\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t\theight: request.statuses[1].metadata.blockNumber,\n\t\t\t\t\t\t\t\tchain: request.source,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\n\t\t\t\t\tconst sourceChain = await getChain(this.config.source)\n\t\t\t\t\tconst hyperbridge = await getChain({\n\t\t\t\t\t\t...this.config.hyperbridge,\n\t\t\t\t\t\thasher: \"Keccak\",\n\t\t\t\t\t})\n\n\t\t\t\t\tconst response = await this.queryResponseByRequestId(hash)\n\n\t\t\t\t\tconst proof = await hyperbridge.queryProof(\n\t\t\t\t\t\t{ Responses: [response?.commitment as HexString] },\n\t\t\t\t\t\trequest.source,\n\t\t\t\t\t\tBigInt(hyperbridgeFinalized.height),\n\t\t\t\t\t)\n\n\t\t\t\t\tconst calldata = sourceChain.encode({\n\t\t\t\t\t\tkind: \"GetResponse\",\n\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\theight: BigInt(hyperbridgeFinalized.height),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tresponses: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tget: request,\n\t\t\t\t\t\t\t\tvalues: request.keys.map((key, index) => ({\n\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\tvalue: (response?.values[index] as HexString) || \"0x\",\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\tsigner: pad(\"0x\"),\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.HYPERBRIDGE_FINALIZED,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: hyperbridgeFinalized.blockHash,\n\t\t\t\t\t\t\tblockNumber: hyperbridgeFinalized.height,\n\t\t\t\t\t\t\ttransactionHash: hyperbridgeFinalized.transactionHash,\n\t\t\t\t\t\t\ttimestamp: hyperbridgeFinalized.timestamp,\n\t\t\t\t\t\t\tcalldata,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = RequestStatus.HYPERBRIDGE_FINALIZED\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// request has been finalized by hyperbridge\n\t\t\t\tcase RequestStatus.HYPERBRIDGE_FINALIZED: {\n\t\t\t\t\t// If Hyperbridge was the source, the request is already complete\n\t\t\t\t\tif (request.source === this.config.hyperbridge.stateMachineId) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\t// wait for the request to be delivered to the destination\n\t\t\t\t\trequest = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () => this.queryGetRequest(hash),\n\t\t\t\t\t\tpredicate: (request) =>\n\t\t\t\t\t\t\t!request || !request.statuses.find((s) => s.status === RequestStatus.DESTINATION),\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: RequestStatus.DESTINATION,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: request.statuses[2].metadata.blockHash,\n\t\t\t\t\t\t\tblockNumber: request.statuses[2].metadata.blockNumber,\n\t\t\t\t\t\t\ttransactionHash: request.statuses[2].metadata.transactionHash,\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\ttimestamp: request.statuses[2].metadata.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = RequestStatus.DESTINATION\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase RequestStatus.DESTINATION:\n\t\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Create a Stream of status updates for a timed out post request.\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t * @example\n\t *\n\t * let client = new IndexerClient(config)\n\t * let stream = client.postRequestTimeoutStream(hash)\n\t *\n\t * // you can use a for-await-of loop\n\t * for await (const status of stream) {\n\t * console.log(status)\n\t * }\n\t *\n\t * // you can also use a while loop\n\t * while (true) {\n\t * const status = await stream.next()\n\t * if (status.done) {\n\t * break\n\t * }\n\t * console.log(status.value)\n\t * }\n\t */\n\tasync *postRequestTimeoutStream(hash: HexString): AsyncGenerator<PostRequestTimeoutStatus, void> {\n\t\tconst controller = new AbortController()\n\t\tconst logger = this.logger.withTag(\"[postRequestTimeoutStream]\")\n\n\t\ttry {\n\t\t\tconst request = await this.queryPostRequest(hash)\n\t\t\tif (!request) throw new Error(\"Request not found\")\n\n\t\t\tlogger.trace(\"`Request` found\")\n\t\t\tconst timeoutStream = this.postRequestTimeoutStreamInternal(hash, controller.signal)\n\n\t\t\tlogger.trace(\"Listening for timeout events\")\n\t\t\tlet item = await timeoutStream.next()\n\t\t\twhile (!item.done) {\n\t\t\t\tlogger.trace(`Yielding Timeout Event(${item.value.status})`)\n\n\t\t\t\tyield item.value\n\t\t\t\titem = await timeoutStream.next()\n\t\t\t}\n\n\t\t\tlogger.trace(\"Streaming complete\")\n\t\t} catch (error) {\n\t\t\tif (!AbortSignalInternal.isError(error)) {\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t\tcontroller.abort()\n\t\treturn\n\t}\n\n\t/**\n\t * Create a Stream of status updates for a timed out post request.\n\t * @param hash - Can be commitment, hyperbridge tx hash, source tx hash, destination tx hash, or timeout tx hash\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t */\n\tasync *postRequestTimeoutStreamInternal(\n\t\thash: HexString,\n\t\tsignal: AbortSignal,\n\t): AsyncGenerator<PostRequestTimeoutStatus, void> {\n\t\tconst request = await this.waitOrAbort({\n\t\t\tsignal,\n\t\t\tpromise: () => this.queryPostRequest(hash),\n\t\t})\n\n\t\tconst destChain = await getChain(this.config.dest)\n\n\t\t// if the destination is hyperbridge, then just wait for hyperbridge finality\n\t\tlet status: TimeoutStatusKey =\n\t\t\trequest.dest === this.config.hyperbridge.stateMachineId\n\t\t\t\t? TimeoutStatus.HYPERBRIDGE_TIMED_OUT\n\t\t\t\t: TimeoutStatus.PENDING_TIMEOUT\n\n\t\tconst commitment = postRequestCommitment(request).commitment\n\t\tconst hyperbridge = (await getChain({\n\t\t\t...this.config.hyperbridge,\n\t\t\thasher: \"Keccak\",\n\t\t})) as unknown as SubstrateChain\n\n\t\tconst latest = request.statuses[request.statuses.length - 1]\n\t\tconst latest_request = maxBy(\n\t\t\t[status, latest.status as TimeoutStatusKey],\n\t\t\t(item) => TIMEOUT_STATUS_WEIGHTS[item],\n\t\t)\n\n\t\tif (!latest_request) {\n\t\t\treturn\n\t\t}\n\n\t\t// we're always interested in the latest status\n\t\tstatus = latest_request\n\n\t\twhile (true) {\n\t\t\tswitch (status) {\n\t\t\t\tcase TimeoutStatus.PENDING_TIMEOUT: {\n\t\t\t\t\tconst receipt = await hyperbridge.queryRequestReceipt(commitment)\n\t\t\t\t\tif (!receipt && request.source !== this.config.hyperbridge.stateMachineId) {\n\t\t\t\t\t\tstatus = TimeoutStatus.HYPERBRIDGE_TIMED_OUT\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\n\t\t\t\t\tconst update = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\tthis.queryStateMachineUpdateByTimestamp({\n\t\t\t\t\t\t\t\tstatemachineId: request.dest,\n\t\t\t\t\t\t\t\tcommitmentTimestamp: request.timeoutTimestamp,\n\t\t\t\t\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash: update.blockHash,\n\t\t\t\t\t\t\tblockNumber: update.height,\n\t\t\t\t\t\t\ttransactionHash: update.transactionHash,\n\t\t\t\t\t\t\ttimestamp: update.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT: {\n\t\t\t\t\tif (request.source !== this.config.hyperbridge.stateMachineId) {\n\t\t\t\t\t\tconst receipt = await hyperbridge.queryRequestReceipt(commitment)\n\t\t\t\t\t\tif (!receipt) {\n\t\t\t\t\t\t\tstatus = TimeoutStatus.HYPERBRIDGE_TIMED_OUT\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst update = (await this.queryStateMachineUpdateByTimestamp({\n\t\t\t\t\t\tstatemachineId: request.dest,\n\t\t\t\t\t\tcommitmentTimestamp: request.timeoutTimestamp,\n\t\t\t\t\t\tchain: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t}))!\n\n\t\t\t\t\tconst proof = await destChain.queryStateProof(BigInt(update.height), [\n\t\t\t\t\t\tdestChain.requestReceiptKey(commitment),\n\t\t\t\t\t])\n\n\t\t\t\t\tconst { stateId } = parseStateMachineId(request.dest)\n\n\t\t\t\t\tawait waitForChallengePeriod(hyperbridge, {\n\t\t\t\t\t\theight: BigInt(update.height),\n\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\tstateId,\n\t\t\t\t\t\t\tconsensusStateId: toHex(this.config.dest.consensusStateId),\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tconst { blockHash, transactionHash, blockNumber, timestamp } = await hyperbridge.submitUnsigned({\n\t\t\t\t\t\tkind: \"TimeoutPostRequest\",\n\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\theight: BigInt(update.height),\n\t\t\t\t\t\t\tstateMachine: request.dest,\n\t\t\t\t\t\t\tconsensusStateId: this.config.dest.consensusStateId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequests: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsource: request.source,\n\t\t\t\t\t\t\t\tdest: request.dest,\n\t\t\t\t\t\t\t\tfrom: request.from,\n\t\t\t\t\t\t\t\tto: request.to,\n\t\t\t\t\t\t\t\tnonce: request.nonce,\n\t\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\n\t\t\t\t\tstatus =\n\t\t\t\t\t\trequest.source === this.config.hyperbridge.stateMachineId\n\t\t\t\t\t\t\t? TimeoutStatus.TIMED_OUT\n\t\t\t\t\t\t\t: TimeoutStatus.HYPERBRIDGE_TIMED_OUT\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tblockHash,\n\t\t\t\t\t\t\ttransactionHash,\n\t\t\t\t\t\t\tblockNumber,\n\t\t\t\t\t\t\ttimestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase TimeoutStatus.HYPERBRIDGE_TIMED_OUT: {\n\t\t\t\t\tconst hasDelivered = request.statuses.some(\n\t\t\t\t\t\t(item) => item.status === RequestStatus.HYPERBRIDGE_DELIVERED,\n\t\t\t\t\t)\n\t\t\t\t\tlet update: StateMachineUpdate | undefined\n\t\t\t\t\tif (!hasDelivered) {\n\t\t\t\t\t\t// if request was never delivered to Hyperbridge\n\t\t\t\t\t\t// then query for any state machine update > requestTimestamp\n\t\t\t\t\t\tupdate = await this.waitOrAbort({\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\tpromise: () =>\n\t\t\t\t\t\t\t\tthis.queryStateMachineUpdateByTimestamp({\n\t\t\t\t\t\t\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t\t\tcommitmentTimestamp: request.timeoutTimestamp,\n\t\t\t\t\t\t\t\t\tchain: request.source,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst timeout = await this.waitOrAbort({\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\tpromise: async () => {\n\t\t\t\t\t\t\t\tconst req = await this.queryPostRequest(hash)\n\t\t\t\t\t\t\t\treturn req?.statuses\n\t\t\t\t\t\t\t\t\t.sort(\n\t\t\t\t\t\t\t\t\t\t(a, b) => COMBINED_STATUS_WEIGHTS[a.status] - COMBINED_STATUS_WEIGHTS[b.status],\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.pop()\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpredicate: (timeout) => !timeout || timeout?.status !== TimeoutStatus.HYPERBRIDGE_TIMED_OUT,\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\tupdate = await this.waitOrAbort({\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\tpromise: async () =>\n\t\t\t\t\t\t\t\tthis.queryStateMachineUpdateByHeight({\n\t\t\t\t\t\t\t\t\tstatemachineId: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\t\t\theight: timeout.metadata.blockNumber,\n\t\t\t\t\t\t\t\t\tchain: request.source,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\n\t\t\t\t\tconst proof = await hyperbridge.queryStateProof(BigInt(update.height), [\n\t\t\t\t\t\thyperbridge.requestReceiptKey(commitment),\n\t\t\t\t\t])\n\n\t\t\t\t\tconst sourceChain = await getChain(this.config.source)\n\t\t\t\t\tconst calldata = sourceChain.encode({\n\t\t\t\t\t\tkind: \"TimeoutPostRequest\",\n\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\theight: BigInt(update.height),\n\t\t\t\t\t\t\tstateMachine: this.config.hyperbridge.stateMachineId,\n\t\t\t\t\t\t\tconsensusStateId: this.config.hyperbridge.consensusStateId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequests: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsource: request.source,\n\t\t\t\t\t\t\t\tdest: request.dest,\n\t\t\t\t\t\t\t\tfrom: request.from,\n\t\t\t\t\t\t\t\tto: request.to,\n\t\t\t\t\t\t\t\tnonce: request.nonce,\n\t\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\n\t\t\t\t\tconst { stateId } = parseStateMachineId(this.config.hyperbridge.stateMachineId)\n\n\t\t\t\t\tawait waitForChallengePeriod(sourceChain, {\n\t\t\t\t\t\theight: BigInt(update.height),\n\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\tstateId,\n\t\t\t\t\t\t\tconsensusStateId: toHex(this.config.hyperbridge.consensusStateId),\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\ttransactionHash: update.transactionHash,\n\t\t\t\t\t\t\tblockNumber: update.blockNumber,\n\t\t\t\t\t\t\tblockHash: update.blockHash,\n\t\t\t\t\t\t\ttimestamp: update.timestamp,\n\t\t\t\t\t\t\tcalldata,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT: {\n\t\t\t\t\t// wait for the request to be timed out on the source\n\t\t\t\t\tconst delivered = await this.waitOrAbort({\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tpromise: async () => {\n\t\t\t\t\t\t\tconst req = await this.queryPostRequest(hash)\n\t\t\t\t\t\t\treturn req?.statuses.find((s) => s.status === RequestStatus.TIMED_OUT)\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\tyield {\n\t\t\t\t\t\tstatus: TimeoutStatus.TIMED_OUT,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\ttransactionHash: delivered.metadata.transactionHash,\n\t\t\t\t\t\t\tblockNumber: delivered.metadata.blockNumber,\n\t\t\t\t\t\t\tblockHash: delivered.metadata.blockHash,\n\t\t\t\t\t\t\ttimestamp: delivered.metadata.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tstatus = TimeoutStatus.TIMED_OUT\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcase TimeoutStatus.TIMED_OUT:\n\t\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Executes an async operation with exponential backoff retry\n\t * @param operation - Async function to execute\n\t * @param retryConfig - Optional retry configuration\n\t * @returns Result of the operation\n\t * @throws Last encountered error after all retries are exhausted\n\t *\n\t * @example\n\t * const result = await this.withRetry(() => this.queryStatus(hash));\n\t */\n\tprivate async withRetry<T>(operation: () => Promise<T>, retryConfig: Partial<RetryConfig> = {}): Promise<T> {\n\t\treturn retryPromise(operation, {\n\t\t\t...this.defaultRetryConfig,\n\t\t\t...retryConfig,\n\t\t})\n\t}\n\n\t/**\n\t * Query for an order by its commitment hash\n\t * @param commitment - The commitment hash of the order\n\t * @returns The order with its status if found, undefined otherwise\n\t */\n\tasync queryOrder(commitment: HexString): Promise<OrderWithStatus | undefined> {\n\t\treturn _queryOrderInternal({\n\t\t\tcommitmentHash: commitment,\n\t\t\tqueryClient: this.client,\n\t\t\tlogger: this.logger,\n\t\t})\n\t}\n\n\t/**\n\t * Create a Stream of status updates for an order.\n\t * Stream ends when the order reaches a terminal state (FILLED, REDEEMED, or REFUNDED).\n\t * @param commitment - The commitment hash of the order\n\t * @returns AsyncGenerator that emits status updates until a terminal state is reached\n\t * @example\n\t *\n\t * let client = new IndexerClient(config)\n\t * let stream = client.orderStatusStream(commitment)\n\t *\n\t * // you can use a for-await-of loop\n\t * for await (const status of stream) {\n\t * console.log(status)\n\t * }\n\t *\n\t * // you can also use a while loop\n\t * while (true) {\n\t * const status = await stream.next()\n\t * if (status.done) {\n\t * break\n\t * }\n\t * console.log(status.value)\n\t * }\n\t */\n\tasync *orderStatusStream(commitment: HexString): AsyncGenerator<\n\t\t{\n\t\t\tstatus: OrderStatus\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp: bigint\n\t\t\t\tfiller?: string\n\t\t\t}\n\t\t},\n\t\tvoid\n\t> {\n\t\tconst logger = this.logger.withTag(\"[orderStatusStream]\")\n\n\t\tlet order: OrderWithStatus | undefined\n\n\t\twhile (!order) {\n\t\t\tawait this.sleep_for_interval()\n\t\t\torder = await _queryOrderInternal({\n\t\t\t\tcommitmentHash: commitment,\n\t\t\t\tqueryClient: this.client,\n\t\t\t\tlogger: this.logger,\n\t\t\t})\n\t\t}\n\n\t\tlogger.trace(\"`Order` found\")\n\t\t// Yield initial status\n\t\tconst latestStatus = order.statuses[order.statuses.length - 1]\n\t\tyield {\n\t\t\tstatus: latestStatus.status,\n\t\t\tmetadata: latestStatus.metadata,\n\t\t}\n\n\t\t// If we're already in a terminal state, end the stream\n\t\tif ([OrderStatus.FILLED, OrderStatus.REDEEMED, OrderStatus.REFUNDED].includes(latestStatus.status)) {\n\t\t\treturn\n\t\t}\n\n\t\twhile (true) {\n\t\t\tawait this.sleep_for_interval()\n\t\t\tconst updatedOrder = await _queryOrderInternal({\n\t\t\t\tcommitmentHash: commitment,\n\t\t\t\tqueryClient: this.client,\n\t\t\t\tlogger: this.logger,\n\t\t\t})\n\n\t\t\tif (!updatedOrder) continue\n\n\t\t\tconst newLatestStatus = updatedOrder.statuses[updatedOrder.statuses.length - 1]\n\n\t\t\tif (newLatestStatus.status !== latestStatus.status) {\n\t\t\t\tyield {\n\t\t\t\t\tstatus: newLatestStatus.status,\n\t\t\t\t\tmetadata: newLatestStatus.metadata,\n\t\t\t\t}\n\n\t\t\t\tif ([OrderStatus.FILLED, OrderStatus.REDEEMED, OrderStatus.REFUNDED].includes(newLatestStatus.status)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tasync *tokenGatewayAssetTeleportedStatusStream(commitment: HexString): AsyncGenerator<\n\t\t{\n\t\t\tstatus: TeleportStatus\n\t\t\tmetadata: {\n\t\t\t\tblockHash: string\n\t\t\t\tblockNumber: number\n\t\t\t\ttransactionHash: string\n\t\t\t\ttimestamp: bigint\n\t\t\t}\n\t\t},\n\t\tvoid\n\t> {\n\t\tconst logger = this.logger.withTag(\"[tokenGatewayAssetTeleportedStatusStream]\")\n\t\tlogger.trace(`Starting stream for token gateway asset teleported with commitment ${commitment}`)\n\n\t\tlet lastStatus: TeleportStatus | undefined\n\t\tlet lastBlockNumber: number | undefined\n\n\t\twhile (true) {\n\t\t\ttry {\n\t\t\t\tconst teleport = await this.queryTokenGatewayAssetTeleported(commitment)\n\t\t\t\tif (!teleport) {\n\t\t\t\t\tlogger.trace(\"No teleport found, waiting...\")\n\t\t\t\t\tawait this.sleep_for_interval()\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst statuses = teleport.statuses\n\t\t\t\tif (statuses.length === 0) {\n\t\t\t\t\tlogger.trace(\"No statuses found, waiting...\")\n\t\t\t\t\tawait this.sleep_for_interval()\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Find the latest status that we haven't seen yet\n\t\t\t\tconst latestStatus = statuses[statuses.length - 1]\n\t\t\t\tif (lastStatus === latestStatus.status && lastBlockNumber === latestStatus.metadata.blockNumber) {\n\t\t\t\t\tlogger.trace(\"No new status, waiting...\")\n\t\t\t\t\tawait this.sleep_for_interval()\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tlastStatus = latestStatus.status\n\t\t\t\tlastBlockNumber = latestStatus.metadata.blockNumber\n\n\t\t\t\tyield latestStatus\n\n\t\t\t\t// If we've reached a final status, end the stream\n\t\t\t\tif (\n\t\t\t\t\tlatestStatus.status === TeleportStatus.RECEIVED ||\n\t\t\t\t\tlatestStatus.status === TeleportStatus.REFUNDED\n\t\t\t\t) {\n\t\t\t\t\tlogger.trace(\"Final status reached, ending stream\")\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tawait this.sleep_for_interval()\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(\"Error in token gateway asset teleported status stream:\", error)\n\t\t\t\tawait this.sleep_for_interval()\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async queryTokenGatewayAssetTeleported(\n\t\tcommitment: HexString,\n\t): Promise<TokenGatewayAssetTeleportedWithStatus | undefined> {\n\t\treturn _queryTokenGatewayAssetTeleportedInternal({\n\t\t\tcommitmentHash: commitment,\n\t\t\tqueryClient: this.client,\n\t\t\tlogger: this.logger,\n\t\t})\n\t}\n\n\t/**\n\t * Aggregate transactions with commitment.\n\t * @param commitment\n\t * @returns an object containing the transaction hash, block hash, block number, timestamp.\n\t */\n\tasync aggregateTransactionWithCommitment(\n\t\tcommitment: HexString,\n\t): Promise<Awaited<ReturnType<SubstrateChain[\"submitUnsigned\"]>>> {\n\t\tconst logger = this.logger.withTag(\"aggregateTransactionWithCommitment\")\n\n\t\tconst { stateMachineId, consensusStateId } = this.config.source\n\n\t\t// check if request receipt exists on source chain\n\t\tconst sourceChain = await getChain(this.config.source)\n\t\tconst hyperbridge = (await getChain({\n\t\t\t...this.config.hyperbridge,\n\t\t\thasher: \"Keccak\",\n\t\t})) as SubstrateChain\n\n\t\tlogger.trace(\"Querying post request with commitment hash\")\n\t\tconst request = await this.queryPostRequest(commitment)\n\t\tif (!request) throw new Error(\"Request not found\")\n\n\t\tlogger.trace(\"Fetch latest stateMachineHeight\")\n\t\tconst latestStateMachineHeight = await hyperbridge.latestStateMachineHeight({\n\t\t\tstateId: parseStateMachineId(stateMachineId).stateId,\n\t\t\tconsensusStateId: consensusStateId as HexString,\n\t\t})\n\n\t\tlogger.trace(\"Query Request Proof from sourceChain\")\n\t\tconst proof = await sourceChain.queryProof(\n\t\t\t{ Requests: [commitment] },\n\t\t\tthis.config.hyperbridge.stateMachineId,\n\t\t\tlatestStateMachineHeight,\n\t\t)\n\n\t\tlogger.trace(\"Construct Extrinsic and Submit Unsigned\")\n\t\tconst calldata = await hyperbridge.submitUnsigned({\n\t\t\tkind: \"PostRequest\",\n\t\t\tproof: {\n\t\t\t\tstateMachine: this.config.source.stateMachineId,\n\t\t\t\tconsensusStateId: this.config.source.consensusStateId,\n\t\t\t\tproof,\n\t\t\t\theight: BigInt(latestStateMachineHeight),\n\t\t\t},\n\t\t\trequests: [\n\t\t\t\t{\n\t\t\t\t\tsource: request.source,\n\t\t\t\t\tdest: request.dest,\n\t\t\t\t\tfrom: request.from,\n\t\t\t\t\tto: request.to,\n\t\t\t\t\tnonce: request.nonce,\n\t\t\t\t\tbody: request.body,\n\t\t\t\t\ttimeoutTimestamp: request.timeoutTimestamp,\n\t\t\t\t},\n\t\t\t],\n\t\t\tsigner: pad(\"0x\"),\n\t\t})\n\n\t\treturn calldata\n\t}\n\n\tasync waitOrAbort<T>(params: {\n\t\tsignal: AbortSignal\n\t\tpromise: () => Promise<T>\n\t\tpredicate?: (a: T) => boolean\n\t}): Promise<NonNullable<T>> {\n\t\tconst { predicate = (e) => isNil(e) } = params\n\n\t\tconst _abort = () => {\n\t\t\tif (params.signal.aborted) {\n\t\t\t\tthrow new AbortSignalInternal(\"Terminated request in 'waitOrAbort'\")\n\t\t\t}\n\t\t}\n\n\t\twhile (true) {\n\t\t\t_abort()\n\t\t\tawait this.sleep_for_interval()\n\t\t\t_abort()\n\t\t\tconst _data = await params.promise()\n\t\t\t_abort()\n\n\t\t\tif (predicate(_data)) continue\n\t\t\treturn _data as NonNullable<T>\n\t\t}\n\t}\n}\n\ninterface PartialClientConfig extends Omit<ClientConfig, \"pollInterval\"> {\n\tpollInterval?: number\n}\n","const ABI = [\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"admin\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"constructor\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"Expired\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"Filled\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InsufficientNativeToken\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"InvalidInput\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"NotExpired\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"Unauthorized\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnauthorizedCall\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnexpectedCall\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"UnknownOrder\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"WrongChain\",\n\t\ttype: \"error\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"EscrowRefunded\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"EscrowReleased\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"stateMachineId\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"gateway\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"NewDeploymentAdded\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"filler\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"OrderFilled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"user\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"sourceChain\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"destChain\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"nonce\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"fees\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"beneficiary\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct PaymentInfo[]\",\n\t\t\t\tname: \"outputs\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"token\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\tname: \"inputs\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"callData\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"OrderPlaced\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tname: \"previous\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tname: \"current\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"ParamsUpdated\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"commitment\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"calculateCommitmentSlotHash\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"user\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"sourceChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"destChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"deadline\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fees\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PaymentInfo[]\",\n\t\t\t\t\t\tname: \"outputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\tname: \"inputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"callData\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct Order\",\n\t\t\t\tname: \"order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"relayerFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct CancelOptions\",\n\t\t\t\tname: \"options\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"cancelOrder\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"user\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"sourceChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"destChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"deadline\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fees\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PaymentInfo[]\",\n\t\t\t\t\t\tname: \"outputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\tname: \"inputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"callData\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct Order\",\n\t\t\t\tname: \"order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"relayerFee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct FillOptions\",\n\t\t\t\tname: \"options\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"fillOrder\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"host\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"stateMachineId\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"instance\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct IncomingPostRequest\",\n\t\t\t\tname: \"incoming\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onAccept\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\t\t\t\t\ttype: \"address\",\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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes[]\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tinternalType: \"struct GetRequest\",\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},\n\t\t\t\t\t\t\t{\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\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tinternalType: \"struct StorageValue[]\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct GetResponse\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct IncomingGetResponse\",\n\t\t\t\tname: \"incoming\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onGetResponse\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct GetRequest\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onGetTimeout\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"source\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"from\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onPostRequestTimeout\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\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\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"struct PostRequest\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\t\t\ttype: \"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\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostResponse\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"relayer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct IncomingPostResponse\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onPostResponse\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeoutTimestamp\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct PostResponse\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"onPostResponseTimeout\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"params\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"user\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"sourceChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"destChain\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"deadline\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"nonce\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fees\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PaymentInfo[]\",\n\t\t\t\t\t\tname: \"outputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct TokenInfo[]\",\n\t\t\t\t\t\tname: \"inputs\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"callData\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct Order\",\n\t\t\t\tname: \"order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"graffiti\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"placeOrder\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPost\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quote\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchGet\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quote\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPostResponse\",\n\t\t\t\tname: \"response\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quote\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"to\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"body\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPost\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteNative\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint64\",\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},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\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},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct PostRequest\",\n\t\t\t\t\t\tname: \"request\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"response\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"payer\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchPostResponse\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteNative\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"dest\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"height\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\tname: \"keys\",\n\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint64\",\n\t\t\t\t\t\tname: \"timeout\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct DispatchGet\",\n\t\t\t\tname: \"request\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteNative\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"host\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"dispatcher\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct Params\",\n\t\t\t\tname: \"p\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"setParams\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tstateMutability: \"payable\",\n\t\ttype: \"receive\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"_feeCollectorSetter\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"constructor\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token0\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token1\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"pair\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"PairCreated\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"feeCollector_\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"SetFeeCollector\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"feeCollectorSetter_\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"SetFeeCollectorSetter\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"migrator_\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"SetMigrator\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"allPairs\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"allPairsLength\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"createPair\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"pair\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"feeCollector\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"feeCollectorSetter\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"getPair\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"migrator\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"pairCodeHash\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"_feeCollector\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"setFeeCollector\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"_feeCollectorSetter\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"setFeeCollectorSetter\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"_migrator\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"setMigrator\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tinputs: [],\n\t\tname: \"WETH\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountADesired\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountBDesired\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountAMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountBMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"addLiquidity\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountA\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountB\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenDesired\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETHMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"addLiquidityETH\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountToken\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETH\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"factory\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"getAmountIn\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"getAmountOut\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t],\n\t\tname: \"getAmountsIn\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t],\n\t\tname: \"getAmountsOut\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountA\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveA\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"reserveB\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"quote\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountB\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"pure\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountAMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountBMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidity\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountA\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountB\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETHMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidityETH\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountToken\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETH\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETHMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidityETHSupportingFeeOnTransferTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETH\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETHMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"approveMax\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"v\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"r\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"s\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidityETHWithPermit\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountToken\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETH\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountTokenMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETHMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"approveMax\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"v\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"r\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"s\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountETH\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountAMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountBMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"approveMax\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"v\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"r\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"s\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"removeLiquidityWithPermit\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountA\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountB\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapETHForExactTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactETHForTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactETHForTokensSupportingFeeOnTransferTokens\",\n\t\toutputs: [],\n\t\tstateMutability: \"payable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactTokensForETH\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactTokensForETHSupportingFeeOnTransferTokens\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactTokensForTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOutMin\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountInMax\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapTokensForExactETH\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountInMax\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address[]\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"address[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"to\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"deadline\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"swapTokensForExactTokens\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[]\",\n\t\t\t\tname: \"amounts\",\n\t\t\t\ttype: \"uint256[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickSpacing\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"FeeAmountEnabled\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"oldOwner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"newOwner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"OwnerChanged\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token0\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"token1\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickSpacing\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"pool\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"PoolCreated\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t],\n\t\tname: \"createPool\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"pool\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickSpacing\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"enableFeeAmount\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t],\n\t\tname: \"feeAmountTickSpacing\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenA\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"tokenB\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"fee\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t],\n\t\tname: \"getPool\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"pool\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"owner\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"_owner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tname: \"setOwner\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"owner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"Burn\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"owner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tname: \"Collect\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"sender\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tname: \"CollectProtocol\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"sender\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"paid0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"paid1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"Flash\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationCardinalityNextOld\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationCardinalityNextNew\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t],\n\t\tname: \"IncreaseObservationCardinalityNext\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tick\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"Initialize\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"sender\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"owner\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"Mint\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol0Old\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol1Old\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol0New\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol1New\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t],\n\t\tname: \"SetFeeProtocol\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"sender\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: true,\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"int256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"int256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"int256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"int256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"liquidity\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tick\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"Swap\",\n\t\ttype: \"event\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tname: \"burn\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0Requested\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1Requested\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tname: \"collect\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0Requested\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1Requested\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tname: \"collectProtocol\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"factory\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"fee\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint24\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint24\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"feeGrowthGlobal0X128\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"feeGrowthGlobal1X128\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"data\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"flash\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationCardinalityNext\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t],\n\t\tname: \"increaseObservationCardinalityNext\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t],\n\t\tname: \"initialize\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"liquidity\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"maxLiquidityPerTick\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"amount\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"data\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"mint\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"index\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"observations\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint32\",\n\t\t\t\tname: \"blockTimestamp\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int56\",\n\t\t\t\tname: \"tickCumulative\",\n\t\t\t\ttype: \"int56\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"secondsPerLiquidityCumulativeX128\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"initialized\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint32[]\",\n\t\t\t\tname: \"secondsAgos\",\n\t\t\t\ttype: \"uint32[]\",\n\t\t\t},\n\t\t],\n\t\tname: \"observe\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int56[]\",\n\t\t\t\tname: \"tickCumulatives\",\n\t\t\t\ttype: \"int56[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160[]\",\n\t\t\t\tname: \"secondsPerLiquidityCumulativeX128s\",\n\t\t\t\ttype: \"uint160[]\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"key\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"positions\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"_liquidity\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"feeGrowthInside0LastX128\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"feeGrowthInside1LastX128\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"tokensOwed0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"tokensOwed1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"protocolFees\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"token0\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"token1\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol0\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol1\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t],\n\t\tname: \"setFeeProtocol\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"slot0\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tick\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationIndex\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationCardinality\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint16\",\n\t\t\t\tname: \"observationCardinalityNext\",\n\t\t\t\ttype: \"uint16\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint8\",\n\t\t\t\tname: \"feeProtocol\",\n\t\t\t\ttype: \"uint8\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"unlocked\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickLower\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tickUpper\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"snapshotCumulativesInside\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int56\",\n\t\t\t\tname: \"tickCumulativeInside\",\n\t\t\t\ttype: \"int56\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"secondsPerLiquidityInsideX128\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32\",\n\t\t\t\tname: \"secondsInside\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"recipient\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"zeroForOne\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int256\",\n\t\t\t\tname: \"amountSpecified\",\n\t\t\t\ttype: \"int256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceLimitX96\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"data\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t],\n\t\tname: \"swap\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int256\",\n\t\t\t\tname: \"amount0\",\n\t\t\t\ttype: \"int256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int256\",\n\t\t\t\tname: \"amount1\",\n\t\t\t\ttype: \"int256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int16\",\n\t\t\t\tname: \"wordPosition\",\n\t\t\t\ttype: \"int16\",\n\t\t\t},\n\t\t],\n\t\tname: \"tickBitmap\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"tickSpacing\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"int24\",\n\t\t\t\tname: \"tick\",\n\t\t\t\ttype: \"int24\",\n\t\t\t},\n\t\t],\n\t\tname: \"ticks\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint128\",\n\t\t\t\tname: \"liquidityGross\",\n\t\t\t\ttype: \"uint128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int128\",\n\t\t\t\tname: \"liquidityNet\",\n\t\t\t\ttype: \"int128\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"feeGrowthOutside0X128\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"feeGrowthOutside1X128\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"int56\",\n\t\t\t\tname: \"tickCumulativeOutside\",\n\t\t\t\ttype: \"int56\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"secondsPerLiquidityOutsideX128\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32\",\n\t\t\t\tname: \"secondsOutside\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"initialized\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"token0\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"token1\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"address\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"address\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","const ABI = [\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteExactInput\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160[]\",\n\t\t\t\tname: \"sqrtPriceX96AfterList\",\n\t\t\t\ttype: \"uint160[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32[]\",\n\t\t\t\tname: \"initializedTicksCrossedList\",\n\t\t\t\ttype: \"uint32[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"gasEstimate\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"tokenIn\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"tokenOut\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"amountIn\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint24\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint24\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint160\",\n\t\t\t\t\t\tname: \"sqrtPriceLimitX96\",\n\t\t\t\t\t\ttype: \"uint160\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct IQuoterV2.QuoteExactInputSingleParams\",\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteExactInputSingle\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96After\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32\",\n\t\t\t\tname: \"initializedTicksCrossed\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"gasEstimate\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes\",\n\t\t\t\tname: \"path\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountOut\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteExactOutput\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160[]\",\n\t\t\t\tname: \"sqrtPriceX96AfterList\",\n\t\t\t\ttype: \"uint160[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32[]\",\n\t\t\t\tname: \"initializedTicksCrossedList\",\n\t\t\t\ttype: \"uint32[]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"gasEstimate\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"tokenIn\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\tname: \"tokenOut\",\n\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"amount\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint24\",\n\t\t\t\t\t\tname: \"fee\",\n\t\t\t\t\t\ttype: \"uint24\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint160\",\n\t\t\t\t\t\tname: \"sqrtPriceLimitX96\",\n\t\t\t\t\t\ttype: \"uint160\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct IQuoterV2.QuoteExactOutputSingleParams\",\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tname: \"quoteExactOutputSingle\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"amountIn\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint160\",\n\t\t\t\tname: \"sqrtPriceX96After\",\n\t\t\t\ttype: \"uint160\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint32\",\n\t\t\t\tname: \"initializedTicksCrossed\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"gasEstimate\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n] as const\n\nexport default { ABI }\n","export const UNISWAP_V4_QUOTER_ABI = [\n\t{\n\t\ttype: \"constructor\",\n\t\tinputs: [{ name: \"_poolManager\", type: \"address\", internalType: \"contract IPoolManager\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_quoteExactInput\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"exactCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"path\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct PathKey[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"intermediateCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [{ name: \"\", type: \"bytes\", internalType: \"bytes\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_quoteExactInputSingle\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactSingleParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"poolKey\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PoolKey\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"currency0\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"currency1\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"zeroForOne\", type: \"bool\", internalType: \"bool\" },\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [{ name: \"\", type: \"bytes\", internalType: \"bytes\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_quoteExactOutput\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"exactCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"path\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct PathKey[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"intermediateCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [{ name: \"\", type: \"bytes\", internalType: \"bytes\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"_quoteExactOutputSingle\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactSingleParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"poolKey\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PoolKey\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"currency0\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"currency1\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"zeroForOne\", type: \"bool\", internalType: \"bool\" },\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [{ name: \"\", type: \"bytes\", internalType: \"bytes\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"msgSender\",\n\t\tinputs: [],\n\t\toutputs: [{ name: \"\", type: \"address\", internalType: \"address\" }],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"poolManager\",\n\t\tinputs: [],\n\t\toutputs: [{ name: \"\", type: \"address\", internalType: \"contract IPoolManager\" }],\n\t\tstateMutability: \"view\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"quoteExactInput\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"exactCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"path\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct PathKey[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"intermediateCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{ name: \"amountOut\", type: \"uint256\", internalType: \"uint256\" },\n\t\t\t{ name: \"gasEstimate\", type: \"uint256\", internalType: \"uint256\" },\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"quoteExactInputSingle\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactSingleParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"poolKey\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PoolKey\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"currency0\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"currency1\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"zeroForOne\", type: \"bool\", internalType: \"bool\" },\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{ name: \"amountOut\", type: \"uint256\", internalType: \"uint256\" },\n\t\t\t{ name: \"gasEstimate\", type: \"uint256\", internalType: \"uint256\" },\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"quoteExactOutput\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"exactCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"path\",\n\t\t\t\t\t\ttype: \"tuple[]\",\n\t\t\t\t\t\tinternalType: \"struct PathKey[]\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"intermediateCurrency\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{ name: \"amountIn\", type: \"uint256\", internalType: \"uint256\" },\n\t\t\t{ name: \"gasEstimate\", type: \"uint256\", internalType: \"uint256\" },\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"quoteExactOutputSingle\",\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tinternalType: \"struct IV4Quoter.QuoteExactSingleParams\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"poolKey\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tinternalType: \"struct PoolKey\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"currency0\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"currency1\", type: \"address\", internalType: \"Currency\" },\n\t\t\t\t\t\t\t{ name: \"fee\", type: \"uint24\", internalType: \"uint24\" },\n\t\t\t\t\t\t\t{ name: \"tickSpacing\", type: \"int24\", internalType: \"int24\" },\n\t\t\t\t\t\t\t{ name: \"hooks\", type: \"address\", internalType: \"contract IHooks\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"zeroForOne\", type: \"bool\", internalType: \"bool\" },\n\t\t\t\t\t{ name: \"exactAmount\", type: \"uint128\", internalType: \"uint128\" },\n\t\t\t\t\t{ name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{ name: \"amountIn\", type: \"uint256\", internalType: \"uint256\" },\n\t\t\t{ name: \"gasEstimate\", type: \"uint256\", internalType: \"uint256\" },\n\t\t],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"unlockCallback\",\n\t\tinputs: [{ name: \"data\", type: \"bytes\", internalType: \"bytes\" }],\n\t\toutputs: [{ name: \"\", type: \"bytes\", internalType: \"bytes\" }],\n\t\tstateMutability: \"nonpayable\",\n\t},\n\t{\n\t\ttype: \"error\",\n\t\tname: \"NotEnoughLiquidity\",\n\t\tinputs: [{ name: \"poolId\", type: \"bytes32\", internalType: \"PoolId\" }],\n\t},\n\t{ type: \"error\", name: \"NotPoolManager\", inputs: [] },\n\t{ type: \"error\", name: \"NotSelf\", inputs: [] },\n\t{\n\t\ttype: \"error\",\n\t\tname: \"QuoteSwap\",\n\t\tinputs: [{ name: \"amount\", type: \"uint256\", internalType: \"uint256\" }],\n\t},\n\t{ type: \"error\", name: \"UnexpectedCallSuccess\", inputs: [] },\n\t{\n\t\ttype: \"error\",\n\t\tname: \"UnexpectedRevertBytes\",\n\t\tinputs: [{ name: \"revertData\", type: \"bytes\", internalType: \"bytes\" }],\n\t},\n] as const\n","import {\n\tbytes32ToBytes20,\n\tbytes20ToBytes32,\n\tconstructRedeemEscrowRequestBody,\n\tgetStorageSlot,\n\tADDRESS_ZERO,\n\tMOCK_ADDRESS,\n\tERC20Method,\n\tadjustFeeDecimals,\n\tfetchPrice,\n} from \"@/utils\"\nimport { formatUnits, maxUint256, parseUnits, toHex } from \"viem\"\nimport type { DispatchPost, FillOptions, HexString, IPostRequest, Order } from \"@/types\"\nimport IntentGatewayABI from \"@/abis/IntentGateway\"\nimport UniswapV2Factory from \"@/abis/uniswapV2Factory\"\nimport UniswapRouterV2 from \"@/abis/uniswapRouterV2\"\nimport UniswapV3Factory from \"@/abis/uniswapV3Factory\"\nimport UniswapV3Pool from \"@/abis/uniswapV3Pool\"\nimport UniswapV3Quoter from \"@/abis/uniswapV3Quoter\"\nimport { UNISWAP_V4_QUOTER_ABI } from \"@/abis/uniswapV4Quoter\"\nimport type { EvmChain } from \"@/chains/evm\"\nimport { Decimal } from \"decimal.js\"\n\n/**\n * IntentGateway handles cross-chain intent operations between EVM chains.\n * It provides functionality for estimating fill orders, finding optimal swap protocols,\n * and checking order statuses across different chains.\n */\nexport class IntentGateway {\n\t/**\n\t * Creates a new IntentGateway instance for cross-chain operations.\n\t * @param source - The source EVM chain\n\t * @param dest - The destination EVM chain\n\t */\n\tconstructor(\n\t\tpublic readonly source: EvmChain,\n\t\tpublic readonly dest: EvmChain,\n\t) {}\n\n\t/**\n\t * Estimates the total cost required to fill an order, including gas fees, relayer fees,\n\t * protocol fees, and swap operations.\n\t *\n\t * @param order - The order to estimate fill costs for\n\t * @returns An object containing the estimated cost in both fee token and native token, plus the post request calldata\n\t */\n\tasync estimateFillOrder(\n\t\torder: Order,\n\t): Promise<{ feeTokenAmount: bigint; nativeTokenAmount: bigint; postRequestCalldata: HexString }> {\n\t\tconst postRequest: IPostRequest = {\n\t\t\tsource: order.destChain,\n\t\t\tdest: order.sourceChain,\n\t\t\tbody: constructRedeemEscrowRequestBody(order, MOCK_ADDRESS),\n\t\t\ttimeoutTimestamp: 0n,\n\t\t\tnonce: await this.source.getHostNonce(),\n\t\t\tfrom: this.source.config.getIntentGatewayAddress(order.destChain),\n\t\t\tto: this.source.config.getIntentGatewayAddress(order.sourceChain),\n\t\t}\n\n\t\tconst { decimals: sourceChainFeeTokenDecimals } = await this.source.getFeeTokenWithDecimals()\n\n\t\tconst { address: destChainFeeTokenAddress, decimals: destChainFeeTokenDecimals } =\n\t\t\tawait this.dest.getFeeTokenWithDecimals()\n\n\t\tconst { gas: postGasEstimate, postRequestCalldata } = await this.source.estimateGas(postRequest)\n\n\t\tconst postGasEstimateInSourceFeeToken = await this.convertGasToFeeToken(postGasEstimate, \"source\")\n\n\t\tconst relayerFeeInSourceFeeToken =\n\t\t\tpostGasEstimateInSourceFeeToken + 25n * 10n ** BigInt(sourceChainFeeTokenDecimals - 2)\n\n\t\tconst relayerFeeInDestFeeToken = adjustFeeDecimals(\n\t\t\trelayerFeeInSourceFeeToken,\n\t\t\tsourceChainFeeTokenDecimals,\n\t\t\tdestChainFeeTokenDecimals,\n\t\t)\n\n\t\tconst fillOptions: FillOptions = {\n\t\t\trelayerFee: relayerFeeInDestFeeToken,\n\t\t}\n\n\t\tconst totalEthValue = order.outputs\n\t\t\t.filter((output) => bytes32ToBytes20(output.token) === ADDRESS_ZERO)\n\t\t\t.reduce((sum, output) => sum + output.amount, 0n)\n\n\t\tconst intentGatewayAddress = this.source.config.getIntentGatewayAddress(order.destChain)\n\t\tconst testValue = toHex(maxUint256 / 2n)\n\n\t\tconst orderOverrides = await Promise.all(\n\t\t\torder.outputs.map(async (output) => {\n\t\t\t\tconst tokenAddress = bytes32ToBytes20(output.token)\n\n\t\t\t\tif (tokenAddress === ADDRESS_ZERO) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tconst stateDiffs = []\n\n\t\t\t\t\tconst balanceData = ERC20Method.BALANCE_OF + bytes20ToBytes32(MOCK_ADDRESS).slice(2)\n\t\t\t\t\tconst balanceSlot = await getStorageSlot(this.dest.client, tokenAddress, balanceData as HexString)\n\t\t\t\t\tstateDiffs.push({ slot: balanceSlot as HexString, value: testValue })\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst allowanceData =\n\t\t\t\t\t\t\tERC20Method.ALLOWANCE +\n\t\t\t\t\t\t\tbytes20ToBytes32(MOCK_ADDRESS).slice(2) +\n\t\t\t\t\t\t\tbytes20ToBytes32(intentGatewayAddress).slice(2)\n\t\t\t\t\t\tconst allowanceSlot = await getStorageSlot(\n\t\t\t\t\t\t\tthis.dest.client,\n\t\t\t\t\t\t\ttokenAddress,\n\t\t\t\t\t\t\tallowanceData as HexString,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tstateDiffs.push({ slot: allowanceSlot as HexString, value: testValue })\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.warn(`Could not find allowance slot for token ${tokenAddress}:`, e)\n\t\t\t\t\t}\n\n\t\t\t\t\treturn { address: tokenAddress, stateDiff: stateDiffs }\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.warn(`Could not find balance slot for token ${tokenAddress}:`, e)\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t}),\n\t\t).then((results) => results.filter(Boolean))\n\n\t\tconst stateOverrides = [\n\t\t\t// Mock address with ETH balance so that any chain estimation runs\n\t\t\t// even when the address doesn't hold any native token in that chain\n\t\t\t{\n\t\t\t\taddress: MOCK_ADDRESS,\n\t\t\t\tbalance: maxUint256,\n\t\t\t},\n\t\t\t...orderOverrides.map((override) => ({\n\t\t\t\taddress: override!.address,\n\t\t\t\tstateDiff: override!.stateDiff,\n\t\t\t})),\n\t\t]\n\n\t\tlet destChainFillGas = 0n\n\t\tlet filledWithNativeToken = false\n\n\t\ttry {\n\t\t\tlet protocolFeeInNativeToken = await this.quoteNative(postRequest, relayerFeeInDestFeeToken)\n\n\t\t\t// Add 0.5% markup\n\t\t\tprotocolFeeInNativeToken = protocolFeeInNativeToken + (protocolFeeInNativeToken * 50n) / 10000n\n\n\t\t\tdestChainFillGas = await this.dest.client.estimateContractGas({\n\t\t\t\tabi: IntentGatewayABI.ABI,\n\t\t\t\taddress: intentGatewayAddress,\n\t\t\t\tfunctionName: \"fillOrder\",\n\t\t\t\targs: [transformOrderForContract(order), fillOptions as any],\n\t\t\t\taccount: MOCK_ADDRESS,\n\t\t\t\tvalue: totalEthValue + protocolFeeInNativeToken,\n\t\t\t\tstateOverride: stateOverrides as any,\n\t\t\t})\n\t\t\tfilledWithNativeToken = true\n\t\t} catch {\n\t\t\tconsole.warn(\n\t\t\t\t`Could not estimate gas for fill order with native token as fees for chain ${order.destChain}, now trying with fee token as fees`,\n\t\t\t)\n\n\t\t\tconst destFeeTokenBalanceData = ERC20Method.BALANCE_OF + bytes20ToBytes32(MOCK_ADDRESS).slice(2)\n\t\t\tconst destFeeTokenBalanceSlot = await getStorageSlot(\n\t\t\t\tthis.dest.client,\n\t\t\t\tdestChainFeeTokenAddress,\n\t\t\t\tdestFeeTokenBalanceData as HexString,\n\t\t\t)\n\t\t\tconst destFeeTokenAllowanceData =\n\t\t\t\tERC20Method.ALLOWANCE +\n\t\t\t\tbytes20ToBytes32(MOCK_ADDRESS).slice(2) +\n\t\t\t\tbytes20ToBytes32(intentGatewayAddress).slice(2)\n\t\t\tconst destFeeTokenAllowanceSlot = await getStorageSlot(\n\t\t\t\tthis.dest.client,\n\t\t\t\tdestChainFeeTokenAddress,\n\t\t\t\tdestFeeTokenAllowanceData as HexString,\n\t\t\t)\n\t\t\tconst feeTokenStateDiffs = [\n\t\t\t\t{ slot: destFeeTokenBalanceSlot, value: testValue },\n\t\t\t\t{ slot: destFeeTokenAllowanceSlot, value: testValue },\n\t\t\t]\n\n\t\t\tstateOverrides.push({\n\t\t\t\taddress: destChainFeeTokenAddress,\n\t\t\t\tstateDiff: feeTokenStateDiffs as any,\n\t\t\t})\n\n\t\t\tdestChainFillGas = await this.dest.client.estimateContractGas({\n\t\t\t\tabi: IntentGatewayABI.ABI,\n\t\t\t\taddress: intentGatewayAddress,\n\t\t\t\tfunctionName: \"fillOrder\",\n\t\t\t\targs: [transformOrderForContract(order), fillOptions as any],\n\t\t\t\taccount: MOCK_ADDRESS,\n\t\t\t\tvalue: totalEthValue,\n\t\t\t\tstateOverride: stateOverrides as any,\n\t\t\t})\n\t\t}\n\n\t\tconst fillGasInDestFeeToken = await this.convertGasToFeeToken(destChainFillGas, \"dest\")\n\t\tconst fillGasInSourceFeeToken = adjustFeeDecimals(\n\t\t\tfillGasInDestFeeToken,\n\t\t\tdestChainFeeTokenDecimals,\n\t\t\tsourceChainFeeTokenDecimals,\n\t\t)\n\n\t\tconst protocolFeeInSourceFeeToken = adjustFeeDecimals(\n\t\t\tawait this.dest.quote(postRequest),\n\t\t\tdestChainFeeTokenDecimals,\n\t\t\tsourceChainFeeTokenDecimals,\n\t\t)\n\n\t\tlet totalEstimateInSourceFeeToken =\n\t\t\tfillGasInSourceFeeToken + protocolFeeInSourceFeeToken + relayerFeeInSourceFeeToken\n\n\t\tif (!filledWithNativeToken) {\n\t\t\t// Testnet block\n\t\t\ttotalEstimateInSourceFeeToken =\n\t\t\t\ttotalEstimateInSourceFeeToken + (totalEstimateInSourceFeeToken * 200n) / 10000n\n\t\t}\n\n\t\tlet totalNativeTokenAmount = await this.convertFeeTokenToNative(totalEstimateInSourceFeeToken, \"source\")\n\n\t\t// 2% buffer to avoid close call with filler's internal calculations\n\t\ttotalNativeTokenAmount = totalNativeTokenAmount + (totalNativeTokenAmount * 200n) / 10000n\n\n\t\treturn {\n\t\t\tfeeTokenAmount: totalEstimateInSourceFeeToken,\n\t\t\tnativeTokenAmount: totalNativeTokenAmount,\n\t\t\tpostRequestCalldata,\n\t\t}\n\t}\n\n\t/**\n\t * Converts fee token amounts back to the equivalent amount in native token.\n\t * Uses USD pricing to convert between fee token amounts and native token costs.\n\t *\n\t * @param feeTokenAmount - The amount in fee token (DAI)\n\t * @param getQuoteIn - Whether to use \"source\" or \"dest\" chain for the conversion\n\t * @returns The fee token amount converted to native token amount\n\t * @private\n\t */\n\tprivate async convertFeeTokenToNative(feeTokenAmount: bigint, getQuoteIn: \"source\" | \"dest\"): Promise<bigint> {\n\t\tconst client = this[getQuoteIn].client\n\t\tconst evmChainID = `EVM-${client.chain?.id}`\n\t\tconst wethAsset = this[getQuoteIn].config.getWrappedNativeAssetWithDecimals(evmChainID).asset\n\t\tconst feeToken = await this[getQuoteIn].getFeeTokenWithDecimals()\n\n\t\ttry {\n\t\t\tconst { amountOut } = await this.findBestProtocolWithAmountIn(\n\t\t\t\tgetQuoteIn,\n\t\t\t\tfeeToken.address,\n\t\t\t\twethAsset,\n\t\t\t\tfeeTokenAmount,\n\t\t\t\t\"v2\",\n\t\t\t)\n\n\t\t\tif (amountOut === 0n) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\treturn amountOut\n\t\t} catch {\n\t\t\t// Testnet block\n\t\t\tconst nativeCurrency = client.chain?.nativeCurrency\n\t\t\tconst chainId = client.chain?.id\n\t\t\tconst feeTokenAmountDecimal = new Decimal(formatUnits(feeTokenAmount, feeToken.decimals))\n\t\t\tconst nativeTokenPriceUsd = new Decimal(await fetchPrice(nativeCurrency?.symbol!, chainId))\n\t\t\tconst totalCostInNativeToken = feeTokenAmountDecimal.dividedBy(nativeTokenPriceUsd)\n\t\t\treturn parseUnits(totalCostInNativeToken.toFixed(nativeCurrency?.decimals!), nativeCurrency?.decimals!)\n\t\t}\n\t}\n\n\t/**\n\t * Converts gas costs to the equivalent amount in the fee token (DAI).\n\t * Uses USD pricing to convert between native token gas costs and fee token amounts.\n\t *\n\t * @param gasEstimate - The estimated gas units\n\t * @param gasEstimateIn - Whether to use \"source\" or \"dest\" chain for the conversion\n\t * @returns The gas cost converted to fee token amount\n\t * @private\n\t */\n\tprivate async convertGasToFeeToken(gasEstimate: bigint, gasEstimateIn: \"source\" | \"dest\"): Promise<bigint> {\n\t\tconst client = this[gasEstimateIn].client\n\t\tconst gasPrice = await client.getGasPrice()\n\t\tconst gasCostInWei = gasEstimate * gasPrice\n\t\tconst evmChainID = `EVM-${client.chain?.id}`\n\t\tconst wethAddr = this[gasEstimateIn].config.getWrappedNativeAssetWithDecimals(evmChainID).asset\n\t\tconst feeToken = await this[gasEstimateIn].getFeeTokenWithDecimals()\n\n\t\ttry {\n\t\t\tconst { amountOut } = await this.findBestProtocolWithAmountIn(\n\t\t\t\tgasEstimateIn,\n\t\t\t\twethAddr,\n\t\t\t\tfeeToken.address,\n\t\t\t\tgasCostInWei,\n\t\t\t\t\"v2\",\n\t\t\t)\n\t\t\tif (amountOut === 0n) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\treturn amountOut\n\t\t} catch {\n\t\t\t// Testnet block\n\t\t\tconst nativeCurrency = client.chain?.nativeCurrency\n\t\t\tconst chainId = client.chain?.id\n\t\t\tconst gasCostInToken = new Decimal(formatUnits(gasCostInWei, nativeCurrency?.decimals!))\n\t\t\tconst tokenPriceUsd = await fetchPrice(nativeCurrency?.symbol!, chainId)\n\t\t\tconst gasCostUsd = gasCostInToken.times(tokenPriceUsd)\n\t\t\tconst feeTokenPriceUsd = new Decimal(1) // stable coin\n\t\t\tconst gasCostInFeeToken = gasCostUsd.dividedBy(feeTokenPriceUsd)\n\t\t\treturn parseUnits(gasCostInFeeToken.toFixed(feeToken.decimals), feeToken.decimals)\n\t\t}\n\t}\n\n\t/**\n\t * Gets a quote for the native token cost of dispatching a post request.\n\t *\n\t * @param postRequest - The post request to quote\n\t * @param fee - The fee amount in fee token\n\t * @returns The native token amount required\n\t */\n\tasync quoteNative(postRequest: IPostRequest, fee: bigint): Promise<bigint> {\n\t\tconst dispatchPost: DispatchPost = {\n\t\t\tdest: toHex(postRequest.dest),\n\t\t\tto: postRequest.to,\n\t\t\tbody: postRequest.body,\n\t\t\ttimeout: postRequest.timeoutTimestamp,\n\t\t\tfee: fee,\n\t\t\tpayer: postRequest.from,\n\t\t}\n\n\t\tconst quoteNative = await this.dest.client.readContract({\n\t\t\taddress: this.dest.config.getIntentGatewayAddress(postRequest.dest),\n\t\t\tabi: IntentGatewayABI.ABI,\n\t\t\tfunctionName: \"quoteNative\",\n\t\t\targs: [dispatchPost] as any,\n\t\t})\n\n\t\treturn quoteNative\n\t}\n\n\t/**\n\t * Finds the best Uniswap protocol (V2, V3, or V4) for swapping tokens given a desired output amount.\n\t * Compares liquidity and pricing across different protocols and fee tiers.\n\t *\n\t * @param getQuoteIn - Whether to use \"source\" or \"dest\" chain for the swap\n\t * @param tokenIn - The address of the input token\n\t * @param tokenOut - The address of the output token\n\t * @param amountOut - The desired output amount\n\t * @returns Object containing the best protocol, required input amount, and fee tier (for V3/V4)\n\t */\n\tasync findBestProtocolWithAmountOut(\n\t\tgetQuoteIn: \"source\" | \"dest\",\n\t\ttokenIn: HexString,\n\t\ttokenOut: HexString,\n\t\tamountOut: bigint,\n\t): Promise<{ protocol: \"v2\" | \"v3\" | \"v4\" | null; amountIn: bigint; fee?: number }> {\n\t\tconst client = this[getQuoteIn].client\n\t\tconst evmChainID = `EVM-${client.chain?.id}`\n\t\tlet amountInV2 = maxUint256\n\t\tlet amountInV3 = maxUint256\n\t\tlet amountInV4 = maxUint256\n\t\tlet bestV3Fee = 0\n\t\tlet bestV4Fee = 0\n\t\tconst commonFees = [100, 500, 3000, 10000]\n\n\t\tconst v2Router = this.source.config.getUniswapRouterV2Address(evmChainID)\n\t\tconst v2Factory = this.source.config.getUniswapV2FactoryAddress(evmChainID)\n\t\tconst v3Factory = this.source.config.getUniswapV3FactoryAddress(evmChainID)\n\t\tconst v3Quoter = this.source.config.getUniswapV3QuoterAddress(evmChainID)\n\t\tconst v4Quoter = this.source.config.getUniswapV4QuoterAddress(evmChainID)\n\n\t\t// For V2/V3, convert native addresses to WETH for quotes\n\t\tconst wethAsset = this.source.config.getWrappedNativeAssetWithDecimals(evmChainID).asset\n\t\tconst tokenInForQuote = tokenIn === ADDRESS_ZERO ? wethAsset : tokenIn\n\t\tconst tokenOutForQuote = tokenOut === ADDRESS_ZERO ? wethAsset : tokenOut\n\n\t\t// V2 Protocol Check\n\t\ttry {\n\t\t\tconst v2PairExists = (await client.readContract({\n\t\t\t\taddress: v2Factory,\n\t\t\t\tabi: UniswapV2Factory.ABI,\n\t\t\t\tfunctionName: \"getPair\",\n\t\t\t\targs: [tokenInForQuote, tokenOutForQuote],\n\t\t\t})) as HexString\n\n\t\t\tif (v2PairExists !== ADDRESS_ZERO) {\n\t\t\t\tconst v2AmountIn = (await client.readContract({\n\t\t\t\t\taddress: v2Router,\n\t\t\t\t\tabi: UniswapRouterV2.ABI,\n\t\t\t\t\tfunctionName: \"getAmountsIn\",\n\t\t\t\t\targs: [amountOut, [tokenInForQuote, tokenOutForQuote]],\n\t\t\t\t})) as bigint[]\n\n\t\t\t\tamountInV2 = v2AmountIn[0]\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"V2 quote failed:\", error)\n\t\t}\n\n\t\t// V3 Protocol Check - Find the best pool with best quote\n\t\tlet bestV3AmountIn = maxUint256\n\n\t\tfor (const fee of commonFees) {\n\t\t\ttry {\n\t\t\t\tconst pool = await client.readContract({\n\t\t\t\t\taddress: v3Factory,\n\t\t\t\t\tabi: UniswapV3Factory.ABI,\n\t\t\t\t\tfunctionName: \"getPool\",\n\t\t\t\t\targs: [tokenInForQuote, tokenOutForQuote, fee],\n\t\t\t\t})\n\n\t\t\t\tif (pool !== ADDRESS_ZERO) {\n\t\t\t\t\tconst liquidity = await client.readContract({\n\t\t\t\t\t\taddress: pool,\n\t\t\t\t\t\tabi: UniswapV3Pool.ABI,\n\t\t\t\t\t\tfunctionName: \"liquidity\",\n\t\t\t\t\t})\n\n\t\t\t\t\tif (liquidity > BigInt(0)) {\n\t\t\t\t\t\t// Use simulateContract for V3 quoter (handles revert-based returns)\n\t\t\t\t\t\tconst quoteResult = (\n\t\t\t\t\t\t\tawait client.simulateContract({\n\t\t\t\t\t\t\t\taddress: v3Quoter,\n\t\t\t\t\t\t\t\tabi: UniswapV3Quoter.ABI,\n\t\t\t\t\t\t\t\tfunctionName: \"quoteExactOutputSingle\",\n\t\t\t\t\t\t\t\targs: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttokenIn: tokenInForQuote,\n\t\t\t\t\t\t\t\t\t\ttokenOut: tokenOutForQuote,\n\t\t\t\t\t\t\t\t\t\tfee: fee,\n\t\t\t\t\t\t\t\t\t\tamount: amountOut,\n\t\t\t\t\t\t\t\t\t\tsqrtPriceLimitX96: BigInt(0),\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).result as [bigint, bigint, number, bigint]\n\n\t\t\t\t\t\tconst amountIn = quoteResult[0]\n\n\t\t\t\t\t\tif (amountIn < bestV3AmountIn) {\n\t\t\t\t\t\t\tbestV3AmountIn = amountIn\n\t\t\t\t\t\t\tbestV3Fee = fee\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`V3 quote failed for fee ${fee}, continuing to next fee tier`)\n\t\t\t}\n\t\t}\n\n\t\tamountInV3 = bestV3AmountIn\n\n\t\t// V4 Protocol Check - Find the best pool with best quote (uses native addresses directly)\n\t\tlet bestV4AmountIn = maxUint256\n\n\t\tfor (const fee of commonFees) {\n\t\t\ttry {\n\t\t\t\t// Create pool key for V4 - can use native addresses directly\n\t\t\t\tconst currency0 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenIn : tokenOut\n\t\t\t\tconst currency1 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenOut : tokenIn\n\n\t\t\t\tconst zeroForOne = tokenIn.toLowerCase() === currency0.toLowerCase()\n\n\t\t\t\tconst poolKey = {\n\t\t\t\t\tcurrency0: currency0,\n\t\t\t\t\tcurrency1: currency1,\n\t\t\t\t\tfee: fee,\n\t\t\t\t\ttickSpacing: this.getTickSpacing(fee),\n\t\t\t\t\thooks: ADDRESS_ZERO, // No hooks\n\t\t\t\t}\n\n\t\t\t\t// Get quote from V4 quoter\n\t\t\t\tconst quoteResult = (\n\t\t\t\t\tawait client.simulateContract({\n\t\t\t\t\t\taddress: v4Quoter,\n\t\t\t\t\t\tabi: UNISWAP_V4_QUOTER_ABI,\n\t\t\t\t\t\tfunctionName: \"quoteExactOutputSingle\",\n\t\t\t\t\t\targs: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpoolKey: poolKey,\n\t\t\t\t\t\t\t\tzeroForOne: zeroForOne,\n\t\t\t\t\t\t\t\texactAmount: amountOut,\n\t\t\t\t\t\t\t\thookData: \"0x\", // Empty hook data\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).result as [bigint, bigint] // [amountIn, gasEstimate]\n\n\t\t\t\tconst amountIn = quoteResult[0]\n\n\t\t\t\tif (amountIn < bestV4AmountIn) {\n\t\t\t\t\tbestV4AmountIn = amountIn\n\t\t\t\t\tbestV4Fee = fee\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`V4 quote failed for fee ${fee}, continuing to next fee tier`)\n\t\t\t}\n\t\t}\n\n\t\tamountInV4 = bestV4AmountIn\n\n\t\tif (amountInV2 === maxUint256 && amountInV3 === maxUint256 && amountInV4 === maxUint256) {\n\t\t\t// No liquidity in any protocol\n\t\t\treturn {\n\t\t\t\tprotocol: null,\n\t\t\t\tamountIn: maxUint256,\n\t\t\t}\n\t\t}\n\n\t\t// Prefer V4 when V4 is close to the best of V2/V3 (within thresholdBps)\n\t\tif (amountInV4 !== maxUint256) {\n\t\t\tconst thresholdBps = 100n // 1%\n\t\t\tif (amountInV3 !== maxUint256 && this.isWithinThreshold(amountInV4, amountInV3, thresholdBps)) {\n\t\t\t\treturn { protocol: \"v4\", amountIn: amountInV4, fee: bestV4Fee }\n\t\t\t}\n\t\t\tif (amountInV2 !== maxUint256 && this.isWithinThreshold(amountInV4, amountInV2, thresholdBps)) {\n\t\t\t\treturn { protocol: \"v4\", amountIn: amountInV4, fee: bestV4Fee }\n\t\t\t}\n\t\t}\n\n\t\tconst minAmount = [\n\t\t\t{ protocol: \"v2\" as const, amountIn: amountInV2 },\n\t\t\t{ protocol: \"v3\" as const, amountIn: amountInV3, fee: bestV3Fee },\n\t\t\t{ protocol: \"v4\" as const, amountIn: amountInV4, fee: bestV4Fee },\n\t\t].reduce((best, current) => (current.amountIn < best.amountIn ? current : best))\n\n\t\tif (minAmount.protocol === \"v2\") {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v2\",\n\t\t\t\tamountIn: amountInV2,\n\t\t\t}\n\t\t} else if (minAmount.protocol === \"v3\") {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v3\",\n\t\t\t\tamountIn: amountInV3,\n\t\t\t\tfee: bestV3Fee,\n\t\t\t}\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v4\",\n\t\t\t\tamountIn: amountInV4,\n\t\t\t\tfee: bestV4Fee,\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Finds the best Uniswap protocol (V2, V3, or V4) for swapping tokens given an input amount.\n\t * Compares liquidity and pricing across different protocols and fee tiers.\n\t *\n\t * @param getQuoteIn - Whether to use \"source\" or \"dest\" chain for the swap\n\t * @param tokenIn - The address of the input token\n\t * @param tokenOut - The address of the output token\n\t * @param amountIn - The input amount to swap\n\t * @param selectedProtocol - Optional specific protocol to use (\"v2\", \"v3\", or \"v4\")\n\t * @returns Object containing the best protocol, expected output amount, and fee tier (for V3/V4)\n\t */\n\tasync findBestProtocolWithAmountIn(\n\t\tgetQuoteIn: \"source\" | \"dest\",\n\t\ttokenIn: HexString,\n\t\ttokenOut: HexString,\n\t\tamountIn: bigint,\n\t\tselectedProtocol?: \"v2\" | \"v3\" | \"v4\",\n\t): Promise<{ protocol: \"v2\" | \"v3\" | \"v4\" | null; amountOut: bigint; fee?: number }> {\n\t\tconst client = this[getQuoteIn].client\n\t\tconst evmChainID = `EVM-${client.chain?.id}`\n\t\tlet amountOutV2 = BigInt(0)\n\t\tlet amountOutV3 = BigInt(0)\n\t\tlet amountOutV4 = BigInt(0)\n\t\tlet bestV3Fee = 0\n\t\tlet bestV4Fee = 0\n\t\tconst commonFees = [100, 500, 3000, 10000]\n\n\t\tconst v2Router = this.source.config.getUniswapRouterV2Address(evmChainID)\n\t\tconst v2Factory = this.source.config.getUniswapV2FactoryAddress(evmChainID)\n\t\tconst v3Factory = this.source.config.getUniswapV3FactoryAddress(evmChainID)\n\t\tconst v3Quoter = this.source.config.getUniswapV3QuoterAddress(evmChainID)\n\t\tconst v4Quoter = this.source.config.getUniswapV4QuoterAddress(evmChainID)\n\n\t\t// For V2/V3, convert native addresses to WETH for quotes\n\t\tconst wethAsset = this.source.config.getWrappedNativeAssetWithDecimals(evmChainID).asset\n\t\tconst tokenInForQuote = tokenIn === ADDRESS_ZERO ? wethAsset : tokenIn\n\t\tconst tokenOutForQuote = tokenOut === ADDRESS_ZERO ? wethAsset : tokenOut\n\n\t\t// V2 Protocol Check\n\t\ttry {\n\t\t\tconst v2PairExists = (await client.readContract({\n\t\t\t\taddress: v2Factory,\n\t\t\t\tabi: UniswapV2Factory.ABI,\n\t\t\t\tfunctionName: \"getPair\",\n\t\t\t\targs: [tokenInForQuote, tokenOutForQuote],\n\t\t\t})) as HexString\n\n\t\t\tif (v2PairExists !== ADDRESS_ZERO) {\n\t\t\t\tconst v2AmountOut = (await client.readContract({\n\t\t\t\t\taddress: v2Router,\n\t\t\t\t\tabi: UniswapRouterV2.ABI,\n\t\t\t\t\tfunctionName: \"getAmountsOut\",\n\t\t\t\t\targs: [amountIn, [tokenInForQuote, tokenOutForQuote]],\n\t\t\t\t})) as bigint[]\n\n\t\t\t\tamountOutV2 = v2AmountOut[1]\n\t\t\t\tif (selectedProtocol === \"v2\") {\n\t\t\t\t\treturn { protocol: \"v2\", amountOut: amountOutV2 }\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"V2 quote failed:\", error)\n\t\t}\n\n\t\t// V3 Protocol Check - Find the best pool with best quote\n\t\tlet bestV3AmountOut = BigInt(0)\n\n\t\tfor (const fee of commonFees) {\n\t\t\ttry {\n\t\t\t\tconst pool = await client.readContract({\n\t\t\t\t\taddress: v3Factory,\n\t\t\t\t\tabi: UniswapV3Factory.ABI,\n\t\t\t\t\tfunctionName: \"getPool\",\n\t\t\t\t\targs: [tokenInForQuote, tokenOutForQuote, fee],\n\t\t\t\t})\n\n\t\t\t\tif (pool !== ADDRESS_ZERO) {\n\t\t\t\t\tconst liquidity = await client.readContract({\n\t\t\t\t\t\taddress: pool,\n\t\t\t\t\t\tabi: UniswapV3Pool.ABI,\n\t\t\t\t\t\tfunctionName: \"liquidity\",\n\t\t\t\t\t})\n\n\t\t\t\t\tif (liquidity > BigInt(0)) {\n\t\t\t\t\t\t// Use simulateContract for V3 quoter (handles revert-based returns)\n\t\t\t\t\t\tconst quoteResult = (\n\t\t\t\t\t\t\tawait client.simulateContract({\n\t\t\t\t\t\t\t\taddress: v3Quoter,\n\t\t\t\t\t\t\t\tabi: UniswapV3Quoter.ABI,\n\t\t\t\t\t\t\t\tfunctionName: \"quoteExactInputSingle\",\n\t\t\t\t\t\t\t\targs: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttokenIn: tokenInForQuote,\n\t\t\t\t\t\t\t\t\t\ttokenOut: tokenOutForQuote,\n\t\t\t\t\t\t\t\t\t\tfee: fee,\n\t\t\t\t\t\t\t\t\t\tamountIn: amountIn,\n\t\t\t\t\t\t\t\t\t\tsqrtPriceLimitX96: BigInt(0),\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).result as [bigint, bigint, number, bigint]\n\n\t\t\t\t\t\tconst amountOut = quoteResult[0]\n\n\t\t\t\t\t\tif (amountOut > bestV3AmountOut) {\n\t\t\t\t\t\t\tbestV3AmountOut = amountOut\n\t\t\t\t\t\t\tbestV3Fee = fee\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`V3 quote failed for fee ${fee}, continuing to next fee tier`)\n\t\t\t}\n\t\t}\n\n\t\tamountOutV3 = bestV3AmountOut\n\n\t\tif (selectedProtocol === \"v3\") {\n\t\t\treturn { protocol: \"v3\", amountOut: amountOutV3, fee: bestV3Fee }\n\t\t}\n\n\t\t// V4 Protocol Check - Find the best pool with best quote (uses native addresses directly)\n\t\tlet bestV4AmountOut = BigInt(0)\n\n\t\tfor (const fee of commonFees) {\n\t\t\ttry {\n\t\t\t\t// Create pool key for V4 - can use native addresses directly\n\t\t\t\tconst currency0 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenIn : tokenOut\n\t\t\t\tconst currency1 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenOut : tokenIn\n\n\t\t\t\tconst zeroForOne = tokenIn.toLowerCase() === currency0.toLowerCase()\n\n\t\t\t\tconst poolKey = {\n\t\t\t\t\tcurrency0: currency0,\n\t\t\t\t\tcurrency1: currency1,\n\t\t\t\t\tfee: fee,\n\t\t\t\t\ttickSpacing: this.getTickSpacing(fee),\n\t\t\t\t\thooks: ADDRESS_ZERO, // No hooks\n\t\t\t\t}\n\n\t\t\t\t// Get quote from V4 quoter\n\t\t\t\tconst quoteResult = (\n\t\t\t\t\tawait client.simulateContract({\n\t\t\t\t\t\taddress: v4Quoter,\n\t\t\t\t\t\tabi: UNISWAP_V4_QUOTER_ABI,\n\t\t\t\t\t\tfunctionName: \"quoteExactInputSingle\",\n\t\t\t\t\t\targs: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpoolKey: poolKey,\n\t\t\t\t\t\t\t\tzeroForOne: zeroForOne,\n\t\t\t\t\t\t\t\texactAmount: amountIn,\n\t\t\t\t\t\t\t\thookData: \"0x\", // Empty hook data\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).result as [bigint, bigint] // [amountOut, gasEstimate]\n\n\t\t\t\tconst amountOut = quoteResult[0]\n\n\t\t\t\tif (amountOut > bestV4AmountOut) {\n\t\t\t\t\tbestV4AmountOut = amountOut\n\t\t\t\t\tbestV4Fee = fee\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`V4 quote failed for fee ${fee}, continuing to next fee tier`)\n\t\t\t}\n\t\t}\n\n\t\tamountOutV4 = bestV4AmountOut\n\n\t\tif (selectedProtocol === \"v4\") {\n\t\t\treturn { protocol: \"v4\", amountOut: amountOutV4, fee: bestV4Fee }\n\t\t}\n\n\t\tif (amountOutV2 === BigInt(0) && amountOutV3 === BigInt(0) && amountOutV4 === BigInt(0)) {\n\t\t\t// No liquidity in any protocol\n\t\t\treturn {\n\t\t\t\tprotocol: null,\n\t\t\t\tamountOut: BigInt(0),\n\t\t\t}\n\t\t}\n\n\t\t// Prefer V4 when V4 is close to the best of V2/V3 (within thresholdBps)\n\t\tif (amountOutV4 !== BigInt(0)) {\n\t\t\tconst thresholdBps = 100n // 1%\n\t\t\tif (amountOutV3 !== BigInt(0) && this.isWithinThreshold(amountOutV4, amountOutV3, thresholdBps)) {\n\t\t\t\treturn { protocol: \"v4\", amountOut: amountOutV4, fee: bestV4Fee }\n\t\t\t}\n\t\t\tif (amountOutV2 !== BigInt(0) && this.isWithinThreshold(amountOutV4, amountOutV2, thresholdBps)) {\n\t\t\t\treturn { protocol: \"v4\", amountOut: amountOutV4, fee: bestV4Fee }\n\t\t\t}\n\t\t}\n\n\t\tconst maxAmount = [\n\t\t\t{ protocol: \"v2\" as const, amountOut: amountOutV2 },\n\t\t\t{ protocol: \"v3\" as const, amountOut: amountOutV3, fee: bestV3Fee },\n\t\t\t{ protocol: \"v4\" as const, amountOut: amountOutV4, fee: bestV4Fee },\n\t\t].reduce((best, current) => (current.amountOut > best.amountOut ? current : best))\n\n\t\tif (maxAmount.protocol === \"v2\") {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v2\",\n\t\t\t\tamountOut: amountOutV2,\n\t\t\t}\n\t\t} else if (maxAmount.protocol === \"v3\") {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v3\",\n\t\t\t\tamountOut: amountOutV3,\n\t\t\t\tfee: bestV3Fee,\n\t\t\t}\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tprotocol: \"v4\",\n\t\t\t\tamountOut: amountOutV4,\n\t\t\t\tfee: bestV4Fee,\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if an order has been filled by verifying the commitment status on-chain.\n\t * Reads the storage slot corresponding to the order's commitment hash.\n\t *\n\t * @param order - The order to check\n\t * @returns True if the order has been filled, false otherwise\n\t */\n\tasync isOrderFilled(order: Order): Promise<boolean> {\n\t\tconst intentGatewayAddress = this.source.config.getIntentGatewayAddress(order.destChain)\n\n\t\tconst filledSlot = await this.dest.client.readContract({\n\t\t\tabi: IntentGatewayABI.ABI,\n\t\t\taddress: intentGatewayAddress,\n\t\t\tfunctionName: \"calculateCommitmentSlotHash\",\n\t\t\targs: [order.id as HexString],\n\t\t})\n\n\t\tconst filledStatus = await this.dest.client.getStorageAt({\n\t\t\taddress: intentGatewayAddress,\n\t\t\tslot: filledSlot,\n\t\t})\n\t\treturn filledStatus !== \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n\t}\n\n\t/**\n\t * Returns the tick spacing for a given fee tier in Uniswap V4\n\t * @param fee - The fee tier in basis points\n\t * @returns The tick spacing value\n\t */\n\tprivate getTickSpacing(fee: number): number {\n\t\tswitch (fee) {\n\t\t\tcase 100: // 0.01%\n\t\t\t\treturn 1\n\t\t\tcase 500: // 0.05%\n\t\t\t\treturn 10\n\t\t\tcase 3000: // 0.30%\n\t\t\t\treturn 60\n\t\t\tcase 10000: // 1.00%\n\t\t\t\treturn 200\n\t\t\tdefault:\n\t\t\t\treturn 60 // Default to medium\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if candidate <= reference * (1 + thresholdBps/10000)\n\t * @param candidate - The candidate amount to compare\n\t * @param reference - The reference amount\n\t * @param thresholdBps - The threshold in basis points\n\t * @returns True if candidate is within threshold of reference\n\t */\n\tprivate isWithinThreshold(candidate: bigint, reference: bigint, thresholdBps: bigint): boolean {\n\t\tconst basisPoints = 10000n\n\t\treturn candidate * basisPoints <= reference * (basisPoints + thresholdBps)\n\t}\n}\n\n/**\n * Transforms an Order object into the format expected by the smart contract.\n * Converts chain IDs to hex format and restructures input/output arrays.\n *\n * @param order - The order to transform\n * @returns The order in contract-compatible format\n */\nfunction transformOrderForContract(order: Order) {\n\treturn {\n\t\tsourceChain: toHex(order.sourceChain),\n\t\tdestChain: toHex(order.destChain),\n\t\tfees: order.fees,\n\t\tcallData: order.callData,\n\t\tdeadline: order.deadline,\n\t\tnonce: order.nonce,\n\t\tinputs: order.inputs.map((input) => ({\n\t\t\ttoken: input.token,\n\t\t\tamount: input.amount,\n\t\t})),\n\t\toutputs: order.outputs.map((output) => ({\n\t\t\ttoken: output.token,\n\t\t\tamount: output.amount,\n\t\t\tbeneficiary: output.beneficiary,\n\t\t})),\n\t\tuser: order.user,\n\t}\n}\n","import { hexToBytes, pad, bytesToHex } from \"viem\"\nimport type { ApiPromise } from \"@polkadot/api\"\nimport { Struct, Vector, u8, u64, _void, Option, u128, bool } from \"scale-ts\"\nimport { H256, StateMachine } from \"@/utils/substrate\"\nimport type { HexString } from \"@/types\"\nimport { convertStateMachineIdToEnum } from \"@/chain\"\nimport { keccakAsU8a, xxhashAsU8a } from \"@polkadot/util-crypto\"\nimport type { Option as PolakdotOption } from \"@polkadot/types\"\nimport type { EventRecord, StorageData } from \"@polkadot/types/interfaces\"\nimport type { SignerOptions } from \"@polkadot/api/types\"\nimport type { HyperbridgeTxEvents } from \"./xcmGateway\"\n\nexport type Params = {\n\t/** Asset symbol for the teleport operation */\n\tsymbol: string\n\t/**\n\t * Destination state machine identifier (e.g., \"EVM-1\", \"SUBSTRATE-cere\")\n\t * that specifies the target blockchain or network\n\t */\n\tdestination: string\n\t/**\n\t * Recipient address in hexadecimal format where the assets will be sent\n\t * on the destination chain\n\t */\n\trecipient: HexString\n\t/**\n\t * Amount of tokens to teleport, represented as a bigint to handle\n\t * large numeric values precisely\n\t */\n\tamount: bigint\n\t/**\n\t * Request timeout in block numbers or timestamp, after which the\n\t * teleport operation will be considered failed\n\t */\n\ttimeout: bigint\n\t/**\n\t * Address of the token gateway contract on the destination chain\n\t * that will process the teleported assets\n\t */\n\ttokenGatewayAddress: Uint8Array\n\t/**\n\t * Fee paid to relayers who process the cross-chain transaction,\n\t * represented as a bigint\n\t */\n\trelayerFee: bigint\n\t/**\n\t * Optional call data to be executed on the destination chain\n\t * as part of the teleport operation\n\t */\n\tcallData?: Uint8Array\n\t/**\n\t * Flag indicating whether to automatically redeem the tokens\n\t * for erc20\n\t */\n\tredeem: boolean\n}\n\nconst TeleportParams = Struct({\n\t/// StateMachine\n\tdestination: StateMachine,\n\t/// Receipient\n\trecepient: H256,\n\t/// Amount\n\tamount: u128,\n\t/// Request timeout\n\ttimeout: u64,\n\t/// Token gateway address\n\ttokenGatewayAddress: Vector(u8),\n\t/// Relayer fee\n\trelayerFee: u128,\n\t/// Call data\n\tcallData: Option(Vector(u8)),\n\t/// Redeem\n\tredeem: bool,\n})\n\nasync function fetchLocalAssetId(params: { api: ApiPromise; assetId: Uint8Array }) {\n\tconst { api, assetId } = params\n\n\t// twox_128\n\tconst palletPrefix = xxhashAsU8a(\"TokenGateway\", 128)\n\t// twox_128\n\tconst storagePrefix = xxhashAsU8a(\"LocalAssets\", 128)\n\n\tconst full_key = new Uint8Array([...palletPrefix, ...storagePrefix, ...assetId])\n\n\tconst hexKey = bytesToHex(full_key)\n\n\t// read account balance\n\n\tconst storage_value: PolakdotOption<StorageData> = (await api.rpc.state.getStorage(\n\t\thexKey,\n\t)) as PolakdotOption<StorageData>\n\n\tif (storage_value.isSome) {\n\t\tconst assetId = storage_value.value.toU8a()\n\n\t\treturn assetId\n\t}\n\n\treturn null\n}\n\n/**\n * Teleports assets from Substrate to other chains via the token gateway\n *\n * Note: There is no guarantee that both Dispatched and Finalized events will be yielded.\n * Consumers should listen for either one of these events instead of expecting both.\n *\n *\n * @param apiPromise - Polkadot API instance\n * @param who - SS58Address\n * @param params - Teleport parameters\n * @param params.symbol - Asset symbol\n * @param params.destination - Target state machine ID\n * @param params.recipient - Recipient address\n * @param params.amount - Amount to teleport\n * @param params.timeout - Operation timeout\n * @param params.tokenGatewayAddress - Gateway contract address\n * @param params.relayerFee - Fee for the relayer\n * @param params.redeem - Whether to redeem on arrival\n * @param params.callData - Optional additional call data\n * @param options - Signer options\n * @yields {HyperbridgeTxEvents} Stream of events indicating transaction status\n * @throws Error when asset ID is unknown or transaction fails\n */\nexport async function teleport(teleport_param: {\n\twho: string\n\tparams: Params\n\tapiPromise: ApiPromise\n\toptions: Partial<SignerOptions>\n}): Promise<ReadableStream<HyperbridgeTxEvents>> {\n\tconst { who, options, params, apiPromise } = teleport_param\n\n\tconst substrateComplianceAddr = (address: HexString, stateMachine: string) => {\n\t\tif (stateMachine.startsWith(\"EVM-\")) return pad(address, { size: 32, dir: \"left\" })\n\n\t\treturn address\n\t}\n\n\tconst assetId = keccakAsU8a(params.symbol)\n\n\t// Fetch scale encoded local asset id\n\n\tconst scaleEncodedAssetId = await fetchLocalAssetId({ api: apiPromise, assetId })\n\n\tif (scaleEncodedAssetId === null) {\n\t\tthrow new Error(\"Unknown asset id provided\")\n\t}\n\n\tconst destination = convertStateMachineIdToEnum(params.destination)\n\n\tconst recipient = hexToBytes(substrateComplianceAddr(params.recipient, params.destination))\n\n\tconst teleportParams = {\n\t\tdestination: destination,\n\t\trecepient: Array.from(recipient),\n\t\tamount: params.amount,\n\t\ttimeout: BigInt(params.timeout),\n\t\ttokenGatewayAddress: Array.from(params.tokenGatewayAddress),\n\t\trelayerFee: BigInt(params.relayerFee),\n\t\tredeem: params.redeem,\n\t\tcallData: params.callData ? Array.from(params.callData) : undefined,\n\t}\n\n\tconst encoded = TeleportParams.enc(teleportParams)\n\tconst fullCallData = new Uint8Array([...scaleEncodedAssetId, ...encoded])\n\n\tconst tx = apiPromise.tx.tokenGateway.teleport(fullCallData)\n\tlet unsub = () => {}\n\tlet closed = false\n\n\tconst stream = new ReadableStream<HyperbridgeTxEvents>(\n\t\t{\n\t\t\tasync start(controller) {\n\t\t\t\tunsub = await tx.signAndSend(who, options, async (result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { isInBlock, isError, dispatchError, txHash, isFinalized, status } = result\n\t\t\t\t\t\t// @ts-expect-error Type Mismatch\n\t\t\t\t\t\tconst events = result.events as ISubmittableResult[\"events\"]\n\n\t\t\t\t\t\tif (isError) {\n\t\t\t\t\t\t\tconsole.error(\"Transaction failed: \", dispatchError)\n\t\t\t\t\t\t\tcontroller.enqueue({ kind: \"Error\", error: dispatchError })\n\t\t\t\t\t\t\tunsub?.()\n\t\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\t\tclosed = true\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (status.type === \"Ready\") {\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\tkind: \"Ready\",\n\t\t\t\t\t\t\t\ttransaction_hash: txHash.toHex(),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (isInBlock || isFinalized) {\n\t\t\t\t\t\t\tconst commitment_hash = readIsmpCommitmentHash(events)\n\t\t\t\t\t\t\tconst blockHash = isInBlock ? status.asInBlock.toHex() : status.asFinalized.toHex()\n\n\t\t\t\t\t\t\tif (!commitment_hash) {\n\t\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\t\tkind: \"Error\",\n\t\t\t\t\t\t\t\t\terror: new Error(\"Commitment Hash missing\"),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\treturn controller.close()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst header = await apiPromise.rpc.chain.getHeader(blockHash)\n\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\tkind: isInBlock ? \"Dispatched\" : \"Finalized\",\n\t\t\t\t\t\t\t\ttransaction_hash: txHash.toHex(),\n\t\t\t\t\t\t\t\tblock_number: header.number.toBigInt(),\n\t\t\t\t\t\t\t\tcommitment: commitment_hash,\n\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\tif (isFinalized) {\n\t\t\t\t\t\t\t\tunsub?.()\n\t\t\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\t\t\tclosed = true\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t// For some unknown reason the call back is called again after unsubscribing, this check prevents it from trying to push an event to the closed stream\n\t\t\t\t\t\tif (closed) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\tkind: \"Error\",\n\t\t\t\t\t\t\terror: String(err),\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\tcancel: () => unsub?.(),\n\t\t},\n\t\t{\n\t\t\thighWaterMark: 3,\n\t\t\tsize: () => 1,\n\t\t},\n\t)\n\n\treturn stream\n}\n\nfunction readIsmpCommitmentHash(events: EventRecord[]): HexString | undefined {\n\tfor (const record of events) {\n\t\tconst { event } = record\n\n\t\tif (event.section === \"ismp\" && event.method === \"Request\") {\n\t\t\tconst commitment = event.data[3].toHex()\n\n\t\t\tif (!commitment) return\n\n\t\t\treturn commitment\n\t\t}\n\t}\n}\n","import type { HexString } from \"@/types\"\nimport { StateMachine, sleep } from \"@/utils\"\nimport type { ApiPromise } from \"@polkadot/api\"\nimport type { SignerOptions } from \"@polkadot/api/types\"\nimport { hexToU8a, u8aToHex } from \"@polkadot/util\"\nimport { decodeAddress, keccakAsHex } from \"@polkadot/util-crypto\"\nimport { Bytes, Struct, Tuple, u8, u64, u128 } from \"scale-ts\"\nimport { parseUnits } from \"viem\"\n\nconst MultiAccount = Struct({\n\tsubstrate_account: Bytes(32),\n\tevm_account: Bytes(20),\n\tdest_state_machine: StateMachine,\n\ttimeout: u64,\n\taccount_nonce: u64,\n})\n\nexport type HyperbridgeTxEvents =\n\t| {\n\t\t\tkind: \"Ready\"\n\t\t\ttransaction_hash: HexString\n\t\t\tmessage_id?: HexString\n\t }\n\t| {\n\t\t\tkind: \"Dispatched\"\n\t\t\ttransaction_hash: HexString\n\t\t\tblock_number: bigint\n\t\t\tmessage_id?: HexString\n\t\t\tcommitment: HexString\n\t }\n\t| {\n\t\t\tkind: \"Finalized\"\n\t\t\ttransaction_hash: HexString\n\t\t\tmessage_id?: HexString\n\t\t\tblock_number?: bigint\n\t\t\tcommitment?: HexString\n\t }\n\t| {\n\t\t\tkind: \"Error\"\n\t\t\terror: unknown\n\t }\n\nconst DECIMALS = 10\n/**\n * Parameters for teleporting DOT from Polkadot relay chain to EVM-based destination\n */\nexport type XcmGatewayParams = {\n\t/**\n\t * Destination state machine ID (chain ID) where assets will be teleported to\n\t * This value identifies the specific EVM chain in the destination network\n\t */\n\tdestination: number\n\n\t/**\n\t * The recipient address on the destination chain (in hex format)\n\t * This is the EVM address that will receive the teleported assets\n\t */\n\trecipient: HexString\n\n\t/**\n\t * Amount of DOT to teleport\n\t * This will be converted to the appropriate format internally\n\t */\n\tamount: number\n\n\t/**\n\t * Request timeout value in blocks or timestamp\n\t * Specifies how long the teleport request remains valid before expiring\n\t */\n\ttimeout: bigint\n\n\t/**\n\t * The parachain ID of the Hyperbridge\n\t */\n\tparaId: number\n}\n\n/**\n * Teleports DOT tokens from Polkadot relay chain to an EVM-based destination chain\n * using XCM (Cross-Consensus Message Format) and uses the indexer client to track\n * the transaction instead of polling hyperbridge blocks.\n *\n * This function initiates a teleport transaction, monitors its status through the indexer,\n * and yields events about the transaction's progress through a ReadableStream.\n * It handles the complete lifecycle of a teleport operation:\n * 1. Transaction preparation and signing\n * 2. Broadcasting to the relay chain\n * 3. Tracking the transaction via the indexer client\n * 4. Yielding events about transaction status\n *\n * Note: There is no guarantee that both Dispatched and Finalized events will be yielded.\n * Consumers should listen for either one of these events instead of expecting both.\n *\n * @param sourceApi - Polkadot API instance connected to the relay chain or asset hub\n * @param sourceIsAssetHub - If `true` uses AssetHub Network for teleport\n * @param who - Sender's SS58Address address\n * @param options - Transaction signing options\n * @param params - Teleport parameters including destination, recipient, and amount\n * @param indexerClient - The indexer client to track the transaction\n * @param pollInterval - Optional polling interval in milliseconds (default: 2000)\n * @yields {HyperbridgeTxEvents} Stream of events indicating transaction status\n */\nexport async function teleportDot(param_: {\n\tsourceApi: ApiPromise\n\tsourceIsAssetHub: boolean\n\twho: string\n\txcmGatewayParams: XcmGatewayParams\n\toptions: Partial<SignerOptions>\n}): Promise<ReadableStream<HyperbridgeTxEvents>> {\n\tconst { sourceApi, sourceIsAssetHub, who, options, xcmGatewayParams: params } = param_\n\tconst { nonce: accountNonce } = (await sourceApi.query.system.account(who)) as any\n\n\tconst encoded_message = MultiAccount.enc({\n\t\tsubstrate_account: decodeAddress(who),\n\t\tevm_account: hexToU8a(params.recipient),\n\t\tdest_state_machine: { tag: \"Evm\", value: params.destination },\n\t\ttimeout: params.timeout,\n\t\taccount_nonce: accountNonce,\n\t})\n\n\tconst message_id = keccakAsHex(encoded_message)\n\n\t// Set up the transaction parameters\n\tconst beneficiary = {\n\t\tV3: {\n\t\t\tparents: 0,\n\t\t\tinterior: {\n\t\t\t\tX4: [\n\t\t\t\t\t{\n\t\t\t\t\t\tAccountId32: {\n\t\t\t\t\t\t\tid: u8aToHex(decodeAddress(who)),\n\t\t\t\t\t\t\tnetwork: null,\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\tAccountKey20: {\n\t\t\t\t\t\t\tnetwork: {\n\t\t\t\t\t\t\t\tEthereum: {\n\t\t\t\t\t\t\t\t\tchainId: params.destination,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tkey: params.recipient,\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\tGeneralIndex: params.timeout,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tGeneralIndex: accountNonce,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t}\n\n\tlet assets\n\tlet destination\n\n\tif (sourceIsAssetHub) {\n\t\tdestination = {\n\t\t\tV3: {\n\t\t\t\tparents: 1,\n\t\t\t\tinterior: {\n\t\t\t\t\tX1: {\n\t\t\t\t\t\tParachain: params.paraId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tassets = {\n\t\t\tV3: [\n\t\t\t\t{\n\t\t\t\t\tid: {\n\t\t\t\t\t\tConcrete: {\n\t\t\t\t\t\t\tparents: 1,\n\t\t\t\t\t\t\tinterior: \"Here\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tfun: {\n\t\t\t\t\t\tFungible: parseUnits(params.amount.toString(), DECIMALS),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t} else {\n\t\tdestination = {\n\t\t\tV3: {\n\t\t\t\tparents: 0,\n\t\t\t\tinterior: {\n\t\t\t\t\tX1: {\n\t\t\t\t\t\tParachain: params.paraId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tassets = {\n\t\t\tV3: [\n\t\t\t\t{\n\t\t\t\t\tid: {\n\t\t\t\t\t\tConcrete: {\n\t\t\t\t\t\t\tparents: 0,\n\t\t\t\t\t\t\tinterior: \"Here\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tfun: {\n\t\t\t\t\t\tFungible: parseUnits(params.amount.toString(), DECIMALS),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n\n\tconst feeAssetItem = 0\n\tconst weightLimit = \"Unlimited\"\n\n\tlet tx\n\n\tif (sourceIsAssetHub) {\n\t\ttx = sourceApi.tx.polkadotXcm.limitedReserveTransferAssets(\n\t\t\tdestination,\n\t\t\tbeneficiary,\n\t\t\tassets,\n\t\t\tfeeAssetItem,\n\t\t\tweightLimit,\n\t\t)\n\t} else {\n\t\ttx = sourceApi.tx.xcmPallet.limitedReserveTransferAssets(\n\t\t\tdestination,\n\t\t\tbeneficiary,\n\t\t\tassets,\n\t\t\tfeeAssetItem,\n\t\t\tweightLimit,\n\t\t)\n\t}\n\n\tlet closed = false\n\t// Create the stream to report events\n\tlet unsubscribe: () => void\n\tconst stream = new ReadableStream<HyperbridgeTxEvents>(\n\t\t{\n\t\t\tasync start(controller) {\n\t\t\t\tunsubscribe = await tx.signAndSend(who, options, async (result: any) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { status, dispatchError, txHash } = result\n\n\t\t\t\t\t\tif (dispatchError) {\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\tkind: \"Error\",\n\t\t\t\t\t\t\t\terror: `Error watching extrinsic: ${dispatchError.toString()}`,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tunsubscribe?.()\n\t\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\t\tclosed = true\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (status.isReady) {\n\t\t\t\t\t\t\t// Send tx hash as soon as it is available\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\tkind: \"Ready\",\n\t\t\t\t\t\t\t\ttransaction_hash: txHash.toHex(),\n\t\t\t\t\t\t\t\tmessage_id,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} else if (status.isInBlock || status.isFinalized) {\n\t\t\t\t\t\t\t// Send event with the status kind (either Dispatched or Finalized)\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\tkind: \"Finalized\",\n\t\t\t\t\t\t\t\ttransaction_hash: txHash.toHex(),\n\t\t\t\t\t\t\t\tmessage_id,\n\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t// We can end the stream because indexer only indexes finalized events from hyperbridge\n\t\t\t\t\t\t\tclosed = true\n\t\t\t\t\t\t\tunsubscribe?.()\n\t\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t// For some unknown reason the call back is called again after unsubscribing, this check prevents it from trying to push an event to the closed stream\n\t\t\t\t\t\tif (closed) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\tkind: \"Error\",\n\t\t\t\t\t\t\terror: String(err),\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\tcancel() {\n\t\t\t\t// This is called if the reader cancels,\n\t\t\t\tunsubscribe?.()\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\thighWaterMark: 3,\n\t\t\tsize: () => 1,\n\t\t},\n\t)\n\n\treturn stream\n}\n"]}
|