@blazephoenix/sdk 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/abis.generated.ts","../src/abis.ts","../src/checks.ts","../src/constants.ts","../src/rpc.ts","../src/errors.ts","../src/calldata.ts","../src/deployments.ts","../src/resilience.ts","../src/registry.ts","../src/erc20.ts","../src/client.ts","../src/json.ts"],"names":["encodeFunctionData","HEX_ADDR"],"mappings":"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","file":"index.js","sourcesContent":["// =============================================================================\n// GENERATED by scripts/gen-abis.mjs from BlazePhoenix-Dex — do not edit.\n// Source revision: 07c85636f4116f98ddcfffb66e4477d7da7e9928\n// Compiler: solc 0.8.36+commit.8a079791.Emscripten.clang\n// previewPlanExact is emitted as `view` (eth_call only) — see the generator.\n// =============================================================================\n\nexport const CORE_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"factory\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"mode\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"initCodeHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"deriveAddress\",\n \"outputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"sqrtP\",\n \"type\": \"uint160\"\n },\n {\n \"name\": \"liq\",\n \"type\": \"uint128\"\n },\n {\n \"name\": \"feePpm\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"impactV3Bps\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"out\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"sqrtP\",\n \"type\": \"uint160\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"impactV3FromOut\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"ain\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"rIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"rOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"outSolidly\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"provenShape\",\n \"outputs\": [\n {\n \"name\": \"ok\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"k\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"cfgFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"readDynamicFee\",\n \"outputs\": [\n {\n \"name\": \"fee\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"t0\",\n \"type\": \"address\"\n },\n {\n \"name\": \"t1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"v4mgr\",\n \"type\": \"address\"\n },\n {\n \"name\": \"pid\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"registryDepth18\",\n \"outputs\": [\n {\n \"name\": \"depth\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"cfgFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"solidlyAskOut\",\n \"outputs\": [\n {\n \"name\": \"out\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"ain\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"rIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"rOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"cfgFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"solidlyCurveOut\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"solidlyGetAmountOut\",\n \"outputs\": [\n {\n \"name\": \"out\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOther\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"v4Manager\",\n \"type\": \"address\"\n },\n {\n \"name\": \"decIn1\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"decOther1\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"c\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"universalQuote\",\n \"outputs\": [\n {\n \"name\": \"out\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"depthWad\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"manager\",\n \"type\": \"address\"\n },\n {\n \"name\": \"poolId\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"keyFee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"v4LegOut\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"manager\",\n \"type\": \"address\"\n },\n {\n \"name\": \"poolId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"v4SqrtAndLiq\",\n \"outputs\": [\n {\n \"name\": \"sqrtP\",\n \"type\": \"uint160\"\n },\n {\n \"name\": \"liq\",\n \"type\": \"uint128\"\n },\n {\n \"name\": \"lpFee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"protoFee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"int24\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"manager\",\n \"type\": \"address\"\n },\n {\n \"name\": \"poolId\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"v4WalkOut\",\n \"outputs\": [\n {\n \"name\": \"out\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n] as const;\n\nexport const HUB_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"HubE\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"added\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"Bridge_\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"ControlRenounced\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"key\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"name\": \"pool\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Evicted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"factory\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": false,\n \"name\": \"mode\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Factory_\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"name\": \"paused\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"PausedSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"key\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"kind\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Registered\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"name\": \"role\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": false,\n \"name\": \"who\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"idx\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"c0\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"c1\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"fee\",\n \"type\": \"uint24\"\n }\n ],\n \"name\": \"V4Add\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"key\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"amtIn\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"amtOut\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Volume\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"t\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"addBridge\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"factory\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"mode\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"initHash\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"fees\",\n \"type\": \"uint24[]\"\n },\n {\n \"name\": \"spacings\",\n \"type\": \"int24[]\"\n }\n ],\n \"name\": \"addFactory\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"c0\",\n \"type\": \"address\"\n },\n {\n \"name\": \"c1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"addV4\",\n \"outputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"h\",\n \"type\": \"address\"\n },\n {\n \"name\": \"ok\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"allowHook\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"i\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"bridge\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"bridgeCount\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"c0\",\n \"type\": \"address\"\n },\n {\n \"name\": \"c1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n }\n ],\n \"name\": \"claimV4\",\n \"outputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"discoverFor\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"token0\",\n \"type\": \"address\"\n },\n {\n \"name\": \"token1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hits\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"factoryCount\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getActivePools\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"token0\",\n \"type\": \"address\"\n },\n {\n \"name\": \"token1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"out\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getPool\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getPsi\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getSlot\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"h\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hookPaused\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"admin_\",\n \"type\": \"address\"\n },\n {\n \"name\": \"v4Manager_\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"t\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isBridgeToken\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"h\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isHookLive\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"t\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isRoutableBridge\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"keyOf\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pools\",\n \"type\": \"address[]\"\n },\n {\n \"name\": \"tAs\",\n \"type\": \"address[]\"\n },\n {\n \"name\": \"tBs\",\n \"type\": \"address[]\"\n }\n ],\n \"name\": \"psisOf\",\n \"outputs\": [\n {\n \"name\": \"ps\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amtIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"amtOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"depthWad\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"recordSwap\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"idx\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"removeBridge\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceControl\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"seedPool\",\n \"outputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\"\n },\n {\n \"name\": \"ok\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setOperator\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"b\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setPaused\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"r\",\n \"type\": \"address\"\n },\n {\n \"name\": \"s\",\n \"type\": \"address\"\n },\n {\n \"name\": \"q\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setRoles\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"m\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setV4Manager\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"v4CodeOf\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"v4EntryCount\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"v4PoolManager\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"QuoterE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"SolverE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"RouterE\",\n \"type\": \"error\"\n }\n] as const;\n\nexport const SOLVER_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"SolverE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"findBestRoutePlan\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"best\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"fallbackRoute\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"hasFallback\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"plan\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"hub\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"QuoterE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"HubE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"RouterE\",\n \"type\": \"error\"\n }\n] as const;\n\nexport const QUOTER_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"QuoterE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"entries\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"batchQuote\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"previews\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"i\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"bridgeAt\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"bridgesCount\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"hub\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"t\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isBridge\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewAndEncode\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"pv\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"call\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewAndEncodeWithMinOut\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"pv\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"call\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewPlan\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"pv\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"fallbackRoute\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"hasFallback\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewPlanExact\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"exactOut\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewPlanWithMinOut\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"pv\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"fallbackRoute\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"hasFallback\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewRoute\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"solver\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"unlockCallback\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"SolverE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"HubE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"RouterE\",\n \"type\": \"error\"\n }\n] as const;\n\nexport const ROUTER_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"RouterE\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"name\": \"id\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": false,\n \"name\": \"who\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Cfg\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"quoted\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"realized\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"floorUsed\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ExecutionProof\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"toT1\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"toT2\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Fee\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"name\": \"paused\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"PausedSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"eta\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"RescueQueued\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Rescued\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"amountOut\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"legs\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Swap\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"admin\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"cancelRescue\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"controlRenounced\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"executeRescue\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"hub\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"permit2\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"queueRescue\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceControl\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"rescueEta\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"selfExecutePrePulled\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"a\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setAdmin\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"b\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setPaused\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"p\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setPermit2\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"t1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"t2\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setTreasuries\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"w\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setWeth\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"solver\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"swapBestExactIn\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"swapExactIn\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"swapExactInNative\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"permitted\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"permit\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"swapExactInWithPermit2\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"treasury1\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"treasury2\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"unlockCallback\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"weth\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"QuoterE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"SolverE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"HubE\",\n \"type\": \"error\"\n }\n] as const;\n\nexport const BLAZE_ERRORS_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"QuoterE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"SolverE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"HubE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"RouterE\",\n \"type\": \"error\"\n }\n] as const;\n\nexport const ABI_SOURCE_REVISION = \"07c85636f4116f98ddcfffb66e4477d7da7e9928\" as const;\n","// =============================================================================\n// ABIs. The protocol ABIs are GENERATED from the BlazePhoenix-Dex sources\n// (scripts/gen-abis.mjs) — the Route/Hop/Leg/Preview tuples are exactly the\n// compiled ones, so a decoded route round-trips verbatim into the Router.\n// The 1.x deployments share every function the SDK calls on them\n// (previewPlan, previewPlanWithMinOut, previewPlanExact, swapExactIn,\n// swapExactInWithPermit2); 2.x-only entry points are gated by version.\n// =============================================================================\n\nexport {\n CORE_ABI, HUB_ABI, SOLVER_ABI, QUOTER_ABI, ROUTER_ABI, BLAZE_ERRORS_ABI, ABI_SOURCE_REVISION,\n} from './abis.generated.js';\n\nexport const ERC20_ABI = [\n { type: 'function', name: 'decimals', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint8' }] },\n { type: 'function', name: 'symbol', stateMutability: 'view', inputs: [], outputs: [{ type: 'string' }] },\n { type: 'function', name: 'name', stateMutability: 'view', inputs: [], outputs: [{ type: 'string' }] },\n {\n type: 'function', name: 'balanceOf', stateMutability: 'view',\n inputs: [{ name: 'owner', type: 'address' }], outputs: [{ type: 'uint256' }],\n },\n {\n type: 'function', name: 'allowance', stateMutability: 'view',\n inputs: [{ name: 'owner', type: 'address' }, { name: 'spender', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n },\n {\n type: 'function', name: 'approve', stateMutability: 'nonpayable',\n inputs: [{ name: 'spender', type: 'address' }, { name: 'amount', type: 'uint256' }],\n outputs: [{ type: 'bool' }],\n },\n] as const;\n\nexport const WETH_ABI = [\n { type: 'function', name: 'deposit', stateMutability: 'payable', inputs: [], outputs: [] },\n {\n type: 'function', name: 'withdraw', stateMutability: 'nonpayable',\n inputs: [{ name: 'wad', type: 'uint256' }], outputs: [],\n },\n] as const;\n\nconst SOLVENCY_REPORT = [\n { name: 'backing', type: 'uint256' },\n { name: 'owed', type: 'uint256' },\n { name: 'surplus', type: 'uint256' },\n { name: 'deficit', type: 'uint256' },\n { name: 'solvent', type: 'bool' },\n { name: 'collateralRatioWad', type: 'uint256' },\n { name: 'totalStaked', type: 'uint256' },\n { name: 'totalDebt', type: 'uint256' },\n { name: 'rewardReserve', type: 'uint256' },\n { name: 'protocolReserve', type: 'uint256' },\n { name: 'pendingDistribution', type: 'uint256' },\n { name: 'totalBadDebt', type: 'uint256' },\n { name: 'totalUncollectedInterest', type: 'uint256' },\n] as const;\n\n/** The staking engine's proof-of-solvency surface (BlazePhoenixStaking 3.x). */\nexport const STAKING_SOLVENCY_ABI = [\n {\n type: 'function', name: 'solvency', stateMutability: 'view', inputs: [],\n outputs: [{ name: 'r', type: 'tuple', components: SOLVENCY_REPORT }],\n },\n { type: 'function', name: 'isSolvent', stateMutability: 'view', inputs: [], outputs: [{ type: 'bool' }] },\n] as const;\n","// =============================================================================\n// Phoenix Check — the deterministic verdicts every quote carries. Everything\n// is derived from the on-chain preview: no oracle, no third-party price, no\n// fabrication. Fails closed — a route that cannot execute is 'blocked'.\n// =============================================================================\n\nimport type { Address, Preview, QuoteChecks, Route, Verdict } from './types.js';\n\nexport const HARD_IMPACT_BPS = 2_000; // 20% — a bad fill\nexport const CAUTION_IMPACT_BPS = 200; // 2%\n\nconst RANK: Record<Verdict, number> = { ok: 0, caution: 1, danger: 2, blocked: 3 };\nconst worst = (...v: Verdict[]): Verdict => v.reduce((a, b) => (RANK[b] > RANK[a] ? b : a), 'ok' as Verdict);\n\nconst same = (a: string, b: string) => a.toLowerCase() === b.toLowerCase();\n\n/** A route whose first hop does not start in tokenIn, whose last hop does not\n * end in tokenOut, or whose hops do not chain, is not the swap you asked for. */\nexport function routeIsConsistent(route: Route, tokenIn: Address, tokenOut: Address): boolean {\n const h = route.hops;\n if (h.length === 0) return false;\n if (!same(h[0].tokenIn, tokenIn) || !same(h[h.length - 1].tokenOut, tokenOut)) return false;\n for (let i = 1; i < h.length; i++) if (!same(h[i].tokenIn, h[i - 1].tokenOut)) return false;\n return h.every((hop) => hop.legs.length > 0);\n}\n\nexport function phoenixCheck(pv: Preview, tokenIn: Address, tokenOut: Address): QuoteChecks {\n const impactBps = Math.min(10_000, Math.max(0, Number(pv.route.expectedImpactBps) || 0));\n const impact: Verdict = impactBps >= HARD_IMPACT_BPS ? 'danger' : impactBps >= CAUTION_IMPACT_BPS ? 'caution' : 'ok';\n const consistent = routeIsConsistent(pv.route, tokenIn, tokenOut);\n const legs = pv.route.hops.reduce((n, h) => n + h.legs.length, 0);\n const verdict: Verdict = !pv.canExecute || !consistent ? 'blocked' : worst(impact);\n return {\n verdict,\n priceImpact: {\n bps: impactBps,\n verdict: pv.canExecute ? impact : 'blocked',\n hardLineBps: HARD_IMPACT_BPS,\n cautionBps: CAUTION_IMPACT_BPS,\n note: 'Governing price impact of the on-chain route. At or above the hard line this is a bad fill.',\n },\n ironFloor: {\n enforcedOnChain: true,\n armed: pv.effectiveMinOut > 0n,\n ironFloor: pv.ironFloor,\n effectiveMinOut: pv.effectiveMinOut,\n note: 'The Router re-derives its own output floors at execution and hard-clamps them; a caller can only tighten, never relax.',\n },\n routeShape: {\n consistent,\n hops: pv.route.hops.length,\n legs,\n note: consistent\n ? 'The route starts in tokenIn, ends in tokenOut and every hop chains into the next.'\n : 'The route does not connect tokenIn to tokenOut — refused client-side.',\n },\n crossCheck: {\n basis: 'Quoter preview via eth_call on YOUR RPC',\n reproducible: true,\n note: 'Computed by the contract that settles the swap, read through your own node. Compare against an independent price source to spot depth on venues this route does not read.',\n },\n disclaimer: 'Deterministic checks derived from on-chain state, not financial advice. \"blocked\" is a real answer — we fail closed rather than guess.',\n };\n}\n","// =============================================================================\n// Chain metadata — the parts of a chain that never move: ids, explorers, the\n// canonical wrapped-native and dollar tokens. Contract ADDRESSES are not here:\n// they are versioned, and live in deployments.ts (embedded snapshot) and in\n// the site's registry (GET https://blazephoenix.xyz/api/deployments).\n//\n// The SDK ships NO RPC endpoints and NO keys. Every read goes through the node\n// YOU configure — see rpc.ts. That is the whole point of 1.0.\n// =============================================================================\n\nexport const API_BASE = 'https://blazephoenix.xyz';\n\n/** Where the live, versioned deployment registry is published. Static JSON —\n * no RPC is ever performed on your behalf by the site. */\nexport const DEPLOYMENTS_URL = `${API_BASE}/api/deployments`;\n\nexport type SupportedChainId = 1 | 8453 | 10 | 42161 | 4663;\n\nexport const SUPPORTED_CHAIN_IDS: readonly SupportedChainId[] = [8453, 1, 10, 42161, 4663];\n\nexport interface ChainInfo {\n chainId: SupportedChainId;\n name: string;\n /** Short env-var friendly key: BASE, ETHEREUM, OPTIMISM, ARBITRUM, ROBINHOOD. */\n key: string;\n explorer: string;\n weth: `0x${string}`;\n /** The chain's canonical dollar asset (USDG on Robinhood Chain). */\n usdc: `0x${string}`;\n bzpx?: `0x${string}`;\n /** BlazePhoenix staking engine, where live. */\n staking?: `0x${string}`;\n /** Approximate seconds per block — used to size log scans. */\n blockTime: number;\n}\n\nexport const CHAINS: Record<SupportedChainId, ChainInfo> = {\n 1: {\n chainId: 1,\n name: 'Ethereum',\n key: 'ETHEREUM',\n explorer: 'https://etherscan.io',\n weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n usdc: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n blockTime: 12,\n },\n 8453: {\n chainId: 8453,\n name: 'Base',\n key: 'BASE',\n explorer: 'https://basescan.org',\n weth: '0x4200000000000000000000000000000000000006',\n usdc: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n bzpx: '0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483',\n staking: '0x3f60C7aa0c36a78D200405feBE143d2Cf3fA0c77',\n blockTime: 2,\n },\n 10: {\n chainId: 10,\n name: 'Optimism',\n key: 'OPTIMISM',\n explorer: 'https://optimistic.etherscan.io',\n weth: '0x4200000000000000000000000000000000000006',\n usdc: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',\n blockTime: 2,\n },\n 42161: {\n chainId: 42161,\n name: 'Arbitrum',\n key: 'ARBITRUM',\n explorer: 'https://arbiscan.io',\n weth: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n usdc: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',\n blockTime: 0.25,\n },\n // Robinhood Chain — the dollar asset is USDG, not USDC; the `usdc` field\n // carries the chain's canonical dollar token. Explorer is Blockscout.\n 4663: {\n chainId: 4663,\n name: 'Robinhood',\n key: 'ROBINHOOD',\n explorer: 'https://robinhoodchain.blockscout.com',\n weth: '0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73',\n usdc: '0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168',\n blockTime: 2,\n },\n};\n\nconst ALIASES: Record<string, SupportedChainId> = {\n '1': 1, eth: 1, ethereum: 1, mainnet: 1,\n '8453': 8453, base: 8453,\n '10': 10, op: 10, optimism: 10,\n '42161': 42161, arb: 42161, arbitrum: 42161, 'arbitrum-one': 42161,\n '4663': 4663, rh: 4663, robinhood: 4663, 'robinhood-chain': 4663,\n};\n\n/** Accepts a chain id (number or numeric string) or a human alias. */\nexport function resolveChain(chain: number | string): SupportedChainId {\n const id = ALIASES[String(chain).trim().toLowerCase()];\n if (!id) {\n throw new Error(\n `Unsupported chain \"${chain}\" — use 8453/base, 1/eth, 10/optimism, `\n + `42161/arbitrum or 4663/robinhood`,\n );\n }\n return id;\n}\n\n/** Non-throwing variant, for config parsing. */\nexport function tryResolveChain(chain: number | string): SupportedChainId | undefined {\n return ALIASES[String(chain).trim().toLowerCase()];\n}\n\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' as const;\n\n/** The native-ETH sentinel accepted anywhere a token is (the Router trades\n * ERC-20s: native input is wrapped by `swapExactInNative` on 2.x routers). */\nexport const NATIVE_TOKEN = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' as const;\n\n/** Canonical Permit2 (same address on every chain; the Router's default). */\nexport const PERMIT2 = '0x000000000022D473030F116dDEE9F6B43aC78BA3' as const;\n\n/** Protocol fee in bps. Since 2026-08-22 it is charged ONCE per route on the\n * first bridge currency the Router holds; `preview.protocolFee` reports its\n * effect on the output in tokenOut. */\nexport const FEE_BPS = 28;\n\n/** Router event topic0 hashes. Verified against the ABIs by `npm test`. */\nexport const SWAP_TOPIC0 =\n '0xd6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf7760413' as const;\n/** 1.x routers only — the fee-exempt surplus promise died with the 2.x fee model. */\nexport const SURPLUS_TOPIC0 =\n '0x1a3afef0f067eb51a6bfec6ab3625a4408dd8c3571b72836483e68feb70d1026' as const;\n/** 2.x routers: quoted vs realised vs floor, emitted beside every Swap. */\nexport const EXECUTION_PROOF_TOPIC0 =\n '0xb5a62bcb8753e37706da20862f2a32a16831ef0144567eb15b1da49547e9f84c' as const;\n/** 2.x routers: what was charged, in which token, split between treasuries. */\nexport const FEE_TOPIC0 =\n '0x18fa25e22e0f1f39ef2130081363ba86a1259e598e669558683dabfc15bfe731' as const;\n","// =============================================================================\n// YOUR RPC — the only road to the chain.\n//\n// The SDK ships no endpoints and no keys, and it never routes a read through\n// blazephoenix.xyz. Every eth_call goes from your process to your node:\n//\n// rpc: 'https://your-base-node.example/KEY' one node (its own chain)\n// rpc: ['https://node-a.example', 'https://node-b.example'] your nodes, in fallback order\n// rpc: window.ethereum the user's wallet (EIP-1193)\n// rpc: http('https://…', { batch: true }) any viem Transport\n// rpc: { base: '…', 1: ['…', '…'], arbitrum: wallet } one entry per chain\n//\n// A single (non-map) source answers for whatever chain the node reports. The\n// SDK asks each node for eth_chainId once and refuses to quote a chain's\n// contracts on another chain's node — a wrong-chain read returns garbage or a\n// confusing revert, never a quote you can trust.\n// =============================================================================\n\nimport {\n createPublicClient, custom, fallback, http, webSocket,\n type PublicClient, type Transport,\n} from 'viem';\nimport { BlazeError } from './errors.js';\nimport { CHAINS, SUPPORTED_CHAIN_IDS, resolveChain, tryResolveChain, type SupportedChainId } from './constants.js';\n\n/** Anything with an EIP-1193 `request` — a wallet provider, a hardware bridge… */\nexport interface Eip1193Like {\n request: (args: { method: string; params?: unknown }) => Promise<unknown>;\n}\n\nexport type RpcSource = string | readonly string[] | Eip1193Like | Transport;\nexport type RpcConfig = RpcSource | { readonly [chain: string]: RpcSource | undefined };\n\nexport interface TransportOptions {\n /** Per-request timeout in ms (default 10000). */\n timeoutMs?: number;\n /** Retries per endpoint on transient failures (default 2). */\n retries?: number;\n /** JSON-RPC batching on http endpoints (default false — not every provider supports it). */\n batch?: boolean;\n}\n\nconst isTransport = (v: unknown): v is Transport => typeof v === 'function';\nconst isEip1193 = (v: unknown): v is Eip1193Like =>\n !!v && typeof v === 'object' && typeof (v as Eip1193Like).request === 'function';\nconst isSource = (v: unknown): v is RpcSource =>\n typeof v === 'string' || Array.isArray(v) || isTransport(v) || isEip1193(v);\n\n/** A URL we are willing to talk to: https/wss anywhere, http/ws only on a\n * local node (your own anvil / geth on localhost). Never javascript:, data:… */\nexport function isAllowedRpcUrl(url: string): boolean {\n let u: URL;\n try { u = new URL(url.trim()); } catch { return false; }\n if (u.protocol === 'https:' || u.protocol === 'wss:') return true;\n if (u.protocol === 'http:' || u.protocol === 'ws:') {\n return u.hostname === 'localhost' || u.hostname === '127.0.0.1' || u.hostname === '[::1]';\n }\n return false;\n}\n\nfunction urlTransport(url: string, o: Required<TransportOptions>): Transport {\n if (!isAllowedRpcUrl(url)) {\n throw new BlazeError('bad_request', `refusing RPC URL \"${redact(url)}\": use https:// or wss:// (http/ws only for localhost)`);\n }\n const u = url.trim();\n return u.startsWith('ws')\n ? webSocket(u, { timeout: o.timeoutMs, retryCount: o.retries })\n : http(u, { timeout: o.timeoutMs, retryCount: o.retries, batch: o.batch });\n}\n\n/** Keys live in RPC URLs (…/v2/KEY). Never print them. */\nexport function redact(url: string): string {\n try {\n const u = new URL(url);\n const path = u.pathname.length > 1 ? '/…' : '';\n return `${u.protocol}//${u.host}${path}`;\n } catch {\n return '<invalid url>';\n }\n}\n\n/** Every URL inside a message, redacted. A transport's error text quotes the URL it called,\n * key and all, so a message is scrubbed before it leaves the router. */\nexport function scrubUrls(text: string): string {\n return text.replace(/\\b(?:https?|wss?):\\/\\/[^\\s\"'<>]+/gi, (m) => redact(m));\n}\n\nexport function transportFrom(src: RpcSource, opts: TransportOptions = {}): Transport {\n const o: Required<TransportOptions> = {\n timeoutMs: opts.timeoutMs ?? 10_000,\n retries: opts.retries ?? 2,\n batch: opts.batch ?? false,\n };\n if (isTransport(src)) return src;\n if (isEip1193(src)) return custom(src, { retryCount: o.retries });\n if (typeof src === 'string') return urlTransport(src, o);\n if (Array.isArray(src)) {\n const list = (src as readonly string[]).map((u) => u.trim()).filter(Boolean);\n if (list.length === 0) throw new BlazeError('rpc_required', 'empty RPC list');\n if (list.length === 1) return urlTransport(list[0], o);\n // Retries are spent per endpoint; the fallback itself walks YOUR list.\n return fallback(list.map((u) => urlTransport(u, { ...o, retries: 0 })), { retryCount: o.retries });\n }\n throw new BlazeError('bad_request', 'unrecognised rpc value');\n}\n\nconst RPC_HELP =\n 'BlazePhoenix SDK 1.x runs 100% on YOUR RPC — it ships no endpoints and never reads through our servers. '\n + 'Pass `rpc` (a URL, a list of URLs, a wallet provider or a viem transport), e.g. '\n + \"new BlazePhoenix({ rpc: { base: process.env.BASE_RPC_URL } }). Any provider's free tier is enough.\";\n\ninterface Slot {\n source: RpcSource;\n /** undefined → a single source that serves whatever chain it reports. */\n chainId?: SupportedChainId;\n client?: PublicClient;\n verified?: Promise<number>;\n}\n\n/** Resolves chain → PublicClient over the user's configured RPC, verifying the\n * node's chain id once per source. */\nexport class RpcRouter {\n private readonly perChain = new Map<SupportedChainId, Slot>();\n private readonly single?: Slot;\n private readonly opts: TransportOptions;\n\n constructor(config: RpcConfig | undefined, opts: TransportOptions = {}) {\n this.opts = opts;\n if (config === undefined || config === null || config === '') return;\n if (isSource(config)) {\n this.single = { source: config };\n return;\n }\n if (typeof config !== 'object') throw new BlazeError('bad_request', 'rpc must be a URL, a list, a provider, a transport or a per-chain map');\n for (const [k, v] of Object.entries(config)) {\n if (v === undefined || v === null || v === '') continue;\n const id = tryResolveChain(k);\n if (!id) throw new BlazeError('bad_request', `rpc map: unknown chain \"${k}\"`);\n if (!isSource(v)) throw new BlazeError('bad_request', `rpc map: bad value for chain \"${k}\"`);\n this.perChain.set(id, { source: v, chainId: id });\n }\n }\n\n /** Chains with an explicitly configured RPC (a single source reports none). */\n configuredChains(): SupportedChainId[] {\n return SUPPORTED_CHAIN_IDS.filter((id) => this.perChain.has(id));\n }\n\n hasAny(): boolean {\n return !!this.single || this.perChain.size > 0;\n }\n\n /** The chain to use when a request names none: the only configured one. */\n async defaultChain(): Promise<SupportedChainId> {\n if (this.perChain.size === 1) return [...this.perChain.keys()][0];\n if (this.single && this.perChain.size === 0) {\n const id = await this.verify(this.single);\n const c = tryResolveChain(id);\n if (!c) throw new BlazeError('rpc_chain_mismatch', `your RPC serves chain ${id}, which BlazePhoenix is not deployed on`);\n return c;\n }\n throw new BlazeError('bad_request', 'this request needs `chain` (several RPCs are configured)');\n }\n\n private slotFor(chainId: SupportedChainId): Slot {\n const s = this.perChain.get(chainId) ?? this.single;\n if (!s) {\n throw new BlazeError('rpc_required',\n `no RPC configured for ${CHAINS[chainId].name} (${chainId}). ${RPC_HELP}`,\n { details: { chainId } });\n }\n return s;\n }\n\n private clientOf(s: Slot): PublicClient {\n if (!s.client) {\n s.client = createPublicClient({ transport: transportFrom(s.source, this.opts) }) as PublicClient;\n }\n return s.client;\n }\n\n private verify(s: Slot): Promise<number> {\n if (!s.verified) {\n const c = this.clientOf(s);\n s.verified = c.getChainId().catch((e: unknown) => {\n s.verified = undefined; // a transient failure must not poison the slot forever\n throw new BlazeError('rpc_error', `your RPC did not answer eth_chainId: ${scrubUrls(String((e as Error)?.message ?? e))}`, { cause: e });\n });\n }\n return s.verified;\n }\n\n /** A PublicClient for `chain`, over YOUR node, after checking it really is that chain. */\n async client(chain: SupportedChainId | number | string): Promise<PublicClient> {\n const chainId = resolveChain(chain);\n const s = this.slotFor(chainId);\n const actual = await this.verify(s);\n if (actual !== chainId) {\n throw new BlazeError('rpc_chain_mismatch',\n `your RPC serves chain ${actual}, not ${CHAINS[chainId].name} (${chainId}) — `\n + 'configure one per chain: rpc: { base: \"…\", eth: \"…\" }',\n { details: { expected: chainId, actual } });\n }\n return this.clientOf(s);\n }\n}\n\n/**\n * Read RPC configuration from environment variables (Node, Workers, CI):\n *\n * BLAZEPHOENIX_RPC_BASE / _ETHEREUM / _OPTIMISM / _ARBITRUM / _ROBINHOOD\n * BLAZEPHOENIX_RPC_8453 (by id works too)\n * BLAZEPHOENIX_RPC_URL — a single node (answers for the chain it reports)\n *\n * Each value may hold several URLs separated by commas (your fallback order).\n */\nexport function rpcFromEnv(env: Record<string, string | undefined> = globalEnv()): RpcConfig | undefined {\n const split = (v: string) => {\n const list = v.split(',').map((s) => s.trim()).filter(Boolean);\n return list.length === 1 ? list[0] : list;\n };\n const map: Record<string, RpcSource> = {};\n for (const id of SUPPORTED_CHAIN_IDS) {\n const v = env[`BLAZEPHOENIX_RPC_${CHAINS[id].key}`] ?? env[`BLAZEPHOENIX_RPC_${id}`];\n if (v && v.trim()) map[String(id)] = split(v);\n }\n const single = env.BLAZEPHOENIX_RPC_URL;\n if (Object.keys(map).length > 0) {\n if (single && single.trim()) {\n throw new BlazeError('bad_request',\n 'set either BLAZEPHOENIX_RPC_URL (one node) or the per-chain BLAZEPHOENIX_RPC_<CHAIN> variables, not both');\n }\n return map;\n }\n return single && single.trim() ? split(single) : undefined;\n}\n\nfunction globalEnv(): Record<string, string | undefined> {\n const p = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process;\n return p?.env ?? {};\n}\n","// =============================================================================\n// Errors — every failure has a stable machine `code`, and every protocol\n// revert (RouterE / QuoterE / SolverE / HubE) is decoded into a sentence taken\n// from the contract's own source comments.\n// =============================================================================\n\nimport { decodeErrorResult } from 'viem';\nimport { BLAZE_ERRORS_ABI } from './abis.generated.js';\nimport type { DecodedError, Hex } from './types.js';\nimport { scrubUrls } from './rpc.js';\n\n/** A copy of an error chain that keeps names and messages but no URL in any of them:\n * transport errors quote the URL they called (key and all) in message, details and url fields. */\nfunction scrubCause(c: unknown, depth = 0): unknown {\n if (c === undefined || c === null || depth > 8) return undefined;\n if (!(c instanceof Error)) return scrubUrls(String(c));\n const inner = scrubCause((c as { cause?: unknown }).cause, depth + 1);\n const out = new Error(scrubUrls(c.message), inner !== undefined ? { cause: inner } : undefined);\n out.name = c.name;\n return out;\n}\n\nexport type BlazeErrorCode =\n | 'rpc_required'\n | 'rpc_chain_mismatch'\n | 'rpc_error'\n | 'bad_request'\n | 'not_deployed'\n | 'unsupported_by_version'\n | 'no_route'\n | 'not_executable'\n | 'calldata_mismatch'\n | 'deployment_unverified'\n | 'reverted'\n | 'wallet_chain_mismatch';\n\nexport class BlazeError extends Error {\n readonly code: BlazeErrorCode;\n readonly details?: Record<string, unknown>;\n readonly revert?: DecodedError;\n constructor(code: BlazeErrorCode, message: string, opts: { details?: Record<string, unknown>; revert?: DecodedError; cause?: unknown } = {}) {\n super(message, opts.cause !== undefined ? { cause: scrubCause(opts.cause) } : undefined);\n this.name = 'BlazeError';\n this.code = code;\n this.details = opts.details;\n this.revert = opts.revert;\n }\n}\n\n// Meanings copied from the contracts' own comments (BlazePhoenix-Dex src/).\nconst ROUTER: Record<number, string> = {\n 1: 'unauthorized',\n 2: 'router paused',\n 3: 'bad input (route, amount, entry-point preconditions)',\n 4: 'deadline passed',\n 5: 'slippage: output below the minimum (your userMinOut or the on-chain floor)',\n 6: 'callback authentication failed',\n 7: 'reentrancy refused',\n 8: 'swap failed (a leg delivered nothing / fee would consume the leg)',\n 9: 'disallowed or paused V4 hook on the route',\n 10: 'userMinOut is 0 with a non-zero amountIn — a real minimum is mandatory',\n 11: 'a V4 leg disagrees with its own key (direction or pool id)',\n 13: 'fee-on-transfer token on a V3-only route',\n 14: 'rescue not queued or still inside the 48h timelock',\n 15: 'a swap settled without paying the protocol fee',\n 16: 'the fee was paid twice on an anchored route',\n};\nconst QUOTER: Record<number, string> = {\n 3: 'constructed with a zero address',\n 4: 'batch larger than 32 entries',\n 6: 'callback from an unexpected caller',\n};\nconst SOLVER: Record<number, string> = {\n 4: 'bad input: zero address, identical tokens or zero amount',\n 5: 'no route: no executable path for this pair and size',\n};\nconst HUB: Record<number, string> = {\n 1: 'unauthorized', 2: 'hub paused', 3: 'zero address', 4: 'bad input',\n 5: 'unknown pool / invalid kind', 6: 'max slots', 7: 'bridge cap', 8: 'hook denied',\n 9: 'V4 claim ineligible',\n};\n\nconst TABLES: Record<string, { contract: DecodedError['contract']; codes: Record<number, string> }> = {\n RouterE: { contract: 'Router', codes: ROUTER },\n QuoterE: { contract: 'Quoter', codes: QUOTER },\n SolverE: { contract: 'Solver', codes: SOLVER },\n HubE: { contract: 'Hub', codes: HUB },\n};\n\nexport function describeProtocolError(name: string, code?: number): DecodedError {\n const t = TABLES[name];\n if (!t) return { contract: 'unknown', name, ...(code !== undefined ? { code } : {}), reason: name };\n return {\n contract: t.contract,\n name,\n ...(code !== undefined ? { code } : {}),\n reason: code !== undefined ? (t.codes[code] ?? `code ${code}`) : name,\n };\n}\n\n/** Decode raw revert data (0x…) into a protocol error, if it is one of ours. */\nexport function decodeRevertData(data: Hex | undefined): DecodedError | undefined {\n if (!data || data === '0x' || data.length < 10) return undefined;\n try {\n const e = decodeErrorResult({ abi: BLAZE_ERRORS_ABI, data });\n const code = Array.isArray(e.args) && e.args.length ? Number(e.args[0]) : undefined;\n return describeProtocolError(e.errorName, code);\n } catch {\n return undefined;\n }\n}\n\n/** Walk any error (viem's nested ContractFunctionExecutionError, a raw RPC\n * error, …) and return the protocol revert inside it, if there is one. */\nexport function decodeBlazeError(err: unknown): DecodedError | undefined {\n const seen = new Set<unknown>();\n let cur: unknown = err;\n while (cur && typeof cur === 'object' && !seen.has(cur)) {\n seen.add(cur);\n const e = cur as { data?: unknown; errorName?: string; args?: unknown[]; raw?: Hex; cause?: unknown };\n // viem ContractFunctionRevertedError: `data` is the decoded { errorName, args }.\n const d = e.data as { errorName?: string; args?: unknown[] } | Hex | undefined;\n if (d && typeof d === 'object' && typeof d.errorName === 'string') {\n const code = Array.isArray(d.args) && d.args.length ? Number(d.args[0]) : undefined;\n return describeProtocolError(d.errorName, code);\n }\n if (typeof d === 'string') {\n const r = decodeRevertData(d as Hex);\n if (r) return r;\n }\n if (typeof e.raw === 'string') {\n const r = decodeRevertData(e.raw);\n if (r) return r;\n }\n cur = e.cause;\n }\n return undefined;\n}\n\n/** True when the error is a node refusing to serve (network / 429 / 5xx),\n * as opposed to the contract answering with a revert. */\nexport function isTransportError(err: unknown): boolean {\n const s = String((err as { name?: string })?.name ?? '') + ' ' + String((err as Error)?.message ?? '');\n return /HttpRequestError|TimeoutError|WebSocketRequestError|fetch failed|ECONN|ETIMEDOUT|429|rate limit/i.test(s)\n && !decodeBlazeError(err);\n}\n","// =============================================================================\n// Router calldata — encode, decode, and VERIFY.\n//\n// On 2.x the Quoter hands back the exact bytes that execute its preview\n// (previewAndEncode). The Quoter's own header says what that is worth: \"a\n// compromised Quoter fools the interface\". So the SDK never forwards those\n// bytes blind — it decodes them with the Router ABI and checks every field\n// against what YOU asked for before anything reaches a wallet.\n// =============================================================================\n\nimport { decodeFunctionData, encodeFunctionData } from 'viem';\nimport { ROUTER_ABI } from './abis.js';\nimport { routeIsConsistent } from './checks.js';\nimport { BlazeError } from './errors.js';\nimport type { Address, Hex, Route } from './types.js';\n\nexport function encodeSwapExactIn(route: Route, amountIn: bigint, userMinOut: bigint, recipient: Address, deadline: bigint): Hex {\n return encodeFunctionData({\n abi: ROUTER_ABI,\n functionName: 'swapExactIn',\n args: [route as never, amountIn, userMinOut, recipient, deadline],\n });\n}\n\nexport function encodeSwapExactInNative(route: Route, userMinOut: bigint, recipient: Address, deadline: bigint): Hex {\n return encodeFunctionData({\n abi: ROUTER_ABI,\n functionName: 'swapExactInNative',\n args: [route as never, userMinOut, recipient, deadline],\n });\n}\n\nexport function encodeSwapBestExactIn(\n tokenIn: Address, tokenOut: Address, amountIn: bigint, userMinOut: bigint, recipient: Address, deadline: bigint,\n): Hex {\n return encodeFunctionData({\n abi: ROUTER_ABI,\n functionName: 'swapBestExactIn',\n args: [tokenIn, tokenOut, amountIn, userMinOut, recipient, deadline],\n });\n}\n\nexport interface DecodedSwapExactIn {\n route: Route;\n amountIn: bigint;\n userMinOut: bigint;\n recipient: Address;\n deadline: bigint;\n}\n\n/** Decode swapExactIn calldata (throws on any other selector). */\nexport function decodeSwapExactIn(data: Hex): DecodedSwapExactIn {\n const d = decodeFunctionData({ abi: ROUTER_ABI, data });\n if (d.functionName !== 'swapExactIn') {\n throw new BlazeError('calldata_mismatch', `expected swapExactIn calldata, got ${d.functionName}`);\n }\n const [route, amountIn, userMinOut, recipient, deadline] = d.args as unknown as [Route, bigint, bigint, Address, bigint];\n return { route, amountIn, userMinOut, recipient, deadline };\n}\n\n/** Deterministic structural fingerprint of a route (bigint-safe). */\nexport function routeFingerprint(r: Route): string {\n return JSON.stringify(r, (_k, v) => (typeof v === 'bigint' ? `${v}n` : typeof v === 'string' ? v.toLowerCase() : v));\n}\n\nexport interface SwapExpectation {\n tokenIn: Address;\n tokenOut: Address;\n amountIn: bigint;\n recipient: Address;\n deadline: bigint;\n /** The encoded minimum must be at least this (the SDK's slippage floor). */\n minOutAtLeast: bigint;\n /** When given, the encoded route must be exactly this one (the previewed route). */\n route?: Route;\n}\n\n/**\n * Verify Quoter-produced swapExactIn bytes against the caller's intent.\n * Returns the decoded call; throws `calldata_mismatch` listing every field\n * that disagrees. Pure — no I/O.\n */\nexport function verifySwapExactIn(data: Hex, want: SwapExpectation): DecodedSwapExactIn {\n const got = decodeSwapExactIn(data);\n const bad: string[] = [];\n if (got.amountIn !== want.amountIn) bad.push(`amountIn ${got.amountIn} ≠ ${want.amountIn}`);\n if (got.recipient.toLowerCase() !== want.recipient.toLowerCase()) bad.push(`recipient ${got.recipient} ≠ ${want.recipient}`);\n if (got.deadline !== want.deadline) bad.push(`deadline ${got.deadline} ≠ ${want.deadline}`);\n if (got.userMinOut < want.minOutAtLeast) bad.push(`userMinOut ${got.userMinOut} < required ${want.minOutAtLeast}`);\n if (got.userMinOut === 0n) bad.push('userMinOut is zero');\n if (!routeIsConsistent(got.route, want.tokenIn, want.tokenOut)) bad.push('route does not connect tokenIn → tokenOut');\n if (want.route && routeFingerprint(got.route) !== routeFingerprint(want.route)) bad.push('encoded route differs from the previewed route');\n if (bad.length) {\n throw new BlazeError('calldata_mismatch',\n `Quoter calldata refused — it does not execute what you asked for: ${bad.join('; ')}`,\n { details: { mismatches: bad } });\n }\n return got;\n}\n\n/** Re-encode verified swapExactIn bytes with a TIGHTER minimum. The route and\n * every other field are carried over from the Quoter's own encoding. */\nexport function tightenMinOut(data: Hex, minOut: bigint): Hex {\n const d = decodeSwapExactIn(data);\n if (minOut <= d.userMinOut) return data;\n return encodeSwapExactIn(d.route, d.amountIn, minOut, d.recipient, d.deadline);\n}\n\n/** minOut from a net quote and a slippage tolerance, never below the floor. */\nexport function minOutFor(netOut: bigint, slippageBps: number, floor: bigint): bigint {\n if (!Number.isInteger(slippageBps) || slippageBps < 0 || slippageBps > 5_000) {\n throw new BlazeError('bad_request', 'slippageBps must be an integer between 0 and 5000');\n }\n const bySlip = netOut - (netOut * BigInt(slippageBps)) / 10_000n;\n return bySlip > floor ? bySlip : floor;\n}\n","// =============================================================================\n// Versioned deployment registry — which contracts, of which protocol version,\n// live at which address on which chain.\n//\n// THREE LAYERS, applied in this order (see registry.ts):\n// 1. EMBEDDED — this file. Ships inside the package, works fully offline.\n// A non-zero address here is a PIN: nothing fetched at runtime can move it.\n// 2. REMOTE — GET https://blazephoenix.xyz/api/deployments (static JSON,\n// same schema). Fills in what the embedded snapshot does not know yet —\n// e.g. the 2.0.0 addresses the day they are deployed — so integrators\n// pick up a new deployment without a new SDK release. Remote-sourced\n// contract sets are cross-checked ON YOUR RPC before first use.\n// 3. OVERRIDES — your own `contracts` option. Always wins (your fork, your\n// testnet, your pinned audit target).\n//\n// Versions are protocol versions, not SDK versions: 1.0.0 is what is live on\n// chain today; 2.0.0 is the final Core/Hub/Solver/Quoter/Router generation\n// from BlazePhoenix-Dex (every contract's VERSION() returns \"2.0.0\").\n// =============================================================================\n\nimport { ZERO_ADDRESS, type SupportedChainId } from './constants.js';\nimport type { Address } from './types.js';\n\nexport interface ContractSet {\n /** BlazePhoenixCore — the deployed library the Solver/Quoter/Router link.\n * Zero on 1.x (no separately published Core address). */\n core: Address;\n hub: Address;\n solver: Address;\n router: Address;\n quoter: Address;\n}\n\nexport type DeploymentStatus = 'live' | 'pending' | 'deprecated';\n\nexport interface DeploymentVersion {\n /** Protocol semver, e.g. \"2.0.0\" — what the contracts' VERSION() returns (2.x). */\n version: string;\n status: DeploymentStatus;\n /** BlazePhoenix-Dex revision the bytecode was built from, when known. */\n source?: string;\n notes?: string;\n chains: Partial<Record<SupportedChainId, ContractSet>>;\n}\n\nexport interface DeploymentRegistry {\n schema: 1;\n updatedAt?: string;\n versions: DeploymentVersion[];\n}\n\nconst Z = ZERO_ADDRESS;\nconst pending = (): ContractSet => ({ core: Z, hub: Z, solver: Z, router: Z, quoter: Z });\n\n/** The snapshot shipped with this SDK release. */\nexport const EMBEDDED_DEPLOYMENTS: DeploymentRegistry = {\n schema: 1,\n updatedAt: '2026-09-25',\n versions: [\n {\n version: '2.0.0',\n status: 'pending',\n source: 'blazephoenixxyz-crypto/Blaze-Phoenix-Dex@07c8563',\n notes: 'Final generation (Core/Hub/Solver/Quoter/Router). Addresses arrive through the registry the day they are deployed.',\n chains: { 8453: pending(), 1: pending(), 10: pending(), 42161: pending(), 4663: pending() },\n },\n {\n version: '1.0.0',\n status: 'live',\n notes: 'The generation live on chain since launch.',\n chains: {\n 1: {\n core: Z,\n hub: '0xc4FA9a5720fe3294D3AA9fc427E2a760591E57ae',\n solver: '0xc124d91258db0C14bf13b826CF64E16bfEA8a73e',\n router: '0xE1aE5f49013920CF71De8CED4043e14C4d63416b',\n quoter: '0x4a20AA0912388ff7A9221Ab6BFC224cc20Baa0c3',\n },\n 8453: {\n core: Z,\n hub: '0x428554DEe93A1B8B5Bc6Fd19adDAfe55106fc04C',\n solver: '0xB1902990260975dD4C89ad74B1f317bc100CB830',\n router: '0x2a779f9Be49aac57495A8B6467Cc325a8a47Eb9f',\n quoter: '0x4cEF0615614B212895F45Aa1D4833B16666E18d3',\n },\n 10: {\n core: Z,\n hub: '0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483',\n solver: '0x0c0d96B237FABa8FE5e8aE77754Ef29109D2B33f',\n router: '0x7262e7483ab6f0db7b8f90eC3a9de3B02Ab36F6A',\n quoter: '0xfB18EF6f62A0278A273Af4b7A46b454F9E482dc2',\n },\n 42161: {\n core: Z,\n hub: '0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483',\n solver: '0x0c0d96B237FABa8FE5e8aE77754Ef29109D2B33f',\n router: '0x7262e7483ab6f0db7b8f90eC3a9de3B02Ab36F6A',\n quoter: '0xfB18EF6f62A0278A273Af4b7A46b454F9E482dc2',\n },\n 4663: {\n core: Z,\n hub: '0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483',\n solver: '0x0c0d96B237FABa8FE5e8aE77754Ef29109D2B33f',\n router: '0x7262e7483ab6f0db7b8f90eC3a9de3B02Ab36F6A',\n quoter: '0xE1aE5f49013920CF71De8CED4043e14C4d63416b',\n },\n },\n },\n ],\n};\n\nexport const CONTRACT_KEYS = ['core', 'hub', 'solver', 'router', 'quoter'] as const;\nexport type ContractKey = (typeof CONTRACT_KEYS)[number];\n\nconst ADDR = /^0x[0-9a-fA-F]{40}$/;\nconst SEMVER = /^(\\d+)\\.(\\d+)\\.(\\d+)$/;\n\nexport const isZero = (a: string | undefined): boolean => !a || /^0x0{40}$/i.test(a);\n\n/** A set is executable once its Router and Quoter exist. */\nexport function isDeployed(set: Partial<ContractSet> | undefined): set is ContractSet {\n return !!set && !isZero(set.router) && !isZero(set.quoter);\n}\n\nexport function parseVersion(v: string): [number, number, number] | undefined {\n const m = SEMVER.exec(v.trim());\n return m ? [Number(m[1]), Number(m[2]), Number(m[3])] : undefined;\n}\n\nexport function compareVersions(a: string, b: string): number {\n const pa = parseVersion(a) ?? [0, 0, 0];\n const pb = parseVersion(b) ?? [0, 0, 0];\n for (let i = 0; i < 3; i++) if (pa[i] !== pb[i]) return pa[i] - pb[i];\n return 0;\n}\n\n/**\n * Version selector:\n * 'latest' — the highest version DEPLOYED on the chain (default)\n * '2' | '2.0' — the highest deployed 2.x / 2.0.x\n * '2.0.0' — exactly that version\n */\nexport type VersionSelector = 'latest' | (string & {});\n\nexport function matchesSelector(version: string, selector: VersionSelector): boolean {\n const s = selector.trim().replace(/^v/i, '');\n if (s === 'latest' || s === '') return true;\n const parts = s.split('.');\n const vp = version.split('.');\n return parts.every((p, i) => p === vp[i]);\n}\n\nexport function isValidSelector(selector: string): boolean {\n const s = selector.trim().replace(/^v/i, '');\n return s === 'latest' || /^\\d+(\\.\\d+){0,2}$/.test(s);\n}\n\n/** What a protocol version can do — the SDK adapts its calls to it. */\nexport interface VersionFeatures {\n /** Quoter.previewAndEncode[WithMinOut]: preview + ready Router calldata in one call. */\n previewAndEncode: boolean;\n /** Quoter.batchQuote: up to 32 previews in one eth_call. */\n batchQuote: boolean;\n /** Router.swapExactInNative: pay with native ETH, no pre-wrap. */\n nativeEntry: boolean;\n /** Router.swapBestExactIn: solve + execute in the same transaction. */\n swapBest: boolean;\n /** VERSION(), hub(), solver() getters used for on-chain verification. */\n introspection: boolean;\n /** Router emits ExecutionProof (2.x) vs Surplus (1.x). */\n executionProof: boolean;\n}\n\nexport function featuresOf(version: string): VersionFeatures {\n const major = parseVersion(version)?.[0] ?? 0;\n const v2 = major >= 2;\n return {\n previewAndEncode: v2,\n batchQuote: v2,\n nativeEntry: v2,\n swapBest: v2,\n introspection: v2,\n executionProof: v2,\n };\n}\n\n/** Strict structural validation of a registry document (remote input). */\nexport function validateRegistry(raw: unknown): { ok: true; registry: DeploymentRegistry } | { ok: false; error: string } {\n if (!raw || typeof raw !== 'object') return { ok: false, error: 'registry is not an object' };\n const r = raw as Record<string, unknown>;\n if (r.schema !== 1) return { ok: false, error: `unsupported registry schema ${String(r.schema)}` };\n if (!Array.isArray(r.versions)) return { ok: false, error: 'versions must be an array' };\n const versions: DeploymentVersion[] = [];\n for (const v of r.versions as unknown[]) {\n if (!v || typeof v !== 'object') return { ok: false, error: 'version entry is not an object' };\n const e = v as Record<string, unknown>;\n if (typeof e.version !== 'string' || !parseVersion(e.version)) {\n return { ok: false, error: `bad version ${String(e.version)}` };\n }\n const status = e.status === 'live' || e.status === 'pending' || e.status === 'deprecated' ? e.status : 'live';\n if (!e.chains || typeof e.chains !== 'object') return { ok: false, error: `version ${e.version}: chains missing` };\n const chains: Partial<Record<SupportedChainId, ContractSet>> = {};\n for (const [cid, set] of Object.entries(e.chains as Record<string, unknown>)) {\n const id = Number(cid) as SupportedChainId;\n if (![1, 8453, 10, 42161, 4663].includes(id)) continue; // unknown chains are ignored, not fatal\n if (!set || typeof set !== 'object') return { ok: false, error: `version ${e.version} chain ${cid}: not an object` };\n const s = set as Record<string, unknown>;\n const out: Partial<ContractSet> = {};\n for (const k of CONTRACT_KEYS) {\n const a = s[k] ?? ZERO_ADDRESS;\n if (typeof a !== 'string' || !ADDR.test(a)) {\n return { ok: false, error: `version ${e.version} chain ${cid}: ${k} is not an address` };\n }\n out[k] = a as Address;\n }\n chains[id] = out as ContractSet;\n }\n versions.push({\n version: e.version,\n status,\n ...(typeof e.source === 'string' ? { source: e.source } : {}),\n ...(typeof e.notes === 'string' ? { notes: e.notes } : {}),\n chains,\n });\n }\n return {\n ok: true,\n registry: { schema: 1, ...(typeof r.updatedAt === 'string' ? { updatedAt: r.updatedAt } : {}), versions },\n };\n}\n","// =============================================================================\n// Resilience core — the SDK ships the same meta-patterns the BlazePhoenix\n// edge runs, so every integration is polite and outage-proof by default:\n//\n// • singleflight — identical concurrent calls share ONE request\n// • micro-TTL — a tiny preview cache (default 1s ≈ intra-block) absorbs\n// hot loops without ever serving stale execution data\n// • retry — transient failures (network, 429, 502/503) retry with\n// backoff and RESPECT the server's retry-after header\n//\n// Execution-grade requests (recipient / exact=1) are never TTL-cached here,\n// mirroring the server's own red line.\n// =============================================================================\n\nconst INFLIGHT = new Map<string, Promise<unknown>>();\nconst MEM = new Map<string, { at: number; data: unknown }>();\n\n/** Coalesce concurrent identical work — leader runs, followers share. */\nexport async function singleflight<T>(key: string, fn: () => Promise<T>): Promise<T> {\n const existing = INFLIGHT.get(key) as Promise<T> | undefined;\n if (existing) return existing;\n const flight = fn();\n INFLIGHT.set(key, flight as Promise<unknown>);\n try {\n return await flight;\n } finally {\n INFLIGHT.delete(key);\n }\n}\n\nexport function memGet(key: string, ttlMs: number, now = Date.now()): unknown | undefined {\n if (ttlMs <= 0) return undefined;\n const hit = MEM.get(key);\n return hit && now - hit.at < ttlMs ? hit.data : undefined;\n}\n\nexport function memPut(key: string, data: unknown, now = Date.now()): void {\n MEM.set(key, { at: now, data });\n // Bound the cache — a long-running bot must never leak memory here.\n if (MEM.size > 500) {\n const oldest = MEM.keys().next().value;\n if (oldest !== undefined) MEM.delete(oldest);\n }\n}\n\nexport interface RetryOptions {\n /** Extra attempts after the first (default 2). */\n retries?: number;\n /** Base backoff in ms; grows ×3 per attempt with jitter (default 250). */\n backoffMs?: number;\n timeoutMs?: number;\n}\n\nconst sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));\n\nfunction retryDelayMs(res: Response | undefined, attempt: number, base: number): number {\n const ra = Number(res?.headers.get('retry-after'));\n if (Number.isFinite(ra) && ra > 0) return Math.min(10_000, ra * 1000);\n return base * 3 ** attempt + Math.floor(Math.random() * base);\n}\n\n/** Quote reads are idempotent — transient failures deserve another shot. */\nfunction isTransient(res: Response | undefined): boolean {\n return !res || res.status === 429 || res.status === 502 || res.status === 503 || res.status === 504;\n}\n\n/** fetch with timeout + polite retries. Returns the final Response (which may\n * still be an error status — non-transient statuses are never retried). */\nexport async function resilientFetch(\n fetchFn: typeof fetch,\n url: string,\n init: RequestInit | undefined,\n opts: RetryOptions = {},\n): Promise<Response> {\n const { retries = 2, backoffMs = 250, timeoutMs = 15_000 } = opts;\n let lastErr: unknown;\n for (let attempt = 0; attempt <= retries; attempt++) {\n let res: Response | undefined;\n // An explicit controller + ref'd timer rather than AbortSignal.timeout():\n // the latter's timer is unref'd in Node (a hung request with nothing else\n // pending would never time out) and is missing from older browsers.\n const ctrl = new AbortController();\n const timer = setTimeout(() => ctrl.abort(), timeoutMs);\n try {\n res = await fetchFn(url, { ...init, signal: ctrl.signal });\n if (!isTransient(res)) return res;\n if (attempt === retries) return res;\n } catch (e) {\n lastErr = e;\n if (attempt === retries) throw e;\n } finally {\n clearTimeout(timer);\n }\n await sleep(retryDelayMs(res, attempt, backoffMs));\n }\n /* istanbul ignore next -- loop always returns or throws */\n throw lastErr instanceof Error ? lastErr : new Error('request failed');\n}\n\n/** Test hook. */\nexport function __resetResilience(): void {\n INFLIGHT.clear();\n MEM.clear();\n}\n","// =============================================================================\n// Registry — resolves (chain, version selector) → a contract set, merging the\n// embedded snapshot, the site's published registry, and your overrides.\n//\n// TRUST MODEL (why fetching addresses from a website is not blind trust):\n// • Embedded non-zero addresses are PINS. A remote document that disagrees\n// with a pin is ignored for that field and reported via onWarning.\n// • Remote can only fill what the snapshot does not know (zero addresses,\n// new 2.x+ versions — a new 1.x could not be verified on-chain, so it is\n// refused). The client verifies every remote-sourced set on YOUR RPC\n// before its first use (code exists, VERSION() matches, the Quoter and the\n// Router point at the same Hub and Solver) and fails closed otherwise.\n// • Your `contracts` overrides always win and are never second-guessed.\n// • mode: 'embedded' turns the network fetch off entirely.\n// =============================================================================\n\nimport {\n CONTRACT_KEYS, EMBEDDED_DEPLOYMENTS, compareVersions, featuresOf, isDeployed, isValidSelector, isZero,\n matchesSelector, validateRegistry,\n type ContractSet, type DeploymentRegistry, type DeploymentStatus, type VersionSelector,\n} from './deployments.js';\nimport { DEPLOYMENTS_URL, SUPPORTED_CHAIN_IDS, tryResolveChain, type SupportedChainId } from './constants.js';\nimport { BlazeError } from './errors.js';\nimport { resilientFetch, singleflight } from './resilience.js';\nimport type { Address } from './types.js';\n\nexport type DeploymentSource = 'embedded' | 'remote' | 'override';\n\nexport interface ResolvedDeployment {\n chainId: SupportedChainId;\n version: string;\n status: DeploymentStatus | 'custom';\n contracts: ContractSet;\n /** Where the router/quoter pair came from — the part you send money to. */\n source: DeploymentSource;\n}\n\nexport interface ContractOverride extends Partial<ContractSet> {\n /** Protocol version these contracts speak (selects the ABI features). */\n version?: string;\n}\n\nexport type ContractOverrides = { readonly [chain: string]: ContractOverride | undefined };\n\nexport interface RegistryOptions {\n /** 'auto' (default): embedded + the site's registry, refreshed every ttlMs.\n * 'embedded': never touch the network — only this SDK's snapshot + overrides. */\n mode?: 'auto' | 'embedded';\n url?: string;\n /** Refresh interval for the remote document (default 10 min). */\n ttlMs?: number;\n fetchFn?: typeof fetch;\n /** Fetch timeout (default 3000 ms). Only the FIRST fetch of a process can\n * delay a call, and by at most this much; later refreshes run in the\n * background (stale-while-revalidate). */\n timeoutMs?: number;\n /** Called for every pin conflict or rejected document — never silently. */\n onWarning?: (msg: string) => void;\n}\n\ntype FieldSource = Record<string, DeploymentSource>; // `${version}|${chain}|${key}` → source\n\nexport class Registry {\n private doc: DeploymentRegistry;\n private fieldSource: FieldSource = {};\n private fetchedAt = 0;\n private lastError?: string;\n private readonly mode: 'auto' | 'embedded';\n private readonly url: string;\n private readonly ttlMs: number;\n private readonly fetchFn?: typeof fetch;\n private readonly timeoutMs: number;\n private readonly warn: (msg: string) => void;\n private readonly overrides = new Map<SupportedChainId, ContractOverride>();\n\n constructor(opts: RegistryOptions = {}, overrides?: ContractOverrides) {\n this.mode = opts.mode ?? 'auto';\n this.url = opts.url ?? DEPLOYMENTS_URL;\n this.ttlMs = opts.ttlMs ?? 10 * 60_000;\n this.fetchFn = opts.fetchFn ?? (globalThis.fetch as typeof fetch | undefined);\n this.timeoutMs = opts.timeoutMs ?? 3_000;\n this.warn = opts.onWarning ?? (() => {});\n this.doc = structuredClone(EMBEDDED_DEPLOYMENTS);\n for (const v of this.doc.versions) {\n for (const [cid, set] of Object.entries(v.chains)) {\n for (const k of CONTRACT_KEYS) {\n if (!isZero((set as ContractSet)[k])) this.fieldSource[`${v.version}|${cid}|${k}`] = 'embedded';\n }\n }\n }\n for (const [k, o] of Object.entries(overrides ?? {})) {\n if (!o) continue;\n const id = tryResolveChain(k);\n if (!id) throw new BlazeError('bad_request', `contracts override: unknown chain \"${k}\"`);\n for (const key of CONTRACT_KEYS) {\n const a = o[key];\n if (a !== undefined && !/^0x[0-9a-fA-F]{40}$/.test(a)) {\n throw new BlazeError('bad_request', `contracts override for ${k}: ${key} is not an address`);\n }\n }\n if (o.version !== undefined && !isValidSelector(o.version)) {\n throw new BlazeError('bad_request', `contracts override for ${k}: bad version \"${o.version}\"`);\n }\n this.overrides.set(id, o);\n }\n }\n\n /** Before a lookup: the first time, wait for the remote document (bounded\n * by timeoutMs); afterwards serve the current state and revalidate in the\n * background when stale. Never throws. */\n async ready(): Promise<void> {\n if (this.mode !== 'auto' || !this.fetchFn) return;\n if (!this.fetchedAt) { await this.refresh(); return; }\n if (Date.now() - this.fetchedAt >= this.ttlMs) void this.refresh();\n }\n\n /** Fetch the remote document when stale (mode 'auto'). Never throws: a\n * failed fetch keeps the last good state and is reported via onWarning. */\n async refresh(force = false): Promise<void> {\n if (this.mode !== 'auto' || !this.fetchFn) return;\n if (!force && this.fetchedAt && Date.now() - this.fetchedAt < this.ttlMs) return;\n // Concurrent refreshes of the same URL (several clients in one process)\n // share ONE download — but every instance merges the document into its\n // OWN state. (Sharing the merge too would leave the followers stale.)\n try {\n const raw = await singleflight(`registry ${this.url}`, async () => {\n const res = await resilientFetch(this.fetchFn!, this.url, { headers: { accept: 'application/json' } }, {\n retries: 0, timeoutMs: this.timeoutMs,\n });\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n const body = (await res.json()) as unknown;\n // The site wraps nothing today, but accept { registry: … } too.\n return body && typeof body === 'object' && 'registry' in (body as object)\n ? (body as { registry: unknown }).registry : body;\n });\n this.merge(raw);\n this.lastError = undefined;\n } catch (e) {\n this.lastError = (e as Error)?.message ?? String(e);\n this.warn(`deployment registry fetch failed (${this.lastError}) — using the embedded snapshot`);\n } finally {\n // Back off on failure too: a dead URL must not be hit on every quote.\n this.fetchedAt = Date.now();\n }\n }\n\n /** Merge a registry document under the pinning rules. Exposed for tests and\n * for callers who distribute the registry through their own channel. */\n merge(raw: unknown): void {\n const v = validateRegistry(raw);\n if (!v.ok) {\n this.warn(`deployment registry rejected: ${v.error}`);\n return;\n }\n for (const rv of v.registry.versions) {\n let local = this.doc.versions.find((x) => x.version === rv.version);\n // A version this SDK has never heard of is only accepted when it can be\n // verified on the user's RPC before use: 2.x contracts answer VERSION(),\n // hub() and solver(); a \"new\" 1.x set could only be checked for code at\n // an address — not enough to route anyone's approvals to it.\n if (!local && !featuresOf(rv.version).introspection) {\n this.warn(`registry announced unknown version ${rv.version}, which cannot be verified on-chain — ignored`);\n continue;\n }\n if (!local) {\n local = { version: rv.version, status: rv.status, chains: {} };\n if (rv.source) local.source = rv.source;\n if (rv.notes) local.notes = rv.notes;\n this.doc.versions.push(local);\n } else {\n local.status = rv.status;\n if (rv.source && !local.source) local.source = rv.source;\n }\n for (const [cid, rset] of Object.entries(rv.chains) as [string, ContractSet][]) {\n const id = Number(cid) as SupportedChainId;\n const cur: ContractSet = local.chains[id] ?? {\n core: '0x0000000000000000000000000000000000000000',\n hub: '0x0000000000000000000000000000000000000000',\n solver: '0x0000000000000000000000000000000000000000',\n router: '0x0000000000000000000000000000000000000000',\n quoter: '0x0000000000000000000000000000000000000000',\n };\n for (const k of CONTRACT_KEYS) {\n const key = `${rv.version}|${cid}|${k}`;\n const incoming = rset[k];\n if (this.fieldSource[key] === 'embedded') {\n if (!isZero(incoming) && incoming.toLowerCase() !== cur[k].toLowerCase()) {\n this.warn(`registry tried to move pinned ${k} of ${rv.version} on chain ${cid} `\n + `(${cur[k]} → ${incoming}) — ignored`);\n }\n continue;\n }\n if (isZero(incoming)) continue;\n cur[k] = incoming;\n this.fieldSource[key] = 'remote';\n }\n local.chains[id] = cur;\n }\n }\n this.doc.versions.sort((a, b) => compareVersions(b.version, a.version));\n if (v.registry.updatedAt) this.doc.updatedAt = v.registry.updatedAt;\n }\n\n /** The merged document (embedded + remote), overrides NOT applied. */\n snapshot(): DeploymentRegistry {\n return structuredClone(this.doc);\n }\n\n status(): { mode: 'auto' | 'embedded'; url: string; fetchedAt: number | null; lastError?: string } {\n return { mode: this.mode, url: this.url, fetchedAt: this.fetchedAt || null, ...(this.lastError ? { lastError: this.lastError } : {}) };\n }\n\n /** Every deployed version on a chain, newest first. */\n versionsOn(chainId: SupportedChainId): string[] {\n return this.doc.versions\n .filter((v) => isDeployed(v.chains[chainId]))\n .map((v) => v.version)\n .sort((a, b) => compareVersions(b, a));\n }\n\n resolve(chainId: SupportedChainId, selector: VersionSelector = 'latest'): ResolvedDeployment {\n if (!isValidSelector(selector)) throw new BlazeError('bad_request', `bad version selector \"${selector}\"`);\n const ov = this.overrides.get(chainId);\n const sel = ov?.version && (selector === 'latest') ? ov.version : selector;\n\n const candidates = this.doc.versions\n .filter((v) => matchesSelector(v.version, sel) && isDeployed(v.chains[chainId]))\n .sort((a, b) => compareVersions(b.version, a.version));\n const pick = candidates[0];\n\n if (ov && (ov.router || ov.quoter)) {\n // An override may stand on its own (your deployment) or patch a known one.\n const base: ContractSet = pick ? { ...pick.chains[chainId]! } : {\n core: '0x0000000000000000000000000000000000000000',\n hub: '0x0000000000000000000000000000000000000000',\n solver: '0x0000000000000000000000000000000000000000',\n router: '0x0000000000000000000000000000000000000000',\n quoter: '0x0000000000000000000000000000000000000000',\n };\n const contracts = { ...base };\n for (const k of CONTRACT_KEYS) if (ov[k]) contracts[k] = ov[k] as Address;\n if (!isDeployed(contracts)) {\n throw new BlazeError('bad_request', `contracts override for chain ${chainId} needs both router and quoter`);\n }\n const version = ov.version && /^\\d+\\.\\d+\\.\\d+$/.test(ov.version)\n ? ov.version\n : pick?.version ?? this.latestKnownVersion(ov.version);\n return { chainId, version, status: 'custom', contracts, source: 'override' };\n }\n\n if (!pick) {\n const deployed = this.versionsOn(chainId);\n throw new BlazeError('not_deployed',\n `no BlazePhoenix deployment matching version \"${selector}\" on chain ${chainId}`\n + (deployed.length ? ` (deployed: ${deployed.join(', ')})` : ''),\n { details: { chainId, selector, deployed } });\n }\n const set = pick.chains[chainId]!;\n const src = (k: string) => this.fieldSource[`${pick.version}|${chainId}|${k}`] ?? 'embedded';\n const source: DeploymentSource = src('router') === 'remote' || src('quoter') === 'remote' ? 'remote' : 'embedded';\n return { chainId, version: pick.version, status: pick.status, contracts: { ...set }, source };\n }\n\n private latestKnownVersion(selector?: string): string {\n const all = this.doc.versions.map((v) => v.version).sort((a, b) => compareVersions(b, a));\n const m = selector ? all.find((v) => matchesSelector(v, selector)) : undefined;\n return m ?? all[0] ?? '2.0.0';\n }\n\n /** chains × versions table (for dashboards, the MCP, debugging). */\n table(): { chainId: SupportedChainId; version: string; status: string; contracts: ContractSet; source: DeploymentSource }[] {\n const rows: { chainId: SupportedChainId; version: string; status: string; contracts: ContractSet; source: DeploymentSource }[] = [];\n for (const v of this.doc.versions) {\n for (const id of SUPPORTED_CHAIN_IDS) {\n const set = v.chains[id];\n if (!set) continue;\n const s = this.fieldSource[`${v.version}|${id}|router`] ?? 'embedded';\n rows.push({ chainId: id, version: v.version, status: isDeployed(set) ? v.status : 'pending', contracts: { ...set }, source: s });\n }\n }\n return rows;\n }\n}\n","// =============================================================================\n// Token helpers — approve / wrap / unwrap calldata, Permit2 typed data, and\n// human-amount conversion. Pure: no I/O, no RPC.\n// =============================================================================\n\nimport { encodeFunctionData } from 'viem';\nimport { ERC20_ABI, ROUTER_ABI, WETH_ABI } from './abis.js';\nimport { CHAINS, PERMIT2, resolveChain } from './constants.js';\nimport { Registry } from './registry.js';\nimport type { Address, ChainRef, Hex, Route, TxRequest } from './types.js';\n\n/** Unlimited allowance (2^256 − 1). Prefer EXACT amounts. */\nexport const MAX_UINT256 = (1n << 256n) - 1n;\n\nconst HEX_ADDR = /^0x[0-9a-fA-F]{40}$/;\n\nexport interface ApproveOptions {\n /** ERC-20 to approve (the swap's tokenIn). */\n token: Address;\n chain: ChainRef;\n /** Allowance in base units. Be exact; MAX_UINT256 opts into unlimited. */\n amount: bigint;\n /** Who may pull the tokens. Default: the latest deployed Router in this\n * SDK's embedded snapshot — when using the client, prefer `plan.approval`,\n * which names the Router of the version you actually quoted. */\n spender?: Address;\n}\n\nexport function buildApproveTx(opts: ApproveOptions): TxRequest {\n const chainId = resolveChain(opts.chain);\n const spender = opts.spender ?? new Registry({ mode: 'embedded' }).resolve(chainId).contracts.router;\n if (!HEX_ADDR.test(opts.token)) throw new Error(`invalid token address: ${opts.token}`);\n if (!HEX_ADDR.test(spender)) throw new Error(`invalid spender address: ${spender}`);\n if (opts.amount < 0n || opts.amount > MAX_UINT256) throw new Error('amount out of uint256 range');\n return {\n chainId,\n to: opts.token,\n data: encodeFunctionData({ abi: ERC20_ABI, functionName: 'approve', args: [spender, opts.amount] }),\n value: 0n,\n };\n}\n\n/** Wrap native ETH → WETH (needed on 1.x routers, which have no native entry). */\nexport function buildWrapTx(chain: ChainRef, amount: bigint): TxRequest {\n const chainId = resolveChain(chain);\n if (amount <= 0n) throw new Error('amount must be > 0');\n return { chainId, to: CHAINS[chainId].weth, data: encodeFunctionData({ abi: WETH_ABI, functionName: 'deposit' }), value: amount };\n}\n\n/** Unwrap WETH → native ETH (the Router always delivers WETH for ETH out). */\nexport function buildUnwrapTx(chain: ChainRef, amount: bigint): TxRequest {\n const chainId = resolveChain(chain);\n if (amount <= 0n) throw new Error('amount must be > 0');\n return {\n chainId, to: CHAINS[chainId].weth,\n data: encodeFunctionData({ abi: WETH_ABI, functionName: 'withdraw', args: [amount] }), value: 0n,\n };\n}\n\n// ── Permit2 (SignatureTransfer) — one historical approval of Permit2 per token,\n// then every swap carries a signature instead of a standing allowance. ────\n\nexport function randomPermit2Nonce(): bigint {\n const bytes = new Uint8Array(32);\n globalThis.crypto.getRandomValues(bytes);\n let n = 0n;\n for (const b of bytes) n = (n << 8n) | BigInt(b);\n return n;\n}\n\nexport interface Permit2Transfer {\n permitted: { token: Address; amount: bigint };\n nonce: bigint;\n deadline: bigint;\n}\n\n/** EIP-712 typed data for Permit2 PermitTransferFrom — pass to signTypedData.\n * The spender is the Router (it becomes msg.sender of permitTransferFrom). */\nexport function permit2TypedData(args: {\n chainId: number; token: Address; amount: bigint; spender: Address; nonce: bigint; deadline: bigint;\n}) {\n return {\n domain: { name: 'Permit2', chainId: args.chainId, verifyingContract: PERMIT2 },\n types: {\n PermitTransferFrom: [\n { name: 'permitted', type: 'TokenPermissions' },\n { name: 'spender', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n ],\n TokenPermissions: [\n { name: 'token', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n },\n primaryType: 'PermitTransferFrom' as const,\n message: {\n permitted: { token: args.token, amount: args.amount },\n spender: args.spender,\n nonce: args.nonce,\n deadline: args.deadline,\n },\n };\n}\n\nexport function encodeSwapExactInWithPermit2(\n route: Route, amountIn: bigint, userMinOut: bigint, recipient: Address, deadline: bigint,\n permit: Permit2Transfer, signature: Hex,\n): Hex {\n return encodeFunctionData({\n abi: ROUTER_ABI,\n functionName: 'swapExactInWithPermit2',\n args: [route as never, amountIn, userMinOut, recipient, deadline, permit, signature],\n });\n}\n\n// ── human amounts ──────────────────────────────────────────────────────────\n\n/** \"1.5\" + 18 → 1500000000000000000n. Pure string math — no floats. */\nexport function toBaseUnits(amount: string, decimals: number): bigint {\n if (!Number.isInteger(decimals) || decimals < 0 || decimals > 77) {\n throw new Error(`invalid decimals: ${decimals}`);\n }\n const s = amount.trim();\n const m = /^(\\d+)(?:\\.(\\d+))?$/.exec(s);\n if (!m) throw new Error(`invalid amount: \"${amount}\" (use e.g. \"1.5\")`);\n const [, whole, frac = ''] = m;\n if (frac.length > decimals) {\n throw new Error(`\"${amount}\" has ${frac.length} fractional digits — token only carries ${decimals}`);\n }\n return BigInt(whole) * 10n ** BigInt(decimals) + BigInt(frac.padEnd(decimals, '0') || '0');\n}\n\n/** 1500000000000000000n + 18 → \"1.5\" (trailing zeros trimmed). */\nexport function fromBaseUnits(v: bigint | string, decimals: number, maxDp?: number): string {\n if (!Number.isInteger(decimals) || decimals < 0 || decimals > 77) {\n throw new Error(`invalid decimals: ${decimals}`);\n }\n const n = typeof v === 'bigint' ? v : BigInt(v);\n const neg = n < 0n;\n const abs = neg ? -n : n;\n const base = 10n ** BigInt(decimals);\n const whole = abs / base;\n let frac = (abs % base).toString().padStart(decimals, '0');\n if (maxDp !== undefined) frac = frac.slice(0, Math.max(0, maxDp));\n frac = frac.replace(/0+$/, '');\n return `${neg ? '-' : ''}${whole}${frac ? `.${frac}` : ''}`;\n}\n","// =============================================================================\n// BlazePhoenix client — quote, build, verify, simulate and execute swaps\n// DIRECTLY against the chain, through YOUR RPC. No API in the middle, no key,\n// no BlazePhoenix server in the read path.\n//\n// const blaze = new BlazePhoenix({ rpc: { base: process.env.BASE_RPC_URL } });\n// const q = await blaze.quote({ chain: 'base', tokenIn: 'WETH', tokenOut: 'USDC', amount: '1' });\n// const plan = await blaze.buildSwap({ ...req, recipient: me, from: me });\n// await blaze.execute({ wallet, plan }); // approve (if needed) → simulate → swap\n//\n// On 2.x deployments the Quoter returns the preview AND the Router calldata in\n// one eth_call (previewAndEncode); the SDK decodes those bytes with the ABI and\n// verifies every field before they reach your wallet. On 1.x the SDK encodes\n// the same swapExactIn call locally from the previewed route.\n// =============================================================================\n\nimport {\n decodeFunctionResult, getAddress, parseEventLogs, type PublicClient, type WalletClient,\n} from 'viem';\nimport {\n ERC20_ABI, QUOTER_ABI, ROUTER_ABI, SOLVER_ABI, STAKING_SOLVENCY_ABI,\n} from './abis.js';\nimport {\n encodeSwapBestExactIn, encodeSwapExactIn, encodeSwapExactInNative, minOutFor, tightenMinOut,\n verifySwapExactIn,\n} from './calldata.js';\nimport { phoenixCheck, routeIsConsistent } from './checks.js';\nimport {\n CHAINS, NATIVE_TOKEN, resolveChain, type SupportedChainId,\n} from './constants.js';\nimport { featuresOf, isZero, type VersionFeatures, type VersionSelector } from './deployments.js';\nimport { BlazeError, decodeBlazeError, isTransportError } from './errors.js';\nimport { MAX_UINT256, buildApproveTx, toBaseUnits } from './erc20.js';\nimport {\n Registry, type ContractOverrides, type RegistryOptions, type ResolvedDeployment,\n} from './registry.js';\nimport { memGet, memPut, singleflight } from './resilience.js';\nimport { RpcRouter, rpcFromEnv, type RpcConfig, type TransportOptions, scrubUrls } from './rpc.js';\nimport type {\n Address, ApprovalStep, ExactQuote, Fill, Hex, Preview, Quote, QuoteRequest, Route,\n SimulationResult, SolvencyReport, SwapPlan, SwapRequest, TokenInfo, TxRequest,\n} from './types.js';\n\nexport interface ClientOptions extends TransportOptions {\n /**\n * YOUR RPC — required for anything on-chain. A URL, a list of URLs (your\n * fallback order), an EIP-1193 provider (the user's wallet), a viem\n * Transport, or a per-chain map of any of those. When omitted, the\n * BLAZEPHOENIX_RPC_* environment variables are read (see rpcFromEnv).\n */\n rpc?: RpcConfig;\n /** Protocol version to use: 'latest' (default, per chain), '1', '2', '2.0.0'… */\n version?: VersionSelector;\n /** Your own contract addresses per chain — always win over the registry. */\n contracts?: ContractOverrides;\n /** Deployment registry behaviour (remote refresh on/off, URL, TTL, warnings). */\n registry?: RegistryOptions;\n /** Cross-check remote-sourced deployments on your RPC before first use (default true). */\n verifyRemoteDeployments?: boolean;\n /** Micro-cache for identical PREVIEW quotes, in ms (default 1000; 0 disables).\n * Never applied to buildSwap — execution data is always fresh. */\n cacheTtlMs?: number;\n /** Default slippage for buildSwap in bps (default 50 = 0.5%). */\n slippageBps?: number;\n /** Default deadline horizon for buildSwap in seconds (default 120). */\n deadlineSec?: number;\n /** Max chunk for 2.x on-chain batchQuote (default 8; nodes cap eth_call gas). */\n batchChunk?: number;\n}\n\ninterface Ctx {\n chainId: SupportedChainId;\n dep: ResolvedDeployment;\n features: VersionFeatures;\n client: PublicClient;\n}\n\ninterface ResolvedToken { address: Address; native: boolean }\n\nconst HEX_ADDR = /^0x[0-9a-fA-F]{40}$/;\nconst INT = /^\\d{1,78}$/;\nconst UINT128_MAX = (1n << 128n) - 1n;\n\nexport type BatchItem =\n | { ok: true; quote: Quote }\n | { ok: false; error: { code: string; message: string } };\n\nexport interface ExecuteOptions {\n /** A viem WalletClient with an account (local key, injected wallet, …). */\n wallet: WalletClient;\n /** A plan from buildSwap — or pass `request` and the plan is built now. */\n plan?: SwapPlan;\n request?: SwapRequest;\n /** Rebuild the plan when it is older than this (default 30s). */\n maxQuoteAgeMs?: number;\n /** eth_call the swap from your account before sending (default true). */\n simulate?: boolean;\n /** Wait for receipts (default true). */\n wait?: boolean;\n}\n\nexport interface ExecuteResult {\n plan: SwapPlan;\n approvalHash?: Hex;\n hash: Hex;\n status?: 'success' | 'reverted';\n /** Realised output read from the Router's Swap event (when waited). */\n amountOut?: bigint;\n blockNumber?: bigint;\n}\n\nexport interface DeploymentCheck { name: string; ok: boolean; detail: string }\n\nexport interface DeploymentReport {\n ok: boolean;\n chainId: number;\n version: string;\n source: string;\n contracts: ResolvedDeployment['contracts'];\n checks: DeploymentCheck[];\n}\n\nexport class BlazePhoenix {\n readonly registry: Registry;\n readonly rpc: RpcRouter;\n private readonly version: VersionSelector;\n private readonly verifyRemote: boolean;\n private readonly cacheTtlMs: number;\n private readonly slippageBps: number;\n private readonly deadlineSec: number;\n private readonly batchChunk: number;\n private readonly verified = new Map<string, Promise<void>>();\n private readonly decimals = new Map<string, Promise<number>>();\n\n constructor(opts: ClientOptions = {}) {\n this.rpc = new RpcRouter(opts.rpc ?? rpcFromEnv(), opts);\n this.registry = new Registry(opts.registry, opts.contracts);\n this.version = opts.version ?? 'latest';\n this.verifyRemote = opts.verifyRemoteDeployments ?? true;\n this.cacheTtlMs = opts.cacheTtlMs ?? 1_000;\n this.slippageBps = opts.slippageBps ?? 50;\n this.deadlineSec = opts.deadlineSec ?? 120;\n this.batchChunk = Math.max(1, Math.min(32, opts.batchChunk ?? 8));\n minOutFor(0n, this.slippageBps, 0n); // validates the default early\n checkDeadlineSec(this.deadlineSec);\n }\n\n // ── context ────────────────────────────────────────────────────────────────\n\n private async ctx(req: { chain?: string | number; version?: string }): Promise<Ctx> {\n const chainId = req.chain !== undefined ? resolveChain(req.chain) : await this.rpc.defaultChain();\n await this.registry.ready();\n const dep = this.registry.resolve(chainId, req.version ?? this.version);\n const client = await this.rpc.client(chainId);\n if (dep.source === 'remote' && this.verifyRemote) await this.ensureVerified(dep, client);\n return { chainId, dep, features: featuresOf(dep.version), client };\n }\n\n private ensureVerified(dep: ResolvedDeployment, client: PublicClient): Promise<void> {\n const key = `${dep.chainId}|${dep.version}|${dep.contracts.router}|${dep.contracts.quoter}`;\n let p = this.verified.get(key);\n if (!p) {\n p = this.checkDeployment(dep, client).then((r) => {\n if (!r.ok) {\n const failed = r.checks.filter((c) => !c.ok).map((c) => `${c.name}: ${c.detail}`);\n throw new BlazeError('deployment_unverified',\n `registry deployment ${dep.version} on chain ${dep.chainId} failed on-chain verification — refusing to use it (${failed.join('; ')})`,\n { details: { report: r } });\n }\n });\n p.catch(() => this.verified.delete(key)); // retry next time (it may have been the node)\n this.verified.set(key, p);\n }\n return p;\n }\n\n /** Cross-check a deployment on YOUR RPC: code at every address and, on 2.x,\n * VERSION() and the Hub/Solver wiring of the Quoter, Router and Solver. */\n async verifyDeployment(req: { chain?: string | number; version?: string } = {}): Promise<DeploymentReport> {\n const chainId = req.chain !== undefined ? resolveChain(req.chain) : await this.rpc.defaultChain();\n await this.registry.ready();\n const dep = this.registry.resolve(chainId, req.version ?? this.version);\n const client = await this.rpc.client(chainId);\n return this.checkDeployment(dep, client);\n }\n\n private async checkDeployment(dep: ResolvedDeployment, client: PublicClient): Promise<DeploymentReport> {\n const checks: DeploymentCheck[] = [];\n const c = dep.contracts;\n const named = (['core', 'hub', 'solver', 'router', 'quoter'] as const).filter((k) => !isZero(c[k]));\n const codes = await Promise.all(named.map((k) => client.getCode({ address: c[k] }).catch(() => undefined)));\n named.forEach((k, i) => {\n const code = codes[i];\n checks.push({ name: `code:${k}`, ok: !!code && code !== '0x', detail: code && code !== '0x' ? `${(code.length - 2) / 2} bytes` : 'no code at address' });\n });\n if (featuresOf(dep.version).introspection) {\n // 2.x is verified through its Hub/Solver wiring: an entry without them would skip those checks.\n if (isZero(c.hub)) checks.push({ name: 'hub', ok: false, detail: 'zero address' });\n if (isZero(c.solver)) checks.push({ name: 'solver', ok: false, detail: 'zero address' });\n const eq = (a: string, b: string) => a.toLowerCase() === b.toLowerCase();\n const read = async <T>(fn: () => Promise<T>): Promise<T | undefined> => { try { return await fn(); } catch { return undefined; } };\n const [qv, rv, sv, qh, qs, rh, rs, sh] = await Promise.all([\n read(() => client.readContract({ address: c.quoter, abi: QUOTER_ABI, functionName: 'VERSION' })),\n read(() => client.readContract({ address: c.router, abi: ROUTER_ABI, functionName: 'VERSION' })),\n isZero(c.solver) ? undefined : read(() => client.readContract({ address: c.solver, abi: SOLVER_ABI, functionName: 'VERSION' })),\n read(() => client.readContract({ address: c.quoter, abi: QUOTER_ABI, functionName: 'hub' })),\n read(() => client.readContract({ address: c.quoter, abi: QUOTER_ABI, functionName: 'solver' })),\n read(() => client.readContract({ address: c.router, abi: ROUTER_ABI, functionName: 'hub' })),\n read(() => client.readContract({ address: c.router, abi: ROUTER_ABI, functionName: 'solver' })),\n isZero(c.solver) ? undefined : read(() => client.readContract({ address: c.solver, abi: SOLVER_ABI, functionName: 'hub' })),\n ]);\n checks.push({ name: 'quoter.VERSION', ok: qv === dep.version, detail: `${qv ?? 'unreadable'} (want ${dep.version})` });\n checks.push({ name: 'router.VERSION', ok: rv === dep.version, detail: `${rv ?? 'unreadable'} (want ${dep.version})` });\n if (!isZero(c.solver)) checks.push({ name: 'solver.VERSION', ok: sv === dep.version, detail: `${sv ?? 'unreadable'} (want ${dep.version})` });\n if (!isZero(c.hub)) {\n checks.push({ name: 'quoter.hub', ok: !!qh && eq(qh, c.hub), detail: `${qh ?? 'unreadable'}` });\n checks.push({ name: 'router.hub', ok: !!rh && eq(rh, c.hub), detail: `${rh ?? 'unreadable'}` });\n if (!isZero(c.solver)) checks.push({ name: 'solver.hub', ok: !!sh && eq(sh, c.hub), detail: `${sh ?? 'unreadable'}` });\n }\n if (!isZero(c.solver)) {\n checks.push({ name: 'quoter.solver', ok: !!qs && eq(qs, c.solver), detail: `${qs ?? 'unreadable'}` });\n checks.push({ name: 'router.solver', ok: !!rs && eq(rs, c.solver), detail: `${rs ?? 'unreadable'}` });\n }\n }\n return {\n ok: checks.every((x) => x.ok),\n chainId: dep.chainId, version: dep.version, source: dep.source, contracts: dep.contracts, checks,\n };\n }\n\n // ── tokens & amounts ───────────────────────────────────────────────────────\n\n private resolveToken(chainId: SupportedChainId, ref: string, side: 'tokenIn' | 'tokenOut'): ResolvedToken {\n const s = (ref ?? '').trim();\n if (HEX_ADDR.test(s)) {\n const a = getAddress(s);\n if (a.toLowerCase() === NATIVE_TOKEN.toLowerCase()) return { address: CHAINS[chainId].weth, native: true };\n return { address: a, native: false };\n }\n const c = CHAINS[chainId];\n switch (s.toUpperCase()) {\n case 'ETH': return { address: c.weth, native: true };\n case 'WETH': return { address: c.weth, native: false };\n case 'USDC': case 'USDG': return { address: c.usdc, native: false };\n case 'BZPX':\n if (c.bzpx) return { address: c.bzpx, native: false };\n break;\n default: break;\n }\n throw new BlazeError('bad_request',\n `${side}: \"${ref}\" is not a 0x address or a built-in symbol (ETH, WETH, USDC, BZPX) on ${c.name} — pass the token address`);\n }\n\n private async decimalsOf(client: PublicClient, chainId: number, t: ResolvedToken): Promise<number> {\n if (t.native) return 18;\n const key = `${chainId}|${t.address.toLowerCase()}`;\n let p = this.decimals.get(key);\n if (!p) {\n p = client.readContract({ address: t.address, abi: ERC20_ABI, functionName: 'decimals' }).then(Number);\n p.catch(() => this.decimals.delete(key));\n this.decimals.set(key, p);\n }\n return p;\n }\n\n private async amountOf(client: PublicClient, chainId: number, req: QuoteRequest, tIn: ResolvedToken): Promise<bigint> {\n let v: bigint;\n if (req.amountIn !== undefined && req.amountIn !== null && req.amountIn !== '') {\n if (typeof req.amountIn === 'bigint') v = req.amountIn;\n else if (INT.test(String(req.amountIn).trim())) v = BigInt(String(req.amountIn).trim());\n else throw new BlazeError('bad_request', 'amountIn must be an integer in base units — use `amount` for human units (\"1.5\")');\n } else if (req.amount !== undefined) {\n const d = await this.decimalsOf(client, chainId, tIn).catch((e: unknown) => {\n throw new BlazeError('bad_request', `could not read decimals of ${tIn.address} on your RPC — pass amountIn in base units`, { cause: e });\n });\n try { v = toBaseUnits(req.amount, d); } catch (e) { throw new BlazeError('bad_request', (e as Error).message); }\n } else {\n throw new BlazeError('bad_request', 'pass amountIn (base units) or amount (human units)');\n }\n if (v <= 0n) throw new BlazeError('bad_request', 'amount must be > 0');\n if (v > UINT128_MAX) throw new BlazeError('bad_request', 'amount exceeds uint128 (the Router refuses it)');\n return v;\n }\n\n private async pair(ctx: Ctx, req: QuoteRequest) {\n const tIn = this.resolveToken(ctx.chainId, req.tokenIn, 'tokenIn');\n const tOut = this.resolveToken(ctx.chainId, req.tokenOut, 'tokenOut');\n if (tIn.address.toLowerCase() === tOut.address.toLowerCase()) {\n throw new BlazeError('bad_request', tIn.native !== tOut.native\n ? 'ETH ↔ WETH is a wrap/unwrap, not a swap — use buildWrapTx / buildUnwrapTx'\n : 'tokenIn and tokenOut are the same token');\n }\n const amountIn = await this.amountOf(ctx.client, ctx.chainId, req, tIn);\n let userMinOut = 0n;\n if (req.userMinOut !== undefined && req.userMinOut !== '') {\n const s = String(req.userMinOut).trim();\n if (typeof req.userMinOut !== 'bigint' && !INT.test(s)) throw new BlazeError('bad_request', 'userMinOut must be an integer in base units');\n userMinOut = BigInt(req.userMinOut);\n }\n return { tIn, tOut, amountIn, userMinOut };\n }\n\n // ── quotes ─────────────────────────────────────────────────────────────────\n\n private wrapReadError(e: unknown, what: string): never {\n if (e instanceof BlazeError) throw e;\n const revert = decodeBlazeError(e);\n if (revert) {\n throw new BlazeError('no_route', `${what}: ${revert.name}(${revert.code ?? ''}) — ${revert.reason}`, { revert, cause: e });\n }\n if (isTransportError(e)) {\n throw new BlazeError('rpc_error', `${what}: your RPC failed (${(e as Error)?.message?.split('\\n')[0] ?? e})`, { cause: e });\n }\n const msg = (e as Error)?.message?.split('\\n')[0] ?? String(e);\n if (/revert/i.test(msg)) throw new BlazeError('no_route', `${what}: execution reverted`, { cause: e });\n throw new BlazeError('rpc_error', `${what}: ${msg}`, { cause: e });\n }\n\n private buildQuote(ctx: Ctx, tIn: ResolvedToken, tOut: ResolvedToken, amountIn: bigint, pv: Preview, fb: Route | undefined, blockNumber?: bigint): Quote {\n return {\n chainId: ctx.chainId,\n version: ctx.dep.version,\n quoter: ctx.dep.contracts.quoter,\n router: ctx.dep.contracts.router,\n deploymentSource: ctx.dep.source,\n tokenIn: tIn.address,\n tokenOut: tOut.address,\n amountIn,\n nativeIn: tIn.native,\n nativeOut: tOut.native,\n amountOut: pv.netOut,\n preview: pv,\n route: pv.route,\n ...(fb ? { fallbackRoute: fb } : {}),\n checks: phoenixCheck(pv, tIn.address, tOut.address),\n ...(blockNumber !== undefined ? { blockNumber } : {}),\n quotedAt: Date.now(),\n };\n }\n\n private async readPreview(ctx: Ctx, tIn: Address, tOut: Address, amountIn: bigint, userMinOut: bigint, blockNumber?: bigint) {\n const base = { address: ctx.dep.contracts.quoter, abi: QUOTER_ABI, ...(blockNumber !== undefined ? { blockNumber } : {}) } as const;\n try {\n const r = userMinOut > 0n\n ? await ctx.client.readContract({ ...base, functionName: 'previewPlanWithMinOut', args: [tIn, tOut, amountIn, userMinOut] })\n : await ctx.client.readContract({ ...base, functionName: 'previewPlan', args: [tIn, tOut, amountIn] });\n const [pv, fallbackRoute, hasFallback] = r as unknown as [Preview, Route, boolean];\n return { pv, fb: hasFallback ? fallbackRoute : undefined };\n } catch (e) {\n this.wrapReadError(e, 'quote');\n }\n }\n\n /** The Quoter's preview, read on your RPC. Throws BlazeError('no_route') when\n * the Solver finds no executable path. */\n async quote(req: QuoteRequest): Promise<Quote> {\n const ctx = await this.ctx(req);\n const { tIn, tOut, amountIn, userMinOut } = await this.pair(ctx, req);\n const key = `Q|${ctx.chainId}|${ctx.dep.version}|${ctx.dep.contracts.quoter}|${tIn.address}|${tIn.native}|${tOut.address}|${tOut.native}|${amountIn}|${userMinOut}|${req.blockNumber ?? ''}`;\n const cacheable = this.cacheTtlMs > 0 && req.blockNumber === undefined;\n if (cacheable) {\n const hit = memGet(key, this.cacheTtlMs) as Quote | undefined;\n if (hit) return hit;\n }\n const q = await singleflight(key, async () => {\n const { pv, fb } = await this.readPreview(ctx, tIn.address, tOut.address, amountIn, userMinOut, req.blockNumber);\n return this.buildQuote(ctx, tIn, tOut, amountIn, pv, fb, req.blockNumber);\n });\n if (cacheable) memPut(key, q);\n return q;\n }\n\n /** Execution-grade re-quote (previewPlanExact): every concentrated leg is\n * dry-run on the pool itself. Slower; derive a tight userMinOut from it. */\n async quoteExact(req: QuoteRequest): Promise<ExactQuote> {\n const ctx = await this.ctx(req);\n const { tIn, tOut, amountIn } = await this.pair(ctx, req);\n try {\n const [route, exactOut] = (await ctx.client.readContract({\n address: ctx.dep.contracts.quoter, abi: QUOTER_ABI, functionName: 'previewPlanExact',\n args: [tIn.address, tOut.address, amountIn],\n ...(req.blockNumber !== undefined ? { blockNumber: req.blockNumber } : {}),\n })) as unknown as [Route, bigint];\n return {\n chainId: ctx.chainId, version: ctx.dep.version, tokenIn: tIn.address, tokenOut: tOut.address,\n amountIn, exactOut, route, quotedAt: Date.now(),\n };\n } catch (e) {\n this.wrapReadError(e, 'exact quote');\n }\n }\n\n /** Many quotes. 2.x deployments answer in chunks of on-chain batchQuote\n * (one eth_call per chunk); anything else, or a failed chunk, falls back\n * to individual previews. Per-item failures come back inline. */\n async quoteBatch(reqs: QuoteRequest[]): Promise<BatchItem[]> {\n const fail = (e: unknown): BatchItem => ({\n ok: false,\n error: { code: e instanceof BlazeError ? e.code : 'error', message: scrubUrls((e as Error)?.message ?? String(e)) },\n });\n const out: BatchItem[] = new Array(reqs.length);\n type Prepared = { i: number; ctx: Ctx; tIn: ResolvedToken; tOut: ResolvedToken; amountIn: bigint; userMinOut: bigint };\n const groups = new Map<string, Prepared[]>();\n const singles: number[] = [];\n await Promise.all(reqs.map(async (r, i) => {\n try {\n const ctx = await this.ctx(r);\n const p = await this.pair(ctx, r);\n if (ctx.features.batchQuote && r.blockNumber === undefined) {\n const k = `${ctx.chainId}|${ctx.dep.contracts.quoter}`;\n const g = groups.get(k) ?? [];\n g.push({ i, ctx, ...p });\n groups.set(k, g);\n } else {\n singles.push(i);\n }\n } catch (e) { out[i] = fail(e); }\n }));\n const runSingle = async (i: number) => {\n try { out[i] = { ok: true, quote: await this.quote(reqs[i]) }; } catch (e) { out[i] = fail(e); }\n };\n const tasks: Promise<void>[] = singles.map(runSingle);\n for (const g of groups.values()) {\n for (let s = 0; s < g.length; s += this.batchChunk) {\n const chunk = g.slice(s, s + this.batchChunk);\n tasks.push((async () => {\n const { ctx } = chunk[0];\n try {\n const previews = (await ctx.client.readContract({\n address: ctx.dep.contracts.quoter, abi: QUOTER_ABI, functionName: 'batchQuote',\n args: [chunk.map((p) => ({ tIn: p.tIn.address, tOut: p.tOut.address, amountIn: p.amountIn, userMinOut: p.userMinOut }))],\n })) as unknown as Preview[];\n chunk.forEach((p, j) => {\n const pv = previews[j];\n if (!pv || pv.route.hops.length === 0) {\n out[p.i] = { ok: false, error: { code: 'no_route', message: 'no executable route for this pair and size' } };\n } else {\n out[p.i] = { ok: true, quote: this.buildQuote(ctx, p.tIn, p.tOut, p.amountIn, pv, undefined) };\n }\n });\n } catch {\n await Promise.all(chunk.map((p) => runSingle(p.i)));\n }\n })());\n }\n }\n await Promise.all(tasks);\n return out;\n }\n\n // ── swaps ──────────────────────────────────────────────────────────────────\n\n /**\n * Quote and prepare the swap transaction(s): the exact calldata to send, the\n * minimum it enforces, and the approval step when one is needed. Nothing is\n * signed or sent — `execute` does that with YOUR wallet.\n */\n async buildSwap(req: SwapRequest): Promise<SwapPlan> {\n const ctx = await this.ctx(req);\n const { tIn, tOut, amountIn, userMinOut } = await this.pair(ctx, req);\n if (!req.recipient || !HEX_ADDR.test(req.recipient)) throw new BlazeError('bad_request', 'recipient must be a 0x address');\n const recipient = getAddress(req.recipient);\n if (req.from !== undefined && !HEX_ADDR.test(req.from)) throw new BlazeError('bad_request', 'from must be a 0x address');\n const from = req.from ? getAddress(req.from) : undefined;\n const slippageBps = req.slippageBps ?? this.slippageBps;\n minOutFor(0n, slippageBps, 0n); // validate\n const deadline = req.deadline ?? BigInt(Math.floor(Date.now() / 1000) + checkDeadlineSec(req.deadlineSec ?? this.deadlineSec));\n const mode = req.mode ?? 'route';\n const { features } = ctx;\n const router = ctx.dep.contracts.router;\n\n if (tIn.native && !features.nativeEntry) {\n throw new BlazeError('unsupported_by_version',\n `native ETH input needs a 2.x Router (this deployment is ${ctx.dep.version}): wrap first with buildWrapTx(chain, amount), then swap WETH`);\n }\n if (mode === 'best' && !features.swapBest) {\n throw new BlazeError('unsupported_by_version', `mode 'best' (swapBestExactIn) needs a 2.x Router (this deployment is ${ctx.dep.version})`);\n }\n if (mode === 'best' && tIn.native) {\n throw new BlazeError('bad_request', \"mode 'best' pulls an ERC-20 — use WETH as tokenIn, or mode 'route' for native ETH\");\n }\n\n let pv: Preview;\n let fb: Route | undefined;\n let data: Hex;\n let encodedBy: SwapPlan['encodedBy'] = 'sdk';\n let entry: SwapPlan['entry'];\n let minOut: bigint;\n\n if (features.previewAndEncode && !tIn.native && mode === 'route') {\n // 2.x: ONE eth_call returns the preview AND the Router calldata that executes it.\n let call: Hex;\n try {\n const r = userMinOut > 0n\n ? await ctx.client.readContract({\n address: ctx.dep.contracts.quoter, abi: QUOTER_ABI, functionName: 'previewAndEncodeWithMinOut',\n args: [tIn.address, tOut.address, amountIn, userMinOut, recipient, deadline],\n })\n : await ctx.client.readContract({\n address: ctx.dep.contracts.quoter, abi: QUOTER_ABI, functionName: 'previewAndEncode',\n args: [tIn.address, tOut.address, amountIn, recipient, deadline],\n });\n [pv, call] = r as unknown as [Preview, Hex];\n } catch (e) {\n this.wrapReadError(e, 'previewAndEncode');\n }\n assertExecutable(pv, tIn.address, tOut.address, call);\n minOut = maxBig(minOutFor(pv.netOut, slippageBps, pv.effectiveMinOut), userMinOut);\n verifySwapExactIn(call, {\n tokenIn: tIn.address, tokenOut: tOut.address, amountIn, recipient, deadline,\n minOutAtLeast: pv.effectiveMinOut, route: pv.route,\n });\n data = tightenMinOut(call, minOut);\n encodedBy = 'quoter';\n entry = 'swapExactIn';\n } else {\n ({ pv, fb } = await this.readPreview(ctx, tIn.address, tOut.address, amountIn, userMinOut));\n assertExecutable(pv, tIn.address, tOut.address);\n minOut = maxBig(minOutFor(pv.netOut, slippageBps, pv.effectiveMinOut), userMinOut);\n if (mode === 'best') {\n entry = 'swapBestExactIn';\n data = encodeSwapBestExactIn(tIn.address, tOut.address, amountIn, minOut, recipient, deadline);\n } else if (tIn.native) {\n entry = 'swapExactInNative';\n data = encodeSwapExactInNative(pv.route, minOut, recipient, deadline);\n } else {\n entry = 'swapExactIn';\n data = encodeSwapExactIn(pv.route, amountIn, minOut, recipient, deadline);\n }\n }\n\n const tx: TxRequest = { chainId: ctx.chainId, to: router, data, value: tIn.native ? amountIn : 0n };\n\n let approval: ApprovalStep | null = null;\n if (!tIn.native) {\n const want = req.approve === 'max' ? MAX_UINT256 : amountIn;\n let current: bigint | undefined;\n if (from) {\n current = await ctx.client.readContract({\n address: tIn.address, abi: ERC20_ABI, functionName: 'allowance', args: [from, router],\n }).catch((e: unknown) => this.wrapReadError(e, 'allowance'));\n }\n if (current === undefined || current < amountIn) {\n approval = {\n token: tIn.address, spender: router, amount: want,\n ...(current !== undefined ? { current } : {}),\n tx: buildApproveTx({ chain: ctx.chainId, token: tIn.address, amount: want, spender: router }),\n };\n }\n }\n\n const quote = this.buildQuote(ctx, tIn, tOut, amountIn, pv, fb);\n return {\n quote, entry, encodedBy, tx, recipient, minOut, deadline, slippageBps, approval,\n unwrapAfter: tOut.native,\n steps: approval ? [approval.tx, tx] : [tx],\n };\n }\n\n /** eth_call the swap from `from` on your RPC: the realised amountOut if it\n * would settle now, or the decoded reason it would revert. */\n async simulate(plan: SwapPlan, from: Address): Promise<SimulationResult> {\n if (plan.approval && plan.approval.current !== undefined && plan.approval.current < plan.quote.amountIn) {\n return { ok: false, error: { contract: 'unknown', name: 'allowance', reason: 'the Router is not approved for tokenIn yet — send plan.approval.tx first' } };\n }\n const client = await this.rpc.client(plan.tx.chainId);\n try {\n const { data } = await client.call({ account: from, to: plan.tx.to, data: plan.tx.data, value: plan.tx.value });\n const amountOut = data && data !== '0x'\n ? (decodeFunctionResult({ abi: ROUTER_ABI, functionName: plan.entry, data }) as bigint)\n : undefined;\n return { ok: true, ...(amountOut !== undefined ? { amountOut } : {}) };\n } catch (e) {\n if (isTransportError(e)) throw new BlazeError('rpc_error', `simulation: your RPC failed (${(e as Error)?.message?.split('\\n')[0]})`, { cause: e });\n const d = decodeBlazeError(e);\n return { ok: false, error: d ?? { contract: 'unknown', name: 'revert', reason: (e as Error)?.message?.split('\\n')[0] ?? 'execution reverted' } };\n }\n }\n\n /**\n * Execute with YOUR wallet: approve when needed (exact amount by default),\n * simulate, send the swap, and read the realised output from the receipt.\n * The SDK never holds or asks for a key — the WalletClient signs.\n */\n async execute(opts: ExecuteOptions): Promise<ExecuteResult> {\n const { wallet } = opts;\n const account = wallet.account;\n if (!account) throw new BlazeError('bad_request', 'wallet has no account — create the WalletClient with an account');\n let plan = opts.plan;\n const req = opts.request;\n const maxAge = opts.maxQuoteAgeMs ?? 30_000;\n if (!plan) {\n if (!req) throw new BlazeError('bad_request', 'execute needs a plan or a request');\n plan = await this.buildSwap({ ...req, from: req.from ?? account.address });\n } else if (Date.now() - plan.quote.quotedAt > maxAge) {\n if (!req) throw new BlazeError('bad_request', `plan is older than ${maxAge}ms — pass \\`request\\` so it can be rebuilt, or rebuild it yourself`);\n plan = await this.buildSwap({ ...req, from: req.from ?? account.address });\n }\n const walletChain = await wallet.getChainId();\n if (walletChain !== plan.tx.chainId) {\n throw new BlazeError('wallet_chain_mismatch', `wallet is on chain ${walletChain}, the swap is on ${plan.tx.chainId} — switch the wallet first`);\n }\n const client = await this.rpc.client(plan.tx.chainId);\n const wait = opts.wait ?? true;\n // The wallet's own chain when it has one (viem then asserts it again at\n // send time); null otherwise — we already checked the chain id above.\n const send = (tx: TxRequest) => wallet.sendTransaction({\n account, chain: wallet.chain ?? null, to: tx.to, data: tx.data, value: tx.value,\n } as never) as Promise<Hex>;\n\n let approvalHash: Hex | undefined;\n if (plan.approval) {\n const current = await client.readContract({\n address: plan.approval.token, abi: ERC20_ABI, functionName: 'allowance', args: [account.address, plan.approval.spender],\n });\n if (current < plan.quote.amountIn) {\n approvalHash = await send(plan.approval.tx);\n const r = await client.waitForTransactionReceipt({ hash: approvalHash });\n if (r.status !== 'success') throw new BlazeError('reverted', `approval transaction reverted (${approvalHash})`);\n }\n plan = { ...plan, approval: { ...plan.approval, current: plan.approval.amount } };\n }\n if (opts.simulate ?? true) {\n const sim = await this.simulate(plan, account.address);\n if (!sim.ok) {\n throw new BlazeError('reverted', `simulation says the swap would revert: ${sim.error?.name}${sim.error?.code !== undefined ? `(${sim.error.code})` : ''} — ${sim.error?.reason}`, sim.error ? { revert: sim.error } : {});\n }\n }\n const hash = await send(plan.tx);\n if (!wait) return { plan, ...(approvalHash ? { approvalHash } : {}), hash };\n const receipt = await client.waitForTransactionReceipt({ hash });\n let amountOut: bigint | undefined;\n if (receipt.status === 'success') {\n const logs = parseEventLogs({ abi: ROUTER_ABI, logs: receipt.logs, eventName: 'Swap' })\n .filter((l) => l.address.toLowerCase() === plan!.tx.to.toLowerCase());\n if (logs.length) amountOut = (logs[logs.length - 1].args as { amountOut: bigint }).amountOut;\n }\n return {\n plan, ...(approvalHash ? { approvalHash } : {}), hash,\n status: receipt.status, blockNumber: receipt.blockNumber, ...(amountOut !== undefined ? { amountOut } : {}),\n };\n }\n\n // ── reads ──────────────────────────────────────────────────────────────────\n\n /** symbol / name / decimals, read on your RPC. */\n async tokenInfo(chain: string | number | undefined, token: string): Promise<TokenInfo> {\n const chainId = chain !== undefined ? resolveChain(chain) : await this.rpc.defaultChain();\n const client = await this.rpc.client(chainId);\n const t = this.resolveToken(chainId, token, 'tokenIn');\n if (t.native) return { chainId, address: NATIVE_TOKEN, symbol: 'ETH', name: 'Ether', decimals: 18, native: true };\n try {\n const [symbol, name, decimals] = await Promise.all([\n client.readContract({ address: t.address, abi: ERC20_ABI, functionName: 'symbol' }).catch(() => '?'),\n client.readContract({ address: t.address, abi: ERC20_ABI, functionName: 'name' }).catch(() => ''),\n this.decimalsOf(client, chainId, t),\n ]);\n return { chainId, address: t.address, symbol, name, decimals, native: false };\n } catch (e) {\n throw new BlazeError('bad_request', `${t.address} does not answer decimals() on ${CHAINS[chainId].name} — not an ERC-20?`, { cause: e });\n }\n }\n\n /** The staking engine's live proof-of-solvency (Base), read on your RPC. */\n async solvency(chain: string | number = 8453): Promise<SolvencyReport> {\n const chainId = resolveChain(chain);\n const staking = CHAINS[chainId].staking;\n if (!staking) throw new BlazeError('not_deployed', `no BlazePhoenix staking engine on ${CHAINS[chainId].name}`);\n const client = await this.rpc.client(chainId);\n let blockNumber: bigint, r: unknown, isSolvent: boolean;\n try {\n blockNumber = await client.getBlockNumber();\n [r, isSolvent] = await Promise.all([\n client.readContract({ address: staking, abi: STAKING_SOLVENCY_ABI, functionName: 'solvency', blockNumber }),\n client.readContract({ address: staking, abi: STAKING_SOLVENCY_ABI, functionName: 'isSolvent', blockNumber }),\n ]);\n } catch (e) {\n throw new BlazeError('rpc_error', `solvency read failed on your RPC: ${scrubUrls(String((e as Error)?.message ?? e))}`, { cause: e });\n }\n const s = r as unknown as Omit<SolvencyReport, 'chainId' | 'staking' | 'isSolvent' | 'blockNumber'> & { solvent: boolean };\n return {\n chainId, staking, isSolvent,\n backing: s.backing, owed: s.owed, surplus: s.surplus, deficit: s.deficit,\n collateralRatioWad: s.collateralRatioWad, totalStaked: s.totalStaked, totalDebt: s.totalDebt,\n rewardReserve: s.rewardReserve, protocolReserve: s.protocolReserve,\n pendingDistribution: s.pendingDistribution, totalBadDebt: s.totalBadDebt,\n totalUncollectedInterest: s.totalUncollectedInterest, blockNumber,\n };\n }\n\n /** Router fills over a block range (Swap events; 2.x adds ExecutionProof).\n * The range is read in chunks (`chunkBlocks`, default 2000) because most\n * providers cap eth_getLogs ranges — especially on free tiers. */\n async getFills(opts: {\n chain?: string | number; version?: string; fromBlock?: bigint; toBlock?: bigint;\n lookbackBlocks?: bigint; chunkBlocks?: bigint;\n }): Promise<Fill[]> {\n const ctx = await this.ctx(opts);\n const toBlock = opts.toBlock ?? await ctx.client.getBlockNumber();\n const span = opts.lookbackBlocks ?? BigInt(Math.ceil(3_600 / CHAINS[ctx.chainId].blockTime)); // ~1h\n const fromBlock = opts.fromBlock ?? (toBlock > span ? toBlock - span : 0n);\n if (fromBlock > toBlock) throw new BlazeError('bad_request', 'fromBlock is after toBlock');\n const chunk = opts.chunkBlocks && opts.chunkBlocks > 0n ? opts.chunkBlocks : 2_000n;\n const router = ctx.dep.contracts.router;\n const fills: Fill[] = [];\n for (let start = fromBlock; start <= toBlock; start += chunk) {\n const end = start + chunk - 1n > toBlock ? toBlock : start + chunk - 1n;\n const raw = await ctx.client.getLogs({ address: router, fromBlock: start, toBlock: end })\n .catch((e: unknown) => this.wrapReadError(e, `getLogs ${start}-${end}`));\n fills.push(...toFills(raw));\n }\n return fills;\n }\n\n /** Stream fills as they land (polling your RPC). Returns an unwatch function. */\n async watchFills(opts: { chain?: string | number; version?: string; pollMs?: number; onFill: (f: Fill) => void; onError?: (e: unknown) => void }): Promise<() => void> {\n const ctx = await this.ctx(opts);\n return ctx.client.watchEvent({\n address: ctx.dep.contracts.router,\n pollingInterval: opts.pollMs ?? 4_000,\n onError: opts.onError,\n onLogs: (logs) => { for (const f of toFills(logs as never)) opts.onFill(f); },\n });\n }\n\n /** The chains × versions table this client sees (embedded + registry + overrides). */\n async deployments() {\n await this.registry.ready();\n return { registry: this.registry.status(), rows: this.registry.table() };\n }\n\n /** Which deployment a request would use right now (no RPC). */\n async resolveDeployment(req: { chain: string | number; version?: string }): Promise<ResolvedDeployment & { features: VersionFeatures }> {\n await this.registry.ready();\n const dep = this.registry.resolve(resolveChain(req.chain), req.version ?? this.version);\n return { ...dep, features: featuresOf(dep.version) };\n }\n}\n\nfunction toFills(raw: readonly { transactionHash: Hex | null; blockNumber: bigint | null; logIndex: number | null }[]): Fill[] {\n const parsed = parseEventLogs({ abi: ROUTER_ABI, logs: raw as never });\n const fills: Fill[] = [];\n const proofs = new Map<string, { quoted: bigint; realized: bigint; floorUsed: bigint }>();\n for (const l of parsed) {\n if (l.eventName === 'ExecutionProof') {\n const a = l.args as { quoted: bigint; realized: bigint; floorUsed: bigint };\n proofs.set(`${l.transactionHash}|${(l.logIndex ?? 0) - 1}`, { quoted: a.quoted, realized: a.realized, floorUsed: a.floorUsed });\n }\n }\n for (const l of parsed) {\n if (l.eventName !== 'Swap') continue;\n const a = l.args as { user: Address; tokenIn: Address; tokenOut: Address; amountIn: bigint; amountOut: bigint; legs: bigint };\n const proof = proofs.get(`${l.transactionHash}|${l.logIndex ?? 0}`);\n fills.push({\n txHash: l.transactionHash as Hex, blockNumber: l.blockNumber ?? 0n, logIndex: l.logIndex ?? 0,\n user: a.user, tokenIn: a.tokenIn, tokenOut: a.tokenOut, amountIn: a.amountIn, amountOut: a.amountOut, legs: a.legs,\n ...(proof ? { proof } : {}),\n });\n }\n return fills;\n}\n\nfunction assertExecutable(pv: Preview, tokenIn: Address, tokenOut: Address, call?: Hex): void {\n if (!pv.canExecute || (call !== undefined && (call === '0x' || call.length < 10))) {\n throw new BlazeError('not_executable',\n `the Quoter says this route cannot execute now (netOut ${pv.netOut}, effectiveMinOut ${pv.effectiveMinOut}) — `\n + 'try a smaller size, a looser userMinOut, or another pair',\n { details: { netOut: pv.netOut.toString(), effectiveMinOut: pv.effectiveMinOut.toString() } });\n }\n if (!routeIsConsistent(pv.route, tokenIn, tokenOut)) {\n throw new BlazeError('calldata_mismatch', 'the previewed route does not connect tokenIn → tokenOut — refused');\n }\n}\n\nfunction checkDeadlineSec(n: number): number {\n if (!Number.isInteger(n) || n < 10 || n > 3_600) {\n throw new BlazeError('bad_request', 'deadlineSec must be an integer between 10 and 3600');\n }\n return n;\n}\n\nconst maxBig = (a: bigint, b: bigint) => (a > b ? a : b);\n\n// ── deep links (no RPC) ──────────────────────────────────────────────────────\n\nexport interface DeepLinkOptions {\n chain?: number | string;\n tokenIn?: string;\n tokenOut?: string;\n /** Human units for the pay field (e.g. \"0.5\"). */\n amount?: string;\n tab?: 'home' | 'swap' | 'staking' | 'airdrop' | 'api';\n baseUrl?: string;\n}\n\n/** A link that opens the site pre-filled — bot buttons, referral posts. */\nexport function deepLink(opts: DeepLinkOptions = {}): string {\n const base = (opts.baseUrl ?? 'https://blazephoenix.xyz').replace(/\\/+$/, '');\n const sp = new URLSearchParams();\n sp.set('tab', opts.tab ?? 'swap');\n if (opts.chain !== undefined) sp.set('chain', String(resolveChain(opts.chain)));\n if (opts.tokenIn) sp.set('in', opts.tokenIn);\n if (opts.tokenOut) sp.set('out', opts.tokenOut);\n if (opts.amount) sp.set('amt', opts.amount);\n return `${base}/?${sp.toString()}`;\n}\n\nexport interface PollOptions {\n /** Tick interval in ms (min 500, default 4000). */\n intervalMs?: number;\n onError?: (e: unknown) => void;\n}\n\n/** Poll a pair on your RPC; overlap-safe (a slow tick is skipped, not stacked). */\nexport function pollQuote(\n client: BlazePhoenix,\n req: QuoteRequest,\n onQuote: (q: Quote) => void,\n opts: PollOptions = {},\n): () => void {\n const interval = Math.max(500, opts.intervalMs ?? 4_000);\n let stopped = false;\n let busy = false;\n const tick = async () => {\n if (stopped || busy) return;\n busy = true;\n try {\n const q = await client.quote(req);\n if (!stopped) onQuote(q);\n } catch (e) {\n if (!stopped) opts.onError?.(e);\n } finally {\n busy = false;\n }\n };\n void tick();\n const timer = setInterval(() => { void tick(); }, interval);\n return () => { stopped = true; clearInterval(timer); };\n}\n","// JSON-safe projection: bigint → decimal string, recursively. Use it before\n// JSON.stringify, when handing a quote to an HTTP response, a queue or an LLM.\nexport type Jsonify<T> = T extends bigint\n ? string\n : T extends (infer U)[]\n ? Jsonify<U>[]\n : T extends readonly (infer U)[]\n ? readonly Jsonify<U>[]\n : T extends object\n ? { [K in keyof T]: Jsonify<T[K]> }\n : T;\n\nexport function toJSON<T>(v: T): Jsonify<T> {\n return walk(v) as Jsonify<T>;\n}\n\nfunction walk(v: unknown): unknown {\n if (typeof v === 'bigint') return v.toString();\n if (Array.isArray(v)) return v.map(walk);\n if (v && typeof v === 'object') {\n const out: Record<string, unknown> = {};\n for (const [k, val] of Object.entries(v)) {\n if (typeof val === 'function') continue;\n out[k] = walk(val);\n }\n return out;\n }\n return v;\n}\n"]}
1
+ {"version":3,"sources":["../src/abis.generated.ts","../src/abis.ts","../src/checks.ts","../src/constants.ts","../src/rpc.ts","../src/errors.ts","../src/calldata.ts","../src/deployments.ts","../src/resilience.ts","../src/registry.ts","../src/erc20.ts","../src/client.ts","../src/json.ts"],"names":["encodeFunctionData","HEX_ADDR"],"mappings":"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","file":"index.js","sourcesContent":["// =============================================================================\n// GENERATED by scripts/gen-abis.mjs from BlazePhoenix-Dex — do not edit.\n// Source revision: 07c85636f4116f98ddcfffb66e4477d7da7e9928\n// Compiler: solc 0.8.36+commit.8a079791.Emscripten.clang\n// previewPlanExact is emitted as `view` (eth_call only) — see the generator.\n// =============================================================================\n\nexport const CORE_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"factory\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"mode\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"initCodeHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"deriveAddress\",\n \"outputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"sqrtP\",\n \"type\": \"uint160\"\n },\n {\n \"name\": \"liq\",\n \"type\": \"uint128\"\n },\n {\n \"name\": \"feePpm\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"impactV3Bps\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"out\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"sqrtP\",\n \"type\": \"uint160\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"impactV3FromOut\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"ain\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"rIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"rOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"outSolidly\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"provenShape\",\n \"outputs\": [\n {\n \"name\": \"ok\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"k\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"cfgFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"readDynamicFee\",\n \"outputs\": [\n {\n \"name\": \"fee\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"t0\",\n \"type\": \"address\"\n },\n {\n \"name\": \"t1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"v4mgr\",\n \"type\": \"address\"\n },\n {\n \"name\": \"pid\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"registryDepth18\",\n \"outputs\": [\n {\n \"name\": \"depth\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"cfgFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"solidlyAskOut\",\n \"outputs\": [\n {\n \"name\": \"out\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"ain\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"rIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"rOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"cfgFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"solidlyCurveOut\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"solidlyGetAmountOut\",\n \"outputs\": [\n {\n \"name\": \"out\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOther\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"v4Manager\",\n \"type\": \"address\"\n },\n {\n \"name\": \"decIn1\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"decOther1\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"c\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"universalQuote\",\n \"outputs\": [\n {\n \"name\": \"out\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"depthWad\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"manager\",\n \"type\": \"address\"\n },\n {\n \"name\": \"poolId\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"keyFee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"v4LegOut\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"manager\",\n \"type\": \"address\"\n },\n {\n \"name\": \"poolId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"v4SqrtAndLiq\",\n \"outputs\": [\n {\n \"name\": \"sqrtP\",\n \"type\": \"uint160\"\n },\n {\n \"name\": \"liq\",\n \"type\": \"uint128\"\n },\n {\n \"name\": \"lpFee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"protoFee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"int24\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"manager\",\n \"type\": \"address\"\n },\n {\n \"name\": \"poolId\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"v4WalkOut\",\n \"outputs\": [\n {\n \"name\": \"out\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n] as const;\n\nexport const HUB_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"HubE\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"added\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"Bridge_\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"ControlRenounced\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"key\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"name\": \"pool\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Evicted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"factory\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": false,\n \"name\": \"mode\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Factory_\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"name\": \"paused\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"PausedSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"key\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"kind\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Registered\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"name\": \"role\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": false,\n \"name\": \"who\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"idx\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"c0\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"c1\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"fee\",\n \"type\": \"uint24\"\n }\n ],\n \"name\": \"V4Add\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"key\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"amtIn\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"amtOut\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Volume\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"t\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"addBridge\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"factory\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"mode\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"initHash\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"fees\",\n \"type\": \"uint24[]\"\n },\n {\n \"name\": \"spacings\",\n \"type\": \"int24[]\"\n }\n ],\n \"name\": \"addFactory\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"c0\",\n \"type\": \"address\"\n },\n {\n \"name\": \"c1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"addV4\",\n \"outputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"h\",\n \"type\": \"address\"\n },\n {\n \"name\": \"ok\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"allowHook\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"i\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"bridge\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"bridgeCount\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"c0\",\n \"type\": \"address\"\n },\n {\n \"name\": \"c1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n }\n ],\n \"name\": \"claimV4\",\n \"outputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"discoverFor\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"token0\",\n \"type\": \"address\"\n },\n {\n \"name\": \"token1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hits\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"factoryCount\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getActivePools\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"token0\",\n \"type\": \"address\"\n },\n {\n \"name\": \"token1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"out\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getPool\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getPsi\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getSlot\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"h\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hookPaused\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"admin_\",\n \"type\": \"address\"\n },\n {\n \"name\": \"v4Manager_\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"t\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isBridgeToken\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"h\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isHookLive\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"t\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isRoutableBridge\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"keyOf\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pools\",\n \"type\": \"address[]\"\n },\n {\n \"name\": \"tAs\",\n \"type\": \"address[]\"\n },\n {\n \"name\": \"tBs\",\n \"type\": \"address[]\"\n }\n ],\n \"name\": \"psisOf\",\n \"outputs\": [\n {\n \"name\": \"ps\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amtIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"amtOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"depthWad\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"recordSwap\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"idx\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"removeBridge\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceControl\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tA\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tB\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"seedPool\",\n \"outputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\"\n },\n {\n \"name\": \"ok\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setOperator\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"b\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setPaused\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"r\",\n \"type\": \"address\"\n },\n {\n \"name\": \"s\",\n \"type\": \"address\"\n },\n {\n \"name\": \"q\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setRoles\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"m\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setV4Manager\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"v4CodeOf\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"v4EntryCount\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"v4PoolManager\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"QuoterE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"SolverE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"RouterE\",\n \"type\": \"error\"\n }\n] as const;\n\nexport const SOLVER_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"SolverE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"findBestRoutePlan\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"best\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"fallbackRoute\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"hasFallback\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"plan\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"hub\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"QuoterE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"HubE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"RouterE\",\n \"type\": \"error\"\n }\n] as const;\n\nexport const QUOTER_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"QuoterE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"entries\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"batchQuote\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"previews\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"i\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"bridgeAt\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"bridgesCount\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"hub\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"t\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isBridge\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewAndEncode\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"pv\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"call\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewAndEncodeWithMinOut\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"pv\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"call\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewPlan\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"pv\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"fallbackRoute\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"hasFallback\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewPlanExact\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"exactOut\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewPlanWithMinOut\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"pv\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"fallbackRoute\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"hasFallback\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"previewRoute\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"grossOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"safetyBuffer\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"netOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"ironFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"effectiveMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hops\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"legs\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"topology\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"bridgeUsed\",\n \"type\": \"address\"\n },\n {\n \"name\": \"canExecute\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"solver\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"unlockCallback\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"SolverE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"HubE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"RouterE\",\n \"type\": \"error\"\n }\n] as const;\n\nexport const ROUTER_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"RouterE\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"name\": \"id\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": false,\n \"name\": \"who\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Cfg\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"quoted\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"realized\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"floorUsed\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ExecutionProof\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"toT1\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"toT2\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Fee\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"name\": \"paused\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"PausedSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"eta\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"RescueQueued\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Rescued\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"amountOut\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"name\": \"legs\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Swap\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"admin\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"cancelRescue\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"controlRenounced\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"executeRescue\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"hub\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"permit2\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"queueRescue\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceControl\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"rescueEta\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"selfExecutePrePulled\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"a\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setAdmin\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"b\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setPaused\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"p\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setPermit2\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"t1\",\n \"type\": \"address\"\n },\n {\n \"name\": \"t2\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setTreasuries\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"w\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setWeth\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"solver\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"swapBestExactIn\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"swapExactIn\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"swapExactInNative\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"tokenIn\",\n \"type\": \"address\"\n },\n {\n \"name\": \"tokenOut\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"name\": \"pool\",\n \"type\": \"address\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\"\n },\n {\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"stable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"auxId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"legs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"hops\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"totalOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"singleOutFloor\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"expectedImpactBps\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"confidenceWad\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"estGas\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"hasSurplus\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"isV4Bundle\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"route\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"userMinOut\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"permitted\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"permit\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"swapExactInWithPermit2\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"treasury1\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"treasury2\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"unlockCallback\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"weth\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"QuoterE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"SolverE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"HubE\",\n \"type\": \"error\"\n }\n] as const;\n\nexport const BLAZE_ERRORS_ABI = [\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"QuoterE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"SolverE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"HubE\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"code\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"RouterE\",\n \"type\": \"error\"\n }\n] as const;\n\nexport const ABI_SOURCE_REVISION = \"07c85636f4116f98ddcfffb66e4477d7da7e9928\" as const;\n","// =============================================================================\n// ABIs. The protocol ABIs are GENERATED from the BlazePhoenix-Dex sources\n// (scripts/gen-abis.mjs) — the Route/Hop/Leg/Preview tuples are exactly the\n// compiled ones, so a decoded route round-trips verbatim into the Router.\n// The 1.x deployments share every function the SDK calls on them\n// (previewPlan, previewPlanWithMinOut, previewPlanExact, swapExactIn,\n// swapExactInWithPermit2); 2.x-only entry points are gated by version.\n// =============================================================================\n\nexport {\n CORE_ABI, HUB_ABI, SOLVER_ABI, QUOTER_ABI, ROUTER_ABI, BLAZE_ERRORS_ABI, ABI_SOURCE_REVISION,\n} from './abis.generated.js';\n\nexport const ERC20_ABI = [\n { type: 'function', name: 'decimals', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint8' }] },\n { type: 'function', name: 'symbol', stateMutability: 'view', inputs: [], outputs: [{ type: 'string' }] },\n { type: 'function', name: 'name', stateMutability: 'view', inputs: [], outputs: [{ type: 'string' }] },\n {\n type: 'function', name: 'balanceOf', stateMutability: 'view',\n inputs: [{ name: 'owner', type: 'address' }], outputs: [{ type: 'uint256' }],\n },\n {\n type: 'function', name: 'allowance', stateMutability: 'view',\n inputs: [{ name: 'owner', type: 'address' }, { name: 'spender', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n },\n {\n type: 'function', name: 'approve', stateMutability: 'nonpayable',\n inputs: [{ name: 'spender', type: 'address' }, { name: 'amount', type: 'uint256' }],\n outputs: [{ type: 'bool' }],\n },\n] as const;\n\nexport const WETH_ABI = [\n { type: 'function', name: 'deposit', stateMutability: 'payable', inputs: [], outputs: [] },\n {\n type: 'function', name: 'withdraw', stateMutability: 'nonpayable',\n inputs: [{ name: 'wad', type: 'uint256' }], outputs: [],\n },\n] as const;\n\nconst SOLVENCY_REPORT = [\n { name: 'backing', type: 'uint256' },\n { name: 'owed', type: 'uint256' },\n { name: 'surplus', type: 'uint256' },\n { name: 'deficit', type: 'uint256' },\n { name: 'solvent', type: 'bool' },\n { name: 'collateralRatioWad', type: 'uint256' },\n { name: 'totalStaked', type: 'uint256' },\n { name: 'totalDebt', type: 'uint256' },\n { name: 'rewardReserve', type: 'uint256' },\n { name: 'protocolReserve', type: 'uint256' },\n { name: 'pendingDistribution', type: 'uint256' },\n { name: 'totalBadDebt', type: 'uint256' },\n { name: 'totalUncollectedInterest', type: 'uint256' },\n] as const;\n\n/** The staking engine's proof-of-solvency surface (BlazePhoenixStaking 3.x). */\nexport const STAKING_SOLVENCY_ABI = [\n {\n type: 'function', name: 'solvency', stateMutability: 'view', inputs: [],\n outputs: [{ name: 'r', type: 'tuple', components: SOLVENCY_REPORT }],\n },\n { type: 'function', name: 'isSolvent', stateMutability: 'view', inputs: [], outputs: [{ type: 'bool' }] },\n] as const;\n","// =============================================================================\n// Phoenix Check — the deterministic verdicts every quote carries. Everything\n// is derived from the on-chain preview: no oracle, no third-party price, no\n// fabrication. Fails closed — a route that cannot execute is 'blocked'.\n// =============================================================================\n\nimport type { Address, Preview, QuoteChecks, Route, Verdict } from './types.js';\n\nexport const HARD_IMPACT_BPS = 2_000; // 20% — a bad fill\nexport const CAUTION_IMPACT_BPS = 200; // 2%\n\nconst RANK: Record<Verdict, number> = { ok: 0, caution: 1, danger: 2, blocked: 3 };\nconst worst = (...v: Verdict[]): Verdict => v.reduce((a, b) => (RANK[b] > RANK[a] ? b : a), 'ok' as Verdict);\n\nconst same = (a: string, b: string) => a.toLowerCase() === b.toLowerCase();\n\n/** A route whose first hop does not start in tokenIn, whose last hop does not\n * end in tokenOut, or whose hops do not chain, is not the swap you asked for. */\nexport function routeIsConsistent(route: Route, tokenIn: Address, tokenOut: Address): boolean {\n const h = route.hops;\n if (h.length === 0) return false;\n if (!same(h[0].tokenIn, tokenIn) || !same(h[h.length - 1].tokenOut, tokenOut)) return false;\n for (let i = 1; i < h.length; i++) if (!same(h[i].tokenIn, h[i - 1].tokenOut)) return false;\n return h.every((hop) => hop.legs.length > 0);\n}\n\nexport function phoenixCheck(pv: Preview, tokenIn: Address, tokenOut: Address): QuoteChecks {\n const impactBps = Math.min(10_000, Math.max(0, Number(pv.route.expectedImpactBps) || 0));\n const impact: Verdict = impactBps >= HARD_IMPACT_BPS ? 'danger' : impactBps >= CAUTION_IMPACT_BPS ? 'caution' : 'ok';\n const consistent = routeIsConsistent(pv.route, tokenIn, tokenOut);\n const legs = pv.route.hops.reduce((n, h) => n + h.legs.length, 0);\n const verdict: Verdict = !pv.canExecute || !consistent ? 'blocked' : worst(impact);\n return {\n verdict,\n priceImpact: {\n bps: impactBps,\n verdict: pv.canExecute ? impact : 'blocked',\n hardLineBps: HARD_IMPACT_BPS,\n cautionBps: CAUTION_IMPACT_BPS,\n note: 'Governing price impact of the on-chain route. At or above the hard line this is a bad fill.',\n },\n ironFloor: {\n enforcedOnChain: true,\n armed: pv.effectiveMinOut > 0n,\n ironFloor: pv.ironFloor,\n effectiveMinOut: pv.effectiveMinOut,\n note: 'The Router re-derives its own output floors at execution and hard-clamps them; a caller can only tighten, never relax.',\n },\n routeShape: {\n consistent,\n hops: pv.route.hops.length,\n legs,\n note: consistent\n ? 'The route starts in tokenIn, ends in tokenOut and every hop chains into the next.'\n : 'The route does not connect tokenIn to tokenOut — refused client-side.',\n },\n crossCheck: {\n basis: 'Quoter preview via eth_call on YOUR RPC',\n reproducible: true,\n note: 'Computed by the contract that settles the swap, read through your own node. Compare against an independent price source to spot depth on venues this route does not read.',\n },\n disclaimer: 'Deterministic checks derived from on-chain state, not financial advice. \"blocked\" is a real answer — we fail closed rather than guess.',\n };\n}\n","// =============================================================================\n// Chain metadata — the parts of a chain that never move: ids, explorers, the\n// canonical wrapped-native and dollar tokens. Contract ADDRESSES are not here:\n// they are versioned, and live in deployments.ts (embedded snapshot) and in\n// the site's registry (GET https://blazephoenix.xyz/api/deployments).\n//\n// The SDK ships NO RPC endpoints and NO keys. Every read goes through the node\n// YOU configure — see rpc.ts. That is the whole point of 1.0.\n// =============================================================================\n\nexport const API_BASE = 'https://blazephoenix.xyz';\n\n/** Where the live, versioned deployment registry is published. Static JSON —\n * no RPC is ever performed on your behalf by the site. */\nexport const DEPLOYMENTS_URL = `${API_BASE}/api/deployments`;\n\nexport type SupportedChainId = 1 | 8453 | 10 | 42161 | 4663;\n\nexport const SUPPORTED_CHAIN_IDS: readonly SupportedChainId[] = [8453, 1, 10, 42161, 4663];\n\nexport interface ChainInfo {\n chainId: SupportedChainId;\n name: string;\n /** Short env-var friendly key: BASE, ETHEREUM, OPTIMISM, ARBITRUM, ROBINHOOD. */\n key: string;\n explorer: string;\n weth: `0x${string}`;\n /** The chain's canonical dollar asset (USDG on Robinhood Chain). */\n usdc: `0x${string}`;\n bzpx?: `0x${string}`;\n /** BlazePhoenix staking engine, where live. */\n staking?: `0x${string}`;\n /** Approximate seconds per block — used to size log scans. */\n blockTime: number;\n}\n\nexport const CHAINS: Record<SupportedChainId, ChainInfo> = {\n 1: {\n chainId: 1,\n name: 'Ethereum',\n key: 'ETHEREUM',\n explorer: 'https://etherscan.io',\n weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n usdc: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n blockTime: 12,\n },\n 8453: {\n chainId: 8453,\n name: 'Base',\n key: 'BASE',\n explorer: 'https://basescan.org',\n weth: '0x4200000000000000000000000000000000000006',\n usdc: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n bzpx: '0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483',\n staking: '0x3f60C7aa0c36a78D200405feBE143d2Cf3fA0c77',\n blockTime: 2,\n },\n 10: {\n chainId: 10,\n name: 'Optimism',\n key: 'OPTIMISM',\n explorer: 'https://optimistic.etherscan.io',\n weth: '0x4200000000000000000000000000000000000006',\n usdc: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',\n blockTime: 2,\n },\n 42161: {\n chainId: 42161,\n name: 'Arbitrum',\n key: 'ARBITRUM',\n explorer: 'https://arbiscan.io',\n weth: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n usdc: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',\n blockTime: 0.25,\n },\n // Robinhood Chain — the dollar asset is USDG, not USDC; the `usdc` field\n // carries the chain's canonical dollar token. Explorer is Blockscout.\n 4663: {\n chainId: 4663,\n name: 'Robinhood',\n key: 'ROBINHOOD',\n explorer: 'https://robinhoodchain.blockscout.com',\n weth: '0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73',\n usdc: '0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168',\n blockTime: 2,\n },\n};\n\nconst ALIASES: Record<string, SupportedChainId> = {\n '1': 1, eth: 1, ethereum: 1, mainnet: 1,\n '8453': 8453, base: 8453,\n '10': 10, op: 10, optimism: 10,\n '42161': 42161, arb: 42161, arbitrum: 42161, 'arbitrum-one': 42161,\n '4663': 4663, rh: 4663, robinhood: 4663, 'robinhood-chain': 4663,\n};\n\n/** Accepts a chain id (number or numeric string) or a human alias. */\nexport function resolveChain(chain: number | string): SupportedChainId {\n const id = ALIASES[String(chain).trim().toLowerCase()];\n if (!id) {\n throw new Error(\n `Unsupported chain \"${chain}\" — use 8453/base, 1/eth, 10/optimism, `\n + `42161/arbitrum or 4663/robinhood`,\n );\n }\n return id;\n}\n\n/** Non-throwing variant, for config parsing. */\nexport function tryResolveChain(chain: number | string): SupportedChainId | undefined {\n return ALIASES[String(chain).trim().toLowerCase()];\n}\n\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' as const;\n\n/** The native-ETH sentinel accepted anywhere a token is (the Router trades\n * ERC-20s: native input is wrapped by `swapExactInNative` on 2.x routers). */\nexport const NATIVE_TOKEN = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' as const;\n\n/** Canonical Permit2 (same address on every chain; the Router's default). */\nexport const PERMIT2 = '0x000000000022D473030F116dDEE9F6B43aC78BA3' as const;\n\n/** Protocol fee in bps. Since 2026-08-22 it is charged ONCE per route on the\n * first bridge currency the Router holds; `preview.protocolFee` reports its\n * effect on the output in tokenOut. */\nexport const FEE_BPS = 28;\n\n/** Router event topic0 hashes. Verified against the ABIs by `npm test`. */\nexport const SWAP_TOPIC0 =\n '0xd6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf7760413' as const;\n/** 1.x routers only — the fee-exempt surplus promise died with the 2.x fee model. */\nexport const SURPLUS_TOPIC0 =\n '0x1a3afef0f067eb51a6bfec6ab3625a4408dd8c3571b72836483e68feb70d1026' as const;\n/** 2.x routers: quoted vs realised vs floor, emitted beside every Swap. */\nexport const EXECUTION_PROOF_TOPIC0 =\n '0xb5a62bcb8753e37706da20862f2a32a16831ef0144567eb15b1da49547e9f84c' as const;\n/** 2.x routers: what was charged, in which token, split between treasuries. */\nexport const FEE_TOPIC0 =\n '0x18fa25e22e0f1f39ef2130081363ba86a1259e598e669558683dabfc15bfe731' as const;\n","// =============================================================================\n// YOUR RPC — the only road to the chain.\n//\n// The SDK ships no endpoints and no keys, and it never routes a read through\n// blazephoenix.xyz. Every eth_call goes from your process to your node:\n//\n// rpc: 'https://your-base-node.example/KEY' one node (its own chain)\n// rpc: ['https://node-a.example', 'https://node-b.example'] your nodes, in fallback order\n// rpc: window.ethereum the user's wallet (EIP-1193)\n// rpc: http('https://…', { batch: true }) any viem Transport\n// rpc: { base: '…', 1: ['…', '…'], arbitrum: wallet } one entry per chain\n//\n// A single (non-map) source answers for whatever chain the node reports. The\n// SDK asks each node for eth_chainId once and refuses to quote a chain's\n// contracts on another chain's node — a wrong-chain read returns garbage or a\n// confusing revert, never a quote you can trust.\n// =============================================================================\n\nimport {\n createPublicClient, custom, fallback, http, webSocket,\n type PublicClient, type Transport,\n} from 'viem';\nimport { BlazeError } from './errors.js';\nimport { CHAINS, SUPPORTED_CHAIN_IDS, resolveChain, tryResolveChain, type SupportedChainId } from './constants.js';\n\n/** Anything with an EIP-1193 `request` — a wallet provider, a hardware bridge… */\nexport interface Eip1193Like {\n request: (args: { method: string; params?: unknown }) => Promise<unknown>;\n}\n\nexport type RpcSource = string | readonly string[] | Eip1193Like | Transport;\nexport type RpcConfig = RpcSource | { readonly [chain: string]: RpcSource | undefined };\n\nexport interface TransportOptions {\n /** Per-request timeout in ms (default 10000). */\n timeoutMs?: number;\n /** Retries per endpoint on transient failures (default 2). */\n retries?: number;\n /** JSON-RPC batching on http endpoints (default false — not every provider supports it). */\n batch?: boolean;\n}\n\nconst isTransport = (v: unknown): v is Transport => typeof v === 'function';\nconst isEip1193 = (v: unknown): v is Eip1193Like =>\n !!v && typeof v === 'object' && typeof (v as Eip1193Like).request === 'function';\nconst isSource = (v: unknown): v is RpcSource =>\n typeof v === 'string' || Array.isArray(v) || isTransport(v) || isEip1193(v);\n\n/** A URL we are willing to talk to: https/wss anywhere, http/ws only on a\n * local node (your own anvil / geth on localhost). Never javascript:, data:… */\nexport function isAllowedRpcUrl(url: string): boolean {\n let u: URL;\n try { u = new URL(url.trim()); } catch { return false; }\n if (u.protocol === 'https:' || u.protocol === 'wss:') return true;\n if (u.protocol === 'http:' || u.protocol === 'ws:') {\n return u.hostname === 'localhost' || u.hostname === '127.0.0.1' || u.hostname === '[::1]';\n }\n return false;\n}\n\nfunction urlTransport(url: string, o: Required<TransportOptions>): Transport {\n if (!isAllowedRpcUrl(url)) {\n throw new BlazeError('bad_request', `refusing RPC URL \"${redact(url)}\": use https:// or wss:// (http/ws only for localhost)`);\n }\n const u = url.trim();\n return u.startsWith('ws')\n ? webSocket(u, { timeout: o.timeoutMs, retryCount: o.retries })\n : http(u, { timeout: o.timeoutMs, retryCount: o.retries, batch: o.batch });\n}\n\n/** Keys live in RPC URLs (…/v2/KEY). Never print them. */\nexport function redact(url: string): string {\n try {\n const u = new URL(url);\n const path = u.pathname.length > 1 ? '/…' : '';\n return `${u.protocol}//${u.host}${path}`;\n } catch {\n return '<invalid url>';\n }\n}\n\n/** Every URL inside a message, redacted. A transport's error text quotes the URL it called,\n * key and all, so a message is scrubbed before it leaves the router. */\nexport function scrubUrls(text: string): string {\n return text.replace(/\\b(?:https?|wss?):\\/\\/[^\\s\"'<>]+/gi, (m) => redact(m));\n}\n\nexport function transportFrom(src: RpcSource, opts: TransportOptions = {}): Transport {\n const o: Required<TransportOptions> = {\n timeoutMs: opts.timeoutMs ?? 10_000,\n retries: opts.retries ?? 2,\n batch: opts.batch ?? false,\n };\n if (isTransport(src)) return src;\n if (isEip1193(src)) return custom(src, { retryCount: o.retries });\n if (typeof src === 'string') return urlTransport(src, o);\n if (Array.isArray(src)) {\n const list = (src as readonly string[]).map((u) => u.trim()).filter(Boolean);\n if (list.length === 0) throw new BlazeError('rpc_required', 'empty RPC list');\n if (list.length === 1) return urlTransport(list[0], o);\n // Retries are spent per endpoint; the fallback itself walks YOUR list.\n return fallback(list.map((u) => urlTransport(u, { ...o, retries: 0 })), { retryCount: o.retries });\n }\n throw new BlazeError('bad_request', 'unrecognised rpc value');\n}\n\nconst RPC_HELP =\n 'BlazePhoenix SDK 1.x runs 100% on YOUR RPC — it ships no endpoints and never reads through our servers. '\n + 'Pass `rpc` (a URL, a list of URLs, a wallet provider or a viem transport), e.g. '\n + \"new BlazePhoenix({ rpc: { base: process.env.BASE_RPC_URL } }). Any provider's free tier is enough.\";\n\ninterface Slot {\n source: RpcSource;\n /** undefined → a single source that serves whatever chain it reports. */\n chainId?: SupportedChainId;\n client?: PublicClient;\n verified?: Promise<number>;\n}\n\n/** Resolves chain → PublicClient over the user's configured RPC, verifying the\n * node's chain id once per source. */\nexport class RpcRouter {\n private readonly perChain = new Map<SupportedChainId, Slot>();\n private readonly single?: Slot;\n private readonly opts: TransportOptions;\n\n constructor(config: RpcConfig | undefined, opts: TransportOptions = {}) {\n this.opts = opts;\n if (config === undefined || config === null || config === '') return;\n if (isSource(config)) {\n this.single = { source: config };\n return;\n }\n if (typeof config !== 'object') throw new BlazeError('bad_request', 'rpc must be a URL, a list, a provider, a transport or a per-chain map');\n for (const [k, v] of Object.entries(config)) {\n if (v === undefined || v === null || v === '') continue;\n const id = tryResolveChain(k);\n if (!id) throw new BlazeError('bad_request', `rpc map: unknown chain \"${k}\"`);\n if (!isSource(v)) throw new BlazeError('bad_request', `rpc map: bad value for chain \"${k}\"`);\n this.perChain.set(id, { source: v, chainId: id });\n }\n }\n\n /** Chains with an explicitly configured RPC (a single source reports none). */\n configuredChains(): SupportedChainId[] {\n return SUPPORTED_CHAIN_IDS.filter((id) => this.perChain.has(id));\n }\n\n hasAny(): boolean {\n return !!this.single || this.perChain.size > 0;\n }\n\n /** The chain to use when a request names none: the only configured one. */\n async defaultChain(): Promise<SupportedChainId> {\n if (this.perChain.size === 1) return [...this.perChain.keys()][0];\n if (this.single && this.perChain.size === 0) {\n const id = await this.verify(this.single);\n const c = tryResolveChain(id);\n if (!c) throw new BlazeError('rpc_chain_mismatch', `your RPC serves chain ${id}, which BlazePhoenix is not deployed on`);\n return c;\n }\n throw new BlazeError('bad_request', 'this request needs `chain` (several RPCs are configured)');\n }\n\n private slotFor(chainId: SupportedChainId): Slot {\n const s = this.perChain.get(chainId) ?? this.single;\n if (!s) {\n throw new BlazeError('rpc_required',\n `no RPC configured for ${CHAINS[chainId].name} (${chainId}). ${RPC_HELP}`,\n { details: { chainId } });\n }\n return s;\n }\n\n private clientOf(s: Slot): PublicClient {\n if (!s.client) {\n s.client = createPublicClient({ transport: transportFrom(s.source, this.opts) }) as PublicClient;\n }\n return s.client;\n }\n\n private verify(s: Slot): Promise<number> {\n if (!s.verified) {\n const c = this.clientOf(s);\n s.verified = c.getChainId().catch((e: unknown) => {\n s.verified = undefined; // a transient failure must not poison the slot forever\n throw new BlazeError('rpc_error', `your RPC did not answer eth_chainId: ${scrubUrls(String((e as Error)?.message ?? e))}`, { cause: e });\n });\n }\n return s.verified;\n }\n\n /** A PublicClient for `chain`, over YOUR node, after checking it really is that chain. */\n async client(chain: SupportedChainId | number | string): Promise<PublicClient> {\n const chainId = resolveChain(chain);\n const s = this.slotFor(chainId);\n const actual = await this.verify(s);\n if (actual !== chainId) {\n throw new BlazeError('rpc_chain_mismatch',\n `your RPC serves chain ${actual}, not ${CHAINS[chainId].name} (${chainId}) — `\n + 'configure one per chain: rpc: { base: \"…\", eth: \"…\" }',\n { details: { expected: chainId, actual } });\n }\n return this.clientOf(s);\n }\n}\n\n/**\n * Read RPC configuration from environment variables (Node, Workers, CI):\n *\n * BLAZEPHOENIX_RPC_BASE / _ETHEREUM / _OPTIMISM / _ARBITRUM / _ROBINHOOD\n * BLAZEPHOENIX_RPC_8453 (by id works too)\n * BLAZEPHOENIX_RPC_URL — a single node (answers for the chain it reports)\n *\n * Each value may hold several URLs separated by commas (your fallback order).\n */\nexport function rpcFromEnv(env: Record<string, string | undefined> = globalEnv()): RpcConfig | undefined {\n const split = (v: string) => {\n const list = v.split(',').map((s) => s.trim()).filter(Boolean);\n return list.length === 1 ? list[0] : list;\n };\n const map: Record<string, RpcSource> = {};\n for (const id of SUPPORTED_CHAIN_IDS) {\n const v = env[`BLAZEPHOENIX_RPC_${CHAINS[id].key}`] ?? env[`BLAZEPHOENIX_RPC_${id}`];\n if (v && v.trim()) map[String(id)] = split(v);\n }\n const single = env.BLAZEPHOENIX_RPC_URL;\n if (Object.keys(map).length > 0) {\n if (single && single.trim()) {\n throw new BlazeError('bad_request',\n 'set either BLAZEPHOENIX_RPC_URL (one node) or the per-chain BLAZEPHOENIX_RPC_<CHAIN> variables, not both');\n }\n return map;\n }\n return single && single.trim() ? split(single) : undefined;\n}\n\nfunction globalEnv(): Record<string, string | undefined> {\n const p = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process;\n return p?.env ?? {};\n}\n","// =============================================================================\n// Errors — every failure has a stable machine `code`, and every protocol\n// revert (RouterE / QuoterE / SolverE / HubE) is decoded into a sentence taken\n// from the contract's own source comments.\n// =============================================================================\n\nimport { decodeErrorResult } from 'viem';\nimport { BLAZE_ERRORS_ABI } from './abis.generated.js';\nimport type { DecodedError, Hex } from './types.js';\nimport { scrubUrls } from './rpc.js';\n\n/** A copy of an error chain that keeps names and messages but no URL in any of them:\n * transport errors quote the URL they called (key and all) in message, details and url fields. */\nfunction scrubCause(c: unknown, depth = 0): unknown {\n if (c === undefined || c === null || depth > 8) return undefined;\n if (!(c instanceof Error)) return scrubUrls(String(c));\n const inner = scrubCause((c as { cause?: unknown }).cause, depth + 1);\n const out = new Error(scrubUrls(c.message), inner !== undefined ? { cause: inner } : undefined);\n out.name = c.name;\n return out;\n}\n\nexport type BlazeErrorCode =\n | 'rpc_required'\n | 'rpc_chain_mismatch'\n | 'rpc_error'\n | 'bad_request'\n | 'not_deployed'\n | 'unsupported_by_version'\n | 'no_route'\n | 'not_executable'\n | 'calldata_mismatch'\n | 'deployment_unverified'\n | 'reverted'\n | 'wallet_chain_mismatch';\n\nexport class BlazeError extends Error {\n readonly code: BlazeErrorCode;\n readonly details?: Record<string, unknown>;\n readonly revert?: DecodedError;\n constructor(code: BlazeErrorCode, message: string, opts: { details?: Record<string, unknown>; revert?: DecodedError; cause?: unknown } = {}) {\n super(message, opts.cause !== undefined ? { cause: scrubCause(opts.cause) } : undefined);\n this.name = 'BlazeError';\n this.code = code;\n this.details = opts.details;\n this.revert = opts.revert;\n }\n}\n\n// Meanings copied from the contracts' own comments (BlazePhoenix-Dex src/).\nconst ROUTER: Record<number, string> = {\n 1: 'unauthorized',\n 2: 'router paused',\n 3: 'bad input (route, amount, entry-point preconditions)',\n 4: 'deadline passed',\n 5: 'slippage: output below the minimum (your userMinOut or the on-chain floor)',\n 6: 'callback authentication failed',\n 7: 'reentrancy refused',\n 8: 'swap failed (a leg delivered nothing / fee would consume the leg)',\n 9: 'disallowed or paused V4 hook on the route',\n 10: 'userMinOut is 0 with a non-zero amountIn — a real minimum is mandatory',\n 11: 'a V4 leg disagrees with its own key (direction or pool id)',\n 13: 'fee-on-transfer token on a V3-only route',\n 14: 'rescue not queued or still inside the 48h timelock',\n 15: 'a swap settled without paying the protocol fee',\n 16: 'the fee was paid twice on an anchored route',\n};\nconst QUOTER: Record<number, string> = {\n 3: 'constructed with a zero address',\n 4: 'batch larger than 32 entries',\n 6: 'callback from an unexpected caller',\n};\nconst SOLVER: Record<number, string> = {\n 4: 'bad input: zero address, identical tokens or zero amount',\n 5: 'no route: no executable path for this pair and size',\n};\nconst HUB: Record<number, string> = {\n 1: 'unauthorized', 2: 'hub paused', 3: 'zero address', 4: 'bad input',\n 5: 'unknown pool / invalid kind', 6: 'max slots', 7: 'bridge cap', 8: 'hook denied',\n 9: 'V4 claim ineligible',\n};\n\nconst TABLES: Record<string, { contract: DecodedError['contract']; codes: Record<number, string> }> = {\n RouterE: { contract: 'Router', codes: ROUTER },\n QuoterE: { contract: 'Quoter', codes: QUOTER },\n SolverE: { contract: 'Solver', codes: SOLVER },\n HubE: { contract: 'Hub', codes: HUB },\n};\n\nexport function describeProtocolError(name: string, code?: number): DecodedError {\n const t = TABLES[name];\n if (!t) return { contract: 'unknown', name, ...(code !== undefined ? { code } : {}), reason: name };\n return {\n contract: t.contract,\n name,\n ...(code !== undefined ? { code } : {}),\n reason: code !== undefined ? (t.codes[code] ?? `code ${code}`) : name,\n };\n}\n\n/** Decode raw revert data (0x…) into a protocol error, if it is one of ours. */\nexport function decodeRevertData(data: Hex | undefined): DecodedError | undefined {\n if (!data || data === '0x' || data.length < 10) return undefined;\n try {\n const e = decodeErrorResult({ abi: BLAZE_ERRORS_ABI, data });\n const code = Array.isArray(e.args) && e.args.length ? Number(e.args[0]) : undefined;\n return describeProtocolError(e.errorName, code);\n } catch {\n return undefined;\n }\n}\n\n/** Walk any error (viem's nested ContractFunctionExecutionError, a raw RPC\n * error, …) and return the protocol revert inside it, if there is one. */\nexport function decodeBlazeError(err: unknown): DecodedError | undefined {\n const seen = new Set<unknown>();\n let cur: unknown = err;\n while (cur && typeof cur === 'object' && !seen.has(cur)) {\n seen.add(cur);\n const e = cur as { data?: unknown; errorName?: string; args?: unknown[]; raw?: Hex; cause?: unknown };\n // viem ContractFunctionRevertedError: `data` is the decoded { errorName, args }.\n const d = e.data as { errorName?: string; args?: unknown[] } | Hex | undefined;\n if (d && typeof d === 'object' && typeof d.errorName === 'string') {\n const code = Array.isArray(d.args) && d.args.length ? Number(d.args[0]) : undefined;\n return describeProtocolError(d.errorName, code);\n }\n if (typeof d === 'string') {\n const r = decodeRevertData(d as Hex);\n if (r) return r;\n }\n if (typeof e.raw === 'string') {\n const r = decodeRevertData(e.raw);\n if (r) return r;\n }\n cur = e.cause;\n }\n return undefined;\n}\n\n/** True when the error is a node refusing to serve (network / 429 / 5xx),\n * as opposed to the contract answering with a revert. */\nexport function isTransportError(err: unknown): boolean {\n const s = String((err as { name?: string })?.name ?? '') + ' ' + String((err as Error)?.message ?? '');\n return /HttpRequestError|TimeoutError|WebSocketRequestError|fetch failed|ECONN|ETIMEDOUT|429|rate limit/i.test(s)\n && !decodeBlazeError(err);\n}\n","// =============================================================================\n// Router calldata — encode, decode, and VERIFY.\n//\n// On 2.x the Quoter hands back the exact bytes that execute its preview\n// (previewAndEncode). The Quoter's own header says what that is worth: \"a\n// compromised Quoter fools the interface\". So the SDK never forwards those\n// bytes blind — it decodes them with the Router ABI and checks every field\n// against what YOU asked for before anything reaches a wallet.\n// =============================================================================\n\nimport { decodeFunctionData, encodeFunctionData } from 'viem';\nimport { ROUTER_ABI } from './abis.js';\nimport { routeIsConsistent } from './checks.js';\nimport { BlazeError } from './errors.js';\nimport type { Address, Hex, Route } from './types.js';\n\nexport function encodeSwapExactIn(route: Route, amountIn: bigint, userMinOut: bigint, recipient: Address, deadline: bigint): Hex {\n return encodeFunctionData({\n abi: ROUTER_ABI,\n functionName: 'swapExactIn',\n args: [route as never, amountIn, userMinOut, recipient, deadline],\n });\n}\n\nexport function encodeSwapExactInNative(route: Route, userMinOut: bigint, recipient: Address, deadline: bigint): Hex {\n return encodeFunctionData({\n abi: ROUTER_ABI,\n functionName: 'swapExactInNative',\n args: [route as never, userMinOut, recipient, deadline],\n });\n}\n\nexport function encodeSwapBestExactIn(\n tokenIn: Address, tokenOut: Address, amountIn: bigint, userMinOut: bigint, recipient: Address, deadline: bigint,\n): Hex {\n return encodeFunctionData({\n abi: ROUTER_ABI,\n functionName: 'swapBestExactIn',\n args: [tokenIn, tokenOut, amountIn, userMinOut, recipient, deadline],\n });\n}\n\nexport interface DecodedSwapExactIn {\n route: Route;\n amountIn: bigint;\n userMinOut: bigint;\n recipient: Address;\n deadline: bigint;\n}\n\n/** Decode swapExactIn calldata (throws on any other selector). */\nexport function decodeSwapExactIn(data: Hex): DecodedSwapExactIn {\n const d = decodeFunctionData({ abi: ROUTER_ABI, data });\n if (d.functionName !== 'swapExactIn') {\n throw new BlazeError('calldata_mismatch', `expected swapExactIn calldata, got ${d.functionName}`);\n }\n const [route, amountIn, userMinOut, recipient, deadline] = d.args as unknown as [Route, bigint, bigint, Address, bigint];\n return { route, amountIn, userMinOut, recipient, deadline };\n}\n\n/** Deterministic structural fingerprint of a route (bigint-safe). */\nexport function routeFingerprint(r: Route): string {\n return JSON.stringify(r, (_k, v) => (typeof v === 'bigint' ? `${v}n` : typeof v === 'string' ? v.toLowerCase() : v));\n}\n\nexport interface SwapExpectation {\n tokenIn: Address;\n tokenOut: Address;\n amountIn: bigint;\n recipient: Address;\n deadline: bigint;\n /** The encoded minimum must be at least this (the SDK's slippage floor). */\n minOutAtLeast: bigint;\n /** When given, the encoded route must be exactly this one (the previewed route). */\n route?: Route;\n}\n\n/**\n * Verify Quoter-produced swapExactIn bytes against the caller's intent.\n * Returns the decoded call; throws `calldata_mismatch` listing every field\n * that disagrees. Pure — no I/O.\n */\nexport function verifySwapExactIn(data: Hex, want: SwapExpectation): DecodedSwapExactIn {\n const got = decodeSwapExactIn(data);\n const bad: string[] = [];\n if (got.amountIn !== want.amountIn) bad.push(`amountIn ${got.amountIn} ≠ ${want.amountIn}`);\n if (got.recipient.toLowerCase() !== want.recipient.toLowerCase()) bad.push(`recipient ${got.recipient} ≠ ${want.recipient}`);\n if (got.deadline !== want.deadline) bad.push(`deadline ${got.deadline} ≠ ${want.deadline}`);\n if (got.userMinOut < want.minOutAtLeast) bad.push(`userMinOut ${got.userMinOut} < required ${want.minOutAtLeast}`);\n if (got.userMinOut === 0n) bad.push('userMinOut is zero');\n if (!routeIsConsistent(got.route, want.tokenIn, want.tokenOut)) bad.push('route does not connect tokenIn → tokenOut');\n if (want.route && routeFingerprint(got.route) !== routeFingerprint(want.route)) bad.push('encoded route differs from the previewed route');\n if (bad.length) {\n throw new BlazeError('calldata_mismatch',\n `Quoter calldata refused — it does not execute what you asked for: ${bad.join('; ')}`,\n { details: { mismatches: bad } });\n }\n return got;\n}\n\n/** Re-encode verified swapExactIn bytes with a TIGHTER minimum. The route and\n * every other field are carried over from the Quoter's own encoding. */\nexport function tightenMinOut(data: Hex, minOut: bigint): Hex {\n const d = decodeSwapExactIn(data);\n if (minOut <= d.userMinOut) return data;\n return encodeSwapExactIn(d.route, d.amountIn, minOut, d.recipient, d.deadline);\n}\n\n/** minOut from a net quote and a slippage tolerance, never below the floor. */\nexport function minOutFor(netOut: bigint, slippageBps: number, floor: bigint): bigint {\n if (!Number.isInteger(slippageBps) || slippageBps < 0 || slippageBps > 5_000) {\n throw new BlazeError('bad_request', 'slippageBps must be an integer between 0 and 5000');\n }\n const bySlip = netOut - (netOut * BigInt(slippageBps)) / 10_000n;\n return bySlip > floor ? bySlip : floor;\n}\n","// =============================================================================\n// Versioned deployment registry — which contracts, of which protocol version,\n// live at which address on which chain.\n//\n// THREE LAYERS, applied in this order (see registry.ts):\n// 1. EMBEDDED — this file. Ships inside the package, works fully offline.\n// A non-zero address here is a PIN: nothing fetched at runtime can move it.\n// 2. REMOTE — GET https://blazephoenix.xyz/api/deployments (static JSON,\n// same schema). Fills in what the embedded snapshot does not know yet —\n// e.g. the 2.0.0 addresses the day they are deployed — so integrators\n// pick up a new deployment without a new SDK release. Remote-sourced\n// contract sets are cross-checked ON YOUR RPC before first use.\n// 3. OVERRIDES — your own `contracts` option. Always wins (your fork, your\n// testnet, your pinned audit target).\n//\n// Versions are protocol versions, not SDK versions: 1.0.0 is what is live on\n// chain today; 2.0.0 is the final Core/Hub/Solver/Quoter/Router generation\n// from BlazePhoenix-Dex (every contract's VERSION() returns \"2.0.0\").\n// =============================================================================\n\nimport { ZERO_ADDRESS, type SupportedChainId } from './constants.js';\nimport type { Address } from './types.js';\n\nexport interface ContractSet {\n /** BlazePhoenixCore — the deployed library the Solver/Quoter/Router link.\n * Zero on 1.x (no separately published Core address). */\n core: Address;\n hub: Address;\n solver: Address;\n router: Address;\n quoter: Address;\n}\n\nexport type DeploymentStatus = 'live' | 'pending' | 'deprecated';\n\nexport interface DeploymentVersion {\n /** Protocol semver, e.g. \"2.0.0\" — what the contracts' VERSION() returns (2.x). */\n version: string;\n status: DeploymentStatus;\n /** BlazePhoenix-Dex revision the bytecode was built from, when known. */\n source?: string;\n notes?: string;\n chains: Partial<Record<SupportedChainId, ContractSet>>;\n}\n\nexport interface DeploymentRegistry {\n schema: 1;\n updatedAt?: string;\n versions: DeploymentVersion[];\n}\n\nconst Z = ZERO_ADDRESS;\nconst pending = (): ContractSet => ({ core: Z, hub: Z, solver: Z, router: Z, quoter: Z });\n\n/** The snapshot shipped with this SDK release. */\nexport const EMBEDDED_DEPLOYMENTS: DeploymentRegistry = {\n schema: 1,\n updatedAt: '2026-09-25',\n versions: [\n {\n version: '2.0.0',\n status: 'pending',\n source: 'blazephoenixxyz-crypto/Blaze-Phoenix-Dex@07c8563',\n notes: 'Final generation (Core/Hub/Solver/Quoter/Router). Addresses arrive through the registry the day they are deployed.',\n chains: { 8453: pending(), 1: pending(), 10: pending(), 42161: pending(), 4663: pending() },\n },\n {\n version: '1.0.0',\n status: 'live',\n notes: 'The generation live on chain since launch.',\n chains: {\n 1: {\n core: Z,\n hub: '0xc4FA9a5720fe3294D3AA9fc427E2a760591E57ae',\n solver: '0xc124d91258db0C14bf13b826CF64E16bfEA8a73e',\n router: '0xE1aE5f49013920CF71De8CED4043e14C4d63416b',\n quoter: '0x4a20AA0912388ff7A9221Ab6BFC224cc20Baa0c3',\n },\n 8453: {\n core: Z,\n hub: '0x428554DEe93A1B8B5Bc6Fd19adDAfe55106fc04C',\n solver: '0xB1902990260975dD4C89ad74B1f317bc100CB830',\n router: '0x2a779f9Be49aac57495A8B6467Cc325a8a47Eb9f',\n quoter: '0x4cEF0615614B212895F45Aa1D4833B16666E18d3',\n },\n 10: {\n core: Z,\n hub: '0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483',\n solver: '0x0c0d96B237FABa8FE5e8aE77754Ef29109D2B33f',\n router: '0x7262e7483ab6f0db7b8f90eC3a9de3B02Ab36F6A',\n quoter: '0xfB18EF6f62A0278A273Af4b7A46b454F9E482dc2',\n },\n 42161: {\n core: Z,\n hub: '0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483',\n solver: '0x0c0d96B237FABa8FE5e8aE77754Ef29109D2B33f',\n router: '0x7262e7483ab6f0db7b8f90eC3a9de3B02Ab36F6A',\n quoter: '0xfB18EF6f62A0278A273Af4b7A46b454F9E482dc2',\n },\n 4663: {\n core: Z,\n hub: '0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483',\n solver: '0x0c0d96B237FABa8FE5e8aE77754Ef29109D2B33f',\n router: '0x7262e7483ab6f0db7b8f90eC3a9de3B02Ab36F6A',\n quoter: '0xE1aE5f49013920CF71De8CED4043e14C4d63416b',\n },\n },\n },\n ],\n};\n\nexport const CONTRACT_KEYS = ['core', 'hub', 'solver', 'router', 'quoter'] as const;\nexport type ContractKey = (typeof CONTRACT_KEYS)[number];\n\nconst ADDR = /^0x[0-9a-fA-F]{40}$/;\nconst SEMVER = /^(\\d+)\\.(\\d+)\\.(\\d+)$/;\n\nexport const isZero = (a: string | undefined): boolean => !a || /^0x0{40}$/i.test(a);\n\n/** A set is executable once its Router and Quoter exist. */\nexport function isDeployed(set: Partial<ContractSet> | undefined): set is ContractSet {\n return !!set && !isZero(set.router) && !isZero(set.quoter);\n}\n\nexport function parseVersion(v: string): [number, number, number] | undefined {\n const m = SEMVER.exec(v.trim());\n return m ? [Number(m[1]), Number(m[2]), Number(m[3])] : undefined;\n}\n\nexport function compareVersions(a: string, b: string): number {\n const pa = parseVersion(a) ?? [0, 0, 0];\n const pb = parseVersion(b) ?? [0, 0, 0];\n for (let i = 0; i < 3; i++) if (pa[i] !== pb[i]) return pa[i] - pb[i];\n return 0;\n}\n\n/**\n * Version selector:\n * 'latest' — the highest version DEPLOYED on the chain (default)\n * '2' | '2.0' — the highest deployed 2.x / 2.0.x\n * '2.0.0' — exactly that version\n */\nexport type VersionSelector = 'latest' | (string & {});\n\nexport function matchesSelector(version: string, selector: VersionSelector): boolean {\n const s = selector.trim().replace(/^v/i, '');\n if (s === 'latest' || s === '') return true;\n const parts = s.split('.');\n const vp = version.split('.');\n return parts.every((p, i) => p === vp[i]);\n}\n\nexport function isValidSelector(selector: string): boolean {\n const s = selector.trim().replace(/^v/i, '');\n return s === 'latest' || /^\\d+(\\.\\d+){0,2}$/.test(s);\n}\n\n/** What a protocol version can do — the SDK adapts its calls to it. */\nexport interface VersionFeatures {\n /** Quoter.previewAndEncode[WithMinOut]: preview + ready Router calldata in one call. */\n previewAndEncode: boolean;\n /** Quoter.batchQuote: up to 32 previews in one eth_call. */\n batchQuote: boolean;\n /** Router.swapExactInNative: pay with native ETH, no pre-wrap. */\n nativeEntry: boolean;\n /** Router.swapBestExactIn: solve + execute in the same transaction. */\n swapBest: boolean;\n /** VERSION(), hub(), solver() getters used for on-chain verification. */\n introspection: boolean;\n /** Router emits ExecutionProof (2.x) vs Surplus (1.x). */\n executionProof: boolean;\n}\n\nexport function featuresOf(version: string): VersionFeatures {\n const major = parseVersion(version)?.[0] ?? 0;\n const v2 = major >= 2;\n return {\n previewAndEncode: v2,\n batchQuote: v2,\n nativeEntry: v2,\n swapBest: v2,\n introspection: v2,\n executionProof: v2,\n };\n}\n\n/** Strict structural validation of a registry document (remote input). */\nexport function validateRegistry(raw: unknown): { ok: true; registry: DeploymentRegistry } | { ok: false; error: string } {\n if (!raw || typeof raw !== 'object') return { ok: false, error: 'registry is not an object' };\n const r = raw as Record<string, unknown>;\n if (r.schema !== 1) return { ok: false, error: `unsupported registry schema ${String(r.schema)}` };\n if (!Array.isArray(r.versions)) return { ok: false, error: 'versions must be an array' };\n const versions: DeploymentVersion[] = [];\n for (const v of r.versions as unknown[]) {\n if (!v || typeof v !== 'object') return { ok: false, error: 'version entry is not an object' };\n const e = v as Record<string, unknown>;\n if (typeof e.version !== 'string' || !parseVersion(e.version)) {\n return { ok: false, error: `bad version ${String(e.version)}` };\n }\n const status = e.status === 'live' || e.status === 'pending' || e.status === 'deprecated' ? e.status : 'live';\n if (!e.chains || typeof e.chains !== 'object') return { ok: false, error: `version ${e.version}: chains missing` };\n const chains: Partial<Record<SupportedChainId, ContractSet>> = {};\n for (const [cid, set] of Object.entries(e.chains as Record<string, unknown>)) {\n const id = Number(cid) as SupportedChainId;\n if (![1, 8453, 10, 42161, 4663].includes(id)) continue; // unknown chains are ignored, not fatal\n if (!set || typeof set !== 'object') return { ok: false, error: `version ${e.version} chain ${cid}: not an object` };\n const s = set as Record<string, unknown>;\n const out: Partial<ContractSet> = {};\n for (const k of CONTRACT_KEYS) {\n const a = s[k] ?? ZERO_ADDRESS;\n if (typeof a !== 'string' || !ADDR.test(a)) {\n return { ok: false, error: `version ${e.version} chain ${cid}: ${k} is not an address` };\n }\n out[k] = a as Address;\n }\n chains[id] = out as ContractSet;\n }\n versions.push({\n version: e.version,\n status,\n ...(typeof e.source === 'string' ? { source: e.source } : {}),\n ...(typeof e.notes === 'string' ? { notes: e.notes } : {}),\n chains,\n });\n }\n return {\n ok: true,\n registry: { schema: 1, ...(typeof r.updatedAt === 'string' ? { updatedAt: r.updatedAt } : {}), versions },\n };\n}\n","// =============================================================================\n// Resilience core — the SDK ships the same meta-patterns the BlazePhoenix\n// edge runs, so every integration is polite and outage-proof by default:\n//\n// • singleflight — identical concurrent calls share ONE request\n// • micro-TTL — a tiny preview cache (default 1s ≈ intra-block) absorbs\n// hot loops without ever serving stale execution data\n// • retry — transient failures (network, 429, 502/503) retry with\n// backoff and RESPECT the server's retry-after header\n//\n// Execution-grade requests (recipient / exact=1) are never TTL-cached here,\n// mirroring the server's own red line.\n// =============================================================================\n\nconst INFLIGHT = new Map<string, Promise<unknown>>();\nconst MEM = new Map<string, { at: number; data: unknown }>();\n\n/** Coalesce concurrent identical work — leader runs, followers share. */\nexport async function singleflight<T>(key: string, fn: () => Promise<T>): Promise<T> {\n const existing = INFLIGHT.get(key) as Promise<T> | undefined;\n if (existing) return existing;\n const flight = fn();\n INFLIGHT.set(key, flight as Promise<unknown>);\n try {\n return await flight;\n } finally {\n INFLIGHT.delete(key);\n }\n}\n\nexport function memGet(key: string, ttlMs: number, now = Date.now()): unknown | undefined {\n if (ttlMs <= 0) return undefined;\n const hit = MEM.get(key);\n return hit && now - hit.at < ttlMs ? hit.data : undefined;\n}\n\nexport function memPut(key: string, data: unknown, now = Date.now()): void {\n MEM.set(key, { at: now, data });\n // Bound the cache — a long-running bot must never leak memory here.\n if (MEM.size > 500) {\n const oldest = MEM.keys().next().value;\n if (oldest !== undefined) MEM.delete(oldest);\n }\n}\n\nexport interface RetryOptions {\n /** Extra attempts after the first (default 2). */\n retries?: number;\n /** Base backoff in ms; grows ×3 per attempt with jitter (default 250). */\n backoffMs?: number;\n timeoutMs?: number;\n}\n\nconst sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));\n\nfunction retryDelayMs(res: Response | undefined, attempt: number, base: number): number {\n const ra = Number(res?.headers.get('retry-after'));\n if (Number.isFinite(ra) && ra > 0) return Math.min(10_000, ra * 1000);\n return base * 3 ** attempt + Math.floor(Math.random() * base);\n}\n\n/** Quote reads are idempotent — transient failures deserve another shot. */\nfunction isTransient(res: Response | undefined): boolean {\n return !res || res.status === 429 || res.status === 502 || res.status === 503 || res.status === 504;\n}\n\n/** fetch with timeout + polite retries. Returns the final Response (which may\n * still be an error status — non-transient statuses are never retried). */\nexport async function resilientFetch(\n fetchFn: typeof fetch,\n url: string,\n init: RequestInit | undefined,\n opts: RetryOptions = {},\n): Promise<Response> {\n const { retries = 2, backoffMs = 250, timeoutMs = 15_000 } = opts;\n let lastErr: unknown;\n for (let attempt = 0; attempt <= retries; attempt++) {\n let res: Response | undefined;\n // An explicit controller + ref'd timer rather than AbortSignal.timeout():\n // the latter's timer is unref'd in Node (a hung request with nothing else\n // pending would never time out) and is missing from older browsers.\n const ctrl = new AbortController();\n const timer = setTimeout(() => ctrl.abort(), timeoutMs);\n try {\n res = await fetchFn(url, { ...init, signal: ctrl.signal });\n if (!isTransient(res)) return res;\n if (attempt === retries) return res;\n } catch (e) {\n lastErr = e;\n if (attempt === retries) throw e;\n } finally {\n clearTimeout(timer);\n }\n await sleep(retryDelayMs(res, attempt, backoffMs));\n }\n /* istanbul ignore next -- loop always returns or throws */\n throw lastErr instanceof Error ? lastErr : new Error('request failed');\n}\n\n/** Test hook. */\nexport function __resetResilience(): void {\n INFLIGHT.clear();\n MEM.clear();\n}\n","// =============================================================================\n// Registry — resolves (chain, version selector) → a contract set, merging the\n// embedded snapshot, the site's published registry, and your overrides.\n//\n// TRUST MODEL (why fetching addresses from a website is not blind trust):\n// • Embedded non-zero addresses are PINS. A remote document that disagrees\n// with a pin is ignored for that field and reported via onWarning.\n// • Remote can only fill what the snapshot does not know (zero addresses,\n// new 2.x+ versions — a new 1.x could not be verified on-chain, so it is\n// refused). The client verifies every remote-sourced set on YOUR RPC\n// before its first use (code exists, VERSION() matches, the Quoter and the\n// Router point at the same Hub and Solver) and fails closed otherwise.\n// • Your `contracts` overrides always win and are never second-guessed.\n// • mode: 'embedded' turns the network fetch off entirely.\n// =============================================================================\n\nimport {\n CONTRACT_KEYS, EMBEDDED_DEPLOYMENTS, compareVersions, featuresOf, isDeployed, isValidSelector, isZero,\n matchesSelector, validateRegistry,\n type ContractSet, type DeploymentRegistry, type DeploymentStatus, type VersionSelector,\n} from './deployments.js';\nimport { DEPLOYMENTS_URL, SUPPORTED_CHAIN_IDS, tryResolveChain, type SupportedChainId } from './constants.js';\nimport { BlazeError } from './errors.js';\nimport { resilientFetch, singleflight } from './resilience.js';\nimport type { Address } from './types.js';\n\nexport type DeploymentSource = 'embedded' | 'remote' | 'override';\n\nexport interface ResolvedDeployment {\n chainId: SupportedChainId;\n version: string;\n status: DeploymentStatus | 'custom';\n contracts: ContractSet;\n /** Where the router/quoter pair came from — the part you send money to. */\n source: DeploymentSource;\n}\n\nexport interface ContractOverride extends Partial<ContractSet> {\n /** Protocol version these contracts speak (selects the ABI features). */\n version?: string;\n}\n\nexport type ContractOverrides = { readonly [chain: string]: ContractOverride | undefined };\n\nexport interface RegistryOptions {\n /** 'auto' (default): embedded + the site's registry, refreshed every ttlMs.\n * 'embedded': never touch the network — only this SDK's snapshot + overrides. */\n mode?: 'auto' | 'embedded';\n url?: string;\n /** Refresh interval for the remote document (default 10 min). */\n ttlMs?: number;\n fetchFn?: typeof fetch;\n /** Fetch timeout (default 3000 ms). Only the FIRST fetch of a process can\n * delay a call, and by at most this much; later refreshes run in the\n * background (stale-while-revalidate). */\n timeoutMs?: number;\n /** Route to addresses that only the fetched document supplies (a version\n * released after this SDK). Default false: the document can list them, but\n * resolve() only returns Router/Quoter addresses pinned in this package —\n * the on-chain check of a remote entry reads the entry's own contracts, so\n * it cannot tell a real deployment from a look-alike. */\n remoteVersions?: boolean;\n /** Called for every pin conflict or rejected document — never silently. */\n onWarning?: (msg: string) => void;\n}\n\ntype FieldSource = Record<string, DeploymentSource>; // `${version}|${chain}|${key}` → source\n\nexport class Registry {\n private doc: DeploymentRegistry;\n private fieldSource: FieldSource = {};\n private fetchedAt = 0;\n private lastError?: string;\n private readonly mode: 'auto' | 'embedded';\n private readonly remoteVersions: boolean;\n private readonly url: string;\n private readonly ttlMs: number;\n private readonly fetchFn?: typeof fetch;\n private readonly timeoutMs: number;\n private readonly warn: (msg: string) => void;\n private readonly overrides = new Map<SupportedChainId, ContractOverride>();\n\n constructor(opts: RegistryOptions = {}, overrides?: ContractOverrides) {\n this.mode = opts.mode ?? 'auto';\n this.remoteVersions = opts.remoteVersions ?? false;\n this.url = opts.url ?? DEPLOYMENTS_URL;\n this.ttlMs = opts.ttlMs ?? 10 * 60_000;\n this.fetchFn = opts.fetchFn ?? (globalThis.fetch as typeof fetch | undefined);\n this.timeoutMs = opts.timeoutMs ?? 3_000;\n this.warn = opts.onWarning ?? (() => {});\n this.doc = structuredClone(EMBEDDED_DEPLOYMENTS);\n for (const v of this.doc.versions) {\n for (const [cid, set] of Object.entries(v.chains)) {\n for (const k of CONTRACT_KEYS) {\n if (!isZero((set as ContractSet)[k])) this.fieldSource[`${v.version}|${cid}|${k}`] = 'embedded';\n }\n }\n }\n for (const [k, o] of Object.entries(overrides ?? {})) {\n if (!o) continue;\n const id = tryResolveChain(k);\n if (!id) throw new BlazeError('bad_request', `contracts override: unknown chain \"${k}\"`);\n for (const key of CONTRACT_KEYS) {\n const a = o[key];\n if (a !== undefined && !/^0x[0-9a-fA-F]{40}$/.test(a)) {\n throw new BlazeError('bad_request', `contracts override for ${k}: ${key} is not an address`);\n }\n }\n if (o.version !== undefined && !isValidSelector(o.version)) {\n throw new BlazeError('bad_request', `contracts override for ${k}: bad version \"${o.version}\"`);\n }\n this.overrides.set(id, o);\n }\n }\n\n /** Before a lookup: the first time, wait for the remote document (bounded\n * by timeoutMs); afterwards serve the current state and revalidate in the\n * background when stale. Never throws. */\n async ready(): Promise<void> {\n if (this.mode !== 'auto' || !this.fetchFn) return;\n if (!this.fetchedAt) { await this.refresh(); return; }\n if (Date.now() - this.fetchedAt >= this.ttlMs) void this.refresh();\n }\n\n /** Fetch the remote document when stale (mode 'auto'). Never throws: a\n * failed fetch keeps the last good state and is reported via onWarning. */\n async refresh(force = false): Promise<void> {\n if (this.mode !== 'auto' || !this.fetchFn) return;\n if (!force && this.fetchedAt && Date.now() - this.fetchedAt < this.ttlMs) return;\n // Concurrent refreshes of the same URL (several clients in one process)\n // share ONE download — but every instance merges the document into its\n // OWN state. (Sharing the merge too would leave the followers stale.)\n try {\n const raw = await singleflight(`registry ${this.url}`, async () => {\n const res = await resilientFetch(this.fetchFn!, this.url, { headers: { accept: 'application/json' } }, {\n retries: 0, timeoutMs: this.timeoutMs,\n });\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n const body = (await res.json()) as unknown;\n // The site wraps nothing today, but accept { registry: … } too.\n return body && typeof body === 'object' && 'registry' in (body as object)\n ? (body as { registry: unknown }).registry : body;\n });\n this.merge(raw);\n this.lastError = undefined;\n } catch (e) {\n this.lastError = (e as Error)?.message ?? String(e);\n this.warn(`deployment registry fetch failed (${this.lastError}) — using the embedded snapshot`);\n } finally {\n // Back off on failure too: a dead URL must not be hit on every quote.\n this.fetchedAt = Date.now();\n }\n }\n\n /** Merge a registry document under the pinning rules. Exposed for tests and\n * for callers who distribute the registry through their own channel. */\n merge(raw: unknown): void {\n const v = validateRegistry(raw);\n if (!v.ok) {\n this.warn(`deployment registry rejected: ${v.error}`);\n return;\n }\n for (const rv of v.registry.versions) {\n let local = this.doc.versions.find((x) => x.version === rv.version);\n // A version this SDK has never heard of is only accepted when it can be\n // verified on the user's RPC before use: 2.x contracts answer VERSION(),\n // hub() and solver(); a \"new\" 1.x set could only be checked for code at\n // an address — not enough to route anyone's approvals to it.\n if (!local && !featuresOf(rv.version).introspection) {\n this.warn(`registry announced unknown version ${rv.version}, which cannot be verified on-chain — ignored`);\n continue;\n }\n if (!local) {\n local = { version: rv.version, status: rv.status, chains: {} };\n if (rv.source) local.source = rv.source;\n if (rv.notes) local.notes = rv.notes;\n this.doc.versions.push(local);\n } else {\n local.status = rv.status;\n if (rv.source && !local.source) local.source = rv.source;\n }\n for (const [cid, rset] of Object.entries(rv.chains) as [string, ContractSet][]) {\n const id = Number(cid) as SupportedChainId;\n const cur: ContractSet = local.chains[id] ?? {\n core: '0x0000000000000000000000000000000000000000',\n hub: '0x0000000000000000000000000000000000000000',\n solver: '0x0000000000000000000000000000000000000000',\n router: '0x0000000000000000000000000000000000000000',\n quoter: '0x0000000000000000000000000000000000000000',\n };\n for (const k of CONTRACT_KEYS) {\n const key = `${rv.version}|${cid}|${k}`;\n const incoming = rset[k];\n if (this.fieldSource[key] === 'embedded') {\n if (!isZero(incoming) && incoming.toLowerCase() !== cur[k].toLowerCase()) {\n this.warn(`registry tried to move pinned ${k} of ${rv.version} on chain ${cid} `\n + `(${cur[k]} → ${incoming}) — ignored`);\n }\n continue;\n }\n if (isZero(incoming)) continue;\n cur[k] = incoming;\n this.fieldSource[key] = 'remote';\n }\n local.chains[id] = cur;\n }\n }\n this.doc.versions.sort((a, b) => compareVersions(b.version, a.version));\n if (v.registry.updatedAt) this.doc.updatedAt = v.registry.updatedAt;\n }\n\n /** The merged document (embedded + remote), overrides NOT applied. */\n snapshot(): DeploymentRegistry {\n return structuredClone(this.doc);\n }\n\n status(): { mode: 'auto' | 'embedded'; url: string; fetchedAt: number | null; lastError?: string } {\n return { mode: this.mode, url: this.url, fetchedAt: this.fetchedAt || null, ...(this.lastError ? { lastError: this.lastError } : {}) };\n }\n\n /** Every deployed version on a chain, newest first. */\n versionsOn(chainId: SupportedChainId): string[] {\n return this.doc.versions\n .filter((v) => isDeployed(v.chains[chainId]))\n .map((v) => v.version)\n .sort((a, b) => compareVersions(b, a));\n }\n\n resolve(chainId: SupportedChainId, selector: VersionSelector = 'latest'): ResolvedDeployment {\n if (!isValidSelector(selector)) throw new BlazeError('bad_request', `bad version selector \"${selector}\"`);\n const ov = this.overrides.get(chainId);\n const sel = ov?.version && (selector === 'latest') ? ov.version : selector;\n\n const candidates = this.doc.versions\n .filter((v) => matchesSelector(v.version, sel) && isDeployed(v.chains[chainId]))\n .filter((v) => this.remoteVersions || this.isPinned(v.version, chainId))\n .sort((a, b) => compareVersions(b.version, a.version));\n const pick = candidates[0];\n\n if (ov && (ov.router || ov.quoter)) {\n // An override may stand on its own (your deployment) or patch a known one.\n const base: ContractSet = pick ? { ...pick.chains[chainId]! } : {\n core: '0x0000000000000000000000000000000000000000',\n hub: '0x0000000000000000000000000000000000000000',\n solver: '0x0000000000000000000000000000000000000000',\n router: '0x0000000000000000000000000000000000000000',\n quoter: '0x0000000000000000000000000000000000000000',\n };\n const contracts = { ...base };\n for (const k of CONTRACT_KEYS) if (ov[k]) contracts[k] = ov[k] as Address;\n if (!isDeployed(contracts)) {\n throw new BlazeError('bad_request', `contracts override for chain ${chainId} needs both router and quoter`);\n }\n const version = ov.version && /^\\d+\\.\\d+\\.\\d+$/.test(ov.version)\n ? ov.version\n : pick?.version ?? this.latestKnownVersion(ov.version);\n return { chainId, version, status: 'custom', contracts, source: 'override' };\n }\n\n if (!pick) {\n const deployed = this.versionsOn(chainId);\n const remoteOnly = this.remoteVersions ? [] : deployed.filter((v) => matchesSelector(v, sel) && !this.isPinned(v, chainId));\n throw new BlazeError('not_deployed',\n `no BlazePhoenix deployment matching version \"${selector}\" on chain ${chainId}`\n + (deployed.length ? ` (deployed: ${deployed.join(', ')})` : '')\n + (remoteOnly.length ? ` — ${remoteOnly.join(', ')} is known only from the fetched registry; `\n + 'update the SDK, or set registry.remoteVersions after checking the addresses yourself' : ''),\n { details: { chainId, selector, deployed } });\n }\n const set = pick.chains[chainId]!;\n const src = (k: string) => this.fieldSource[`${pick.version}|${chainId}|${k}`] ?? 'embedded';\n const source: DeploymentSource = src('router') === 'remote' || src('quoter') === 'remote' ? 'remote' : 'embedded';\n return { chainId, version: pick.version, status: pick.status, contracts: { ...set }, source };\n }\n\n /** Router and Quoter both pinned in this package (not filled by a fetched document). */\n private isPinned(version: string, chainId: SupportedChainId): boolean {\n const src = (k: string) => this.fieldSource[`${version}|${chainId}|${k}`];\n return src('router') === 'embedded' && src('quoter') === 'embedded';\n }\n\n private latestKnownVersion(selector?: string): string {\n const all = this.doc.versions.map((v) => v.version).sort((a, b) => compareVersions(b, a));\n const m = selector ? all.find((v) => matchesSelector(v, selector)) : undefined;\n return m ?? all[0] ?? '2.0.0';\n }\n\n /** chains × versions table (for dashboards, the MCP, debugging). */\n table(): { chainId: SupportedChainId; version: string; status: string; contracts: ContractSet; source: DeploymentSource }[] {\n const rows: { chainId: SupportedChainId; version: string; status: string; contracts: ContractSet; source: DeploymentSource }[] = [];\n for (const v of this.doc.versions) {\n for (const id of SUPPORTED_CHAIN_IDS) {\n const set = v.chains[id];\n if (!set) continue;\n const s = this.fieldSource[`${v.version}|${id}|router`] ?? 'embedded';\n rows.push({ chainId: id, version: v.version, status: isDeployed(set) ? v.status : 'pending', contracts: { ...set }, source: s });\n }\n }\n return rows;\n }\n}\n","// =============================================================================\n// Token helpers — approve / wrap / unwrap calldata, Permit2 typed data, and\n// human-amount conversion. Pure: no I/O, no RPC.\n// =============================================================================\n\nimport { encodeFunctionData } from 'viem';\nimport { ERC20_ABI, ROUTER_ABI, WETH_ABI } from './abis.js';\nimport { CHAINS, PERMIT2, resolveChain } from './constants.js';\nimport { Registry } from './registry.js';\nimport type { Address, ChainRef, Hex, Route, TxRequest } from './types.js';\n\n/** Unlimited allowance (2^256 − 1). Prefer EXACT amounts. */\nexport const MAX_UINT256 = (1n << 256n) - 1n;\n\nconst HEX_ADDR = /^0x[0-9a-fA-F]{40}$/;\n\nexport interface ApproveOptions {\n /** ERC-20 to approve (the swap's tokenIn). */\n token: Address;\n chain: ChainRef;\n /** Allowance in base units. Be exact; MAX_UINT256 opts into unlimited. */\n amount: bigint;\n /** Who may pull the tokens. Default: the latest deployed Router in this\n * SDK's embedded snapshot — when using the client, prefer `plan.approval`,\n * which names the Router of the version you actually quoted. */\n spender?: Address;\n}\n\nexport function buildApproveTx(opts: ApproveOptions): TxRequest {\n const chainId = resolveChain(opts.chain);\n const spender = opts.spender ?? new Registry({ mode: 'embedded' }).resolve(chainId).contracts.router;\n if (!HEX_ADDR.test(opts.token)) throw new Error(`invalid token address: ${opts.token}`);\n if (!HEX_ADDR.test(spender)) throw new Error(`invalid spender address: ${spender}`);\n if (opts.amount < 0n || opts.amount > MAX_UINT256) throw new Error('amount out of uint256 range');\n return {\n chainId,\n to: opts.token,\n data: encodeFunctionData({ abi: ERC20_ABI, functionName: 'approve', args: [spender, opts.amount] }),\n value: 0n,\n };\n}\n\n/** Wrap native ETH → WETH (needed on 1.x routers, which have no native entry). */\nexport function buildWrapTx(chain: ChainRef, amount: bigint): TxRequest {\n const chainId = resolveChain(chain);\n if (amount <= 0n) throw new Error('amount must be > 0');\n return { chainId, to: CHAINS[chainId].weth, data: encodeFunctionData({ abi: WETH_ABI, functionName: 'deposit' }), value: amount };\n}\n\n/** Unwrap WETH → native ETH (the Router always delivers WETH for ETH out). */\nexport function buildUnwrapTx(chain: ChainRef, amount: bigint): TxRequest {\n const chainId = resolveChain(chain);\n if (amount <= 0n) throw new Error('amount must be > 0');\n return {\n chainId, to: CHAINS[chainId].weth,\n data: encodeFunctionData({ abi: WETH_ABI, functionName: 'withdraw', args: [amount] }), value: 0n,\n };\n}\n\n// ── Permit2 (SignatureTransfer) — one historical approval of Permit2 per token,\n// then every swap carries a signature instead of a standing allowance. ────\n\nexport function randomPermit2Nonce(): bigint {\n const bytes = new Uint8Array(32);\n globalThis.crypto.getRandomValues(bytes);\n let n = 0n;\n for (const b of bytes) n = (n << 8n) | BigInt(b);\n return n;\n}\n\nexport interface Permit2Transfer {\n permitted: { token: Address; amount: bigint };\n nonce: bigint;\n deadline: bigint;\n}\n\n/** EIP-712 typed data for Permit2 PermitTransferFrom — pass to signTypedData.\n * The spender is the Router (it becomes msg.sender of permitTransferFrom). */\nexport function permit2TypedData(args: {\n chainId: number; token: Address; amount: bigint; spender: Address; nonce: bigint; deadline: bigint;\n}) {\n return {\n domain: { name: 'Permit2', chainId: args.chainId, verifyingContract: PERMIT2 },\n types: {\n PermitTransferFrom: [\n { name: 'permitted', type: 'TokenPermissions' },\n { name: 'spender', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n ],\n TokenPermissions: [\n { name: 'token', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n },\n primaryType: 'PermitTransferFrom' as const,\n message: {\n permitted: { token: args.token, amount: args.amount },\n spender: args.spender,\n nonce: args.nonce,\n deadline: args.deadline,\n },\n };\n}\n\nexport function encodeSwapExactInWithPermit2(\n route: Route, amountIn: bigint, userMinOut: bigint, recipient: Address, deadline: bigint,\n permit: Permit2Transfer, signature: Hex,\n): Hex {\n return encodeFunctionData({\n abi: ROUTER_ABI,\n functionName: 'swapExactInWithPermit2',\n args: [route as never, amountIn, userMinOut, recipient, deadline, permit, signature],\n });\n}\n\n// ── human amounts ──────────────────────────────────────────────────────────\n\n/** \"1.5\" + 18 → 1500000000000000000n. Pure string math — no floats. */\nexport function toBaseUnits(amount: string, decimals: number): bigint {\n if (!Number.isInteger(decimals) || decimals < 0 || decimals > 77) {\n throw new Error(`invalid decimals: ${decimals}`);\n }\n const s = amount.trim();\n const m = /^(\\d+)(?:\\.(\\d+))?$/.exec(s);\n if (!m) throw new Error(`invalid amount: \"${amount}\" (use e.g. \"1.5\")`);\n const [, whole, frac = ''] = m;\n if (frac.length > decimals) {\n throw new Error(`\"${amount}\" has ${frac.length} fractional digits — token only carries ${decimals}`);\n }\n return BigInt(whole) * 10n ** BigInt(decimals) + BigInt(frac.padEnd(decimals, '0') || '0');\n}\n\n/** 1500000000000000000n + 18 → \"1.5\" (trailing zeros trimmed). */\nexport function fromBaseUnits(v: bigint | string, decimals: number, maxDp?: number): string {\n if (!Number.isInteger(decimals) || decimals < 0 || decimals > 77) {\n throw new Error(`invalid decimals: ${decimals}`);\n }\n const n = typeof v === 'bigint' ? v : BigInt(v);\n const neg = n < 0n;\n const abs = neg ? -n : n;\n const base = 10n ** BigInt(decimals);\n const whole = abs / base;\n let frac = (abs % base).toString().padStart(decimals, '0');\n if (maxDp !== undefined) frac = frac.slice(0, Math.max(0, maxDp));\n frac = frac.replace(/0+$/, '');\n return `${neg ? '-' : ''}${whole}${frac ? `.${frac}` : ''}`;\n}\n","// =============================================================================\n// BlazePhoenix client — quote, build, verify, simulate and execute swaps\n// DIRECTLY against the chain, through YOUR RPC. No API in the middle, no key,\n// no BlazePhoenix server in the read path.\n//\n// const blaze = new BlazePhoenix({ rpc: { base: process.env.BASE_RPC_URL } });\n// const q = await blaze.quote({ chain: 'base', tokenIn: 'WETH', tokenOut: 'USDC', amount: '1' });\n// const plan = await blaze.buildSwap({ ...req, recipient: me, from: me });\n// await blaze.execute({ wallet, plan }); // approve (if needed) → simulate → swap\n//\n// On 2.x deployments the Quoter returns the preview AND the Router calldata in\n// one eth_call (previewAndEncode); the SDK decodes those bytes with the ABI and\n// verifies every field before they reach your wallet. On 1.x the SDK encodes\n// the same swapExactIn call locally from the previewed route.\n// =============================================================================\n\nimport {\n decodeFunctionResult, getAddress, parseEventLogs, type PublicClient, type WalletClient,\n} from 'viem';\nimport {\n ERC20_ABI, QUOTER_ABI, ROUTER_ABI, SOLVER_ABI, STAKING_SOLVENCY_ABI,\n} from './abis.js';\nimport {\n encodeSwapBestExactIn, encodeSwapExactIn, encodeSwapExactInNative, minOutFor, tightenMinOut,\n verifySwapExactIn,\n} from './calldata.js';\nimport { phoenixCheck, routeIsConsistent } from './checks.js';\nimport {\n CHAINS, NATIVE_TOKEN, resolveChain, type SupportedChainId,\n} from './constants.js';\nimport { featuresOf, isZero, type VersionFeatures, type VersionSelector } from './deployments.js';\nimport { BlazeError, decodeBlazeError, isTransportError } from './errors.js';\nimport { MAX_UINT256, buildApproveTx, toBaseUnits } from './erc20.js';\nimport {\n Registry, type ContractOverrides, type RegistryOptions, type ResolvedDeployment,\n} from './registry.js';\nimport { memGet, memPut, singleflight } from './resilience.js';\nimport { RpcRouter, rpcFromEnv, type RpcConfig, type TransportOptions, scrubUrls } from './rpc.js';\nimport type {\n Address, ApprovalStep, ExactQuote, Fill, Hex, Preview, Quote, QuoteRequest, Route,\n SimulationResult, SolvencyReport, SwapPlan, SwapRequest, TokenInfo, TxRequest,\n} from './types.js';\n\nexport interface ClientOptions extends TransportOptions {\n /**\n * YOUR RPC — required for anything on-chain. A URL, a list of URLs (your\n * fallback order), an EIP-1193 provider (the user's wallet), a viem\n * Transport, or a per-chain map of any of those. When omitted, the\n * BLAZEPHOENIX_RPC_* environment variables are read (see rpcFromEnv).\n */\n rpc?: RpcConfig;\n /** Protocol version to use: 'latest' (default, per chain), '1', '2', '2.0.0'… */\n version?: VersionSelector;\n /** Your own contract addresses per chain — always win over the registry. */\n contracts?: ContractOverrides;\n /** Deployment registry behaviour (remote refresh on/off, URL, TTL, warnings). */\n registry?: RegistryOptions;\n /** Cross-check remote-sourced deployments on your RPC before first use (default true). */\n verifyRemoteDeployments?: boolean;\n /** Micro-cache for identical PREVIEW quotes, in ms (default 1000; 0 disables).\n * Never applied to buildSwap — execution data is always fresh. */\n cacheTtlMs?: number;\n /** Default slippage for buildSwap in bps (default 50 = 0.5%). */\n slippageBps?: number;\n /** Default deadline horizon for buildSwap in seconds (default 120). */\n deadlineSec?: number;\n /** Max chunk for 2.x on-chain batchQuote (default 8; nodes cap eth_call gas). */\n batchChunk?: number;\n}\n\ninterface Ctx {\n chainId: SupportedChainId;\n dep: ResolvedDeployment;\n features: VersionFeatures;\n client: PublicClient;\n}\n\ninterface ResolvedToken { address: Address; native: boolean }\n\nconst HEX_ADDR = /^0x[0-9a-fA-F]{40}$/;\nconst INT = /^\\d{1,78}$/;\nconst UINT128_MAX = (1n << 128n) - 1n;\n\nexport type BatchItem =\n | { ok: true; quote: Quote }\n | { ok: false; error: { code: string; message: string } };\n\nexport interface ExecuteOptions {\n /** A viem WalletClient with an account (local key, injected wallet, …). */\n wallet: WalletClient;\n /** A plan from buildSwap — or pass `request` and the plan is built now. */\n plan?: SwapPlan;\n request?: SwapRequest;\n /** Rebuild the plan when it is older than this (default 30s). */\n maxQuoteAgeMs?: number;\n /** eth_call the swap from your account before sending (default true). */\n simulate?: boolean;\n /** Wait for receipts (default true). */\n wait?: boolean;\n}\n\nexport interface ExecuteResult {\n plan: SwapPlan;\n approvalHash?: Hex;\n hash: Hex;\n status?: 'success' | 'reverted';\n /** Realised output read from the Router's Swap event (when waited). */\n amountOut?: bigint;\n blockNumber?: bigint;\n}\n\nexport interface DeploymentCheck { name: string; ok: boolean; detail: string }\n\nexport interface DeploymentReport {\n ok: boolean;\n chainId: number;\n version: string;\n source: string;\n contracts: ResolvedDeployment['contracts'];\n checks: DeploymentCheck[];\n}\n\nexport class BlazePhoenix {\n readonly registry: Registry;\n readonly rpc: RpcRouter;\n private readonly version: VersionSelector;\n private readonly verifyRemote: boolean;\n private readonly cacheTtlMs: number;\n private readonly slippageBps: number;\n private readonly deadlineSec: number;\n private readonly batchChunk: number;\n private readonly verified = new Map<string, Promise<void>>();\n private readonly decimals = new Map<string, Promise<number>>();\n\n constructor(opts: ClientOptions = {}) {\n this.rpc = new RpcRouter(opts.rpc ?? rpcFromEnv(), opts);\n this.registry = new Registry(opts.registry, opts.contracts);\n this.version = opts.version ?? 'latest';\n this.verifyRemote = opts.verifyRemoteDeployments ?? true;\n this.cacheTtlMs = opts.cacheTtlMs ?? 1_000;\n this.slippageBps = opts.slippageBps ?? 50;\n this.deadlineSec = opts.deadlineSec ?? 120;\n this.batchChunk = Math.max(1, Math.min(32, opts.batchChunk ?? 8));\n minOutFor(0n, this.slippageBps, 0n); // validates the default early\n checkDeadlineSec(this.deadlineSec);\n }\n\n // ── context ────────────────────────────────────────────────────────────────\n\n private async ctx(req: { chain?: string | number; version?: string }): Promise<Ctx> {\n const chainId = req.chain !== undefined ? resolveChain(req.chain) : await this.rpc.defaultChain();\n await this.registry.ready();\n const dep = this.registry.resolve(chainId, req.version ?? this.version);\n const client = await this.rpc.client(chainId);\n if (dep.source === 'remote' && this.verifyRemote) await this.ensureVerified(dep, client);\n return { chainId, dep, features: featuresOf(dep.version), client };\n }\n\n private ensureVerified(dep: ResolvedDeployment, client: PublicClient): Promise<void> {\n const key = `${dep.chainId}|${dep.version}|${dep.contracts.router}|${dep.contracts.quoter}`;\n let p = this.verified.get(key);\n if (!p) {\n p = this.checkDeployment(dep, client).then((r) => {\n if (!r.ok) {\n const failed = r.checks.filter((c) => !c.ok).map((c) => `${c.name}: ${c.detail}`);\n throw new BlazeError('deployment_unverified',\n `registry deployment ${dep.version} on chain ${dep.chainId} failed on-chain verification — refusing to use it (${failed.join('; ')})`,\n { details: { report: r } });\n }\n });\n p.catch(() => this.verified.delete(key)); // retry next time (it may have been the node)\n this.verified.set(key, p);\n }\n return p;\n }\n\n /** Cross-check a deployment on YOUR RPC: code at every address and, on 2.x,\n * VERSION() and the Hub/Solver wiring of the Quoter, Router and Solver. */\n async verifyDeployment(req: { chain?: string | number; version?: string } = {}): Promise<DeploymentReport> {\n const chainId = req.chain !== undefined ? resolveChain(req.chain) : await this.rpc.defaultChain();\n await this.registry.ready();\n const dep = this.registry.resolve(chainId, req.version ?? this.version);\n const client = await this.rpc.client(chainId);\n return this.checkDeployment(dep, client);\n }\n\n private async checkDeployment(dep: ResolvedDeployment, client: PublicClient): Promise<DeploymentReport> {\n const checks: DeploymentCheck[] = [];\n const c = dep.contracts;\n const named = (['core', 'hub', 'solver', 'router', 'quoter'] as const).filter((k) => !isZero(c[k]));\n const codes = await Promise.all(named.map((k) => client.getCode({ address: c[k] }).catch(() => undefined)));\n named.forEach((k, i) => {\n const code = codes[i];\n checks.push({ name: `code:${k}`, ok: !!code && code !== '0x', detail: code && code !== '0x' ? `${(code.length - 2) / 2} bytes` : 'no code at address' });\n });\n if (featuresOf(dep.version).introspection) {\n // 2.x is verified through its Hub/Solver wiring: an entry without them would skip those checks.\n if (isZero(c.hub)) checks.push({ name: 'hub', ok: false, detail: 'zero address' });\n if (isZero(c.solver)) checks.push({ name: 'solver', ok: false, detail: 'zero address' });\n const eq = (a: string, b: string) => a.toLowerCase() === b.toLowerCase();\n const read = async <T>(fn: () => Promise<T>): Promise<T | undefined> => { try { return await fn(); } catch { return undefined; } };\n const [qv, rv, sv, qh, qs, rh, rs, sh] = await Promise.all([\n read(() => client.readContract({ address: c.quoter, abi: QUOTER_ABI, functionName: 'VERSION' })),\n read(() => client.readContract({ address: c.router, abi: ROUTER_ABI, functionName: 'VERSION' })),\n isZero(c.solver) ? undefined : read(() => client.readContract({ address: c.solver, abi: SOLVER_ABI, functionName: 'VERSION' })),\n read(() => client.readContract({ address: c.quoter, abi: QUOTER_ABI, functionName: 'hub' })),\n read(() => client.readContract({ address: c.quoter, abi: QUOTER_ABI, functionName: 'solver' })),\n read(() => client.readContract({ address: c.router, abi: ROUTER_ABI, functionName: 'hub' })),\n read(() => client.readContract({ address: c.router, abi: ROUTER_ABI, functionName: 'solver' })),\n isZero(c.solver) ? undefined : read(() => client.readContract({ address: c.solver, abi: SOLVER_ABI, functionName: 'hub' })),\n ]);\n checks.push({ name: 'quoter.VERSION', ok: qv === dep.version, detail: `${qv ?? 'unreadable'} (want ${dep.version})` });\n checks.push({ name: 'router.VERSION', ok: rv === dep.version, detail: `${rv ?? 'unreadable'} (want ${dep.version})` });\n if (!isZero(c.solver)) checks.push({ name: 'solver.VERSION', ok: sv === dep.version, detail: `${sv ?? 'unreadable'} (want ${dep.version})` });\n if (!isZero(c.hub)) {\n checks.push({ name: 'quoter.hub', ok: !!qh && eq(qh, c.hub), detail: `${qh ?? 'unreadable'}` });\n checks.push({ name: 'router.hub', ok: !!rh && eq(rh, c.hub), detail: `${rh ?? 'unreadable'}` });\n if (!isZero(c.solver)) checks.push({ name: 'solver.hub', ok: !!sh && eq(sh, c.hub), detail: `${sh ?? 'unreadable'}` });\n }\n if (!isZero(c.solver)) {\n checks.push({ name: 'quoter.solver', ok: !!qs && eq(qs, c.solver), detail: `${qs ?? 'unreadable'}` });\n checks.push({ name: 'router.solver', ok: !!rs && eq(rs, c.solver), detail: `${rs ?? 'unreadable'}` });\n }\n }\n return {\n ok: checks.every((x) => x.ok),\n chainId: dep.chainId, version: dep.version, source: dep.source, contracts: dep.contracts, checks,\n };\n }\n\n // ── tokens & amounts ───────────────────────────────────────────────────────\n\n private resolveToken(chainId: SupportedChainId, ref: string, side: 'tokenIn' | 'tokenOut'): ResolvedToken {\n const s = (ref ?? '').trim();\n if (HEX_ADDR.test(s)) {\n const a = getAddress(s);\n if (a.toLowerCase() === NATIVE_TOKEN.toLowerCase()) return { address: CHAINS[chainId].weth, native: true };\n return { address: a, native: false };\n }\n const c = CHAINS[chainId];\n switch (s.toUpperCase()) {\n case 'ETH': return { address: c.weth, native: true };\n case 'WETH': return { address: c.weth, native: false };\n // `usdc` holds each chain's one dollar asset: USDG on Robinhood Chain, USDC\n // elsewhere. The other symbol names a different token there, so it is refused.\n case 'USDC': case 'USDG':\n if (s.toUpperCase() === (chainId === 4663 ? 'USDG' : 'USDC')) return { address: c.usdc, native: false };\n break;\n case 'BZPX':\n if (c.bzpx) return { address: c.bzpx, native: false };\n break;\n default: break;\n }\n throw new BlazeError('bad_request',\n `${side}: \"${ref}\" is not a 0x address or a built-in symbol (ETH, WETH, ${chainId === 4663 ? 'USDG' : 'USDC'}, BZPX) on ${c.name} — pass the token address`);\n }\n\n private async decimalsOf(client: PublicClient, chainId: number, t: ResolvedToken): Promise<number> {\n if (t.native) return 18;\n const key = `${chainId}|${t.address.toLowerCase()}`;\n let p = this.decimals.get(key);\n if (!p) {\n p = client.readContract({ address: t.address, abi: ERC20_ABI, functionName: 'decimals' }).then(Number);\n p.catch(() => this.decimals.delete(key));\n this.decimals.set(key, p);\n }\n return p;\n }\n\n private async amountOf(client: PublicClient, chainId: number, req: QuoteRequest, tIn: ResolvedToken): Promise<bigint> {\n let v: bigint;\n if (req.amountIn !== undefined && req.amountIn !== null && req.amountIn !== '') {\n if (typeof req.amountIn === 'bigint') v = req.amountIn;\n else if (INT.test(String(req.amountIn).trim())) v = BigInt(String(req.amountIn).trim());\n else throw new BlazeError('bad_request', 'amountIn must be an integer in base units — use `amount` for human units (\"1.5\")');\n } else if (req.amount !== undefined) {\n const d = await this.decimalsOf(client, chainId, tIn).catch((e: unknown) => {\n throw new BlazeError('bad_request', `could not read decimals of ${tIn.address} on your RPC — pass amountIn in base units`, { cause: e });\n });\n try { v = toBaseUnits(req.amount, d); } catch (e) { throw new BlazeError('bad_request', (e as Error).message); }\n } else {\n throw new BlazeError('bad_request', 'pass amountIn (base units) or amount (human units)');\n }\n if (v <= 0n) throw new BlazeError('bad_request', 'amount must be > 0');\n if (v > UINT128_MAX) throw new BlazeError('bad_request', 'amount exceeds uint128 (the Router refuses it)');\n return v;\n }\n\n private async pair(ctx: Ctx, req: QuoteRequest) {\n const tIn = this.resolveToken(ctx.chainId, req.tokenIn, 'tokenIn');\n const tOut = this.resolveToken(ctx.chainId, req.tokenOut, 'tokenOut');\n if (tIn.address.toLowerCase() === tOut.address.toLowerCase()) {\n throw new BlazeError('bad_request', tIn.native !== tOut.native\n ? 'ETH ↔ WETH is a wrap/unwrap, not a swap — use buildWrapTx / buildUnwrapTx'\n : 'tokenIn and tokenOut are the same token');\n }\n const amountIn = await this.amountOf(ctx.client, ctx.chainId, req, tIn);\n let userMinOut = 0n;\n if (req.userMinOut !== undefined && req.userMinOut !== '') {\n const s = String(req.userMinOut).trim();\n if (typeof req.userMinOut !== 'bigint' && !INT.test(s)) throw new BlazeError('bad_request', 'userMinOut must be an integer in base units');\n userMinOut = BigInt(req.userMinOut);\n }\n return { tIn, tOut, amountIn, userMinOut };\n }\n\n // ── quotes ─────────────────────────────────────────────────────────────────\n\n private wrapReadError(e: unknown, what: string): never {\n if (e instanceof BlazeError) throw e;\n const revert = decodeBlazeError(e);\n if (revert) {\n throw new BlazeError('no_route', `${what}: ${revert.name}(${revert.code ?? ''}) — ${revert.reason}`, { revert, cause: e });\n }\n if (isTransportError(e)) {\n throw new BlazeError('rpc_error', `${what}: your RPC failed (${(e as Error)?.message?.split('\\n')[0] ?? e})`, { cause: e });\n }\n const msg = (e as Error)?.message?.split('\\n')[0] ?? String(e);\n if (/revert/i.test(msg)) throw new BlazeError('no_route', `${what}: execution reverted`, { cause: e });\n throw new BlazeError('rpc_error', `${what}: ${msg}`, { cause: e });\n }\n\n private buildQuote(ctx: Ctx, tIn: ResolvedToken, tOut: ResolvedToken, amountIn: bigint, pv: Preview, fb: Route | undefined, blockNumber?: bigint): Quote {\n return {\n chainId: ctx.chainId,\n version: ctx.dep.version,\n quoter: ctx.dep.contracts.quoter,\n router: ctx.dep.contracts.router,\n deploymentSource: ctx.dep.source,\n tokenIn: tIn.address,\n tokenOut: tOut.address,\n amountIn,\n nativeIn: tIn.native,\n nativeOut: tOut.native,\n amountOut: pv.netOut,\n preview: pv,\n route: pv.route,\n ...(fb ? { fallbackRoute: fb } : {}),\n checks: phoenixCheck(pv, tIn.address, tOut.address),\n ...(blockNumber !== undefined ? { blockNumber } : {}),\n quotedAt: Date.now(),\n };\n }\n\n private async readPreview(ctx: Ctx, tIn: Address, tOut: Address, amountIn: bigint, userMinOut: bigint, blockNumber?: bigint) {\n const base = { address: ctx.dep.contracts.quoter, abi: QUOTER_ABI, ...(blockNumber !== undefined ? { blockNumber } : {}) } as const;\n try {\n const r = userMinOut > 0n\n ? await ctx.client.readContract({ ...base, functionName: 'previewPlanWithMinOut', args: [tIn, tOut, amountIn, userMinOut] })\n : await ctx.client.readContract({ ...base, functionName: 'previewPlan', args: [tIn, tOut, amountIn] });\n const [pv, fallbackRoute, hasFallback] = r as unknown as [Preview, Route, boolean];\n return { pv, fb: hasFallback ? fallbackRoute : undefined };\n } catch (e) {\n this.wrapReadError(e, 'quote');\n }\n }\n\n /** The Quoter's preview, read on your RPC. Throws BlazeError('no_route') when\n * the Solver finds no executable path. */\n async quote(req: QuoteRequest): Promise<Quote> {\n const ctx = await this.ctx(req);\n const { tIn, tOut, amountIn, userMinOut } = await this.pair(ctx, req);\n const key = `Q|${ctx.chainId}|${ctx.dep.version}|${ctx.dep.contracts.quoter}|${tIn.address}|${tIn.native}|${tOut.address}|${tOut.native}|${amountIn}|${userMinOut}|${req.blockNumber ?? ''}`;\n const cacheable = this.cacheTtlMs > 0 && req.blockNumber === undefined;\n if (cacheable) {\n const hit = memGet(key, this.cacheTtlMs) as Quote | undefined;\n if (hit) return hit;\n }\n const q = await singleflight(key, async () => {\n const { pv, fb } = await this.readPreview(ctx, tIn.address, tOut.address, amountIn, userMinOut, req.blockNumber);\n return this.buildQuote(ctx, tIn, tOut, amountIn, pv, fb, req.blockNumber);\n });\n if (cacheable) memPut(key, q);\n return q;\n }\n\n /** Execution-grade re-quote (previewPlanExact): every concentrated leg is\n * dry-run on the pool itself. Slower; derive a tight userMinOut from it. */\n async quoteExact(req: QuoteRequest): Promise<ExactQuote> {\n const ctx = await this.ctx(req);\n const { tIn, tOut, amountIn } = await this.pair(ctx, req);\n try {\n const [route, exactOut] = (await ctx.client.readContract({\n address: ctx.dep.contracts.quoter, abi: QUOTER_ABI, functionName: 'previewPlanExact',\n args: [tIn.address, tOut.address, amountIn],\n ...(req.blockNumber !== undefined ? { blockNumber: req.blockNumber } : {}),\n })) as unknown as [Route, bigint];\n return {\n chainId: ctx.chainId, version: ctx.dep.version, tokenIn: tIn.address, tokenOut: tOut.address,\n amountIn, exactOut, route, quotedAt: Date.now(),\n };\n } catch (e) {\n this.wrapReadError(e, 'exact quote');\n }\n }\n\n /** Many quotes. 2.x deployments answer in chunks of on-chain batchQuote\n * (one eth_call per chunk); anything else, or a failed chunk, falls back\n * to individual previews. Per-item failures come back inline. */\n async quoteBatch(reqs: QuoteRequest[]): Promise<BatchItem[]> {\n const fail = (e: unknown): BatchItem => ({\n ok: false,\n error: { code: e instanceof BlazeError ? e.code : 'error', message: scrubUrls((e as Error)?.message ?? String(e)) },\n });\n const out: BatchItem[] = new Array(reqs.length);\n type Prepared = { i: number; ctx: Ctx; tIn: ResolvedToken; tOut: ResolvedToken; amountIn: bigint; userMinOut: bigint };\n const groups = new Map<string, Prepared[]>();\n const singles: number[] = [];\n await Promise.all(reqs.map(async (r, i) => {\n try {\n const ctx = await this.ctx(r);\n const p = await this.pair(ctx, r);\n if (ctx.features.batchQuote && r.blockNumber === undefined) {\n const k = `${ctx.chainId}|${ctx.dep.contracts.quoter}`;\n const g = groups.get(k) ?? [];\n g.push({ i, ctx, ...p });\n groups.set(k, g);\n } else {\n singles.push(i);\n }\n } catch (e) { out[i] = fail(e); }\n }));\n const runSingle = async (i: number) => {\n try { out[i] = { ok: true, quote: await this.quote(reqs[i]) }; } catch (e) { out[i] = fail(e); }\n };\n const tasks: Promise<void>[] = singles.map(runSingle);\n for (const g of groups.values()) {\n for (let s = 0; s < g.length; s += this.batchChunk) {\n const chunk = g.slice(s, s + this.batchChunk);\n tasks.push((async () => {\n const { ctx } = chunk[0];\n try {\n const previews = (await ctx.client.readContract({\n address: ctx.dep.contracts.quoter, abi: QUOTER_ABI, functionName: 'batchQuote',\n args: [chunk.map((p) => ({ tIn: p.tIn.address, tOut: p.tOut.address, amountIn: p.amountIn, userMinOut: p.userMinOut }))],\n })) as unknown as Preview[];\n chunk.forEach((p, j) => {\n const pv = previews[j];\n if (!pv || pv.route.hops.length === 0) {\n out[p.i] = { ok: false, error: { code: 'no_route', message: 'no executable route for this pair and size' } };\n } else {\n out[p.i] = { ok: true, quote: this.buildQuote(ctx, p.tIn, p.tOut, p.amountIn, pv, undefined) };\n }\n });\n } catch {\n await Promise.all(chunk.map((p) => runSingle(p.i)));\n }\n })());\n }\n }\n await Promise.all(tasks);\n return out;\n }\n\n // ── swaps ──────────────────────────────────────────────────────────────────\n\n /**\n * Quote and prepare the swap transaction(s): the exact calldata to send, the\n * minimum it enforces, and the approval step when one is needed. Nothing is\n * signed or sent — `execute` does that with YOUR wallet.\n */\n async buildSwap(req: SwapRequest): Promise<SwapPlan> {\n const ctx = await this.ctx(req);\n const { tIn, tOut, amountIn, userMinOut } = await this.pair(ctx, req);\n if (!req.recipient || !HEX_ADDR.test(req.recipient)) throw new BlazeError('bad_request', 'recipient must be a 0x address');\n const recipient = getAddress(req.recipient);\n if (req.from !== undefined && !HEX_ADDR.test(req.from)) throw new BlazeError('bad_request', 'from must be a 0x address');\n const from = req.from ? getAddress(req.from) : undefined;\n const slippageBps = req.slippageBps ?? this.slippageBps;\n minOutFor(0n, slippageBps, 0n); // validate\n const deadline = req.deadline ?? BigInt(Math.floor(Date.now() / 1000) + checkDeadlineSec(req.deadlineSec ?? this.deadlineSec));\n const mode = req.mode ?? 'route';\n const { features } = ctx;\n const router = ctx.dep.contracts.router;\n\n if (tIn.native && !features.nativeEntry) {\n throw new BlazeError('unsupported_by_version',\n `native ETH input needs a 2.x Router (this deployment is ${ctx.dep.version}): wrap first with buildWrapTx(chain, amount), then swap WETH`);\n }\n if (mode === 'best' && !features.swapBest) {\n throw new BlazeError('unsupported_by_version', `mode 'best' (swapBestExactIn) needs a 2.x Router (this deployment is ${ctx.dep.version})`);\n }\n if (mode === 'best' && tIn.native) {\n throw new BlazeError('bad_request', \"mode 'best' pulls an ERC-20 — use WETH as tokenIn, or mode 'route' for native ETH\");\n }\n\n let pv: Preview;\n let fb: Route | undefined;\n let data: Hex;\n let encodedBy: SwapPlan['encodedBy'] = 'sdk';\n let entry: SwapPlan['entry'];\n let minOut: bigint;\n\n if (features.previewAndEncode && !tIn.native && mode === 'route') {\n // 2.x: ONE eth_call returns the preview AND the Router calldata that executes it.\n let call: Hex;\n try {\n const r = userMinOut > 0n\n ? await ctx.client.readContract({\n address: ctx.dep.contracts.quoter, abi: QUOTER_ABI, functionName: 'previewAndEncodeWithMinOut',\n args: [tIn.address, tOut.address, amountIn, userMinOut, recipient, deadline],\n })\n : await ctx.client.readContract({\n address: ctx.dep.contracts.quoter, abi: QUOTER_ABI, functionName: 'previewAndEncode',\n args: [tIn.address, tOut.address, amountIn, recipient, deadline],\n });\n [pv, call] = r as unknown as [Preview, Hex];\n } catch (e) {\n this.wrapReadError(e, 'previewAndEncode');\n }\n assertExecutable(pv, tIn.address, tOut.address, call);\n minOut = maxBig(minOutFor(pv.netOut, slippageBps, pv.effectiveMinOut), userMinOut);\n verifySwapExactIn(call, {\n tokenIn: tIn.address, tokenOut: tOut.address, amountIn, recipient, deadline,\n minOutAtLeast: pv.effectiveMinOut, route: pv.route,\n });\n data = tightenMinOut(call, minOut);\n encodedBy = 'quoter';\n entry = 'swapExactIn';\n } else {\n ({ pv, fb } = await this.readPreview(ctx, tIn.address, tOut.address, amountIn, userMinOut));\n assertExecutable(pv, tIn.address, tOut.address);\n minOut = maxBig(minOutFor(pv.netOut, slippageBps, pv.effectiveMinOut), userMinOut);\n if (mode === 'best') {\n entry = 'swapBestExactIn';\n data = encodeSwapBestExactIn(tIn.address, tOut.address, amountIn, minOut, recipient, deadline);\n } else if (tIn.native) {\n entry = 'swapExactInNative';\n data = encodeSwapExactInNative(pv.route, minOut, recipient, deadline);\n } else {\n entry = 'swapExactIn';\n data = encodeSwapExactIn(pv.route, amountIn, minOut, recipient, deadline);\n }\n }\n\n const tx: TxRequest = { chainId: ctx.chainId, to: router, data, value: tIn.native ? amountIn : 0n };\n\n let approval: ApprovalStep | null = null;\n if (!tIn.native) {\n const want = req.approve === 'max' ? MAX_UINT256 : amountIn;\n let current: bigint | undefined;\n if (from) {\n current = await ctx.client.readContract({\n address: tIn.address, abi: ERC20_ABI, functionName: 'allowance', args: [from, router],\n }).catch((e: unknown) => this.wrapReadError(e, 'allowance'));\n }\n if (current === undefined || current < amountIn) {\n approval = {\n token: tIn.address, spender: router, amount: want,\n ...(current !== undefined ? { current } : {}),\n tx: buildApproveTx({ chain: ctx.chainId, token: tIn.address, amount: want, spender: router }),\n };\n }\n }\n\n const quote = this.buildQuote(ctx, tIn, tOut, amountIn, pv, fb);\n return {\n quote, entry, encodedBy, tx, recipient, minOut, deadline, slippageBps, approval,\n unwrapAfter: tOut.native,\n steps: approval ? [approval.tx, tx] : [tx],\n };\n }\n\n /** eth_call the swap from `from` on your RPC: the realised amountOut if it\n * would settle now, or the decoded reason it would revert. */\n async simulate(plan: SwapPlan, from: Address): Promise<SimulationResult> {\n if (plan.approval && plan.approval.current !== undefined && plan.approval.current < plan.quote.amountIn) {\n return { ok: false, error: { contract: 'unknown', name: 'allowance', reason: 'the Router is not approved for tokenIn yet — send plan.approval.tx first' } };\n }\n const client = await this.rpc.client(plan.tx.chainId);\n try {\n const { data } = await client.call({ account: from, to: plan.tx.to, data: plan.tx.data, value: plan.tx.value });\n const amountOut = data && data !== '0x'\n ? (decodeFunctionResult({ abi: ROUTER_ABI, functionName: plan.entry, data }) as bigint)\n : undefined;\n return { ok: true, ...(amountOut !== undefined ? { amountOut } : {}) };\n } catch (e) {\n if (isTransportError(e)) throw new BlazeError('rpc_error', `simulation: your RPC failed (${(e as Error)?.message?.split('\\n')[0]})`, { cause: e });\n const d = decodeBlazeError(e);\n return { ok: false, error: d ?? { contract: 'unknown', name: 'revert', reason: (e as Error)?.message?.split('\\n')[0] ?? 'execution reverted' } };\n }\n }\n\n /**\n * Execute with YOUR wallet: approve when needed (exact amount by default),\n * simulate, send the swap, and read the realised output from the receipt.\n * The SDK never holds or asks for a key — the WalletClient signs.\n */\n async execute(opts: ExecuteOptions): Promise<ExecuteResult> {\n const { wallet } = opts;\n const account = wallet.account;\n if (!account) throw new BlazeError('bad_request', 'wallet has no account — create the WalletClient with an account');\n let plan = opts.plan;\n const req = opts.request;\n const maxAge = opts.maxQuoteAgeMs ?? 30_000;\n if (!plan) {\n if (!req) throw new BlazeError('bad_request', 'execute needs a plan or a request');\n plan = await this.buildSwap({ ...req, from: req.from ?? account.address });\n } else if (Date.now() - plan.quote.quotedAt > maxAge) {\n if (!req) throw new BlazeError('bad_request', `plan is older than ${maxAge}ms — pass \\`request\\` so it can be rebuilt, or rebuild it yourself`);\n plan = await this.buildSwap({ ...req, from: req.from ?? account.address });\n }\n const walletChain = await wallet.getChainId();\n if (walletChain !== plan.tx.chainId) {\n throw new BlazeError('wallet_chain_mismatch', `wallet is on chain ${walletChain}, the swap is on ${plan.tx.chainId} — switch the wallet first`);\n }\n const client = await this.rpc.client(plan.tx.chainId);\n const wait = opts.wait ?? true;\n // The wallet's own chain when it has one (viem then asserts it again at\n // send time); null otherwise — we already checked the chain id above.\n const send = (tx: TxRequest) => wallet.sendTransaction({\n account, chain: wallet.chain ?? null, to: tx.to, data: tx.data, value: tx.value,\n } as never) as Promise<Hex>;\n\n let approvalHash: Hex | undefined;\n if (plan.approval) {\n const current = await client.readContract({\n address: plan.approval.token, abi: ERC20_ABI, functionName: 'allowance', args: [account.address, plan.approval.spender],\n });\n if (current < plan.quote.amountIn) {\n approvalHash = await send(plan.approval.tx);\n const r = await client.waitForTransactionReceipt({ hash: approvalHash });\n if (r.status !== 'success') throw new BlazeError('reverted', `approval transaction reverted (${approvalHash})`);\n }\n plan = { ...plan, approval: { ...plan.approval, current: plan.approval.amount } };\n // Waiting for the approval can outlast maxQuoteAgeMs: check the age again.\n if (Date.now() - plan.quote.quotedAt > maxAge) {\n if (!req) {\n throw new BlazeError('bad_request', `plan went older than ${maxAge}ms while the approval confirmed`\n + `${approvalHash ? ` (${approvalHash})` : ''} — the swap was NOT sent; rebuild the plan, or pass \\`request\\` so it can be rebuilt`);\n }\n plan = await this.buildSwap({ ...req, from: req.from ?? account.address });\n }\n }\n if (opts.simulate ?? true) {\n const sim = await this.simulate(plan, account.address);\n if (!sim.ok) {\n throw new BlazeError('reverted', `simulation says the swap would revert: ${sim.error?.name}${sim.error?.code !== undefined ? `(${sim.error.code})` : ''} — ${sim.error?.reason}`, sim.error ? { revert: sim.error } : {});\n }\n }\n const hash = await send(plan.tx);\n if (!wait) return { plan, ...(approvalHash ? { approvalHash } : {}), hash };\n const receipt = await client.waitForTransactionReceipt({ hash });\n let amountOut: bigint | undefined;\n if (receipt.status === 'success') {\n const logs = parseEventLogs({ abi: ROUTER_ABI, logs: receipt.logs, eventName: 'Swap' })\n .filter((l) => l.address.toLowerCase() === plan!.tx.to.toLowerCase());\n if (logs.length) amountOut = (logs[logs.length - 1].args as { amountOut: bigint }).amountOut;\n }\n return {\n plan, ...(approvalHash ? { approvalHash } : {}), hash,\n status: receipt.status, blockNumber: receipt.blockNumber, ...(amountOut !== undefined ? { amountOut } : {}),\n };\n }\n\n // ── reads ──────────────────────────────────────────────────────────────────\n\n /** symbol / name / decimals, read on your RPC. */\n async tokenInfo(chain: string | number | undefined, token: string): Promise<TokenInfo> {\n const chainId = chain !== undefined ? resolveChain(chain) : await this.rpc.defaultChain();\n const client = await this.rpc.client(chainId);\n const t = this.resolveToken(chainId, token, 'tokenIn');\n if (t.native) return { chainId, address: NATIVE_TOKEN, symbol: 'ETH', name: 'Ether', decimals: 18, native: true };\n try {\n const [symbol, name, decimals] = await Promise.all([\n client.readContract({ address: t.address, abi: ERC20_ABI, functionName: 'symbol' }).catch(() => '?'),\n client.readContract({ address: t.address, abi: ERC20_ABI, functionName: 'name' }).catch(() => ''),\n this.decimalsOf(client, chainId, t),\n ]);\n return { chainId, address: t.address, symbol, name, decimals, native: false };\n } catch (e) {\n throw new BlazeError('bad_request', `${t.address} does not answer decimals() on ${CHAINS[chainId].name} — not an ERC-20?`, { cause: e });\n }\n }\n\n /** The staking engine's live proof-of-solvency (Base), read on your RPC. */\n async solvency(chain: string | number = 8453): Promise<SolvencyReport> {\n const chainId = resolveChain(chain);\n const staking = CHAINS[chainId].staking;\n if (!staking) throw new BlazeError('not_deployed', `no BlazePhoenix staking engine on ${CHAINS[chainId].name}`);\n const client = await this.rpc.client(chainId);\n let blockNumber: bigint, r: unknown, isSolvent: boolean;\n try {\n blockNumber = await client.getBlockNumber();\n [r, isSolvent] = await Promise.all([\n client.readContract({ address: staking, abi: STAKING_SOLVENCY_ABI, functionName: 'solvency', blockNumber }),\n client.readContract({ address: staking, abi: STAKING_SOLVENCY_ABI, functionName: 'isSolvent', blockNumber }),\n ]);\n } catch (e) {\n throw new BlazeError('rpc_error', `solvency read failed on your RPC: ${scrubUrls(String((e as Error)?.message ?? e))}`, { cause: e });\n }\n const s = r as unknown as Omit<SolvencyReport, 'chainId' | 'staking' | 'isSolvent' | 'blockNumber'> & { solvent: boolean };\n return {\n chainId, staking, isSolvent,\n backing: s.backing, owed: s.owed, surplus: s.surplus, deficit: s.deficit,\n collateralRatioWad: s.collateralRatioWad, totalStaked: s.totalStaked, totalDebt: s.totalDebt,\n rewardReserve: s.rewardReserve, protocolReserve: s.protocolReserve,\n pendingDistribution: s.pendingDistribution, totalBadDebt: s.totalBadDebt,\n totalUncollectedInterest: s.totalUncollectedInterest, blockNumber,\n };\n }\n\n /** Router fills over a block range (Swap events; 2.x adds ExecutionProof).\n * The range is read in chunks (`chunkBlocks`, default 2000) because most\n * providers cap eth_getLogs ranges — especially on free tiers. */\n async getFills(opts: {\n chain?: string | number; version?: string; fromBlock?: bigint; toBlock?: bigint;\n lookbackBlocks?: bigint; chunkBlocks?: bigint;\n }): Promise<Fill[]> {\n const ctx = await this.ctx(opts);\n const toBlock = opts.toBlock ?? await ctx.client.getBlockNumber();\n const span = opts.lookbackBlocks ?? BigInt(Math.ceil(3_600 / CHAINS[ctx.chainId].blockTime)); // ~1h\n const fromBlock = opts.fromBlock ?? (toBlock > span ? toBlock - span : 0n);\n if (fromBlock > toBlock) throw new BlazeError('bad_request', 'fromBlock is after toBlock');\n const chunk = opts.chunkBlocks && opts.chunkBlocks > 0n ? opts.chunkBlocks : 2_000n;\n const router = ctx.dep.contracts.router;\n const fills: Fill[] = [];\n for (let start = fromBlock; start <= toBlock; start += chunk) {\n const end = start + chunk - 1n > toBlock ? toBlock : start + chunk - 1n;\n const raw = await ctx.client.getLogs({ address: router, fromBlock: start, toBlock: end })\n .catch((e: unknown) => this.wrapReadError(e, `getLogs ${start}-${end}`));\n fills.push(...toFills(raw));\n }\n return fills;\n }\n\n /** Stream fills as they land (polling your RPC). Returns an unwatch function. */\n async watchFills(opts: { chain?: string | number; version?: string; pollMs?: number; onFill: (f: Fill) => void; onError?: (e: unknown) => void }): Promise<() => void> {\n const ctx = await this.ctx(opts);\n return ctx.client.watchEvent({\n address: ctx.dep.contracts.router,\n pollingInterval: opts.pollMs ?? 4_000,\n onError: opts.onError,\n onLogs: (logs) => { for (const f of toFills(logs as never)) opts.onFill(f); },\n });\n }\n\n /** The chains × versions table this client sees (embedded + registry + overrides). */\n async deployments() {\n await this.registry.ready();\n return { registry: this.registry.status(), rows: this.registry.table() };\n }\n\n /** Which deployment a request would use right now (no RPC). */\n async resolveDeployment(req: { chain: string | number; version?: string }): Promise<ResolvedDeployment & { features: VersionFeatures }> {\n await this.registry.ready();\n const dep = this.registry.resolve(resolveChain(req.chain), req.version ?? this.version);\n return { ...dep, features: featuresOf(dep.version) };\n }\n}\n\nfunction toFills(raw: readonly { transactionHash: Hex | null; blockNumber: bigint | null; logIndex: number | null }[]): Fill[] {\n const parsed = parseEventLogs({ abi: ROUTER_ABI, logs: raw as never });\n const fills: Fill[] = [];\n const proofs = new Map<string, { quoted: bigint; realized: bigint; floorUsed: bigint }>();\n for (const l of parsed) {\n if (l.eventName === 'ExecutionProof') {\n const a = l.args as { quoted: bigint; realized: bigint; floorUsed: bigint };\n proofs.set(`${l.transactionHash}|${(l.logIndex ?? 0) - 1}`, { quoted: a.quoted, realized: a.realized, floorUsed: a.floorUsed });\n }\n }\n for (const l of parsed) {\n if (l.eventName !== 'Swap') continue;\n const a = l.args as { user: Address; tokenIn: Address; tokenOut: Address; amountIn: bigint; amountOut: bigint; legs: bigint };\n const proof = proofs.get(`${l.transactionHash}|${l.logIndex ?? 0}`);\n fills.push({\n txHash: l.transactionHash as Hex, blockNumber: l.blockNumber ?? 0n, logIndex: l.logIndex ?? 0,\n user: a.user, tokenIn: a.tokenIn, tokenOut: a.tokenOut, amountIn: a.amountIn, amountOut: a.amountOut, legs: a.legs,\n ...(proof ? { proof } : {}),\n });\n }\n return fills;\n}\n\nfunction assertExecutable(pv: Preview, tokenIn: Address, tokenOut: Address, call?: Hex): void {\n if (!pv.canExecute || (call !== undefined && (call === '0x' || call.length < 10))) {\n throw new BlazeError('not_executable',\n `the Quoter says this route cannot execute now (netOut ${pv.netOut}, effectiveMinOut ${pv.effectiveMinOut}) — `\n + 'try a smaller size, a looser userMinOut, or another pair',\n { details: { netOut: pv.netOut.toString(), effectiveMinOut: pv.effectiveMinOut.toString() } });\n }\n if (!routeIsConsistent(pv.route, tokenIn, tokenOut)) {\n throw new BlazeError('calldata_mismatch', 'the previewed route does not connect tokenIn → tokenOut — refused');\n }\n}\n\nfunction checkDeadlineSec(n: number): number {\n if (!Number.isInteger(n) || n < 10 || n > 3_600) {\n throw new BlazeError('bad_request', 'deadlineSec must be an integer between 10 and 3600');\n }\n return n;\n}\n\nconst maxBig = (a: bigint, b: bigint) => (a > b ? a : b);\n\n// ── deep links (no RPC) ──────────────────────────────────────────────────────\n\nexport interface DeepLinkOptions {\n chain?: number | string;\n tokenIn?: string;\n tokenOut?: string;\n /** Human units for the pay field (e.g. \"0.5\"). */\n amount?: string;\n tab?: 'home' | 'swap' | 'staking' | 'airdrop' | 'api';\n baseUrl?: string;\n}\n\n/** A link that opens the site pre-filled — bot buttons, referral posts. */\nexport function deepLink(opts: DeepLinkOptions = {}): string {\n const base = (opts.baseUrl ?? 'https://blazephoenix.xyz').replace(/\\/+$/, '');\n const sp = new URLSearchParams();\n sp.set('tab', opts.tab ?? 'swap');\n if (opts.chain !== undefined) sp.set('chain', String(resolveChain(opts.chain)));\n if (opts.tokenIn) sp.set('in', opts.tokenIn);\n if (opts.tokenOut) sp.set('out', opts.tokenOut);\n if (opts.amount) sp.set('amt', opts.amount);\n return `${base}/?${sp.toString()}`;\n}\n\nexport interface PollOptions {\n /** Tick interval in ms (min 500, default 4000). */\n intervalMs?: number;\n onError?: (e: unknown) => void;\n}\n\n/** Poll a pair on your RPC; overlap-safe (a slow tick is skipped, not stacked). */\nexport function pollQuote(\n client: BlazePhoenix,\n req: QuoteRequest,\n onQuote: (q: Quote) => void,\n opts: PollOptions = {},\n): () => void {\n const interval = Math.max(500, opts.intervalMs ?? 4_000);\n let stopped = false;\n let busy = false;\n const tick = async () => {\n if (stopped || busy) return;\n busy = true;\n try {\n const q = await client.quote(req);\n if (!stopped) onQuote(q);\n } catch (e) {\n if (!stopped) opts.onError?.(e);\n } finally {\n busy = false;\n }\n };\n void tick();\n const timer = setInterval(() => { void tick(); }, interval);\n return () => { stopped = true; clearInterval(timer); };\n}\n","// JSON-safe projection: bigint → decimal string, recursively. Use it before\n// JSON.stringify, when handing a quote to an HTTP response, a queue or an LLM.\nexport type Jsonify<T> = T extends bigint\n ? string\n : T extends (infer U)[]\n ? Jsonify<U>[]\n : T extends readonly (infer U)[]\n ? readonly Jsonify<U>[]\n : T extends object\n ? { [K in keyof T]: Jsonify<T[K]> }\n : T;\n\nexport function toJSON<T>(v: T): Jsonify<T> {\n return walk(v) as Jsonify<T>;\n}\n\nfunction walk(v: unknown): unknown {\n if (typeof v === 'bigint') return v.toString();\n if (Array.isArray(v)) return v.map(walk);\n if (v && typeof v === 'object') {\n const out: Record<string, unknown> = {};\n for (const [k, val] of Object.entries(v)) {\n if (typeof val === 'function') continue;\n out[k] = walk(val);\n }\n return out;\n }\n return v;\n}\n"]}