@blazephoenix/sdk 0.4.0 → 1.0.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/resilience.ts","../src/client.ts","../src/abis.ts","../src/erc20.ts","../src/onchain.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["// =============================================================================\n// Protocol constants — BlazePhoenix v1.0.0 deployments.\n// Source of truth at runtime: GET https://blazephoenix.xyz/api/manifest\n// (these statics let the SDK work fully offline / on-chain-only).\n// =============================================================================\n\nexport const API_BASE = 'https://blazephoenix.xyz';\n\nexport type SupportedChainId = 1 | 8453 | 10 | 42161;\n\nexport interface ChainInfo {\n chainId: SupportedChainId;\n name: string;\n explorer: string;\n weth: `0x${string}`;\n usdc: `0x${string}`;\n bzpx?: `0x${string}`;\n contracts: {\n hub: `0x${string}`;\n solver: `0x${string}`;\n router: `0x${string}`;\n quoter: `0x${string}`;\n };\n}\n\nexport const CHAINS: Record<SupportedChainId, ChainInfo> = {\n 1: {\n chainId: 1,\n name: 'Ethereum',\n explorer: 'https://etherscan.io',\n weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n usdc: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n contracts: {\n hub: '0xc4FA9a5720fe3294D3AA9fc427E2a760591E57ae',\n solver: '0xc124d91258db0C14bf13b826CF64E16bfEA8a73e',\n router: '0xE1aE5f49013920CF71De8CED4043e14C4d63416b',\n quoter: '0x4a20AA0912388ff7A9221Ab6BFC224cc20Baa0c3',\n },\n },\n 8453: {\n chainId: 8453,\n name: 'Base',\n explorer: 'https://basescan.org',\n weth: '0x4200000000000000000000000000000000000006',\n usdc: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n bzpx: '0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483',\n contracts: {\n hub: '0x428554DEe93A1B8B5Bc6Fd19adDAfe55106fc04C',\n solver: '0xB1902990260975dD4C89ad74B1f317bc100CB830',\n router: '0x2a779f9Be49aac57495A8B6467Cc325a8a47Eb9f',\n quoter: '0x4cEF0615614B212895F45Aa1D4833B16666E18d3',\n },\n },\n 10: {\n chainId: 10,\n name: 'Optimism',\n explorer: 'https://optimistic.etherscan.io',\n weth: '0x4200000000000000000000000000000000000006',\n usdc: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',\n contracts: {\n hub: '0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483',\n solver: '0x0c0d96B237FABa8FE5e8aE77754Ef29109D2B33f',\n router: '0x7262e7483ab6f0db7b8f90eC3a9de3B02Ab36F6A',\n quoter: '0xfB18EF6f62A0278A273Af4b7A46b454F9E482dc2',\n },\n },\n 42161: {\n chainId: 42161,\n name: 'Arbitrum',\n explorer: 'https://arbiscan.io',\n weth: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n usdc: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',\n contracts: {\n hub: '0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483',\n solver: '0x0c0d96B237FABa8FE5e8aE77754Ef29109D2B33f',\n router: '0x7262e7483ab6f0db7b8f90eC3a9de3B02Ab36F6A',\n quoter: '0xfB18EF6f62A0278A273Af4b7A46b454F9E482dc2',\n },\n },\n};\n\n/** Accepts a chain id (number or numeric string) or a human alias. */\nexport function resolveChain(chain: number | string): SupportedChainId {\n const 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 };\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 or 42161/arbitrum`,\n );\n }\n return id;\n}\n\n/** Public, KEYLESS RPC endpoints per chain — community infrastructure, no\n * providers, no keys (enforced by tests). They make the on-chain module work\n * with ZERO configuration; production integrations should still bring their\n * own `rpcUrl` for guaranteed throughput. */\nexport const PUBLIC_RPCS: Record<SupportedChainId, string[]> = {\n 1: [\n 'https://ethereum-rpc.publicnode.com',\n 'https://cloudflare-eth.com',\n 'https://1rpc.io/eth',\n ],\n 8453: [\n 'https://mainnet.base.org',\n 'https://base-rpc.publicnode.com',\n 'https://1rpc.io/base',\n ],\n 10: [\n 'https://optimism-rpc.publicnode.com',\n 'https://mainnet.optimism.io',\n 'https://1rpc.io/op',\n ],\n 42161: [\n 'https://arbitrum-one-rpc.publicnode.com',\n 'https://arb1.arbitrum.io/rpc',\n 'https://1rpc.io/arb',\n ],\n};\n\n/** Protocol fee (bps) applied to quoted output; execution surplus is fee-exempt. */\nexport const FEE_BPS = 28;\n\n/** Router event topic0 hashes (one `Swap` per fill — index everything with them).\n * Verified against the ABIs by `npm test` (viem toEventSelector). */\nexport const SWAP_TOPIC0 =\n '0xd6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf7760413' as const;\nexport const SURPLUS_TOPIC0 =\n '0x1a3afef0f067eb51a6bfec6ab3625a4408dd8c3571b72836483e68feb70d1026' as const;\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 try {\n res = await fetchFn(url, { ...init, signal: AbortSignal.timeout(timeoutMs) });\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 }\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// HTTP client — zero dependencies (native fetch). Every quote is computed\n// on-chain by the BlazePhoenix Quoter; the API is a thin mirror of the chain.\n// No API key. Open CORS. https://blazephoenix.xyz/?tab=api\n// =============================================================================\n\nimport { API_BASE, resolveChain } from './constants.js';\nimport { memGet, memPut, resilientFetch, singleflight } from './resilience.js';\nimport type {\n BatchResponse, HealthResponse, ManifestResponse, QuoteRequest, QuoteResponse, QuoteTx,\n} from './types.js';\n\nexport class BlazeApiError extends Error {\n readonly code: string;\n readonly status: number;\n constructor(code: string, message: string, status: number) {\n super(message);\n this.name = 'BlazeApiError';\n this.code = code;\n this.status = status;\n }\n}\n\nexport interface ClientOptions {\n /** Override the API origin (e.g. a mirror). Default: https://blazephoenix.xyz */\n baseUrl?: string;\n /** Custom fetch (tests, proxies). Default: globalThis.fetch. */\n fetchFn?: typeof fetch;\n /** Per-request timeout in ms. Default 15000. */\n timeoutMs?: number;\n /** Extra attempts on transient failures (network, 429, 502-504), honouring\n * the server's retry-after. Default 2. Set 0 to disable. */\n retries?: number;\n /** Micro-cache for PREVIEW quotes (no recipient, no exact) — absorbs hot\n * loops without serving stale execution data. Default 1000ms; 0 disables. */\n cacheTtlMs?: number;\n}\n\nfunction toSearch(req: QuoteRequest): URLSearchParams {\n const sp = new URLSearchParams();\n sp.set('chain', String(resolveChain(req.chain)));\n sp.set('in', req.tokenIn.trim());\n sp.set('out', req.tokenOut.trim());\n sp.set('amountIn', typeof req.amountIn === 'bigint' ? req.amountIn.toString() : String(req.amountIn).trim());\n if (req.recipient) sp.set('recipient', req.recipient);\n if (req.slippageBps !== undefined) sp.set('slippageBps', String(req.slippageBps));\n if (req.deadlineSec !== undefined) sp.set('deadlineSec', String(req.deadlineSec));\n if (req.exact) sp.set('exact', '1');\n return sp;\n}\n\nexport class BlazePhoenix {\n private readonly base: string;\n private readonly fetchFn: typeof fetch;\n private readonly timeoutMs: number;\n private readonly retries: number;\n private readonly cacheTtlMs: number;\n\n constructor(opts: ClientOptions = {}) {\n this.base = (opts.baseUrl ?? API_BASE).replace(/\\/+$/, '');\n this.fetchFn = opts.fetchFn ?? globalThis.fetch;\n this.timeoutMs = opts.timeoutMs ?? 15_000;\n this.retries = opts.retries ?? 2;\n this.cacheTtlMs = opts.cacheTtlMs ?? 1_000;\n if (!this.fetchFn) throw new Error('No fetch available — Node >= 18 required (or pass fetchFn)');\n }\n\n /** Build the GET /api/quote URL for a request (useful for logging/debugging). */\n quoteUrl(req: QuoteRequest): string {\n return `${this.base}/api/quote?${toSearch(req).toString()}`;\n }\n\n private async call<T>(path: string, init?: RequestInit): Promise<T> {\n const res = await resilientFetch(this.fetchFn, `${this.base}${path}`, init, {\n retries: this.retries,\n timeoutMs: this.timeoutMs,\n });\n const body = (await res.json().catch(() => null)) as\n | (T & { ok: true })\n | { ok: false; code?: string; error?: string }\n | null;\n if (!body || typeof body !== 'object') {\n throw new BlazeApiError('bad_response', `non-JSON response (HTTP ${res.status})`, res.status);\n }\n if ('ok' in body && body.ok === false) {\n throw new BlazeApiError(body.code ?? 'error', body.error ?? 'request failed', res.status);\n }\n return body as T;\n }\n\n /** One quote — previewPlan computed on-chain. Throws BlazeApiError on failure.\n * Identical concurrent calls share one request; preview quotes ride a tiny\n * micro-cache (cacheTtlMs) so hot loops never hammer the wire. */\n async quote(req: QuoteRequest): Promise<QuoteResponse> {\n const qs = toSearch(req).toString();\n const key = `Q ${this.base}?${qs}`;\n const cacheable = !req.recipient && !req.exact && this.cacheTtlMs > 0;\n if (cacheable) {\n const hit = memGet(key, this.cacheTtlMs);\n if (hit) return hit as QuoteResponse;\n }\n const q = await singleflight(key, () => this.call<QuoteResponse>(`/api/quote?${qs}`));\n if (cacheable) memPut(key, q);\n return q;\n }\n\n /** Up to 10 quotes in one round-trip (screeners / arb loops).\n * Per-item failures come back inline — the batch itself only throws on\n * transport/validation errors. Identical concurrent batches coalesce. */\n quoteBatch(reqs: QuoteRequest[]): Promise<BatchResponse> {\n const body = JSON.stringify({\n requests: reqs.map((r) => Object.fromEntries(toSearch(r).entries())),\n });\n return singleflight(`B ${this.base} ${body}`, () =>\n this.call<BatchResponse>('/api/quote/batch', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body,\n }));\n }\n\n /** Service health + per-chain live flags. Zero upstream cost server-side —\n * poll it from your monitor as often as you like. */\n health(): Promise<HealthResponse> {\n return this.call<HealthResponse>('/api/health');\n }\n\n /** Machine-readable protocol manifest — near-static, cached for 1h. */\n async manifest(): Promise<ManifestResponse> {\n const key = `M ${this.base}`;\n const hit = memGet(key, 3_600_000);\n if (hit) return hit as ManifestResponse;\n const m = await singleflight(key, () => this.call<ManifestResponse>('/api/manifest'));\n memPut(key, m);\n return m;\n }\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 and get called back with each fresh quote — the heartbeat of a\n * price bot in one line. Overlap-safe (a slow tick is skipped, not stacked).\n * Returns a stop function. */\nexport function pollQuote(\n client: BlazePhoenix,\n req: QuoteRequest,\n onQuote: (q: QuoteResponse) => 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\n/** The ready-to-broadcast transaction from a quote (requires `recipient` in the\n * request and an ERC-20 input). Throws with a precise reason otherwise. */\nexport function buildSwapTx(q: QuoteResponse): QuoteTx {\n if (q.tx) return q.tx;\n if (q.wrapRequired) {\n throw new Error('native ETH input: wrap to WETH first (WETH.deposit), then re-quote with in=WETH');\n }\n throw new Error('no tx in quote — pass `recipient` in the request (and check quote.canExecute)');\n}\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 shareable link that opens the site pre-filled — bot buttons, referral posts. */\nexport function deepLink(opts: DeepLinkOptions = {}): string {\n const base = (opts.baseUrl ?? API_BASE).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","// =============================================================================\n// BlazePhoenix Router + Quoter ABI fragments (match the v1.0.0 deployments).\n// The Route/Hop/Leg tuple mirrors BlazePhoenixCore.sol — a decoded route from\n// `previewPlan` round-trips verbatim into `swapExactIn`.\n// =============================================================================\n\nconst LEG_COMPONENTS = [\n { name: 'pool', type: 'address' },\n { name: 'hooks', type: 'address' },\n { name: 'kind', type: 'uint8' },\n { name: 'fee', type: 'uint24' },\n { name: 'tickSpacing', type: 'int24' },\n { name: 'zeroForOne', type: 'bool' },\n { name: 'stable', type: 'bool' },\n { name: 'amountIn', type: 'uint256' },\n { name: 'expectedOut', type: 'uint256' },\n { name: 'auxId', type: 'bytes32' },\n] as const;\n\nconst HOP_COMPONENTS = [\n { name: 'tokenIn', type: 'address' },\n { name: 'tokenOut', type: 'address' },\n { name: 'amountIn', type: 'uint256' },\n { name: 'expectedOut', type: 'uint256' },\n { name: 'legs', type: 'tuple[]', components: LEG_COMPONENTS },\n] as const;\n\nconst ROUTE_COMPONENTS = [\n { name: 'hops', type: 'tuple[]', components: HOP_COMPONENTS },\n { name: 'totalOut', type: 'uint256' },\n { name: 'singleOut', type: 'uint256' },\n { name: 'singleOutFloor', type: 'uint256' },\n { name: 'expectedImpactBps', type: 'uint256' },\n { name: 'confidenceWad', type: 'uint256' },\n { name: 'estGas', type: 'uint256' },\n { name: 'hasSurplus', type: 'bool' },\n { name: 'isV4Bundle', type: 'bool' },\n] as const;\n\nconst PREVIEW_COMPONENTS = [\n { name: 'route', type: 'tuple', components: ROUTE_COMPONENTS },\n { name: 'grossOut', type: 'uint256' },\n { name: 'protocolFee', type: 'uint256' },\n { name: 'safetyBuffer', type: 'uint256' },\n { name: 'netOut', type: 'uint256' },\n { name: 'ironFloor', type: 'uint256' },\n { name: 'userMinOut', type: 'uint256' },\n { name: 'effectiveMinOut', type: 'uint256' },\n { name: 'estGas', type: 'uint256' },\n { name: 'hops', type: 'uint256' },\n { name: 'legs', type: 'uint256' },\n { name: 'topology', type: 'uint8' },\n { name: 'bridgeUsed', type: 'address' },\n { name: 'canExecute', type: 'bool' },\n] as const;\n\nexport const QUOTER_ABI = [\n {\n type: 'function',\n name: 'previewPlan',\n stateMutability: 'view',\n inputs: [\n { name: 'tIn', type: 'address' },\n { name: 'tOut', type: 'address' },\n { name: 'amountIn', type: 'uint256' },\n ],\n outputs: [\n { name: 'pv', type: 'tuple', components: PREVIEW_COMPONENTS },\n { name: 'fallbackRoute', type: 'tuple', components: ROUTE_COMPONENTS },\n { name: 'hasFallback', type: 'bool' },\n ],\n },\n {\n type: 'function',\n name: 'previewPlanExact',\n stateMutability: 'view',\n inputs: [\n { name: 'tIn', type: 'address' },\n { name: 'tOut', type: 'address' },\n { name: 'amountIn', type: 'uint256' },\n ],\n outputs: [\n { name: 'route', type: 'tuple', components: ROUTE_COMPONENTS },\n { name: 'exactOut', type: 'uint256' },\n ],\n },\n] as const;\n\nexport const ROUTER_ABI = [\n {\n type: 'function',\n name: 'swapExactIn',\n stateMutability: 'nonpayable',\n inputs: [\n { name: 'route', type: 'tuple', components: ROUTE_COMPONENTS },\n { name: 'amountIn', type: 'uint256' },\n { name: 'userMinOut', type: 'uint256' },\n { name: 'recipient', type: 'address' },\n { name: 'deadline', type: 'uint256' },\n ],\n outputs: [{ name: 'amountOut', type: 'uint256' }],\n },\n {\n type: 'event',\n name: 'Swap',\n inputs: [\n { name: 'user', type: 'address', indexed: true },\n { name: 'tokenIn', type: 'address', indexed: true },\n { name: 'tokenOut', type: 'address', indexed: true },\n { name: 'amountIn', type: 'uint256', indexed: false },\n { name: 'amountOut', type: 'uint256', indexed: false },\n { name: 'legs', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Surplus',\n inputs: [\n { name: 'token', type: 'address', indexed: true },\n { name: 'amount', type: 'uint256', indexed: false },\n ],\n },\n] as const;\n","// =============================================================================\n// ERC-20 helpers — zero dependencies. Completes the integration loop:\n// quote → buildApproveTx (once per token) → buildSwapTx → send.\n// Plus human-amount conversion so callers never hand-count decimals.\n// =============================================================================\n\nimport { CHAINS, resolveChain } from './constants.js';\nimport type { Address, ChainRef, Hex, QuoteTx } from './types.js';\n\n/** Unlimited allowance (2^256 − 1). Prefer EXACT amounts — pass the amount you\n * are about to swap; use MAX_UINT256 only when you consciously want one\n * approval forever (bots with their own key management). */\nexport const MAX_UINT256 = (1n << 256n) - 1n;\n\nconst HEX_ADDR = /^0x[0-9a-fA-F]{40}$/;\n\n// approve(address,uint256)\nconst APPROVE_SELECTOR = '0x095ea7b3';\n\nfunction pad32(hexNo0x: string): string {\n return hexNo0x.padStart(64, '0');\n}\n\nexport interface ApproveOptions {\n /** ERC-20 token to approve (the swap's tokenIn). */\n token: Address;\n /** Chain id or name — picks the Router as the default spender. */\n chain: ChainRef;\n /** Allowance in base units. Be exact; MAX_UINT256 opts into unlimited. */\n amount: bigint;\n /** Override the spender (defaults to the BlazePhoenix Router). */\n spender?: Address;\n}\n\n/** Ready-to-send `approve` transaction for the Router (or a custom spender).\n * Send it once per token before the first swap; then swap freely. */\nexport function buildApproveTx(opts: ApproveOptions): QuoteTx {\n const chainId = resolveChain(opts.chain);\n const spender = opts.spender ?? CHAINS[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 const data = (APPROVE_SELECTOR\n + pad32(spender.slice(2).toLowerCase())\n + pad32(opts.amount.toString(16))) as Hex;\n return { to: opts.token, data, value: '0' };\n}\n\n/** \"1.5\" + 18 decimals → 1500000000000000000n. Pure string math — no floats,\n * no precision loss. Rejects more fractional digits than the token carries. */\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 decimals → \"1.5\" (trailing zeros trimmed).\n * `maxDp` optionally truncates the fractional part for display. */\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// On-chain module — skip HTTP entirely: quote on the Quoter from your own\n// node and watch the Router's fills. Needs the optional `viem` peer:\n// npm i viem\n// You supply the RPC URL — the SDK ships no keys and no default endpoints.\n// =============================================================================\n\nimport { QUOTER_ABI, ROUTER_ABI } from './abis.js';\nimport { CHAINS, PUBLIC_RPCS, resolveChain, type SupportedChainId } from './constants.js';\nimport type { Address, Fill } from './types.js';\n\nasync function loadViem() {\n try {\n return await import('viem');\n } catch {\n throw new Error(\"this feature needs the optional peer dependency 'viem' — npm i viem\");\n }\n}\n\nexport interface OnChainOptions {\n chain: number | string;\n /** Your RPC endpoint. OPTIONAL since v0.4.0 — omitted, the SDK falls back\n * across public keyless endpoints (fine for dev/bots; bring your own node\n * for production throughput). The SDK still ships no providers and no keys. */\n rpcUrl?: string;\n}\n\n/** viem transport: caller's RPC when given, else public-endpoint fallback. */\nasync function transportFor(chainId: SupportedChainId, rpcUrl?: string) {\n const { http, fallback } = await loadViem();\n return rpcUrl ? http(rpcUrl) : fallback(PUBLIC_RPCS[chainId].map((u) => http(u)));\n}\n\n/** previewPlan straight from the chain — the exact numbers the API serves. */\nexport async function quoteOnChain(\n opts: OnChainOptions & { tokenIn: Address; tokenOut: Address; amountIn: bigint },\n) {\n const { createPublicClient } = await loadViem();\n const chainId = resolveChain(opts.chain);\n const client = createPublicClient({ transport: await transportFor(chainId, opts.rpcUrl) });\n const [pv, , hasFallback] = (await client.readContract({\n address: CHAINS[chainId].contracts.quoter,\n abi: QUOTER_ABI,\n functionName: 'previewPlan',\n args: [opts.tokenIn, opts.tokenOut, opts.amountIn],\n })) as readonly [Record<string, unknown>, unknown, boolean];\n return { preview: pv, hasFallback, chainId };\n}\n\nexport interface WatchFillsOptions extends OnChainOptions {\n onFill: (fill: Fill) => void;\n /** Poll interval in ms (default 4000). */\n pollMs?: number;\n}\n\n/** Stream every BlazePhoenix fill on a chain (one Router `Swap` event per\n * swap). Returns an unwatch function. */\nexport async function watchFills(opts: WatchFillsOptions): Promise<() => void> {\n const { createPublicClient, parseAbiItem } = await loadViem();\n const chainId = resolveChain(opts.chain);\n const client = createPublicClient({ transport: await transportFor(chainId, opts.rpcUrl) });\n return client.watchEvent({\n address: CHAINS[chainId].contracts.router,\n event: parseAbiItem(\n 'event Swap(address indexed user, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 legs)',\n ),\n pollingInterval: opts.pollMs ?? 4_000,\n onLogs: (logs) => {\n for (const log of logs) {\n const a = log.args as {\n user: Address; tokenIn: Address; tokenOut: Address;\n amountIn: bigint; amountOut: bigint; legs: bigint;\n };\n opts.onFill({\n txHash: log.transactionHash as `0x${string}`,\n blockNumber: log.blockNumber ?? 0n,\n user: a.user, tokenIn: a.tokenIn, tokenOut: a.tokenOut,\n amountIn: a.amountIn, amountOut: a.amountOut, legs: a.legs,\n });\n }\n },\n });\n}\n\n/** Historic fills over a block range (for indexing / the quoted-vs-executed\n * verification pattern documented at https://blazephoenix.xyz/?tab=api). */\nexport async function getFills(\n opts: OnChainOptions & { fromBlock: bigint; toBlock: bigint },\n): Promise<Fill[]> {\n const { createPublicClient, parseAbiItem } = await loadViem();\n const chainId = resolveChain(opts.chain);\n const client = createPublicClient({ transport: await transportFor(chainId, opts.rpcUrl) });\n const logs = await client.getLogs({\n address: CHAINS[chainId].contracts.router,\n event: parseAbiItem(\n 'event Swap(address indexed user, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 legs)',\n ),\n fromBlock: opts.fromBlock,\n toBlock: opts.toBlock,\n });\n return logs.map((log) => {\n const a = log.args as {\n user: Address; tokenIn: Address; tokenOut: Address;\n amountIn: bigint; amountOut: bigint; legs: bigint;\n };\n return {\n txHash: log.transactionHash as `0x${string}`,\n blockNumber: log.blockNumber ?? 0n,\n user: a.user, tokenIn: a.tokenIn, tokenOut: a.tokenOut,\n amountIn: a.amountIn, amountOut: a.amountOut, legs: a.legs,\n };\n });\n}\n\nexport { ROUTER_ABI, QUOTER_ABI };\n"]}
1
+ {"version":3,"sources":["../src/abis.generated.ts","../src/abis.ts","../src/checks.ts","../src/errors.ts","../src/calldata.ts","../src/constants.ts","../src/deployments.ts","../src/resilience.ts","../src/registry.ts","../src/erc20.ts","../src/rpc.ts","../src/client.ts","../src/json.ts"],"names":["decodeErrorResult","encodeFunctionData","decodeFunctionData","webSocket","http","custom","fallback","createPublicClient","HEX_ADDR","getAddress","decodeFunctionResult","parseEventLogs"],"mappings":"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","file":"index.cjs","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// 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';\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: 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// 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// 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// 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\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: ${(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// 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 } 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 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: (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 const blockNumber = await client.getBlockNumber();\n const [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 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"]}