@elsoul/erpc-sdk 0.7.0 → 0.8.1

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/errors.ts","../src/transport/rest.ts","../src/account.ts","../src/generated/token_catalog.ts","../src/token_catalog.ts","../src/generated/token_rankings.ts","../src/token_rankings.ts","../src/catalog.ts","../src/config.ts","../src/price.ts","../src/rpc/client.ts","../src/rpc/ethereum.ts","../src/rpc/avalanche.ts","../src/rpc/solana.ts","../src/transport/websocket.ts","../src/subscriptions.ts","../src/generated/dex_catalog.ts","../src/dex_catalog.ts","../src/swap.ts","../src/transport/http.ts","../src/usage.ts","../src/client.ts","../src/credit.ts","../src/resources.ts","../src/cloud.ts"],"names":["deepFreeze","isEvmChain","normalizeEvmAddress","isRecord","isKnownChain","controlledSignal","isObject","objectValue","resourceKinds","resourceModes","isDateTime","requireFetch"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { JsonRpcErrorObject } from './rpc/types'\n\nconst REDACTED = '[REDACTED]'\n\nconst credentialVariants = (credential: string): readonly string[] => {\n const queryEncoded = new URLSearchParams({ value: credential })\n .toString()\n .slice('value='.length)\n let componentEncoded: string | undefined\n try {\n componentEncoded = encodeURIComponent(credential)\n } catch {\n // URLSearchParams still provides a safe encoded representation.\n }\n return [...new Set([credential, componentEncoded, queryEncoded])]\n .filter((value): value is string => Boolean(value))\n .sort((left, right) => right.length - left.length)\n}\n\nconst redactString = (value: string, variants: readonly string[]): string => {\n let redacted = value\n for (const variant of variants) redacted = redacted.replaceAll(variant, REDACTED)\n return redacted\n}\n\nconst redactValue = (\n value: unknown,\n variants: readonly string[],\n seen: WeakSet<object>,\n depth: number,\n): unknown => {\n if (typeof value === 'string') return redactString(value, variants)\n if (typeof value !== 'object' || value === null) return value\n if (depth >= 32 || seen.has(value)) return REDACTED\n\n seen.add(value)\n if (Array.isArray(value)) {\n return value.map((item) => redactValue(item, variants, seen, depth + 1))\n }\n\n const result: Record<string, unknown> = {}\n for (const [key, item] of Object.entries(value)) {\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n value: redactValue(item, variants, seen, depth + 1),\n writable: true,\n })\n }\n return result\n}\n\nexport const redactJsonRpcError = (\n error: JsonRpcErrorObject,\n credential: string | undefined,\n): JsonRpcErrorObject => {\n if (!credential) return error\n const variants = credentialVariants(credential)\n const result: {\n code: number\n data?: unknown\n message: string\n } = {\n code: error.code,\n message: redactString(error.message, variants),\n }\n if (error.data !== undefined) {\n result.data = redactValue(error.data, variants, new WeakSet(), 0)\n }\n return result\n}\n\nexport type ErpcErrorCode =\n | 'ERPC_ABORTED'\n | 'ERPC_BATCH_POLICY'\n | 'ERPC_CONFIG'\n | 'ERPC_HTTP'\n | 'ERPC_INVALID_RESPONSE'\n | 'ERPC_RPC'\n | 'ERPC_TIMEOUT'\n | 'ERPC_TRANSPORT'\n\nexport class ErpcError extends Error {\n readonly code: ErpcErrorCode\n\n constructor(code: ErpcErrorCode, message: string, options?: ErrorOptions) {\n super(message, options)\n this.name = 'ErpcError'\n this.code = code\n }\n}\n\nexport class ErpcConfigError extends ErpcError {\n constructor(message: string) {\n super('ERPC_CONFIG', message)\n this.name = 'ErpcConfigError'\n }\n}\n\nexport class ErpcTransportError extends ErpcError {\n constructor(message: string, options?: ErrorOptions) {\n super('ERPC_TRANSPORT', message, options)\n this.name = 'ErpcTransportError'\n }\n}\n\nexport class ErpcHttpError extends ErpcError {\n readonly status: number\n\n constructor(status: number, message = `ERPC request failed with HTTP ${status}`) {\n super('ERPC_HTTP', message)\n this.name = 'ErpcHttpError'\n this.status = status\n }\n}\n\nexport class ErpcTimeoutError extends ErpcError {\n readonly timeoutMs: number\n\n constructor(timeoutMs: number) {\n super('ERPC_TIMEOUT', `ERPC request timed out after ${timeoutMs}ms`)\n this.name = 'ErpcTimeoutError'\n this.timeoutMs = timeoutMs\n }\n}\n\nexport class ErpcAbortedError extends ErpcError {\n constructor() {\n super('ERPC_ABORTED', 'ERPC request was aborted')\n this.name = 'ErpcAbortedError'\n }\n}\n\nexport class ErpcInvalidResponseError extends ErpcError {\n constructor(message = 'ERPC returned an invalid response') {\n super('ERPC_INVALID_RESPONSE', message)\n this.name = 'ErpcInvalidResponseError'\n }\n}\n\nexport class ErpcJsonRpcError extends ErpcError {\n readonly rpcCode: number\n readonly data?: unknown\n\n constructor(error: JsonRpcErrorObject) {\n super('ERPC_RPC', error.message)\n this.name = 'ErpcJsonRpcError'\n this.rpcCode = error.code\n if (error.data !== undefined) this.data = error.data\n }\n}\n\nexport class ErpcBatchPolicyError extends ErpcError {\n constructor(message: string) {\n super('ERPC_BATCH_POLICY', message)\n this.name = 'ErpcBatchPolicyError'\n }\n}\n","import {\n ErpcAbortedError,\n ErpcHttpError,\n ErpcInvalidResponseError,\n ErpcTimeoutError,\n ErpcTransportError,\n} from '../errors'\nimport type { RpcSendOptions } from '../rpc/types'\n\nexport type QueryValue =\n | boolean\n | number\n | readonly string[]\n | string\n | undefined\n\nexport type Query = Readonly<Record<string, QueryValue>>\n\nexport interface RestTransportConfig {\n readonly apiKey: string\n readonly endpoint: URL\n readonly fetch: typeof globalThis.fetch\n readonly headers: Readonly<Record<string, string>>\n readonly timeoutMs: number\n}\n\nexport interface RestStreamResponse {\n readonly response: Response\n close(): void\n normalizeError(error: unknown): Error\n}\n\ninterface ControlledSignal {\n readonly cleanup: () => void\n readonly signal: AbortSignal\n readonly stopTimeout: () => void\n readonly timeoutMs: number\n readonly timedOut: () => boolean\n}\n\nconst controlledSignal = (\n timeoutMs: number,\n external?: AbortSignal,\n): ControlledSignal => {\n const controller = new AbortController()\n let didTimeOut = false\n let timeout: ReturnType<typeof setTimeout> | undefined = setTimeout(() => {\n didTimeOut = true\n controller.abort()\n }, timeoutMs)\n\n const abort = () => controller.abort()\n if (external?.aborted) controller.abort()\n else external?.addEventListener('abort', abort, { once: true })\n\n const stopTimeout = () => {\n if (timeout === undefined) return\n clearTimeout(timeout)\n timeout = undefined\n }\n\n return {\n signal: controller.signal,\n stopTimeout,\n timeoutMs,\n timedOut: () => didTimeOut,\n cleanup: () => {\n stopTimeout()\n external?.removeEventListener('abort', abort)\n },\n }\n}\n\nconst normalizeError = (\n error: unknown,\n controlled: ControlledSignal,\n external?: AbortSignal,\n): Error => {\n if (\n error instanceof ErpcAbortedError ||\n error instanceof ErpcHttpError ||\n error instanceof ErpcInvalidResponseError ||\n error instanceof ErpcTimeoutError ||\n error instanceof ErpcTransportError\n ) {\n return error\n }\n if (controlled.timedOut()) {\n return new ErpcTimeoutError(controlled.timeoutMs)\n }\n if (external?.aborted) return new ErpcAbortedError()\n return new ErpcTransportError('Unable to reach ERPC')\n}\n\nconst applyQuery = (url: URL, query?: Query): void => {\n if (!query) return\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined) continue\n if (Array.isArray(value)) {\n for (const item of value) url.searchParams.append(key, item)\n } else {\n url.searchParams.set(key, String(value))\n }\n }\n}\n\nexport class RestTransport {\n readonly endpoint: string\n\n readonly #apiKey: string\n readonly #endpoint: URL\n readonly #fetch: typeof globalThis.fetch\n readonly #headers: Readonly<Record<string, string>>\n readonly #timeoutMs: number\n\n constructor(config: RestTransportConfig) {\n this.#apiKey = config.apiKey\n this.#endpoint = new URL(config.endpoint)\n this.#fetch = config.fetch\n this.#headers = config.headers\n this.#timeoutMs = config.timeoutMs\n const endpoint = new URL(config.endpoint)\n endpoint.search = ''\n endpoint.hash = ''\n this.endpoint = endpoint.toString()\n }\n\n url(path: string, query?: Query): URL {\n const url = new URL(this.#endpoint)\n const base = url.pathname === '/' ? '' : url.pathname.replace(/\\/+$/, '')\n url.pathname = `${base}/${path.replace(/^\\/+/, '')}`.replace(/\\/{2,}/g, '/')\n applyQuery(url, query)\n return url\n }\n\n async get<TResult>(\n path: string,\n query?: Query,\n options: RpcSendOptions = {},\n ): Promise<TResult> {\n const controlled = controlledSignal(this.#timeoutMs, options.signal)\n try {\n const response = await this.#get(path, query, controlled.signal)\n if (!response.ok) throw new ErpcHttpError(response.status)\n const text = await response.text()\n try {\n return JSON.parse(text) as TResult\n } catch {\n throw new ErpcInvalidResponseError('ERPC returned malformed JSON')\n }\n } catch (error) {\n throw normalizeError(error, controlled, options.signal)\n } finally {\n controlled.cleanup()\n }\n }\n\n async stream(\n path: string,\n query?: Query,\n options: RpcSendOptions = {},\n ): Promise<RestStreamResponse> {\n const controlled = controlledSignal(this.#timeoutMs, options.signal)\n try {\n const response = await this.#get(path, query, controlled.signal)\n if (!response.ok) throw new ErpcHttpError(response.status)\n\n // Long-lived streams use the timeout for connection establishment only.\n // The caller's AbortSignal remains attached until close() is called.\n controlled.stopTimeout()\n return {\n response,\n close: controlled.cleanup,\n normalizeError: (error) =>\n normalizeError(error, controlled, options.signal),\n }\n } catch (error) {\n controlled.cleanup()\n throw normalizeError(error, controlled, options.signal)\n }\n }\n\n #get(path: string, query: Query | undefined, signal: AbortSignal) {\n return this.#fetch(this.url(path, query), {\n method: 'GET',\n headers: {\n ...this.#headers,\n authorization: `Bearer ${this.#apiKey}`,\n accept: 'application/json',\n },\n signal,\n })\n }\n}\n","import type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\n\nexport type ErpcPlan = 'business' | 'developer' | 'free' | 'pro'\n\nexport interface TokenBalance {\n readonly max_tokens: number\n readonly next_refill_at: string | null\n readonly plan: ErpcPlan\n readonly remaining_tokens: number\n}\n\nexport class AccountClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n getTokenBalance(options?: RpcSendOptions): Promise<TokenBalance> {\n return this.#transport.get('/v3/erpc/token-balance', undefined, options)\n }\n}\n","/* Generated by registry/generate-token-catalog.mjs. Do not edit. */\n\nexport type TokenRepresentationKind = \"native\" | \"issued\" | \"wrapped\" | \"bridged\" | \"unclassified\";\nexport type TokenStandard = \"native\" | \"erc20\" | \"spl-token\" | \"spl-token-2022\";\nexport type TokenStatus = \"active\" | \"legacy\" | \"winding-down\" | \"retired\";\nexport type TokenStableCurrency = \"USD\" | \"EUR\" | \"JPY\" | null;\n\nexport interface TokenAsset {\n readonly assetId: string;\n readonly name: string;\n readonly representationKind: TokenRepresentationKind;\n readonly stableCurrency: TokenStableCurrency;\n readonly underlyingAssetId: string | null;\n readonly economicReferenceAssetId: string | null;\n}\n\nexport interface TokenDeployment {\n readonly deploymentId: string;\n readonly assetId: string;\n readonly name: string;\n readonly representationKind: TokenRepresentationKind;\n readonly stableCurrency: TokenStableCurrency;\n readonly underlyingAssetId: string | null;\n readonly economicReferenceAssetId: string | null;\n readonly chainId: TokenChainId;\n readonly symbol: string;\n readonly decimals: number;\n readonly standard: TokenStandard;\n readonly address: string | null;\n readonly status: TokenStatus;\n readonly replacedByDeploymentId: string | null;\n}\n\nexport interface TokenAlias {\n readonly namespace: string;\n readonly name: string;\n readonly deploymentId: string;\n}\n\nconst deepFreeze = <T>(value: T): Readonly<T> => {\n if (value && typeof value === \"object\" && !Object.isFrozen(value)) {\n Object.freeze(value);\n for (const child of Object.values(value as Record<string, unknown>)) deepFreeze(child);\n }\n return value as Readonly<T>;\n};\n\nexport const TOKEN_CATALOG_VERSION = \"1.0.0\" as const;\nexport const TOKEN_CATALOG_AS_OF_DATE = \"2026-09-15\" as const;\nexport const TOKEN_CATALOG_CONTENT_DIGEST = \"28318f4f6a6bc2cdeef51368eeb17c86685c6f12d1723b0b4dd27f7e54d7235d\" as const;\nexport const TOKEN_CHAIN_IDS = deepFreeze({\n \"ethereumMainnet\": \"eip155:1\",\n \"solanaMainnet\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"avalancheCMainnet\": \"eip155:43114\"\n}) as {\n readonly ethereumMainnet: \"eip155:1\";\n readonly solanaMainnet: \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\";\n readonly avalancheCMainnet: \"eip155:43114\";\n};\nexport type TokenChainId = (typeof TOKEN_CHAIN_IDS)[keyof typeof TOKEN_CHAIN_IDS];\n\nexport const tokens = deepFreeze({\n \"avalancheC\": {\n \"AUSD\": \"deployment-0035\",\n \"AVAX\": \"deployment-0003\",\n \"DISCOVERED_0A7F98C8752F15EE\": \"discovered-token-0a7f98c8752f15ee02ce0d801f25df8ff78864a1d70aff7e204f7bdb3f8a0692\",\n \"DISCOVERED_1847342426B765AD\": \"discovered-token-1847342426b765add3c8b4feb724c6b15121f25097cb7917c967c285ca77e804\",\n \"DISCOVERED_288036A90EE0FA72\": \"discovered-token-288036a90ee0fa72a2751a78a6934cc6ced9e16de91c97ae8e109e2ee6189bc5\",\n \"DISCOVERED_323D07C442F0D089\": \"discovered-token-323d07c442f0d089197ae7eea9b3ebb829910177c5b780161a7623aaed5e4371\",\n \"DISCOVERED_9F9965CC065C9BEC\": \"discovered-token-9f9965cc065c9becf8d2cb58071524baafea37d27fda9bf683a93ea85f2e653d\",\n \"EURC\": \"deployment-0012\",\n \"EUROP\": \"deployment-0045\",\n \"GHO\": \"deployment-0030\",\n \"JOE\": \"deployment-0059\",\n \"JPYC\": \"deployment-0039\",\n \"LINK\": \"deployment-0058\",\n \"USDC\": \"deployment-0009\",\n \"USDC_E\": \"deployment-0018\",\n \"USDT\": \"deployment-0015\",\n \"WAVAX\": \"deployment-0004\"\n },\n \"ethereum\": {\n \"AAVE\": \"deployment-0056\",\n \"AUSD\": \"deployment-0034\",\n \"DAI\": \"deployment-0019\",\n \"DISCOVERED_054D80A64E1F36A7\": \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\",\n \"DISCOVERED_611597BD13DAA43D\": \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\",\n \"DISCOVERED_69519FD08E31445C\": \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\",\n \"DISCOVERED_B475569F6A15E97A\": \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\",\n \"DISCOVERED_E375086901067FE3\": \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\",\n \"ETH\": \"deployment-0001\",\n \"EURA\": \"deployment-0051\",\n \"EURAU\": \"deployment-0042\",\n \"EURC\": \"deployment-0011\",\n \"EURCV\": \"deployment-0040\",\n \"EURE\": \"deployment-0054\",\n \"EURE_V1\": \"deployment-0053\",\n \"EUROP\": \"deployment-0044\",\n \"EURS\": \"deployment-0052\",\n \"EURT\": \"deployment-0017\",\n \"FDUSD\": \"deployment-0031\",\n \"GHO\": \"deployment-0029\",\n \"GYEN\": \"deployment-0047\",\n \"JPYC\": \"deployment-0038\",\n \"LINK\": \"deployment-0057\",\n \"PYUSD\": \"deployment-0022\",\n \"RLUSD\": \"deployment-0033\",\n \"UNI\": \"deployment-0055\",\n \"USDC\": \"deployment-0008\",\n \"USDE\": \"deployment-0028\",\n \"USDG\": \"deployment-0024\",\n \"USDP\": \"deployment-0026\",\n \"USDS\": \"deployment-0020\",\n \"USDT\": \"deployment-0014\",\n \"WETH\": \"deployment-0002\",\n \"ZUSD\": \"deployment-0049\"\n },\n \"solana\": {\n \"AUSD\": \"deployment-0036\",\n \"EURAU\": \"deployment-0043\",\n \"EURC\": \"deployment-0013\",\n \"EURCV\": \"deployment-0041\",\n \"EUROP\": \"deployment-0046\",\n \"FDUSD\": \"deployment-0032\",\n \"GYEN\": \"deployment-0048\",\n \"JUP\": \"deployment-0060\",\n \"JUPUSD\": \"deployment-0037\",\n \"PYUSD\": \"deployment-0023\",\n \"SOL\": \"deployment-0005\",\n \"USDC\": \"deployment-0010\",\n \"USDG\": \"deployment-0025\",\n \"USDP\": \"deployment-0027\",\n \"USDS\": \"deployment-0021\",\n \"USDT\": \"deployment-0016\",\n \"WSOL\": \"deployment-0006\",\n \"WSOL_TOKEN_2022\": \"deployment-0007\",\n \"ZUSD\": \"deployment-0050\"\n }\n} as const);\nexport const TOKEN_ASSETS: readonly TokenAsset[] = deepFreeze([\n {\n \"assetId\": \"asset-0001\",\n \"name\": \"Ether\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0002\",\n \"name\": \"Wrapped Ether\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0001\",\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0003\",\n \"name\": \"Avalanche\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0004\",\n \"name\": \"Wrapped AVAX\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0003\",\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0005\",\n \"name\": \"Solana\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0006\",\n \"name\": \"Wrapped SOL\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0005\",\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0007\",\n \"name\": \"USD Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0008\",\n \"name\": \"Euro Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0009\",\n \"name\": \"Tether USDt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0010\",\n \"name\": \"Tether EURt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0011\",\n \"name\": \"Bridged USD Coin (USDC.e)\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0007\"\n },\n {\n \"assetId\": \"asset-0012\",\n \"name\": \"Dai\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0013\",\n \"name\": \"Sky Dollar\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0014\",\n \"name\": \"Bridged Sky Dollar\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0013\"\n },\n {\n \"assetId\": \"asset-0015\",\n \"name\": \"PayPal USD (PYUSD)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0016\",\n \"name\": \"Global Dollar (USDG)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0017\",\n \"name\": \"Pax Dollar (USDP)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0018\",\n \"name\": \"USDe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0019\",\n \"name\": \"GHO\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0020\",\n \"name\": \"Bridged GHO\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0019\"\n },\n {\n \"assetId\": \"asset-0021\",\n \"name\": \"First Digital USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0022\",\n \"name\": \"Ripple USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0023\",\n \"name\": \"Agora USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0024\",\n \"name\": \"Jupiter USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0025\",\n \"name\": \"JPY Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0026\",\n \"name\": \"Euro CoinVertible\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0027\",\n \"name\": \"EURAU\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0028\",\n \"name\": \"EUROP\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0029\",\n \"name\": \"GYEN\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0030\",\n \"name\": \"ZUSD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0031\",\n \"name\": \"Angle EURA\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0032\",\n \"name\": \"STASIS EURS\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0033\",\n \"name\": \"Monerium EURe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0034\",\n \"name\": \"Uniswap\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0035\",\n \"name\": \"Aave\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0036\",\n \"name\": \"Chainlink\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0037\",\n \"name\": \"Bridged Chainlink\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0036\"\n },\n {\n \"assetId\": \"asset-0038\",\n \"name\": \"Trader Joe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0039\",\n \"name\": \"Jupiter\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\",\n \"name\": \"Unclassified token at 0x0f5d2fb29fb7d3cfee444a200298f468908cc942\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-0a7f98c8752f15ee02ce0d801f25df8ff78864a1d70aff7e204f7bdb3f8a0692\",\n \"name\": \"Unclassified token at 0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-1847342426b765add3c8b4feb724c6b15121f25097cb7917c967c285ca77e804\",\n \"name\": \"Unclassified token at 0x02e955e93055e5a9d7fe6e9ee65126b321acef76\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-288036a90ee0fa72a2751a78a6934cc6ced9e16de91c97ae8e109e2ee6189bc5\",\n \"name\": \"Unclassified token at 0xc7198437980c041c805a1edcba50c1ce5db95118\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-323d07c442f0d089197ae7eea9b3ebb829910177c5b780161a7623aaed5e4371\",\n \"name\": \"Unclassified token at 0x3ceeb67533e494c0dc6be579585e3c62916062e0\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\",\n \"name\": \"Unclassified token at 0x2b591e99afe9f32eaa6214f7b7629768c40eeb39\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\",\n \"name\": \"Unclassified token at 0x0d8775f648430679a709e98d2b0cb6250d2887ef\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-9f9965cc065c9becf8d2cb58071524baafea37d27fda9bf683a93ea85f2e653d\",\n \"name\": \"Unclassified token at 0x50b7545627a5162f82a992c33b87adc75187b218\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\",\n \"name\": \"Unclassified token at 0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\",\n \"name\": \"Unclassified token at 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n }\n]) as readonly TokenAsset[];\nexport const TOKEN_DEPLOYMENTS: readonly TokenDeployment[] = deepFreeze([\n {\n \"deploymentId\": \"deployment-0001\",\n \"assetId\": \"asset-0001\",\n \"name\": \"Ether\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"ETH\",\n \"decimals\": 18,\n \"standard\": \"native\",\n \"address\": null,\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0002\",\n \"assetId\": \"asset-0002\",\n \"name\": \"Wrapped Ether\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0001\",\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"WETH\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0003\",\n \"assetId\": \"asset-0003\",\n \"name\": \"Avalanche\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"AVAX\",\n \"decimals\": 18,\n \"standard\": \"native\",\n \"address\": null,\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0004\",\n \"assetId\": \"asset-0004\",\n \"name\": \"Wrapped AVAX\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0003\",\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"WAVAX\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0005\",\n \"assetId\": \"asset-0005\",\n \"name\": \"Solana\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"SOL\",\n \"decimals\": 9,\n \"standard\": \"native\",\n \"address\": null,\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0006\",\n \"assetId\": \"asset-0006\",\n \"name\": \"Wrapped SOL\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0005\",\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"WSOL\",\n \"decimals\": 9,\n \"standard\": \"spl-token\",\n \"address\": \"So11111111111111111111111111111111111111112\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0007\",\n \"assetId\": \"asset-0006\",\n \"name\": \"Wrapped SOL\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0005\",\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"WSOL\",\n \"decimals\": 9,\n \"standard\": \"spl-token-2022\",\n \"address\": \"9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0008\",\n \"assetId\": \"asset-0007\",\n \"name\": \"USD Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDC\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0009\",\n \"assetId\": \"asset-0007\",\n \"name\": \"USD Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"USDC\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0010\",\n \"assetId\": \"asset-0007\",\n \"name\": \"USD Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"USDC\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0011\",\n \"assetId\": \"asset-0008\",\n \"name\": \"Euro Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURC\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x1abaea1f7c830bd89acc67ec4af516284b1bc33c\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0012\",\n \"assetId\": \"asset-0008\",\n \"name\": \"Euro Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"EURC\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xc891eb4cbdeff6e073e859e987815ed1505c2acd\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0013\",\n \"assetId\": \"asset-0008\",\n \"name\": \"Euro Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"EURC\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0014\",\n \"assetId\": \"asset-0009\",\n \"name\": \"Tether USDt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDT\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xdac17f958d2ee523a2206206994597c13d831ec7\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0015\",\n \"assetId\": \"asset-0009\",\n \"name\": \"Tether USDt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"USDT\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0016\",\n \"assetId\": \"asset-0009\",\n \"name\": \"Tether USDt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"USDT\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0017\",\n \"assetId\": \"asset-0010\",\n \"name\": \"Tether EURt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURT\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xc581b735a1688071a1746c968e0798d642ede491\",\n \"status\": \"retired\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0018\",\n \"assetId\": \"asset-0011\",\n \"name\": \"Bridged USD Coin (USDC.e)\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0007\",\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"USDC.e\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664\",\n \"status\": \"legacy\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0019\",\n \"assetId\": \"asset-0012\",\n \"name\": \"Dai\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"DAI\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x6b175474e89094c44da98b954eedeac495271d0f\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0020\",\n \"assetId\": \"asset-0013\",\n \"name\": \"Sky Dollar\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDS\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xdc035d45d973e3ec169d2276ddab16f1e407384f\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0021\",\n \"assetId\": \"asset-0014\",\n \"name\": \"Bridged Sky Dollar\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0013\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"USDS\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0022\",\n \"assetId\": \"asset-0015\",\n \"name\": \"PayPal USD (PYUSD)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"PYUSD\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x6c3ea9036406852006290770bedfcaba0e23a0e8\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0023\",\n \"assetId\": \"asset-0015\",\n \"name\": \"PayPal USD (PYUSD)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"PYUSD\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0024\",\n \"assetId\": \"asset-0016\",\n \"name\": \"Global Dollar (USDG)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDG\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xe343167631d89b6ffc58b88d6b7fb0228795491d\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0025\",\n \"assetId\": \"asset-0016\",\n \"name\": \"Global Dollar (USDG)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"USDG\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"2u1tszSeqZ3qBWF3uNGPFc8TzMk2tdiwknnRMWGWjGWH\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0026\",\n \"assetId\": \"asset-0017\",\n \"name\": \"Pax Dollar (USDP)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDP\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x8e870d67f660d95d5be530380d0ec0bd388289e1\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0027\",\n \"assetId\": \"asset-0017\",\n \"name\": \"Pax Dollar (USDP)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"USDP\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0028\",\n \"assetId\": \"asset-0018\",\n \"name\": \"USDe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDe\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x4c9edd5852cd905f086c759e8383e09bff1e68b3\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0029\",\n \"assetId\": \"asset-0019\",\n \"name\": \"GHO\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"GHO\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0030\",\n \"assetId\": \"asset-0020\",\n \"name\": \"Bridged GHO\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0019\",\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"GHO\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xfc421ad3c883bf9e7c4f42de845c4e4405799e73\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0031\",\n \"assetId\": \"asset-0021\",\n \"name\": \"First Digital USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"FDUSD\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xc5f0f7b66764f6ec8c8dff7ba683102295e16409\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0032\",\n \"assetId\": \"asset-0021\",\n \"name\": \"First Digital USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"FDUSD\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"9zNQRsGLjNKwCUU5Gq5LR8beUCPzQMVMqKAi3SSZh54u\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0033\",\n \"assetId\": \"asset-0022\",\n \"name\": \"Ripple USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"RLUSD\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x8292bb45bf1ee4d140127049757c2e0ff06317ed\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0034\",\n \"assetId\": \"asset-0023\",\n \"name\": \"Agora USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"AUSD\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x00000000efe302beaa2b3e6e1b18d08d69a9012a\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0035\",\n \"assetId\": \"asset-0023\",\n \"name\": \"Agora USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"AUSD\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x00000000efe302beaa2b3e6e1b18d08d69a9012a\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0036\",\n \"assetId\": \"asset-0023\",\n \"name\": \"Agora USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"AUSD\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"AUSD1jCcCyPLybk1YnvPWsHQSrZ46dxwoMniN4N2UEB9\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0037\",\n \"assetId\": \"asset-0024\",\n \"name\": \"Jupiter USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"JupUSD\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"JuprjznTrTSp2UFa3ZBUFgwdAmtZCq4MQCwysN55USD\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0038\",\n \"assetId\": \"asset-0025\",\n \"name\": \"JPY Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"JPYC\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xe7c3d8c9a439fede00d2600032d5db0be71c3c29\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0039\",\n \"assetId\": \"asset-0025\",\n \"name\": \"JPY Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"JPYC\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xe7c3d8c9a439fede00d2600032d5db0be71c3c29\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0040\",\n \"assetId\": \"asset-0026\",\n \"name\": \"Euro CoinVertible\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURCV\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x5f7827fdeb7c20b443265fc2f40845b715385ff2\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0041\",\n \"assetId\": \"asset-0026\",\n \"name\": \"Euro CoinVertible\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"EURCV\",\n \"decimals\": 2,\n \"standard\": \"spl-token-2022\",\n \"address\": \"DghpMkatCiUsofbTmid3M3kAbDTPqDwKiYHnudXeGG52\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0042\",\n \"assetId\": \"asset-0027\",\n \"name\": \"EURAU\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURAU\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x4933a85b5b5466fbaf179f72d3de273c287ec2c2\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0043\",\n \"assetId\": \"asset-0027\",\n \"name\": \"EURAU\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"EURAU\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"9pCWprxbZMW2rYSMhPTeoyLMV2sN2WJqshdT7DQVt6hS\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0044\",\n \"assetId\": \"asset-0028\",\n \"name\": \"EUROP\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EUROP\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x888883b5f5d21fb10dfeb70e8f9722b9fb0e5e51\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0045\",\n \"assetId\": \"asset-0028\",\n \"name\": \"EUROP\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"EUROP\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x8835a2f66a7aaccb297cb985831a616b75e2e16c\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0046\",\n \"assetId\": \"asset-0028\",\n \"name\": \"EUROP\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"EUROP\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"euro5sNHrZC2wu2RoLvy6xxoVMc3Qnd1vjxoWf4MftA\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0047\",\n \"assetId\": \"asset-0029\",\n \"name\": \"GYEN\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"GYEN\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xc08512927d12348f6620a698105e1baac6ecd911\",\n \"status\": \"winding-down\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0048\",\n \"assetId\": \"asset-0029\",\n \"name\": \"GYEN\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"GYEN\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"Crn4x1Y2HUKko7ox2EZMT6N2t2ZyH7eKtwkBGVnhEq1g\",\n \"status\": \"winding-down\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0049\",\n \"assetId\": \"asset-0030\",\n \"name\": \"ZUSD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"ZUSD\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xc56c2b7e71b54d38aab6d52e94a04cbfa8f604fa\",\n \"status\": \"winding-down\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0050\",\n \"assetId\": \"asset-0030\",\n \"name\": \"ZUSD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"ZUSD\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"FrBfWJ4qE5sCzKm3k3JaAtqZcXUh4LvJygDeketsrsH4\",\n \"status\": \"winding-down\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0051\",\n \"assetId\": \"asset-0031\",\n \"name\": \"Angle EURA\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURA\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x1a7e4e63778b4f12a199c062f3efdd288afcbce8\",\n \"status\": \"winding-down\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0052\",\n \"assetId\": \"asset-0032\",\n \"name\": \"STASIS EURS\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURS\",\n \"decimals\": 2,\n \"standard\": \"erc20\",\n \"address\": \"0xdb25f211ab05b1c97d595516f45794528a807ad8\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0053\",\n \"assetId\": \"asset-0033\",\n \"name\": \"Monerium EURe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURe\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x3231cb76718cdef2155fc47b5286d82e6eda273f\",\n \"status\": \"legacy\",\n \"replacedByDeploymentId\": \"deployment-0054\"\n },\n {\n \"deploymentId\": \"deployment-0054\",\n \"assetId\": \"asset-0033\",\n \"name\": \"Monerium EURe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURe\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x39b8b6385416f4ca36a20319f70d28621895279d\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0055\",\n \"assetId\": \"asset-0034\",\n \"name\": \"Uniswap\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"UNI\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0056\",\n \"assetId\": \"asset-0035\",\n \"name\": \"Aave\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"AAVE\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0057\",\n \"assetId\": \"asset-0036\",\n \"name\": \"Chainlink\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"LINK\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x514910771af9ca656af840dff83e8264ecf986ca\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0058\",\n \"assetId\": \"asset-0037\",\n \"name\": \"Bridged Chainlink\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0036\",\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"LINK\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x5947bb275c521040051d82396192181b413227a3\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0059\",\n \"assetId\": \"asset-0038\",\n \"name\": \"Trader Joe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"JOE\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0060\",\n \"assetId\": \"asset-0039\",\n \"name\": \"Jupiter\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"JUP\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\",\n \"assetId\": \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\",\n \"name\": \"Unclassified token at 0x0f5d2fb29fb7d3cfee444a200298f468908cc942\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"0x0f5d2fb29fb7d3cfee444a200298f468908cc942\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x0f5d2fb29fb7d3cfee444a200298f468908cc942\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-0a7f98c8752f15ee02ce0d801f25df8ff78864a1d70aff7e204f7bdb3f8a0692\",\n \"assetId\": \"discovered-token-0a7f98c8752f15ee02ce0d801f25df8ff78864a1d70aff7e204f7bdb3f8a0692\",\n \"name\": \"Unclassified token at 0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-1847342426b765add3c8b4feb724c6b15121f25097cb7917c967c285ca77e804\",\n \"assetId\": \"discovered-token-1847342426b765add3c8b4feb724c6b15121f25097cb7917c967c285ca77e804\",\n \"name\": \"Unclassified token at 0x02e955e93055e5a9d7fe6e9ee65126b321acef76\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"0x02e955e93055e5a9d7fe6e9ee65126b321acef76\",\n \"decimals\": 9,\n \"standard\": \"erc20\",\n \"address\": \"0x02e955e93055e5a9d7fe6e9ee65126b321acef76\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-288036a90ee0fa72a2751a78a6934cc6ced9e16de91c97ae8e109e2ee6189bc5\",\n \"assetId\": \"discovered-token-288036a90ee0fa72a2751a78a6934cc6ced9e16de91c97ae8e109e2ee6189bc5\",\n \"name\": \"Unclassified token at 0xc7198437980c041c805a1edcba50c1ce5db95118\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"0xc7198437980c041c805a1edcba50c1ce5db95118\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xc7198437980c041c805a1edcba50c1ce5db95118\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-323d07c442f0d089197ae7eea9b3ebb829910177c5b780161a7623aaed5e4371\",\n \"assetId\": \"discovered-token-323d07c442f0d089197ae7eea9b3ebb829910177c5b780161a7623aaed5e4371\",\n \"name\": \"Unclassified token at 0x3ceeb67533e494c0dc6be579585e3c62916062e0\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"0x3ceeb67533e494c0dc6be579585e3c62916062e0\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x3ceeb67533e494c0dc6be579585e3c62916062e0\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\",\n \"assetId\": \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\",\n \"name\": \"Unclassified token at 0x2b591e99afe9f32eaa6214f7b7629768c40eeb39\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"0x2b591e99afe9f32eaa6214f7b7629768c40eeb39\",\n \"decimals\": 8,\n \"standard\": \"erc20\",\n \"address\": \"0x2b591e99afe9f32eaa6214f7b7629768c40eeb39\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\",\n \"assetId\": \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\",\n \"name\": \"Unclassified token at 0x0d8775f648430679a709e98d2b0cb6250d2887ef\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"0x0d8775f648430679a709e98d2b0cb6250d2887ef\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x0d8775f648430679a709e98d2b0cb6250d2887ef\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-9f9965cc065c9becf8d2cb58071524baafea37d27fda9bf683a93ea85f2e653d\",\n \"assetId\": \"discovered-token-9f9965cc065c9becf8d2cb58071524baafea37d27fda9bf683a93ea85f2e653d\",\n \"name\": \"Unclassified token at 0x50b7545627a5162f82a992c33b87adc75187b218\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"0x50b7545627a5162f82a992c33b87adc75187b218\",\n \"decimals\": 8,\n \"standard\": \"erc20\",\n \"address\": \"0x50b7545627a5162f82a992c33b87adc75187b218\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\",\n \"assetId\": \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\",\n \"name\": \"Unclassified token at 0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\",\n \"assetId\": \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\",\n \"name\": \"Unclassified token at 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599\",\n \"decimals\": 8,\n \"standard\": \"erc20\",\n \"address\": \"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n }\n]) as readonly TokenDeployment[];\nexport const TOKEN_ALIASES: readonly TokenAlias[] = deepFreeze([\n { namespace: \"avalancheC\", name: \"AUSD\", deploymentId: tokens.avalancheC.AUSD },\n { namespace: \"avalancheC\", name: \"AVAX\", deploymentId: tokens.avalancheC.AVAX },\n { namespace: \"avalancheC\", name: \"DISCOVERED_0A7F98C8752F15EE\", deploymentId: tokens.avalancheC.DISCOVERED_0A7F98C8752F15EE },\n { namespace: \"avalancheC\", name: \"DISCOVERED_1847342426B765AD\", deploymentId: tokens.avalancheC.DISCOVERED_1847342426B765AD },\n { namespace: \"avalancheC\", name: \"DISCOVERED_288036A90EE0FA72\", deploymentId: tokens.avalancheC.DISCOVERED_288036A90EE0FA72 },\n { namespace: \"avalancheC\", name: \"DISCOVERED_323D07C442F0D089\", deploymentId: tokens.avalancheC.DISCOVERED_323D07C442F0D089 },\n { namespace: \"avalancheC\", name: \"DISCOVERED_9F9965CC065C9BEC\", deploymentId: tokens.avalancheC.DISCOVERED_9F9965CC065C9BEC },\n { namespace: \"avalancheC\", name: \"EURC\", deploymentId: tokens.avalancheC.EURC },\n { namespace: \"avalancheC\", name: \"EUROP\", deploymentId: tokens.avalancheC.EUROP },\n { namespace: \"avalancheC\", name: \"GHO\", deploymentId: tokens.avalancheC.GHO },\n { namespace: \"avalancheC\", name: \"JOE\", deploymentId: tokens.avalancheC.JOE },\n { namespace: \"avalancheC\", name: \"JPYC\", deploymentId: tokens.avalancheC.JPYC },\n { namespace: \"avalancheC\", name: \"LINK\", deploymentId: tokens.avalancheC.LINK },\n { namespace: \"avalancheC\", name: \"USDC\", deploymentId: tokens.avalancheC.USDC },\n { namespace: \"avalancheC\", name: \"USDC_E\", deploymentId: tokens.avalancheC.USDC_E },\n { namespace: \"avalancheC\", name: \"USDT\", deploymentId: tokens.avalancheC.USDT },\n { namespace: \"avalancheC\", name: \"WAVAX\", deploymentId: tokens.avalancheC.WAVAX },\n { namespace: \"ethereum\", name: \"AAVE\", deploymentId: tokens.ethereum.AAVE },\n { namespace: \"ethereum\", name: \"AUSD\", deploymentId: tokens.ethereum.AUSD },\n { namespace: \"ethereum\", name: \"DAI\", deploymentId: tokens.ethereum.DAI },\n { namespace: \"ethereum\", name: \"DISCOVERED_054D80A64E1F36A7\", deploymentId: tokens.ethereum.DISCOVERED_054D80A64E1F36A7 },\n { namespace: \"ethereum\", name: \"DISCOVERED_611597BD13DAA43D\", deploymentId: tokens.ethereum.DISCOVERED_611597BD13DAA43D },\n { namespace: \"ethereum\", name: \"DISCOVERED_69519FD08E31445C\", deploymentId: tokens.ethereum.DISCOVERED_69519FD08E31445C },\n { namespace: \"ethereum\", name: \"DISCOVERED_B475569F6A15E97A\", deploymentId: tokens.ethereum.DISCOVERED_B475569F6A15E97A },\n { namespace: \"ethereum\", name: \"DISCOVERED_E375086901067FE3\", deploymentId: tokens.ethereum.DISCOVERED_E375086901067FE3 },\n { namespace: \"ethereum\", name: \"ETH\", deploymentId: tokens.ethereum.ETH },\n { namespace: \"ethereum\", name: \"EURA\", deploymentId: tokens.ethereum.EURA },\n { namespace: \"ethereum\", name: \"EURAU\", deploymentId: tokens.ethereum.EURAU },\n { namespace: \"ethereum\", name: \"EURC\", deploymentId: tokens.ethereum.EURC },\n { namespace: \"ethereum\", name: \"EURCV\", deploymentId: tokens.ethereum.EURCV },\n { namespace: \"ethereum\", name: \"EURE\", deploymentId: tokens.ethereum.EURE },\n { namespace: \"ethereum\", name: \"EURE_V1\", deploymentId: tokens.ethereum.EURE_V1 },\n { namespace: \"ethereum\", name: \"EUROP\", deploymentId: tokens.ethereum.EUROP },\n { namespace: \"ethereum\", name: \"EURS\", deploymentId: tokens.ethereum.EURS },\n { namespace: \"ethereum\", name: \"EURT\", deploymentId: tokens.ethereum.EURT },\n { namespace: \"ethereum\", name: \"FDUSD\", deploymentId: tokens.ethereum.FDUSD },\n { namespace: \"ethereum\", name: \"GHO\", deploymentId: tokens.ethereum.GHO },\n { namespace: \"ethereum\", name: \"GYEN\", deploymentId: tokens.ethereum.GYEN },\n { namespace: \"ethereum\", name: \"JPYC\", deploymentId: tokens.ethereum.JPYC },\n { namespace: \"ethereum\", name: \"LINK\", deploymentId: tokens.ethereum.LINK },\n { namespace: \"ethereum\", name: \"PYUSD\", deploymentId: tokens.ethereum.PYUSD },\n { namespace: \"ethereum\", name: \"RLUSD\", deploymentId: tokens.ethereum.RLUSD },\n { namespace: \"ethereum\", name: \"UNI\", deploymentId: tokens.ethereum.UNI },\n { namespace: \"ethereum\", name: \"USDC\", deploymentId: tokens.ethereum.USDC },\n { namespace: \"ethereum\", name: \"USDE\", deploymentId: tokens.ethereum.USDE },\n { namespace: \"ethereum\", name: \"USDG\", deploymentId: tokens.ethereum.USDG },\n { namespace: \"ethereum\", name: \"USDP\", deploymentId: tokens.ethereum.USDP },\n { namespace: \"ethereum\", name: \"USDS\", deploymentId: tokens.ethereum.USDS },\n { namespace: \"ethereum\", name: \"USDT\", deploymentId: tokens.ethereum.USDT },\n { namespace: \"ethereum\", name: \"WETH\", deploymentId: tokens.ethereum.WETH },\n { namespace: \"ethereum\", name: \"ZUSD\", deploymentId: tokens.ethereum.ZUSD },\n { namespace: \"solana\", name: \"AUSD\", deploymentId: tokens.solana.AUSD },\n { namespace: \"solana\", name: \"EURAU\", deploymentId: tokens.solana.EURAU },\n { namespace: \"solana\", name: \"EURC\", deploymentId: tokens.solana.EURC },\n { namespace: \"solana\", name: \"EURCV\", deploymentId: tokens.solana.EURCV },\n { namespace: \"solana\", name: \"EUROP\", deploymentId: tokens.solana.EUROP },\n { namespace: \"solana\", name: \"FDUSD\", deploymentId: tokens.solana.FDUSD },\n { namespace: \"solana\", name: \"GYEN\", deploymentId: tokens.solana.GYEN },\n { namespace: \"solana\", name: \"JUP\", deploymentId: tokens.solana.JUP },\n { namespace: \"solana\", name: \"JUPUSD\", deploymentId: tokens.solana.JUPUSD },\n { namespace: \"solana\", name: \"PYUSD\", deploymentId: tokens.solana.PYUSD },\n { namespace: \"solana\", name: \"SOL\", deploymentId: tokens.solana.SOL },\n { namespace: \"solana\", name: \"USDC\", deploymentId: tokens.solana.USDC },\n { namespace: \"solana\", name: \"USDG\", deploymentId: tokens.solana.USDG },\n { namespace: \"solana\", name: \"USDP\", deploymentId: tokens.solana.USDP },\n { namespace: \"solana\", name: \"USDS\", deploymentId: tokens.solana.USDS },\n { namespace: \"solana\", name: \"USDT\", deploymentId: tokens.solana.USDT },\n { namespace: \"solana\", name: \"WSOL\", deploymentId: tokens.solana.WSOL },\n { namespace: \"solana\", name: \"WSOL_TOKEN_2022\", deploymentId: tokens.solana.WSOL_TOKEN_2022 },\n { namespace: \"solana\", name: \"ZUSD\", deploymentId: tokens.solana.ZUSD },\n]) as readonly TokenAlias[];\n","import {\n TOKEN_ALIASES,\n TOKEN_ASSETS,\n TOKEN_CATALOG_AS_OF_DATE,\n TOKEN_CATALOG_CONTENT_DIGEST,\n TOKEN_CATALOG_VERSION,\n TOKEN_CHAIN_IDS,\n TOKEN_DEPLOYMENTS,\n tokens,\n} from './generated/token_catalog'\nimport type {\n TokenAlias,\n TokenAsset,\n TokenChainId,\n TokenDeployment,\n TokenRepresentationKind,\n TokenStandard,\n TokenStatus,\n} from './generated/token_catalog'\n\nexport {\n TOKEN_ALIASES,\n TOKEN_ASSETS,\n TOKEN_CATALOG_AS_OF_DATE,\n TOKEN_CATALOG_CONTENT_DIGEST,\n TOKEN_CATALOG_VERSION,\n TOKEN_CHAIN_IDS,\n TOKEN_DEPLOYMENTS,\n tokens,\n}\n\nexport type {\n TokenAlias,\n TokenAsset,\n TokenChainId,\n TokenDeployment,\n TokenRepresentationKind,\n TokenStandard,\n TokenStatus,\n}\n\n/** Stable currencies represented by the catalog's stablecoin metadata. */\nexport type StableCurrency = 'USD' | 'EUR' | 'JPY'\n\nexport interface ListTokenDeploymentsOptions {\n readonly chainId?: TokenChainId\n readonly stableCurrency?: StableCurrency\n}\n\nconst EMPTY_DEPLOYMENTS: readonly TokenDeployment[] = Object.freeze([])\n\nconst assetsById = new Map<string, TokenAsset>(\n TOKEN_ASSETS.map((asset) => [asset.assetId, asset]),\n)\n\nconst deploymentsById = new Map<string, TokenDeployment>(\n TOKEN_DEPLOYMENTS.map((deployment) => [deployment.deploymentId, deployment]),\n)\n\nconst deploymentsBySymbol = new Map<string, readonly TokenDeployment[]>()\nfor (const deployment of TOKEN_DEPLOYMENTS) {\n const key = `${deployment.chainId}\\u0000${deployment.symbol}`\n const existing = deploymentsBySymbol.get(key)\n if (existing) {\n deploymentsBySymbol.set(key, [...existing, deployment])\n } else {\n deploymentsBySymbol.set(key, [deployment])\n }\n}\n\nfor (const [key, deployments] of deploymentsBySymbol) {\n deploymentsBySymbol.set(\n key,\n Object.freeze(\n [...deployments].sort((left, right) =>\n left.deploymentId < right.deploymentId\n ? -1\n : left.deploymentId > right.deploymentId\n ? 1\n : 0,\n ),\n ),\n )\n}\n\nconst deploymentsByAddress = new Map<string, TokenDeployment>()\nfor (const deployment of TOKEN_DEPLOYMENTS) {\n if (deployment.address === null || deployment.address === '') continue\n\n const normalizedAddress = isEvmChain(deployment.chainId)\n ? normalizeEvmAddress(deployment.address)\n : deployment.address\n if (normalizedAddress === undefined || isZeroEvmAddress(normalizedAddress)) {\n continue\n }\n\n const key = `${deployment.chainId}\\u0000${normalizedAddress}`\n if (!deploymentsByAddress.has(key)) {\n deploymentsByAddress.set(key, deployment)\n }\n}\n\n/**\n * Return an asset by its opaque, exact asset ID.\n *\n * IDs are intentionally treated as opaque strings. No chain or symbol is\n * inferred from the value.\n */\nexport function getTokenAsset(assetId: string): TokenAsset | undefined {\n return typeof assetId === 'string' ? assetsById.get(assetId) : undefined\n}\n\n/** Return a deployment by its opaque, exact deployment ID. */\nexport function getTokenDeployment(\n deploymentId: string,\n): TokenDeployment | undefined {\n return typeof deploymentId === 'string'\n ? deploymentsById.get(deploymentId)\n : undefined\n}\n\n/**\n * List all catalog deployments, optionally restricted by chain and stable\n * currency. Every status remains visible in the result.\n */\nexport function listTokenDeployments(\n options: ListTokenDeploymentsOptions = {},\n): readonly TokenDeployment[] {\n if (!isRecord(options)) return EMPTY_DEPLOYMENTS\n\n const { chainId, stableCurrency } = options\n if (chainId !== undefined && !isKnownChainId(chainId)) {\n return EMPTY_DEPLOYMENTS\n }\n if (\n stableCurrency !== undefined &&\n !isStableCurrency(stableCurrency)\n ) {\n return EMPTY_DEPLOYMENTS\n }\n\n const filtered = TOKEN_DEPLOYMENTS.filter((deployment) => {\n if (chainId !== undefined && deployment.chainId !== chainId) return false\n if (\n stableCurrency !== undefined &&\n deployment.stableCurrency !== stableCurrency\n ) {\n return false\n }\n return true\n })\n\n return filtered.length === 0 ? EMPTY_DEPLOYMENTS : Object.freeze(filtered)\n}\n\n/**\n * Find every exact-case symbol match on a chain, ordered by deployment ID.\n */\nexport function findTokenDeploymentsBySymbol(\n chainId: TokenChainId,\n symbol: string,\n): readonly TokenDeployment[] {\n if (\n !isKnownChainId(chainId) ||\n typeof symbol !== 'string' ||\n symbol.length === 0\n ) {\n return EMPTY_DEPLOYMENTS\n }\n\n return (\n deploymentsBySymbol.get(`${chainId}\\u0000${symbol}`) ?? EMPTY_DEPLOYMENTS\n )\n}\n\n/**\n * Find a deployment by address. EVM addresses are ASCII hex and are matched\n * case-insensitively; Solana addresses are matched byte-for-byte as strings.\n */\nexport function findTokenDeploymentByAddress(\n chainId: TokenChainId,\n address: string,\n): TokenDeployment | undefined {\n if (!isKnownChainId(chainId) || typeof address !== 'string') return undefined\n if (address.length === 0) return undefined\n\n const normalizedAddress = isEvmChain(chainId)\n ? normalizeEvmAddress(address)\n : address\n if (\n normalizedAddress === undefined ||\n (isEvmChain(chainId) && isZeroEvmAddress(normalizedAddress))\n ) {\n return undefined\n }\n\n return deploymentsByAddress.get(`${chainId}\\u0000${normalizedAddress}`)\n}\n\n/** Find the chain's native deployment. Native deployments use address null. */\nexport function getNativeTokenDeployment(\n chainId: TokenChainId,\n): TokenDeployment | undefined {\n if (!isKnownChainId(chainId)) return undefined\n\n return TOKEN_DEPLOYMENTS.find(\n (deployment) =>\n deployment.chainId === chainId &&\n deployment.standard === 'native' &&\n deployment.address === null,\n )\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction isKnownChainId(value: unknown): value is TokenChainId {\n return (\n value === TOKEN_CHAIN_IDS.ethereumMainnet ||\n value === TOKEN_CHAIN_IDS.solanaMainnet ||\n value === TOKEN_CHAIN_IDS.avalancheCMainnet\n )\n}\n\nfunction isStableCurrency(value: unknown): value is StableCurrency {\n return value === 'USD' || value === 'EUR' || value === 'JPY'\n}\n\nfunction isEvmChain(chainId: string): boolean {\n return (\n chainId === TOKEN_CHAIN_IDS.ethereumMainnet ||\n chainId === TOKEN_CHAIN_IDS.avalancheCMainnet\n )\n}\n\nfunction normalizeEvmAddress(address: string): string | undefined {\n if (!/^0x[0-9a-fA-F]{40}$/.test(address)) return undefined\n return address.toLowerCase()\n}\n\nfunction isZeroEvmAddress(address: string): boolean {\n return address === `0x${'0'.repeat(40)}`\n}\n","/* Generated by registry/generate-token-rankings.mjs. Do not edit. */\n\nexport type TokenRankingMetric = 'onchain-total-supply-value-native' | 'global-circulating-market-cap-usd';\nexport type TokenRankingStatus = 'unconfigured' | 'complete' | 'partial';\nexport interface TokenRankingCoverage { readonly chainId: string; readonly totalDeployments: number; readonly rankedDeployments: number; readonly unrankedDeployments: number; readonly observedAt: string | null; }\nexport interface TokenRankingMetadata { readonly schemaVersion: 1; readonly metric: TokenRankingMetric | null; readonly asOf: string | null; readonly contentDigest: string; readonly status: TokenRankingStatus; readonly coverage: readonly TokenRankingCoverage[]; readonly sourceIds: readonly string[]; }\nexport interface TokenRanking { readonly rank: number; readonly chainId: string; readonly deploymentIds: readonly string[]; readonly metric: TokenRankingMetric; readonly valueNumerator: string; readonly valueDenominator: string; readonly quoteCurrency: 'native' | 'USD'; readonly quoteDeploymentId: string | null; readonly observedAt: string; readonly sourceId: string; readonly sourceAssetId: string | null; }\nconst deepFreeze = <T>(value: T): Readonly<T> => { if (value && typeof value === 'object' && !Object.isFrozen(value)) { Object.freeze(value); for (const child of Object.values(value as Record<string, unknown>)) deepFreeze(child); } return value as Readonly<T>; };\nexport const TOKEN_RANKINGS_METADATA = deepFreeze({\n \"schemaVersion\": 1,\n \"metric\": \"onchain-total-supply-value-native\",\n \"asOf\": \"2026-09-16T16:41:59Z\",\n \"contentDigest\": \"26d1dc0a1091c8bfcb475c22877d1ce4ee7384462a184c9d4fc509c57110c0ea\",\n \"status\": \"partial\",\n \"coverage\": [\n {\n \"chainId\": \"eip155:1\",\n \"totalDeployments\": 34,\n \"rankedDeployments\": 8,\n \"unrankedDeployments\": 26,\n \"observedAt\": \"2026-09-16T16:41:59Z\"\n },\n {\n \"chainId\": \"eip155:43114\",\n \"totalDeployments\": 17,\n \"rankedDeployments\": 0,\n \"unrankedDeployments\": 17,\n \"observedAt\": \"2026-09-16T16:57:22Z\"\n },\n {\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"totalDeployments\": 19,\n \"rankedDeployments\": 1,\n \"unrankedDeployments\": 18,\n \"observedAt\": \"2026-09-16T16:57:16Z\"\n }\n ],\n \"sourceIds\": [\n \"rpc-avalanche-c-mainnet\",\n \"rpc-ethereum-mainnet\",\n \"rpc-solana-mainnet\"\n ]\n}) as TokenRankingMetadata;\nexport const TOKEN_RANKINGS = deepFreeze([\n {\n \"rank\": 1,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0008\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"207204000029972648356119414046913566875\",\n \"valueDenominator\": \"9901974834827\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 2,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0057\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"33884048421157235660750000000000000000000000000\",\n \"valueDenominator\": \"7575670698454356114489\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 3,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"2530529372917746092314437530549111\",\n \"valueDenominator\": \"689351076\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 4,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0019\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"8563994066253688594928908892314570251695637864181\",\n \"valueDenominator\": \"4480501906764632895725190\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 5,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"33087553822039834447063841834161374382321688576\",\n \"valueDenominator\": \"507606550755599406088755\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 6,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"22129458437198611962075707523082974663376278\",\n \"valueDenominator\": \"466235585330384227837\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 7,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"461823962164048108560000000000000000000000000\",\n \"valueDenominator\": \"10479085950557704780219\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 8,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"591208964484530983367688374937406614318\",\n \"valueDenominator\": \"21093793193177765\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 1,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"deploymentIds\": [\n \"deployment-0013\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"8934052641907075195235710143877572821100144726376448\",\n \"valueDenominator\": \"7196706365568923421366403517072759025\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0005\",\n \"observedAt\": \"2026-09-16T16:57:16Z\",\n \"sourceId\": \"rpc-solana-mainnet\",\n \"sourceAssetId\": null\n }\n]) as readonly TokenRanking[];\nexport const TOKEN_RANKINGS_CONTENT_DIGEST = TOKEN_RANKINGS_METADATA.contentDigest;\nexport const TOKEN_RANKINGS_BY_CHAIN = deepFreeze({\n \"eip155:1\": [\n {\n \"rank\": 1,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0008\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"207204000029972648356119414046913566875\",\n \"valueDenominator\": \"9901974834827\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 2,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0057\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"33884048421157235660750000000000000000000000000\",\n \"valueDenominator\": \"7575670698454356114489\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 3,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"2530529372917746092314437530549111\",\n \"valueDenominator\": \"689351076\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 4,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0019\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"8563994066253688594928908892314570251695637864181\",\n \"valueDenominator\": \"4480501906764632895725190\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 5,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"33087553822039834447063841834161374382321688576\",\n \"valueDenominator\": \"507606550755599406088755\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 6,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"22129458437198611962075707523082974663376278\",\n \"valueDenominator\": \"466235585330384227837\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 7,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"461823962164048108560000000000000000000000000\",\n \"valueDenominator\": \"10479085950557704780219\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 8,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"591208964484530983367688374937406614318\",\n \"valueDenominator\": \"21093793193177765\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n }\n ],\n \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\": [\n {\n \"rank\": 1,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"deploymentIds\": [\n \"deployment-0013\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"8934052641907075195235710143877572821100144726376448\",\n \"valueDenominator\": \"7196706365568923421366403517072759025\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0005\",\n \"observedAt\": \"2026-09-16T16:57:16Z\",\n \"sourceId\": \"rpc-solana-mainnet\",\n \"sourceAssetId\": null\n }\n ]\n}) as Readonly<Record<string, readonly TokenRanking[]>>;\n","import {\n TOKEN_RANKINGS,\n TOKEN_RANKINGS_BY_CHAIN,\n TOKEN_RANKINGS_CONTENT_DIGEST,\n TOKEN_RANKINGS_METADATA,\n} from './generated/token_rankings'\nimport type {\n TokenRanking,\n TokenRankingCoverage,\n TokenRankingMetadata,\n TokenRankingMetric,\n TokenRankingStatus,\n} from './generated/token_rankings'\n\nexport {\n TOKEN_RANKINGS,\n TOKEN_RANKINGS_BY_CHAIN,\n TOKEN_RANKINGS_CONTENT_DIGEST,\n TOKEN_RANKINGS_METADATA,\n}\n\nexport type {\n TokenRanking,\n TokenRankingCoverage,\n TokenRankingMetadata,\n TokenRankingMetric,\n TokenRankingStatus,\n}\n\nconst EMPTY_RANKINGS: readonly TokenRanking[] = Object.freeze([])\n\n/**\n * Return the bundled token rankings for an exact chain ID.\n *\n * Rankings are an offline snapshot. An unknown or empty chain ID is a safe,\n * immutable empty result; no chain aliases or network lookups are inferred.\n */\nexport function listTokenRankings(chainId: string): readonly TokenRanking[] {\n if (typeof chainId !== 'string' || chainId.length === 0) {\n return EMPTY_RANKINGS\n }\n return Object.hasOwn(TOKEN_RANKINGS_BY_CHAIN, chainId)\n ? TOKEN_RANKINGS_BY_CHAIN[chainId] ?? EMPTY_RANKINGS\n : EMPTY_RANKINGS\n}\n","import { ErpcInvalidResponseError } from './errors'\nimport type { CloudResourceKind, CloudResourceMode } from './resources'\nimport type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\n\nexport interface CloudOfferingBilling {\n readonly amountCents: number\n readonly unit: 'cents-per-hour'\n}\n\nexport interface CloudOfferingCompute {\n readonly tenancy: 'bare-metal' | 'virtual-machine'\n}\n\nexport interface CloudOfferingSolana {\n readonly transport: 'grpc' | 'shredstream'\n}\n\nexport interface CloudOffering {\n readonly billing?: CloudOfferingBilling\n readonly capabilities: readonly string[]\n readonly compute?: CloudOfferingCompute\n readonly description: string\n readonly id: string\n readonly kind: CloudResourceKind\n readonly mode?: CloudResourceMode\n readonly name: string\n readonly regions: readonly string[]\n readonly solana?: CloudOfferingSolana\n}\n\nconst resourceKinds: readonly CloudResourceKind[] = [\n 'bare-metal',\n 'solana-grpc',\n 'solana-shredstream',\n 'vps',\n]\nconst resourceModes: readonly CloudResourceMode[] = [\n 'dedicated',\n 'direct',\n 'shared',\n]\n\nconst objectValue = (value: unknown): Record<string, unknown> | null =>\n typeof value === 'object' && value !== null\n ? value as Record<string, unknown>\n : null\n\nconst stringArray = (value: unknown): readonly string[] | null =>\n Array.isArray(value) && value.every((item) => typeof item === 'string')\n ? value\n : null\n\nconst parseOffering = (value: unknown): CloudOffering | null => {\n const offering = objectValue(value)\n if (\n offering === null ||\n typeof offering.id !== 'string' ||\n typeof offering.kind !== 'string' ||\n !resourceKinds.includes(offering.kind as CloudResourceKind) ||\n typeof offering.name !== 'string' ||\n typeof offering.description !== 'string' ||\n (offering.mode !== undefined &&\n (typeof offering.mode !== 'string' ||\n !resourceModes.includes(offering.mode as CloudResourceMode)))\n ) return null\n\n const regions = stringArray(offering.regions)\n const capabilities = stringArray(offering.capabilities)\n if (regions === null || capabilities === null) return null\n\n const compute = offering.compute === undefined\n ? undefined\n : objectValue(offering.compute)\n if (\n compute !== undefined &&\n (compute === null ||\n (compute.tenancy !== 'virtual-machine' &&\n compute.tenancy !== 'bare-metal'))\n ) return null\n\n const solana = offering.solana === undefined\n ? undefined\n : objectValue(offering.solana)\n if (\n solana !== undefined &&\n (solana === null ||\n (solana.transport !== 'grpc' && solana.transport !== 'shredstream'))\n ) return null\n\n const billing = offering.billing === undefined\n ? undefined\n : objectValue(offering.billing)\n if (\n billing !== undefined &&\n (billing === null ||\n billing.unit !== 'cents-per-hour' ||\n typeof billing.amountCents !== 'number' ||\n !Number.isInteger(billing.amountCents) ||\n billing.amountCents < 0)\n ) return null\n\n return {\n id: offering.id,\n kind: offering.kind as CloudResourceKind,\n name: offering.name,\n description: offering.description,\n regions,\n capabilities,\n ...(typeof offering.mode === 'string'\n ? { mode: offering.mode as CloudResourceMode }\n : {}),\n ...(compute &&\n (compute.tenancy === 'virtual-machine' || compute.tenancy === 'bare-metal')\n ? { compute: { tenancy: compute.tenancy } }\n : {}),\n ...(solana &&\n (solana.transport === 'grpc' || solana.transport === 'shredstream')\n ? { solana: { transport: solana.transport } }\n : {}),\n ...(billing &&\n billing.unit === 'cents-per-hour' &&\n typeof billing.amountCents === 'number'\n ? {\n billing: {\n amountCents: billing.amountCents,\n unit: billing.unit,\n },\n }\n : {}),\n }\n}\n\nexport class CloudCatalogClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n async list(options?: RpcSendOptions): Promise<readonly CloudOffering[]> {\n const response: unknown = await this.#transport.get(\n '/v4/cloud/catalog',\n undefined,\n options,\n )\n const envelope = objectValue(response)\n const message = objectValue(envelope?.message)\n if (envelope?.success !== true || !Array.isArray(message?.offerings)) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud catalog',\n )\n }\n const offerings = message.offerings.map(parseOffering)\n if (offerings.some((offering) => offering === null)) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud catalog',\n )\n }\n return offerings as readonly CloudOffering[]\n }\n}\n","import { ErpcConfigError } from './errors'\n\nexport const DEFAULT_ENDPOINT = 'https://edge.erpc.global'\nexport const DEFAULT_AVALANCHE_ENDPOINT = 'https://ava-rpc.erpc.global'\nexport const DEFAULT_ACCOUNT_ENDPOINT = 'https://solana-rpc.erpc.global'\nexport const DEFAULT_USER_ENDPOINT = 'https://user-api.erpc.global'\nexport const DEFAULT_TIMEOUT_MS = 30_000\n\nexport interface ErpcClientConfig {\n readonly accountEndpoint?: string\n readonly apiKey: string\n readonly avalancheEndpoint?: string\n readonly endpoint?: string\n readonly fetch?: typeof globalThis.fetch\n readonly headers?: Readonly<Record<string, string>>\n readonly timeoutMs?: number\n readonly userEndpoint?: string\n readonly webSocket?: typeof globalThis.WebSocket\n}\n\nexport interface ResolvedErpcClientConfig {\n readonly accountEndpoint: URL\n readonly apiKey: string\n readonly avalancheEndpoint: URL\n readonly endpoint: URL\n readonly fetch: typeof globalThis.fetch\n readonly headers: Readonly<Record<string, string>>\n readonly timeoutMs: number\n readonly userEndpoint: URL\n readonly webSocket?: typeof globalThis.WebSocket\n}\n\nconst requireFetch = (provided?: typeof globalThis.fetch) => {\n const implementation = provided ?? globalThis.fetch\n if (typeof implementation !== 'function') {\n throw new ErpcConfigError(\n 'A Fetch API implementation is required in this runtime',\n )\n }\n return implementation\n}\n\nexport const resolveConfig = (\n config: ErpcClientConfig,\n): ResolvedErpcClientConfig => {\n const apiKey = config.apiKey.trim()\n if (!apiKey) throw new ErpcConfigError('apiKey must not be empty')\n\n let endpoint: URL\n let avalancheEndpoint: URL\n let accountEndpoint: URL\n let userEndpoint: URL\n try {\n endpoint = new URL(config.endpoint ?? DEFAULT_ENDPOINT)\n avalancheEndpoint = new URL(\n config.avalancheEndpoint ?? DEFAULT_AVALANCHE_ENDPOINT,\n )\n accountEndpoint = new URL(\n config.accountEndpoint ?? DEFAULT_ACCOUNT_ENDPOINT,\n )\n userEndpoint = new URL(config.userEndpoint ?? DEFAULT_USER_ENDPOINT)\n } catch {\n throw new ErpcConfigError('endpoint must be an absolute HTTP(S) URL')\n }\n\n if (endpoint.protocol !== 'https:' && endpoint.protocol !== 'http:') {\n throw new ErpcConfigError('endpoint must use HTTP or HTTPS')\n }\n if (\n avalancheEndpoint.protocol !== 'https:' &&\n avalancheEndpoint.protocol !== 'http:'\n ) {\n throw new ErpcConfigError('avalancheEndpoint must use HTTP or HTTPS')\n }\n if (\n accountEndpoint.protocol !== 'https:' &&\n accountEndpoint.protocol !== 'http:'\n ) {\n throw new ErpcConfigError('accountEndpoint must use HTTP or HTTPS')\n }\n if (\n userEndpoint.protocol !== 'https:' &&\n userEndpoint.protocol !== 'http:'\n ) {\n throw new ErpcConfigError('userEndpoint must use HTTP or HTTPS')\n }\n\n endpoint.search = ''\n endpoint.hash = ''\n endpoint.pathname = endpoint.pathname.replace(/\\/+$/, '') || '/'\n avalancheEndpoint.search = ''\n avalancheEndpoint.hash = ''\n avalancheEndpoint.pathname =\n avalancheEndpoint.pathname.replace(/\\/+$/, '') || '/'\n accountEndpoint.search = ''\n accountEndpoint.hash = ''\n accountEndpoint.pathname =\n accountEndpoint.pathname.replace(/\\/+$/, '') || '/'\n userEndpoint.search = ''\n userEndpoint.hash = ''\n userEndpoint.pathname = userEndpoint.pathname.replace(/\\/+$/, '') || '/'\n\n const timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS\n if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n throw new ErpcConfigError('timeoutMs must be a positive finite number')\n }\n\n return {\n accountEndpoint,\n apiKey,\n avalancheEndpoint,\n endpoint,\n fetch: requireFetch(config.fetch),\n headers: config.headers ?? {},\n timeoutMs,\n userEndpoint,\n ...(config.webSocket === undefined\n ? {}\n : { webSocket: config.webSocket }),\n }\n}\n\nexport const endpointWithPath = (endpoint: URL, path: string): URL => {\n const url = new URL(endpoint)\n const base = endpoint.pathname === '/' ? '' : endpoint.pathname\n url.pathname = `${base}/${path.replace(/^\\/+/, '')}`.replace(/\\/{2,}/g, '/')\n return url\n}\n\nexport const websocketUrl = (\n endpoint: URL,\n apiKey: string,\n path = '',\n): URL => {\n const url = endpointWithPath(endpoint, path)\n url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:'\n url.searchParams.set('api-key', apiKey)\n return url\n}\n","import { ErpcInvalidResponseError } from './errors'\nimport type { RpcSendOptions } from './rpc/types'\nimport type { Query } from './transport/rest'\nimport { RestTransport } from './transport/rest'\n\nexport type PriceEncoding = 'base64' | 'hex'\nexport type PriceAssetType = 'crypto' | 'equity' | 'fx' | 'metal' | 'rates'\n\nexport interface PriceFeedMetadata {\n readonly attributes?: Readonly<Record<string, string>>\n readonly id: string\n}\n\nexport interface PricePoint {\n readonly conf: string\n readonly expo: number\n readonly price: string\n readonly publish_time: number\n}\n\nexport interface ParsedPriceUpdate {\n readonly ema_price: PricePoint\n readonly id: string\n readonly metadata?: {\n readonly prev_publish_time?: number\n readonly proof_available_time?: number\n readonly slot?: number\n }\n readonly price: PricePoint\n}\n\nexport interface BinaryUpdate {\n readonly data: readonly string[]\n readonly encoding: string\n}\n\nexport interface PriceUpdateResponse {\n readonly binary: BinaryUpdate\n readonly parsed?: readonly ParsedPriceUpdate[]\n}\n\nexport interface PriceUpdateOptions {\n readonly encoding?: PriceEncoding\n readonly ids: readonly string[]\n readonly ignoreInvalidPriceIds?: boolean\n readonly parsed?: boolean\n}\n\nexport interface PriceStreamOptions extends PriceUpdateOptions {\n readonly allowUnordered?: boolean\n readonly benchmarksOnly?: boolean\n}\n\nexport interface PublisherStakeCap {\n readonly cap: number\n readonly publisher: string\n}\n\nexport interface PublisherStakeCapsResponse {\n readonly binary: BinaryUpdate\n readonly parsed?: readonly {\n readonly publisher_stake_caps: readonly PublisherStakeCap[]\n }[]\n}\n\nexport interface PriceStreamEvent {\n readonly data: PriceUpdateResponse\n readonly event?: string\n readonly id?: string\n}\n\nconst updateQuery = (options: PriceUpdateOptions): Query => ({\n 'ids[]': options.ids,\n encoding: options.encoding,\n parsed: options.parsed,\n ignore_invalid_price_ids: options.ignoreInvalidPriceIds,\n})\n\nconst parseSseBlock = (block: string): PriceStreamEvent | null => {\n const data: string[] = []\n let event: string | undefined\n let id: string | undefined\n\n for (const line of block.split(/\\r?\\n/)) {\n if (!line || line.startsWith(':')) continue\n const separator = line.indexOf(':')\n const field = separator === -1 ? line : line.slice(0, separator)\n const raw = separator === -1 ? '' : line.slice(separator + 1)\n const value = raw.startsWith(' ') ? raw.slice(1) : raw\n if (field === 'data') data.push(value)\n else if (field === 'event') event = value\n else if (field === 'id') id = value\n }\n\n if (data.length === 0) return null\n let parsed: PriceUpdateResponse\n try {\n parsed = JSON.parse(data.join('\\n')) as PriceUpdateResponse\n } catch {\n throw new ErpcInvalidResponseError('ERPC returned malformed stream data')\n }\n const result: {\n data: PriceUpdateResponse\n event?: string\n id?: string\n } = { data: parsed }\n if (event !== undefined) result.event = event\n if (id !== undefined) result.id = id\n return result\n}\n\nexport class PriceClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n getPriceFeeds(\n options: {\n readonly assetType?: PriceAssetType\n readonly query?: string\n } = {},\n sendOptions?: RpcSendOptions,\n ): Promise<readonly PriceFeedMetadata[]> {\n return this.#transport.get(\n '/v2/price_feeds',\n { query: options.query, asset_type: options.assetType },\n sendOptions,\n )\n }\n\n getLatestPriceUpdates(\n options: PriceUpdateOptions,\n sendOptions?: RpcSendOptions,\n ): Promise<PriceUpdateResponse> {\n return this.#transport.get(\n '/v2/updates/price/latest',\n updateQuery(options),\n sendOptions,\n )\n }\n\n getPriceUpdatesAtTimestamp(\n publishTime: number | string,\n options: PriceUpdateOptions,\n sendOptions?: RpcSendOptions,\n ): Promise<PriceUpdateResponse> {\n return this.#transport.get(\n `/v2/updates/price/${encodeURIComponent(String(publishTime))}`,\n updateQuery(options),\n sendOptions,\n )\n }\n\n getLatestPublisherStakeCaps(\n options: { readonly encoding?: PriceEncoding; readonly parsed?: boolean } = {},\n sendOptions?: RpcSendOptions,\n ): Promise<PublisherStakeCapsResponse> {\n return this.#transport.get(\n '/v2/updates/publisher_stake_caps/latest',\n options,\n sendOptions,\n )\n }\n\n async *streamPriceUpdates(\n options: PriceStreamOptions,\n sendOptions?: RpcSendOptions,\n ): AsyncGenerator<PriceStreamEvent, void, undefined> {\n const stream = await this.#transport.stream(\n '/v2/updates/price/stream',\n {\n ...updateQuery(options),\n allow_unordered: options.allowUnordered,\n benchmarks_only: options.benchmarksOnly,\n },\n sendOptions,\n )\n const response = stream.response\n if (!response.body) {\n stream.close()\n throw new ErpcInvalidResponseError('ERPC returned an empty stream')\n }\n\n const reader = response.body.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n try {\n while (true) {\n const { done, value } = await reader.read()\n buffer += decoder.decode(value, { stream: !done })\n let boundary = buffer.search(/\\r?\\n\\r?\\n/)\n while (boundary !== -1) {\n const separatorLength = buffer.slice(boundary).startsWith('\\r\\n')\n ? 4\n : 2\n const block = buffer.slice(0, boundary)\n buffer = buffer.slice(boundary + separatorLength)\n const event = parseSseBlock(block)\n if (event) yield event\n boundary = buffer.search(/\\r?\\n\\r?\\n/)\n }\n if (done) break\n }\n const finalEvent = parseSseBlock(buffer)\n if (finalEvent) yield finalEvent\n } catch (error) {\n throw stream.normalizeError(error)\n } finally {\n try {\n await reader.cancel()\n } catch {\n // Preserve the original stream result or error.\n } finally {\n reader.releaseLock()\n stream.close()\n }\n }\n }\n}\n","import type {\n JsonRpcParams,\n RpcBatchCall,\n RpcMethodSpec,\n RpcParams,\n RpcResult,\n RpcSendOptions,\n} from './types'\n\nexport interface JsonRpcTransport {\n readonly endpoint: string\n readonly maxBatchSize: number\n\n batch<TResult extends readonly unknown[]>(\n calls: readonly RpcBatchCall[],\n options?: RpcSendOptions,\n ): Promise<TResult>\n\n request<TResult>(\n method: string,\n params?: JsonRpcParams,\n options?: RpcSendOptions,\n ): Promise<TResult>\n}\n\nexport class PendingRpcRequest<TResult> {\n readonly #send: (options?: RpcSendOptions) => Promise<TResult>\n\n constructor(send: (options?: RpcSendOptions) => Promise<TResult>) {\n this.#send = send\n }\n\n send(options?: RpcSendOptions): Promise<TResult> {\n return this.#send(options)\n }\n}\n\nexport class PendingRpcBatchRequest<TResult extends readonly unknown[]> {\n readonly #send: (options?: RpcSendOptions) => Promise<TResult>\n\n constructor(send: (options?: RpcSendOptions) => Promise<TResult>) {\n this.#send = send\n }\n\n send(options?: RpcSendOptions): Promise<TResult> {\n return this.#send(options)\n }\n}\n\ntype SchemaConstraint<TSchema> = {\n readonly [TMethod in keyof TSchema]: RpcMethodSpec<\n JsonRpcParams | undefined,\n unknown\n >\n}\n\ntype MethodName<TSchema> = Extract<keyof TSchema, string>\n\ntype MethodFunction<TSpec> = TSpec extends RpcMethodSpec<\n infer TParams,\n infer TResult\n>\n ? TParams extends readonly unknown[]\n ? (...params: TParams) => PendingRpcRequest<TResult>\n : TParams extends object\n ? (params: TParams) => PendingRpcRequest<TResult>\n : () => PendingRpcRequest<TResult>\n : never\n\ntype BatchCall<TSchema> = {\n readonly [TMethod in MethodName<TSchema>]: RpcParams<\n TSchema[TMethod]\n > extends undefined\n ? { readonly method: TMethod; readonly params?: undefined }\n : {\n readonly method: TMethod\n readonly params: RpcParams<TSchema[TMethod]>\n }\n}[MethodName<TSchema>]\n\ntype BatchResults<\n TSchema,\n TCalls extends readonly BatchCall<TSchema>[],\n> = {\n readonly [TIndex in keyof TCalls]: TCalls[TIndex] extends {\n readonly method: infer TMethod\n }\n ? TMethod extends MethodName<TSchema>\n ? RpcResult<TSchema[TMethod]>\n : never\n : never\n}\n\nexport interface RpcNamespaceBase<TSchema> {\n readonly endpoint: string\n\n batch<const TCalls extends readonly BatchCall<TSchema>[]>(\n calls: TCalls,\n ): PendingRpcBatchRequest<BatchResults<TSchema, TCalls>>\n\n raw<TResult = unknown>(\n method: string,\n params?: JsonRpcParams,\n ): PendingRpcRequest<TResult>\n\n request<TMethod extends MethodName<TSchema>>(\n method: TMethod,\n ...params: RpcParams<TSchema[TMethod]> extends undefined\n ? []\n : [params: RpcParams<TSchema[TMethod]>]\n ): PendingRpcRequest<RpcResult<TSchema[TMethod]>>\n}\n\nexport type RpcNamespace<TSchema extends SchemaConstraint<TSchema>> =\n RpcNamespaceBase<TSchema> & {\n readonly [TMethod in MethodName<TSchema>]: MethodFunction<TSchema[TMethod]>\n }\n\nexport interface CreateRpcNamespaceConfig {\n readonly methodPrefix?: string\n readonly parameterMode: 'named' | 'positional'\n readonly transport: JsonRpcTransport\n readonly validateBatch?: (calls: readonly RpcBatchCall[]) => void\n}\n\nconst methodParams = (\n mode: CreateRpcNamespaceConfig['parameterMode'],\n args: readonly unknown[],\n): JsonRpcParams | undefined => {\n if (mode === 'positional') return args\n if (args.length === 0) return undefined\n return args[0] as object\n}\n\nexport const createRpcNamespace = <\n TSchema extends SchemaConstraint<TSchema>,\n>(config: CreateRpcNamespaceConfig): RpcNamespace<TSchema> => {\n const wireMethod = (method: string) =>\n config.methodPrefix === undefined\n ? method\n : `${config.methodPrefix}.${method}`\n\n const base: RpcNamespaceBase<TSchema> = {\n endpoint: config.transport.endpoint,\n batch: <const TCalls extends readonly BatchCall<TSchema>[]>(calls: TCalls) => {\n const wireCalls = (calls as readonly RpcBatchCall[]).map((call) => ({\n ...call,\n method: wireMethod(call.method),\n }))\n config.validateBatch?.(wireCalls)\n return new PendingRpcBatchRequest((options) =>\n config.transport.batch<BatchResults<TSchema, TCalls>>(\n wireCalls,\n options,\n ),\n )\n },\n raw: <TResult>(method: string, params?: JsonRpcParams) =>\n new PendingRpcRequest<TResult>((options) =>\n config.transport.request<TResult>(method, params, options),\n ),\n request: <TMethod extends MethodName<TSchema>>(\n method: TMethod,\n ...params: RpcParams<TSchema[TMethod]> extends undefined\n ? []\n : [params: RpcParams<TSchema[TMethod]>]\n ) =>\n new PendingRpcRequest<RpcResult<TSchema[TMethod]>>((options) =>\n config.transport.request<RpcResult<TSchema[TMethod]>>(\n wireMethod(method),\n params[0] as JsonRpcParams | undefined,\n options,\n ),\n ),\n }\n\n return new Proxy(base as RpcNamespace<TSchema>, {\n get(target, property, receiver) {\n if (typeof property !== 'string' || property in target) {\n return Reflect.get(target, property, receiver) as unknown\n }\n if (property === 'then') return undefined\n return (...args: readonly unknown[]) =>\n new PendingRpcRequest((options) =>\n config.transport.request(\n wireMethod(property),\n methodParams(config.parameterMode, args),\n options,\n ),\n )\n },\n })\n}\n","import type { HttpJsonRpcTransport } from '../transport/http'\nimport { createRpcNamespace, type RpcNamespace } from './client'\nimport type { JsonValue, RpcMethodSpec } from './types'\n\nexport type Hex = `0x${string}`\nexport type EthereumAddress = Hex\nexport type EthereumBlockTag =\n | 'earliest'\n | 'finalized'\n | 'latest'\n | 'pending'\n | 'safe'\n | Hex\n\nexport type EthereumObject = Readonly<Record<string, unknown>>\nexport type EthereumTransactionRequest = EthereumObject\nexport type EthereumFilter = EthereumObject\n\nexport interface EthereumRpcSchema {\n readonly eth_accounts: RpcMethodSpec<readonly [], readonly EthereumAddress[]>\n readonly eth_baseFee: RpcMethodSpec<readonly [], Hex>\n readonly eth_blobBaseFee: RpcMethodSpec<readonly [], Hex>\n readonly eth_blockNumber: RpcMethodSpec<readonly [], Hex>\n readonly eth_call: RpcMethodSpec<\n readonly [\n transaction: EthereumTransactionRequest,\n block?: EthereumBlockTag,\n stateOverride?: EthereumObject,\n ],\n Hex\n >\n readonly eth_callMany: RpcMethodSpec<\n readonly [\n calls: readonly EthereumObject[],\n simulationContext?: EthereumObject,\n stateOverride?: EthereumObject,\n timeout?: number,\n ],\n JsonValue\n >\n readonly eth_capabilities: RpcMethodSpec<readonly [], JsonValue>\n readonly eth_chainId: RpcMethodSpec<readonly [], Hex>\n readonly eth_createAccessList: RpcMethodSpec<\n readonly [\n transaction: EthereumTransactionRequest,\n block?: EthereumBlockTag,\n ],\n JsonValue\n >\n readonly eth_estimateGas: RpcMethodSpec<\n readonly [\n transaction: EthereumTransactionRequest,\n block?: EthereumBlockTag,\n stateOverride?: EthereumObject,\n ],\n Hex\n >\n readonly eth_feeHistory: RpcMethodSpec<\n readonly [\n blockCount: Hex,\n newestBlock: EthereumBlockTag,\n rewardPercentiles: readonly number[],\n ],\n JsonValue\n >\n readonly eth_gasPrice: RpcMethodSpec<readonly [], Hex>\n readonly eth_getAccount: RpcMethodSpec<\n readonly [address: EthereumAddress, block: EthereumBlockTag],\n JsonValue\n >\n readonly eth_getBalance: RpcMethodSpec<\n readonly [address: EthereumAddress, block?: EthereumBlockTag],\n Hex\n >\n readonly eth_getBlockByHash: RpcMethodSpec<\n readonly [hash: Hex, includeTransactions: boolean],\n JsonValue | null\n >\n readonly eth_getBlockByNumber: RpcMethodSpec<\n readonly [block: EthereumBlockTag, includeTransactions: boolean],\n JsonValue | null\n >\n readonly eth_getBlockReceipts: RpcMethodSpec<\n readonly [block: EthereumBlockTag],\n JsonValue | null\n >\n readonly eth_getBlockTransactionCountByHash: RpcMethodSpec<\n readonly [hash: Hex],\n Hex | null\n >\n readonly eth_getBlockTransactionCountByNumber: RpcMethodSpec<\n readonly [block: EthereumBlockTag],\n Hex | null\n >\n readonly eth_getCode: RpcMethodSpec<\n readonly [address: EthereumAddress, block?: EthereumBlockTag],\n Hex\n >\n readonly eth_getFilterChanges: RpcMethodSpec<readonly [filterId: Hex], JsonValue>\n readonly eth_getFilterLogs: RpcMethodSpec<readonly [filterId: Hex], JsonValue>\n readonly eth_getLogs: RpcMethodSpec<\n readonly [filter?: EthereumFilter],\n JsonValue\n >\n readonly eth_getProof: RpcMethodSpec<\n readonly [\n address: EthereumAddress,\n storageKeys: readonly Hex[],\n block: EthereumBlockTag,\n ],\n JsonValue\n >\n readonly eth_getRawTransactionByHash: RpcMethodSpec<\n readonly [hash: Hex],\n Hex | null\n >\n readonly eth_getStorageAt: RpcMethodSpec<\n readonly [\n address: EthereumAddress,\n position: Hex,\n block?: EthereumBlockTag,\n ],\n Hex\n >\n readonly eth_getTransactionByBlockHashAndIndex: RpcMethodSpec<\n readonly [blockHash: Hex, index: Hex],\n JsonValue | null\n >\n readonly eth_getTransactionByBlockNumberAndIndex: RpcMethodSpec<\n readonly [block: EthereumBlockTag, index: Hex],\n JsonValue | null\n >\n readonly eth_getTransactionByHash: RpcMethodSpec<\n readonly [hash: Hex],\n JsonValue | null\n >\n readonly eth_getTransactionBySenderAndNonce: RpcMethodSpec<\n readonly [sender: EthereumAddress, nonce: Hex],\n JsonValue | null\n >\n readonly eth_getTransactionCount: RpcMethodSpec<\n readonly [address: EthereumAddress, block?: EthereumBlockTag],\n Hex\n >\n readonly eth_getTransactionReceipt: RpcMethodSpec<\n readonly [hash: Hex],\n JsonValue | null\n >\n readonly eth_getUncleCountByBlockHash: RpcMethodSpec<\n readonly [hash: Hex],\n Hex\n >\n readonly eth_getUncleCountByBlockNumber: RpcMethodSpec<\n readonly [block: EthereumBlockTag],\n Hex\n >\n readonly eth_maxPriorityFeePerGas: RpcMethodSpec<readonly [], Hex>\n readonly eth_newBlockFilter: RpcMethodSpec<readonly [], Hex>\n readonly eth_newFilter: RpcMethodSpec<\n readonly [filter?: EthereumFilter],\n Hex\n >\n readonly eth_newPendingTransactionFilter: RpcMethodSpec<readonly [], Hex>\n readonly eth_sendRawTransaction: RpcMethodSpec<\n readonly [transaction: Hex],\n Hex\n >\n readonly eth_signTransaction: RpcMethodSpec<\n readonly [transaction: EthereumTransactionRequest],\n Hex\n >\n readonly eth_simulateV1: RpcMethodSpec<\n readonly [simulation: EthereumObject, block?: EthereumBlockTag],\n JsonValue\n >\n readonly eth_submitWork: RpcMethodSpec<\n readonly [nonce: Hex, proofOfWorkHash: Hex, digest: Hex],\n boolean\n >\n readonly eth_syncing: RpcMethodSpec<readonly [], boolean | JsonValue>\n readonly eth_uninstallFilter: RpcMethodSpec<readonly [filterId: Hex], boolean>\n readonly net_listening: RpcMethodSpec<readonly [], boolean>\n readonly net_peerCount: RpcMethodSpec<readonly [], Hex>\n readonly net_version: RpcMethodSpec<readonly [], string>\n readonly txpool_content: RpcMethodSpec<readonly [], JsonValue>\n readonly txpool_contentFrom: RpcMethodSpec<\n readonly [address: EthereumAddress],\n JsonValue\n >\n readonly txpool_inspect: RpcMethodSpec<readonly [], JsonValue>\n readonly txpool_status: RpcMethodSpec<readonly [], JsonValue>\n readonly web3_clientVersion: RpcMethodSpec<readonly [], string>\n readonly web3_sha3: RpcMethodSpec<readonly [data: Hex], Hex>\n}\n\nexport interface EthereumSubscriptionSchema {\n readonly eth_subscribe: RpcMethodSpec<\n readonly [subscription: string, ...options: readonly unknown[]],\n string\n >\n readonly eth_unsubscribe: RpcMethodSpec<\n readonly [subscriptionId: string],\n boolean\n >\n}\n\nexport const ETHEREUM_RPC_METHODS = [\n 'eth_accounts',\n 'eth_baseFee',\n 'eth_blobBaseFee',\n 'eth_blockNumber',\n 'eth_call',\n 'eth_callMany',\n 'eth_capabilities',\n 'eth_chainId',\n 'eth_createAccessList',\n 'eth_estimateGas',\n 'eth_feeHistory',\n 'eth_gasPrice',\n 'eth_getAccount',\n 'eth_getBalance',\n 'eth_getBlockByHash',\n 'eth_getBlockByNumber',\n 'eth_getBlockReceipts',\n 'eth_getBlockTransactionCountByHash',\n 'eth_getBlockTransactionCountByNumber',\n 'eth_getCode',\n 'eth_getFilterChanges',\n 'eth_getFilterLogs',\n 'eth_getLogs',\n 'eth_getProof',\n 'eth_getRawTransactionByHash',\n 'eth_getStorageAt',\n 'eth_getTransactionByBlockHashAndIndex',\n 'eth_getTransactionByBlockNumberAndIndex',\n 'eth_getTransactionByHash',\n 'eth_getTransactionBySenderAndNonce',\n 'eth_getTransactionCount',\n 'eth_getTransactionReceipt',\n 'eth_getUncleCountByBlockHash',\n 'eth_getUncleCountByBlockNumber',\n 'eth_maxPriorityFeePerGas',\n 'eth_newBlockFilter',\n 'eth_newFilter',\n 'eth_newPendingTransactionFilter',\n 'eth_sendRawTransaction',\n 'eth_signTransaction',\n 'eth_simulateV1',\n 'eth_submitWork',\n 'eth_syncing',\n 'eth_uninstallFilter',\n 'net_listening',\n 'net_peerCount',\n 'net_version',\n 'txpool_content',\n 'txpool_contentFrom',\n 'txpool_inspect',\n 'txpool_status',\n 'web3_clientVersion',\n 'web3_sha3',\n] as const satisfies readonly (keyof EthereumRpcSchema)[]\n\nexport const ETHEREUM_SUBSCRIPTION_METHODS = [\n 'eth_subscribe',\n 'eth_unsubscribe',\n] as const satisfies readonly (keyof EthereumSubscriptionSchema)[]\n\nexport interface EthereumClient {\n readonly rpc: RpcNamespace<EthereumRpcSchema>\n}\n\nexport const createEthereumClient = (\n transport: HttpJsonRpcTransport,\n): EthereumClient => ({\n rpc: createRpcNamespace<EthereumRpcSchema>({\n transport,\n parameterMode: 'positional',\n }),\n})\n","import { ErpcBatchPolicyError } from '../errors'\nimport type { HttpJsonRpcTransport } from '../transport/http'\nimport { createRpcNamespace, type RpcNamespace } from './client'\nimport {\n createEthereumClient,\n type EthereumClient,\n} from './ethereum'\nimport type { JsonValue, RpcBatchCall, RpcMethodSpec } from './types'\n\nexport interface AvalancheEncodingParams {\n readonly encoding?: string\n}\n\nexport interface AvalancheUtxoParams extends AvalancheEncodingParams {\n readonly addresses: readonly string[]\n readonly limit?: number | string\n readonly sourceChain?: string\n readonly startIndex?: Readonly<Record<string, JsonValue>>\n}\n\nexport interface AvalancheAvaxSchema {\n readonly getAtomicTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly txID: string },\n JsonValue\n >\n readonly getAtomicTxStatus: RpcMethodSpec<\n { readonly txID: string },\n JsonValue\n >\n readonly getUTXOs: RpcMethodSpec<\n AvalancheUtxoParams & { readonly sourceChain: string },\n JsonValue\n >\n readonly issueTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly tx: string },\n JsonValue\n >\n}\n\nexport interface AvalancheXChainSchema {\n readonly buildGenesis: RpcMethodSpec<\n AvalancheEncodingParams & {\n readonly genesisData: Readonly<Record<string, JsonValue>>\n readonly networkId: number | string\n },\n JsonValue\n >\n readonly getAllBalances: RpcMethodSpec<{ readonly address: string }, JsonValue>\n readonly getAssetDescription: RpcMethodSpec<\n { readonly assetID: string },\n JsonValue\n >\n readonly getBalance: RpcMethodSpec<\n { readonly address: string; readonly assetID: string },\n JsonValue\n >\n readonly getBlockByHeight: RpcMethodSpec<\n AvalancheEncodingParams & { readonly height: number | string },\n JsonValue\n >\n readonly getHeight: RpcMethodSpec<undefined, JsonValue>\n readonly getTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly txID: string },\n JsonValue\n >\n readonly getTxFee: RpcMethodSpec<undefined, JsonValue>\n readonly getTxStatus: RpcMethodSpec<{ readonly txID: string }, JsonValue>\n readonly getUTXOs: RpcMethodSpec<AvalancheUtxoParams, JsonValue>\n readonly issueTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly tx: string },\n JsonValue\n >\n}\n\nexport interface AvalanchePChainSchema {\n readonly getAllValidatorsAt: RpcMethodSpec<\n { readonly height: number | string },\n JsonValue\n >\n readonly getBalance: RpcMethodSpec<\n { readonly addresses?: readonly string[] },\n JsonValue\n >\n readonly getBlockchainStatus: RpcMethodSpec<\n { readonly blockchainID?: string },\n JsonValue\n >\n readonly getBlockchains: RpcMethodSpec<undefined, JsonValue>\n readonly getCurrentSupply: RpcMethodSpec<undefined, JsonValue>\n readonly getCurrentValidators: RpcMethodSpec<\n { readonly nodeIDs?: readonly string[]; readonly subnetID?: string },\n JsonValue\n >\n readonly getFeeConfig: RpcMethodSpec<undefined, JsonValue>\n readonly getFeeState: RpcMethodSpec<undefined, JsonValue>\n readonly getHeight: RpcMethodSpec<undefined, JsonValue>\n readonly getMinStake: RpcMethodSpec<undefined, JsonValue>\n readonly getRewardUTXOs: RpcMethodSpec<\n AvalancheEncodingParams & { readonly txID?: string },\n JsonValue\n >\n readonly getStake: RpcMethodSpec<\n AvalancheEncodingParams & {\n readonly addresses?: readonly string[]\n readonly validatorsOnly?: boolean\n },\n JsonValue\n >\n readonly getStakingAssetID: RpcMethodSpec<\n { readonly subnetID?: string },\n JsonValue\n >\n readonly getSubnets: RpcMethodSpec<\n { readonly ids?: readonly string[] },\n JsonValue\n >\n readonly getTimestamp: RpcMethodSpec<undefined, JsonValue>\n readonly getTotalStake: RpcMethodSpec<\n { readonly subnetID?: string },\n JsonValue\n >\n readonly getTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly txID: string },\n JsonValue\n >\n readonly getTxStatus: RpcMethodSpec<{ readonly txID: string }, JsonValue>\n readonly getUTXOs: RpcMethodSpec<AvalancheUtxoParams, JsonValue>\n readonly getValidatorFeeConfig: RpcMethodSpec<undefined, JsonValue>\n readonly getValidatorFeeState: RpcMethodSpec<undefined, JsonValue>\n readonly getValidatorsAt: RpcMethodSpec<\n { readonly height: number | string; readonly subnetID?: string },\n JsonValue\n >\n readonly issueTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly tx: string },\n JsonValue\n >\n readonly sampleValidators: RpcMethodSpec<\n { readonly size: number | string; readonly subnetID?: string },\n JsonValue\n >\n readonly validatedBy: RpcMethodSpec<\n { readonly blockchainID: string },\n JsonValue\n >\n readonly validates: RpcMethodSpec<{ readonly subnetID: string }, JsonValue>\n}\n\nexport interface AvalancheProposerVmSchema {\n readonly getCurrentEpoch: RpcMethodSpec<undefined, JsonValue>\n readonly getProposedHeight: RpcMethodSpec<undefined, JsonValue>\n}\n\nexport interface AvalancheInfoSchema {\n readonly upgrades: RpcMethodSpec<undefined, JsonValue>\n}\n\nexport interface AvalancheIndexSchema {\n readonly getContainerByID: RpcMethodSpec<\n AvalancheEncodingParams & { readonly id: string },\n JsonValue\n >\n readonly getContainerByIndex: RpcMethodSpec<\n AvalancheEncodingParams & { readonly index: number | string },\n JsonValue\n >\n readonly getContainerRange: RpcMethodSpec<\n AvalancheEncodingParams & {\n readonly numToFetch: number | string\n readonly startIndex: number | string\n },\n JsonValue\n >\n readonly getIndex: RpcMethodSpec<\n AvalancheEncodingParams & { readonly containerID: string },\n JsonValue\n >\n readonly getLastAccepted: RpcMethodSpec<AvalancheEncodingParams, JsonValue>\n readonly isAccepted: RpcMethodSpec<\n AvalancheEncodingParams & { readonly containerID: string },\n JsonValue\n >\n}\n\nexport const AVALANCHE_AVAX_METHODS = [\n 'avax.getAtomicTx',\n 'avax.getAtomicTxStatus',\n 'avax.getUTXOs',\n 'avax.issueTx',\n] as const\n\nexport const AVALANCHE_X_CHAIN_METHODS = [\n 'avm.buildGenesis',\n 'avm.getAllBalances',\n 'avm.getAssetDescription',\n 'avm.getBalance',\n 'avm.getBlockByHeight',\n 'avm.getHeight',\n 'avm.getTx',\n 'avm.getTxFee',\n 'avm.getTxStatus',\n 'avm.getUTXOs',\n 'avm.issueTx',\n] as const\n\nexport const AVALANCHE_P_CHAIN_METHODS = [\n 'platform.getAllValidatorsAt',\n 'platform.getBalance',\n 'platform.getBlockchainStatus',\n 'platform.getBlockchains',\n 'platform.getCurrentSupply',\n 'platform.getCurrentValidators',\n 'platform.getFeeConfig',\n 'platform.getFeeState',\n 'platform.getHeight',\n 'platform.getMinStake',\n 'platform.getRewardUTXOs',\n 'platform.getStake',\n 'platform.getStakingAssetID',\n 'platform.getSubnets',\n 'platform.getTimestamp',\n 'platform.getTotalStake',\n 'platform.getTx',\n 'platform.getTxStatus',\n 'platform.getUTXOs',\n 'platform.getValidatorFeeConfig',\n 'platform.getValidatorFeeState',\n 'platform.getValidatorsAt',\n 'platform.issueTx',\n 'platform.sampleValidators',\n 'platform.validatedBy',\n 'platform.validates',\n] as const\n\nexport const AVALANCHE_PROPOSER_VM_METHODS = [\n 'proposervm.getCurrentEpoch',\n 'proposervm.getProposedHeight',\n] as const\n\nexport const AVALANCHE_INFO_METHODS = ['info.upgrades'] as const\n\nexport const AVALANCHE_INDEX_METHODS = [\n 'index.getContainerByID',\n 'index.getContainerByIndex',\n 'index.getContainerRange',\n 'index.getIndex',\n 'index.getLastAccepted',\n 'index.isAccepted',\n] as const\n\nconst rejectNativeBatch = (calls: readonly RpcBatchCall[]) => {\n if (calls.length > 0) {\n throw new ErpcBatchPolicyError(\n 'Avalanche native RPC methods do not support batching',\n )\n }\n}\n\nconst nativeNamespace = <\n TSchema extends {\n readonly [TMethod in keyof TSchema]: RpcMethodSpec<\n object | readonly unknown[] | undefined,\n unknown\n >\n },\n>(transport: HttpJsonRpcTransport, methodPrefix: string) =>\n createRpcNamespace<TSchema>({\n methodPrefix,\n parameterMode: 'named',\n transport,\n validateBatch: rejectNativeBatch,\n })\n\nexport interface AvalancheIndexClient {\n readonly cChainBlocks: RpcNamespace<AvalancheIndexSchema>\n readonly pChainBlocks: RpcNamespace<AvalancheIndexSchema>\n readonly xChainBlocks: RpcNamespace<AvalancheIndexSchema>\n readonly xChainTransactions: RpcNamespace<AvalancheIndexSchema>\n}\n\nexport interface AvalancheClient extends EthereumClient {\n readonly avax: RpcNamespace<AvalancheAvaxSchema>\n readonly index: AvalancheIndexClient\n readonly info: RpcNamespace<AvalancheInfoSchema>\n readonly pChain: RpcNamespace<AvalanchePChainSchema>\n readonly proposerVm: RpcNamespace<AvalancheProposerVmSchema>\n readonly xChain: RpcNamespace<AvalancheXChainSchema>\n}\n\nexport interface AvalancheIndexTransports {\n readonly cChainBlocks: HttpJsonRpcTransport\n readonly pChainBlocks: HttpJsonRpcTransport\n readonly xChainBlocks: HttpJsonRpcTransport\n readonly xChainTransactions: HttpJsonRpcTransport\n}\n\nexport const createAvalancheClient = (\n transport: HttpJsonRpcTransport,\n indexTransports: AvalancheIndexTransports,\n): AvalancheClient => ({\n ...createEthereumClient(transport),\n avax: nativeNamespace<AvalancheAvaxSchema>(transport, 'avax'),\n xChain: nativeNamespace<AvalancheXChainSchema>(transport, 'avm'),\n pChain: nativeNamespace<AvalanchePChainSchema>(transport, 'platform'),\n proposerVm: nativeNamespace<AvalancheProposerVmSchema>(\n transport,\n 'proposervm',\n ),\n info: nativeNamespace<AvalancheInfoSchema>(transport, 'info'),\n index: {\n cChainBlocks: nativeNamespace<AvalancheIndexSchema>(\n indexTransports.cChainBlocks,\n 'index',\n ),\n pChainBlocks: nativeNamespace<AvalancheIndexSchema>(\n indexTransports.pChainBlocks,\n 'index',\n ),\n xChainBlocks: nativeNamespace<AvalancheIndexSchema>(\n indexTransports.xChainBlocks,\n 'index',\n ),\n xChainTransactions: nativeNamespace<AvalancheIndexSchema>(\n indexTransports.xChainTransactions,\n 'index',\n ),\n },\n})\n","import { ErpcBatchPolicyError } from '../errors'\nimport type { HttpJsonRpcTransport } from '../transport/http'\nimport { createRpcNamespace, type RpcNamespace } from './client'\nimport type {\n JsonObject,\n JsonValue,\n RpcBatchCall,\n RpcMethodSpec,\n} from './types'\n\nexport type SolanaCommitment = 'confirmed' | 'finalized' | 'processed'\nexport type SolanaEncoding = 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed'\nexport type SolanaConfig = Readonly<Record<string, unknown>>\n\nexport interface SolanaContext {\n readonly apiVersion?: string\n readonly slot: number\n}\n\nexport interface SolanaContextResult<TValue> {\n readonly context: SolanaContext\n readonly value: TValue\n}\n\nexport interface PriorityFeeEstimate {\n readonly priorityFeeEstimate: number\n readonly [key: string]: unknown\n}\n\nexport interface SolanaRpcSchema {\n readonly getAccountInfo: RpcMethodSpec<\n readonly [address: string, config?: SolanaConfig],\n SolanaContextResult<JsonValue | null>\n >\n readonly getBalance: RpcMethodSpec<\n readonly [address: string, config?: SolanaConfig],\n SolanaContextResult<number>\n >\n readonly getBlock: RpcMethodSpec<\n readonly [slot: number, config?: SolanaConfig],\n JsonValue | null\n >\n readonly getBlockCommitment: RpcMethodSpec<\n readonly [slot: number],\n JsonValue\n >\n readonly getBlockHeight: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n number\n >\n readonly getBlockProduction: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getBlockTime: RpcMethodSpec<\n readonly [slot: number],\n number | null\n >\n readonly getBlocks: RpcMethodSpec<\n readonly [startSlot: number, endSlot?: number, commitment?: SolanaCommitment],\n readonly number[]\n >\n readonly getBlocksWithLimit: RpcMethodSpec<\n readonly [startSlot: number, limit: number, commitment?: SolanaCommitment],\n readonly number[]\n >\n readonly getClusterNodes: RpcMethodSpec<readonly [], JsonValue>\n readonly getEpochInfo: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getEpochSchedule: RpcMethodSpec<readonly [], JsonValue>\n readonly getFeeForMessage: RpcMethodSpec<\n readonly [message: string, config?: SolanaConfig],\n SolanaContextResult<number | null>\n >\n readonly getFirstAvailableBlock: RpcMethodSpec<readonly [], number>\n readonly getGenesisHash: RpcMethodSpec<readonly [], string>\n readonly getHealth: RpcMethodSpec<readonly [], string>\n readonly getHighestSnapshotSlot: RpcMethodSpec<readonly [], JsonValue>\n readonly getIdentity: RpcMethodSpec<readonly [], JsonValue>\n readonly getInflationGovernor: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getInflationRate: RpcMethodSpec<readonly [], JsonValue>\n readonly getInflationReward: RpcMethodSpec<\n readonly [addresses: readonly string[], config?: SolanaConfig],\n JsonValue\n >\n readonly getLargestAccounts: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getLatestBlockhash: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getLeaderSchedule: RpcMethodSpec<\n readonly [slot?: number | null, config?: SolanaConfig],\n JsonValue | null\n >\n readonly getMaxRetransmitSlot: RpcMethodSpec<readonly [], number>\n readonly getMaxShredInsertSlot: RpcMethodSpec<readonly [], number>\n readonly getMinimumBalanceForRentExemption: RpcMethodSpec<\n readonly [dataLength: number, config?: SolanaConfig],\n number\n >\n readonly getMultipleAccounts: RpcMethodSpec<\n readonly [addresses: readonly string[], config?: SolanaConfig],\n SolanaContextResult<JsonValue>\n >\n readonly getParsedTransaction: RpcMethodSpec<\n readonly [signature: string, config?: SolanaConfig],\n JsonValue | null\n >\n readonly getPriorityFeeEstimate: RpcMethodSpec<\n readonly [request: SolanaConfig],\n PriorityFeeEstimate\n >\n readonly getProgramAccounts: RpcMethodSpec<\n readonly [programAddress: string, config?: SolanaConfig],\n JsonValue\n >\n readonly getProgramAccountsV2: RpcMethodSpec<\n readonly [programAddress: string, config: SolanaConfig],\n JsonValue\n >\n readonly getRecentPerformanceSamples: RpcMethodSpec<\n readonly [limit?: number],\n JsonValue\n >\n readonly getRecentPrioritizationFees: RpcMethodSpec<\n readonly [addresses?: readonly string[]],\n JsonValue\n >\n readonly getSignatureStatuses: RpcMethodSpec<\n readonly [signatures: readonly string[], config?: SolanaConfig],\n JsonValue\n >\n readonly getSignaturesForAddress: RpcMethodSpec<\n readonly [address: string, config?: SolanaConfig],\n JsonValue\n >\n readonly getSlot: RpcMethodSpec<readonly [config?: SolanaConfig], number>\n readonly getSlotLeader: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n string\n >\n readonly getSlotLeaders: RpcMethodSpec<\n readonly [startSlot: number, limit: number],\n readonly string[]\n >\n readonly getStakeMinimumDelegation: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n SolanaContextResult<number>\n >\n readonly getSupply: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getTokenAccountBalance: RpcMethodSpec<\n readonly [address: string, config?: SolanaConfig],\n JsonValue\n >\n readonly getTokenAccountsByDelegate: RpcMethodSpec<\n readonly [delegate: string, filter: SolanaConfig, config?: SolanaConfig],\n JsonValue\n >\n readonly getTokenAccountsByOwner: RpcMethodSpec<\n readonly [owner: string, filter: SolanaConfig, config?: SolanaConfig],\n JsonValue\n >\n readonly getTokenLargestAccounts: RpcMethodSpec<\n readonly [mint: string, config?: SolanaConfig],\n JsonValue\n >\n readonly getTokenSupply: RpcMethodSpec<\n readonly [mint: string, config?: SolanaConfig],\n JsonValue\n >\n readonly getTransaction: RpcMethodSpec<\n readonly [signature: string, config?: SolanaConfig],\n JsonValue | null\n >\n readonly getTransactionCount: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n number\n >\n readonly getVersion: RpcMethodSpec<readonly [], JsonObject>\n readonly getVoteAccounts: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly isBlockhashValid: RpcMethodSpec<\n readonly [blockhash: string, config?: SolanaConfig],\n SolanaContextResult<boolean>\n >\n readonly minimumLedgerSlot: RpcMethodSpec<readonly [], number>\n readonly requestAirdrop: RpcMethodSpec<\n readonly [address: string, lamports: number, config?: SolanaConfig],\n string\n >\n readonly sendTransaction: RpcMethodSpec<\n readonly [transaction: string, config?: SolanaConfig],\n string\n >\n readonly simulateTransaction: RpcMethodSpec<\n readonly [transaction: string, config?: SolanaConfig],\n JsonValue\n >\n}\n\nexport interface AssetRequest {\n readonly id: string\n readonly displayOptions?: Readonly<Record<string, boolean>>\n}\n\nexport interface AssetBatchRequest {\n readonly ids: readonly string[]\n readonly displayOptions?: Readonly<Record<string, boolean>>\n}\n\nexport interface AssetListRequest {\n readonly cursor?: string\n readonly limit?: number\n readonly page?: number\n readonly [key: string]: unknown\n}\n\nexport type IndexedAsset = Readonly<Record<string, unknown>>\nexport type IndexedAssetProof = Readonly<Record<string, unknown>>\n\nexport interface IndexedAssetList<TItem = IndexedAsset> {\n readonly cursor?: string\n readonly items: readonly TItem[]\n readonly limit?: number\n readonly page?: number\n readonly total?: number\n readonly [key: string]: unknown\n}\n\nexport interface SolanaDasSchema {\n readonly getAsset: RpcMethodSpec<AssetRequest, IndexedAsset | null>\n readonly getAssetBatch: RpcMethodSpec<\n AssetBatchRequest,\n readonly (IndexedAsset | null)[]\n >\n readonly getAssetProof: RpcMethodSpec<AssetRequest, IndexedAssetProof | null>\n readonly getAssetProofBatch: RpcMethodSpec<\n AssetBatchRequest,\n readonly (IndexedAssetProof | null)[]\n >\n readonly getAssetsByAuthority: RpcMethodSpec<\n AssetListRequest & { readonly authorityAddress: string },\n IndexedAssetList\n >\n readonly getAssetsByCreator: RpcMethodSpec<\n AssetListRequest & {\n readonly creatorAddress: string\n readonly onlyVerified?: boolean\n },\n IndexedAssetList\n >\n readonly getAssetsByGroup: RpcMethodSpec<\n AssetListRequest & {\n readonly groupKey: string\n readonly groupValue: string\n },\n IndexedAssetList\n >\n readonly getAssetsByOwner: RpcMethodSpec<\n AssetListRequest & { readonly ownerAddress: string },\n IndexedAssetList\n >\n readonly getNftEditions: RpcMethodSpec<\n AssetListRequest & { readonly mint: string },\n Readonly<Record<string, unknown>>\n >\n readonly getSignaturesForAsset: RpcMethodSpec<\n AssetListRequest & { readonly id: string },\n Readonly<Record<string, unknown>>\n >\n readonly getTokenAccounts: RpcMethodSpec<\n AssetListRequest,\n Readonly<Record<string, unknown>>\n >\n readonly getTokensByDelegate: RpcMethodSpec<\n AssetListRequest & { readonly delegate: string },\n Readonly<Record<string, unknown>>\n >\n readonly getTokensByOwner: RpcMethodSpec<\n AssetListRequest & { readonly owner: string },\n Readonly<Record<string, unknown>>\n >\n readonly searchAssets: RpcMethodSpec<AssetListRequest, IndexedAssetList>\n}\n\nexport interface NumericFilter {\n readonly eq?: number\n readonly gt?: number\n readonly gte?: number\n readonly lt?: number\n readonly lte?: number\n}\n\nexport interface AddressTransactionsOptions {\n readonly before?: string\n readonly commitment?: SolanaCommitment\n readonly encoding?: 'base58' | 'base64' | 'json'\n readonly filters?: Readonly<Record<string, unknown>>\n readonly limit?: number\n readonly maxSupportedTransactionVersion?: number\n readonly paginationToken?: string\n readonly sortOrder?: 'asc' | 'desc'\n readonly transactionDetails?: 'full' | 'signatures'\n readonly until?: string\n}\n\nexport interface AddressTransaction {\n readonly blockTime: number | null\n readonly confirmationStatus: SolanaCommitment\n readonly err: unknown\n readonly memo: string | null\n readonly meta?: unknown\n readonly signature: string\n readonly slot: number\n readonly transaction?: unknown\n readonly transactionIndex: number\n readonly version?: unknown\n readonly [key: string]: unknown\n}\n\nexport interface AddressTransactionPage {\n readonly data: readonly AddressTransaction[]\n readonly paginationToken: string | null\n readonly windowStart: number | null\n}\n\nexport interface AddressTransfersOptions {\n readonly commitment?: SolanaCommitment\n readonly direction?: 'any' | 'in' | 'out'\n readonly filters?: {\n readonly amount?: NumericFilter\n readonly blockTime?: NumericFilter\n readonly slot?: NumericFilter\n }\n readonly limit?: number\n readonly mint?: string\n readonly paginationToken?: string\n readonly solMode?: 'merged' | 'separate'\n readonly sortOrder?: 'asc' | 'desc'\n readonly with?: string\n}\n\nexport interface AddressTransfer {\n readonly amount: string\n readonly blockTime: number | null\n readonly confirmationStatus: 'finalized'\n readonly decimals: number\n readonly feeAmount: string | null\n readonly feeUiAmount: string | null\n readonly fromTokenAccount: string | null\n readonly fromUserAccount: string | null\n readonly innerInstructionIdx: number\n readonly instructionIdx: number\n readonly mint: string | null\n readonly signature: string\n readonly slot: number\n readonly toTokenAccount: string | null\n readonly toUserAccount: string | null\n readonly transactionIdx: number\n readonly type:\n | 'burn'\n | 'changeOwner'\n | 'mint'\n | 'transfer'\n | 'unwrap'\n | 'withdrawWithheldFee'\n | 'wrap'\n readonly uiAmount: string\n readonly [key: string]: unknown\n}\n\nexport interface AddressTransferPage {\n readonly data: readonly AddressTransfer[]\n readonly paginationToken: string | null\n readonly windowStart: number | null\n}\n\nexport interface SolanaHistorySchema {\n readonly getTransactionsForAddress: RpcMethodSpec<\n readonly [address: string, options?: AddressTransactionsOptions],\n AddressTransactionPage | null\n >\n readonly getTransfersByAddress: RpcMethodSpec<\n readonly [address: string, options?: AddressTransfersOptions],\n AddressTransferPage\n >\n}\n\nexport interface PingMeasurement {\n readonly city: string | null\n readonly country: string | null\n readonly fromIp: string | null\n readonly icmpReplied: boolean\n readonly lat: number | null\n readonly lon: number | null\n readonly measuredAt: string | null\n readonly ms: number | null\n readonly org: string | null\n readonly postal: string | null\n readonly region: string | null\n readonly timezone: string | null\n readonly [key: string]: unknown\n}\n\nexport interface LeaderSlot {\n readonly epoch: number\n readonly featureSet: string | null\n readonly gossipPort: number | null\n readonly gossipUpdatedAt: string | null\n readonly identity: string\n readonly ipAddress: string | null\n readonly leaderCity: string | null\n readonly leaderCountry: string | null\n readonly leaderLat: number | null\n readonly leaderLon: number | null\n readonly leaderOrg: string | null\n readonly leaderRegion: string | null\n readonly leaderTimezone: string | null\n readonly pingToLeaders: readonly PingMeasurement[]\n readonly rpcAddress: string | null\n readonly slot: string\n readonly stakeWeight: number\n readonly tpuPort: number | null\n readonly tpuQuicPort: number | null\n readonly version: string | null\n readonly [key: string]: unknown\n}\n\nexport interface LeaderSlotsResult {\n readonly data: readonly LeaderSlot[]\n readonly message: string\n readonly success: boolean\n readonly total: number\n readonly [key: string]: unknown\n}\n\nexport interface ValidatorInformation\n extends Omit<LeaderSlot, 'epoch' | 'slot'> {\n readonly gossipNodeId: number | null\n readonly slotCount: number\n}\n\nexport interface ValidatorsInformationOptions {\n readonly country?: string\n readonly limit?: number\n readonly region?: string\n}\n\nexport interface ValidatorsInformationResult {\n readonly data: readonly ValidatorInformation[]\n readonly epoch: number\n readonly message: string\n readonly success: boolean\n readonly total: number\n readonly totalValidators: number\n readonly [key: string]: unknown\n}\n\nexport interface SolanaLeaderSchema {\n readonly getLeaderSlots: RpcMethodSpec<\n readonly [slot: number],\n LeaderSlotsResult\n >\n readonly getValidatorsInformation: RpcMethodSpec<\n readonly [options: ValidatorsInformationOptions],\n ValidatorsInformationResult\n >\n}\n\nexport type AnalyticsTimeBound = number | string\n\nexport interface TopProgramsOptions {\n readonly includeVotes?: boolean\n readonly limit?: number\n readonly since?: AnalyticsTimeBound\n readonly until?: AnalyticsTimeBound\n}\n\nexport interface TopProgramRow {\n readonly errors: string\n readonly invocations: string\n readonly program: string\n readonly total_cus: string\n readonly [key: string]: unknown\n}\n\nexport type SlotStatsOptions =\n | { readonly slot: number }\n | { readonly fromSlot: number; readonly toSlot: number }\n\nexport interface SlotStatsRow {\n readonly block_time: number\n readonly non_vote_transaction_count: number\n readonly slot: number\n readonly transaction_count: number\n readonly vote_transaction_count: number\n readonly [key: string]: unknown\n}\n\nexport interface TpsTimeseriesOptions {\n readonly bucketSec?: number\n readonly from: AnalyticsTimeBound\n readonly to: AnalyticsTimeBound\n}\n\nexport interface TpsBucket {\n readonly bucket: number\n readonly non_vote_tps: number\n readonly total_tps: number\n readonly [key: string]: unknown\n}\n\nexport interface EpochSummary {\n readonly distinct_programs: string\n readonly epoch: number\n readonly first_block_time: number\n readonly last_block_time: number\n readonly non_vote_txs: string\n readonly program_invocations: string\n readonly slots: string\n readonly total_txs: string\n readonly vote_txs: string\n readonly [key: string]: unknown\n}\n\nexport interface ProgramStatsOptions {\n readonly bucketSec?: number\n readonly programIdBase58: string\n readonly since?: AnalyticsTimeBound\n readonly until?: AnalyticsTimeBound\n}\n\nexport interface ProgramStatsBucket {\n readonly bucket: number\n readonly errors: string\n readonly invocations: string\n readonly total_cus: string\n readonly [key: string]: unknown\n}\n\nexport interface SolanaAnalyticsSchema {\n readonly jetEpochSummary: RpcMethodSpec<\n readonly [options: { readonly epoch: number }],\n EpochSummary | null\n >\n readonly jetProgramStats: RpcMethodSpec<\n readonly [options: ProgramStatsOptions],\n readonly ProgramStatsBucket[]\n >\n readonly jetSlotStats: RpcMethodSpec<\n readonly [options: SlotStatsOptions],\n readonly SlotStatsRow[]\n >\n readonly jetTopPrograms: RpcMethodSpec<\n readonly [options: TopProgramsOptions],\n readonly TopProgramRow[]\n >\n readonly jetTpsTimeseries: RpcMethodSpec<\n readonly [options: TpsTimeseriesOptions],\n readonly TpsBucket[]\n >\n}\n\nexport const SOLANA_RPC_METHODS = [\n 'getAccountInfo',\n 'getBalance',\n 'getBlock',\n 'getBlockCommitment',\n 'getBlockHeight',\n 'getBlockProduction',\n 'getBlockTime',\n 'getBlocks',\n 'getBlocksWithLimit',\n 'getClusterNodes',\n 'getEpochInfo',\n 'getEpochSchedule',\n 'getFeeForMessage',\n 'getFirstAvailableBlock',\n 'getGenesisHash',\n 'getHealth',\n 'getHighestSnapshotSlot',\n 'getIdentity',\n 'getInflationGovernor',\n 'getInflationRate',\n 'getInflationReward',\n 'getLargestAccounts',\n 'getLatestBlockhash',\n 'getLeaderSchedule',\n 'getMaxRetransmitSlot',\n 'getMaxShredInsertSlot',\n 'getMinimumBalanceForRentExemption',\n 'getMultipleAccounts',\n 'getParsedTransaction',\n 'getPriorityFeeEstimate',\n 'getProgramAccounts',\n 'getProgramAccountsV2',\n 'getRecentPerformanceSamples',\n 'getRecentPrioritizationFees',\n 'getSignatureStatuses',\n 'getSignaturesForAddress',\n 'getSlot',\n 'getSlotLeader',\n 'getSlotLeaders',\n 'getStakeMinimumDelegation',\n 'getSupply',\n 'getTokenAccountBalance',\n 'getTokenAccountsByDelegate',\n 'getTokenAccountsByOwner',\n 'getTokenLargestAccounts',\n 'getTokenSupply',\n 'getTransaction',\n 'getTransactionCount',\n 'getVersion',\n 'getVoteAccounts',\n 'isBlockhashValid',\n 'minimumLedgerSlot',\n 'requestAirdrop',\n 'sendTransaction',\n 'simulateTransaction',\n] as const satisfies readonly (keyof SolanaRpcSchema)[]\n\nexport const SOLANA_DAS_METHODS = [\n 'getAsset',\n 'getAssetBatch',\n 'getAssetProof',\n 'getAssetProofBatch',\n 'getAssetsByAuthority',\n 'getAssetsByCreator',\n 'getAssetsByGroup',\n 'getAssetsByOwner',\n 'getNftEditions',\n 'getSignaturesForAsset',\n 'getTokenAccounts',\n 'getTokensByDelegate',\n 'getTokensByOwner',\n 'searchAssets',\n] as const satisfies readonly (keyof SolanaDasSchema)[]\n\nexport const SOLANA_HISTORY_METHODS = [\n 'getTransactionsForAddress',\n 'getTransfersByAddress',\n] as const satisfies readonly (keyof SolanaHistorySchema)[]\n\nexport const SOLANA_LEADER_METHODS = [\n 'getLeaderSlots',\n 'getValidatorsInformation',\n] as const satisfies readonly (keyof SolanaLeaderSchema)[]\n\nexport const SOLANA_ANALYTICS_METHODS = [\n 'jetEpochSummary',\n 'jetProgramStats',\n 'jetSlotStats',\n 'jetTopPrograms',\n 'jetTpsTimeseries',\n] as const satisfies readonly (keyof SolanaAnalyticsSchema)[]\n\nconst heavyRpcMethods = new Set<string>([\n 'getPriorityFeeEstimate',\n 'getProgramAccounts',\n 'getProgramAccountsV2',\n 'getTokenLargestAccounts',\n])\n\nconst validateStandardBatch = (calls: readonly RpcBatchCall[]) => {\n let containsHeavy = false\n let containsStandard = false\n for (const call of calls) {\n if (heavyRpcMethods.has(call.method)) containsHeavy = true\n else containsStandard = true\n }\n if (containsHeavy && containsStandard) {\n throw new ErpcBatchPolicyError(\n 'Solana indexed and standard RPC methods cannot share a batch',\n )\n }\n}\n\nconst rejectLeaderBatch = (calls: readonly RpcBatchCall[]) => {\n if (calls.length > 0) {\n throw new ErpcBatchPolicyError('Leader RPC methods do not support batching')\n }\n}\n\nexport interface SolanaClient {\n readonly analytics: RpcNamespace<SolanaAnalyticsSchema>\n readonly das: RpcNamespace<SolanaDasSchema>\n readonly history: RpcNamespace<SolanaHistorySchema>\n readonly leaders: RpcNamespace<SolanaLeaderSchema>\n readonly rpc: RpcNamespace<SolanaRpcSchema>\n}\n\nexport const createSolanaClient = (\n transport: HttpJsonRpcTransport,\n): SolanaClient => ({\n rpc: createRpcNamespace<SolanaRpcSchema>({\n transport,\n parameterMode: 'positional',\n validateBatch: validateStandardBatch,\n }),\n das: createRpcNamespace<SolanaDasSchema>({\n transport,\n parameterMode: 'named',\n }),\n history: createRpcNamespace<SolanaHistorySchema>({\n transport,\n parameterMode: 'positional',\n }),\n leaders: createRpcNamespace<SolanaLeaderSchema>({\n transport,\n parameterMode: 'positional',\n validateBatch: rejectLeaderBatch,\n }),\n analytics: createRpcNamespace<SolanaAnalyticsSchema>({\n transport,\n parameterMode: 'positional',\n }),\n})\n","import {\n ErpcAbortedError,\n ErpcConfigError,\n ErpcInvalidResponseError,\n ErpcJsonRpcError,\n ErpcTimeoutError,\n ErpcTransportError,\n redactJsonRpcError,\n} from '../errors'\nimport type { JsonRpcTransport } from '../rpc/client'\nimport type {\n JsonRpcErrorObject,\n JsonRpcId,\n JsonRpcParams,\n RpcBatchCall,\n RpcSendOptions,\n} from '../rpc/types'\n\nexport interface RpcNotification {\n readonly jsonrpc: '2.0'\n readonly method: string\n readonly params: unknown\n}\n\nexport type RpcNotificationListener = (notification: RpcNotification) => void\n\nexport interface WebSocketTransportConfig {\n readonly endpoint: URL\n readonly maxBatchSize?: number\n readonly timeoutMs: number\n readonly webSocket?: typeof globalThis.WebSocket\n}\n\ninterface PendingResponse {\n readonly cleanup: () => void\n readonly reject: (reason: unknown) => void\n readonly resolve: (value: unknown) => void\n}\n\nconst isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst isRpcError = (value: unknown): value is JsonRpcErrorObject =>\n isObject(value) &&\n typeof value.code === 'number' &&\n typeof value.message === 'string'\n\nconst publicEndpoint = (endpoint: URL): string => {\n const url = new URL(endpoint)\n url.search = ''\n url.hash = ''\n return url.toString()\n}\n\nexport class WebSocketJsonRpcTransport implements JsonRpcTransport {\n readonly endpoint: string\n readonly maxBatchSize: number\n\n readonly #connectionUrl: string\n readonly #credential: string | undefined\n readonly #listeners = new Set<RpcNotificationListener>()\n readonly #pending = new Map<JsonRpcId, PendingResponse>()\n readonly #timeoutMs: number\n readonly #webSocket?: typeof globalThis.WebSocket\n #connectPromise: Promise<void> | undefined\n #nextId = 1\n #socket: WebSocket | undefined\n\n constructor(config: WebSocketTransportConfig) {\n const implementation = config.webSocket ?? globalThis.WebSocket\n if (typeof implementation === 'function') this.#webSocket = implementation\n this.#credential = config.endpoint.searchParams.get('api-key') ?? undefined\n this.#connectionUrl = config.endpoint.toString()\n this.endpoint = publicEndpoint(config.endpoint)\n this.maxBatchSize = config.maxBatchSize ?? 256\n this.#timeoutMs = config.timeoutMs\n }\n\n async connect(): Promise<void> {\n if (this.#socket?.readyState === 1) return\n if (this.#connectPromise) return this.#connectPromise\n if (!this.#webSocket) {\n throw new ErpcConfigError(\n 'A WebSocket implementation is required for subscriptions',\n )\n }\n\n this.#connectPromise = new Promise<void>((resolve, reject) => {\n const socket = new this.#webSocket!(this.#connectionUrl)\n this.#socket = socket\n\n const timeout = setTimeout(() => {\n socket.close()\n reject(new ErpcTimeoutError(this.#timeoutMs))\n }, this.#timeoutMs)\n\n socket.addEventListener(\n 'open',\n () => {\n clearTimeout(timeout)\n resolve()\n },\n { once: true },\n )\n socket.addEventListener(\n 'error',\n () => {\n clearTimeout(timeout)\n reject(new ErpcTransportError('Unable to connect to ERPC WebSocket'))\n },\n { once: true },\n )\n socket.addEventListener('message', (event: MessageEvent<unknown>) => {\n void this.#onMessage(event.data)\n })\n socket.addEventListener('close', () => {\n this.#socket = undefined\n this.#connectPromise = undefined\n const error = new ErpcTransportError('ERPC WebSocket connection closed')\n for (const pending of this.#pending.values()) pending.reject(error)\n this.#pending.clear()\n })\n }).catch((error: unknown) => {\n this.#connectPromise = undefined\n throw error\n })\n\n return this.#connectPromise\n }\n\n close(code = 1000, reason = 'Client closed connection'): void {\n this.#socket?.close(code, reason)\n this.#socket = undefined\n this.#connectPromise = undefined\n }\n\n onNotification(listener: RpcNotificationListener): () => void {\n this.#listeners.add(listener)\n return () => this.#listeners.delete(listener)\n }\n\n async request<TResult>(\n method: string,\n params?: JsonRpcParams,\n options: RpcSendOptions = {},\n ): Promise<TResult> {\n await this.connect()\n const id = this.#id()\n const promise = this.#waitFor<TResult>(id, options)\n const request: Record<string, unknown> = { jsonrpc: '2.0', id, method }\n if (params !== undefined) request.params = params\n this.#send(request, id)\n return promise\n }\n\n async batch<TResult extends readonly unknown[]>(\n calls: readonly RpcBatchCall[],\n options: RpcSendOptions = {},\n ): Promise<TResult> {\n if (calls.length === 0) return [] as unknown as TResult\n if (calls.length > this.maxBatchSize) {\n throw new ErpcInvalidResponseError(\n `A batch may contain at most ${this.maxBatchSize} calls`,\n )\n }\n\n await this.connect()\n const requests = calls.map((call) => {\n const id = this.#id()\n const request: Record<string, unknown> = {\n jsonrpc: '2.0',\n id,\n method: call.method,\n }\n if (call.params !== undefined) request.params = call.params\n return { id, request, response: this.#waitFor(id, options) }\n })\n\n try {\n this.#socket?.send(JSON.stringify(requests.map(({ request }) => request)))\n } catch (error) {\n for (const { id } of requests) this.#reject(id, error)\n }\n return Promise.all(requests.map(({ response }) => response)) as unknown as Promise<TResult>\n }\n\n #id(): number {\n const id = this.#nextId\n this.#nextId = id >= Number.MAX_SAFE_INTEGER ? 1 : id + 1\n return id\n }\n\n #send(request: unknown, id: JsonRpcId): void {\n try {\n this.#socket?.send(JSON.stringify(request))\n } catch (error) {\n this.#reject(id, error)\n }\n }\n\n #waitFor<TResult>(\n id: JsonRpcId,\n options: RpcSendOptions,\n ): Promise<TResult> {\n return new Promise<TResult>((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.#pending.delete(id)\n reject(new ErpcTimeoutError(this.#timeoutMs))\n }, this.#timeoutMs)\n\n const abort = () => {\n clearTimeout(timeout)\n this.#pending.delete(id)\n reject(new ErpcAbortedError())\n }\n options.signal?.addEventListener('abort', abort, { once: true })\n\n const cleanup = () => {\n clearTimeout(timeout)\n options.signal?.removeEventListener('abort', abort)\n }\n this.#pending.set(id, {\n resolve: (value) => resolve(value as TResult),\n reject,\n cleanup,\n })\n if (options.signal?.aborted) abort()\n })\n }\n\n #reject(id: JsonRpcId, _reason: unknown): void {\n const pending = this.#pending.get(id)\n if (!pending) return\n pending.cleanup()\n this.#pending.delete(id)\n // A custom WebSocket implementation may include its connection URL in a\n // thrown error, so never retain the original error as a public cause.\n pending.reject(\n new ErpcTransportError('Unable to send ERPC WebSocket request'),\n )\n }\n\n async #onMessage(data: unknown): Promise<void> {\n const text = await this.#messageText(data)\n if (text === null) return\n\n let parsed: unknown\n try {\n parsed = JSON.parse(text) as unknown\n } catch {\n return\n }\n\n if (Array.isArray(parsed)) {\n for (const item of parsed) this.#dispatch(item)\n } else {\n this.#dispatch(parsed)\n }\n }\n\n async #messageText(data: unknown): Promise<string | null> {\n if (typeof data === 'string') return data\n if (data instanceof ArrayBuffer) return new TextDecoder().decode(data)\n if (ArrayBuffer.isView(data)) {\n return new TextDecoder().decode(\n new Uint8Array(data.buffer, data.byteOffset, data.byteLength),\n )\n }\n if (typeof Blob !== 'undefined' && data instanceof Blob) return data.text()\n return null\n }\n\n #dispatch(message: unknown): void {\n if (!isObject(message)) return\n const id = message.id\n if (typeof id === 'number' || typeof id === 'string') {\n const pending = this.#pending.get(id)\n if (!pending) return\n pending.cleanup()\n this.#pending.delete(id)\n if (isRpcError(message.error)) {\n pending.reject(\n new ErpcJsonRpcError(\n redactJsonRpcError(message.error, this.#credential),\n ),\n )\n }\n else if ('result' in message) pending.resolve(message.result)\n else pending.reject(new ErpcInvalidResponseError())\n return\n }\n\n if (\n message.jsonrpc === '2.0' &&\n typeof message.method === 'string' &&\n 'params' in message\n ) {\n const notification: RpcNotification = {\n jsonrpc: '2.0',\n method: message.method,\n params: message.params,\n }\n for (const listener of this.#listeners) listener(notification)\n }\n }\n}\n","import { createRpcNamespace, type RpcNamespace } from './rpc/client'\nimport type { EthereumSubscriptionSchema } from './rpc/ethereum'\nimport type { RpcMethodSpec } from './rpc/types'\nimport {\n WebSocketJsonRpcTransport,\n type RpcNotification,\n type RpcNotificationListener,\n} from './transport/websocket'\n\nexport type SubscriptionId = number | string\nexport type SubscriptionListener<TResult> = (result: TResult) => void\n\ninterface NotificationParams {\n readonly result: unknown\n readonly subscription: SubscriptionId\n}\n\nconst notificationParams = (\n notification: RpcNotification,\n): NotificationParams | null => {\n if (typeof notification.params !== 'object' || notification.params === null) {\n return null\n }\n const params = notification.params as Record<string, unknown>\n if (\n (typeof params.subscription !== 'number' &&\n typeof params.subscription !== 'string') ||\n !('result' in params)\n ) {\n return null\n }\n return {\n subscription: params.subscription,\n result: params.result,\n }\n}\n\nexport class RpcSubscription<TId extends SubscriptionId = SubscriptionId> {\n readonly id: TId\n readonly #unsubscribe: () => Promise<boolean>\n #closed = false\n\n constructor(id: TId, unsubscribe: () => Promise<boolean>) {\n this.id = id\n this.#unsubscribe = unsubscribe\n }\n\n async unsubscribe(): Promise<boolean> {\n if (this.#closed) return true\n const result = await this.#unsubscribe()\n if (result) this.#closed = true\n return result\n }\n}\n\nexport class EthereumSubscriptions {\n readonly rpc: RpcNamespace<EthereumSubscriptionSchema>\n readonly #transport: WebSocketJsonRpcTransport\n\n constructor(transport: WebSocketJsonRpcTransport) {\n this.#transport = transport\n this.rpc = createRpcNamespace<EthereumSubscriptionSchema>({\n transport,\n parameterMode: 'positional',\n })\n }\n\n close(): void {\n this.#transport.close()\n }\n\n onNotification(listener: RpcNotificationListener): () => void {\n return this.#transport.onNotification(listener)\n }\n\n async subscribe<TResult = unknown>(\n subscription: string,\n listener: SubscriptionListener<TResult>,\n ...options: readonly unknown[]\n ): Promise<RpcSubscription<string>> {\n let id: string | undefined\n const removeListener = this.#transport.onNotification((notification) => {\n const params = notificationParams(notification)\n if (params && params.subscription === id) listener(params.result as TResult)\n })\n\n try {\n id = await this.#transport.request<string>('eth_subscribe', [\n subscription,\n ...options,\n ])\n } catch (error) {\n removeListener()\n throw error\n }\n\n return new RpcSubscription(id, async () => {\n const result = await this.#transport.request<boolean>('eth_unsubscribe', [\n id,\n ])\n if (result) removeListener()\n return result\n })\n }\n}\n\nexport interface SolanaEnhancedSubscriptionSchema {\n readonly accountSubscribe: RpcMethodSpec<\n readonly [address: string, options?: Readonly<Record<string, unknown>>],\n number\n >\n readonly accountUnsubscribe: RpcMethodSpec<\n readonly [subscriptionId: number],\n boolean\n >\n readonly transactionSubscribe: RpcMethodSpec<\n readonly [\n filter: Readonly<Record<string, unknown>>,\n options?: Readonly<Record<string, unknown>>,\n ],\n number\n >\n readonly transactionUnsubscribe: RpcMethodSpec<\n readonly [subscriptionId: number],\n boolean\n >\n}\n\nexport const SOLANA_ENHANCED_SUBSCRIPTION_METHODS = [\n 'accountSubscribe',\n 'accountUnsubscribe',\n 'transactionSubscribe',\n 'transactionUnsubscribe',\n] as const satisfies readonly (keyof SolanaEnhancedSubscriptionSchema)[]\n\nexport class SolanaSubscriptions {\n readonly rpc: RpcNamespace<SolanaEnhancedSubscriptionSchema>\n readonly #transport: WebSocketJsonRpcTransport\n\n constructor(transport: WebSocketJsonRpcTransport) {\n this.#transport = transport\n this.rpc = createRpcNamespace<SolanaEnhancedSubscriptionSchema>({\n transport,\n parameterMode: 'positional',\n })\n }\n\n close(): void {\n this.#transport.close()\n }\n\n onNotification(listener: RpcNotificationListener): () => void {\n return this.#transport.onNotification(listener)\n }\n\n accountSubscribe<TResult = unknown>(\n address: string,\n listener: SubscriptionListener<TResult>,\n options?: Readonly<Record<string, unknown>>,\n ): Promise<RpcSubscription<number>> {\n const params = options === undefined ? [address] : [address, options]\n return this.#subscribe<number, TResult>(\n 'accountSubscribe',\n params,\n 'accountUnsubscribe',\n listener,\n )\n }\n\n transactionSubscribe<TResult = unknown>(\n filter: Readonly<Record<string, unknown>>,\n listener: SubscriptionListener<TResult>,\n options?: Readonly<Record<string, unknown>>,\n ): Promise<RpcSubscription<number>> {\n const params = options === undefined ? [filter] : [filter, options]\n return this.#subscribe<number, TResult>(\n 'transactionSubscribe',\n params,\n 'transactionUnsubscribe',\n listener,\n )\n }\n\n async rawSubscribe<TResult = unknown>(\n subscribeMethod: string,\n params: readonly unknown[],\n unsubscribeMethod: string,\n listener: SubscriptionListener<TResult>,\n ): Promise<RpcSubscription> {\n return this.#subscribe(\n subscribeMethod,\n params,\n unsubscribeMethod,\n listener,\n )\n }\n\n async #subscribe<TId extends SubscriptionId, TResult>(\n subscribeMethod: string,\n params: readonly unknown[],\n unsubscribeMethod: string,\n listener: SubscriptionListener<TResult>,\n ): Promise<RpcSubscription<TId>> {\n let id: TId | undefined\n const removeListener = this.#transport.onNotification((notification) => {\n const value = notificationParams(notification)\n if (value && value.subscription === id) listener(value.result as TResult)\n })\n\n try {\n id = await this.#transport.request<TId>(subscribeMethod, params)\n } catch (error) {\n removeListener()\n throw error\n }\n\n return new RpcSubscription(id, async () => {\n const result = await this.#transport.request<boolean>(unsubscribeMethod, [\n id,\n ])\n if (result) removeListener()\n return result\n })\n }\n}\n","/* Generated by registry/generate-dex-catalog.mjs. Do not edit. */\n\nexport type DexStatus = 'active' | 'legacy' | 'winding-down' | 'retired';\nexport type DexChainId = string;\nexport interface DexDeployment { readonly dexDeploymentId: string; readonly protocolId: string; readonly name: string; readonly chainId: DexChainId; readonly programAddress: string; readonly adapterKind: string; readonly status: DexStatus; readonly replacedByDexDeploymentId: string | null; }\nexport interface PoolAdapter { readonly kind: string; readonly feeNumerator: string | null; readonly feeDenominator: string | null; }\nexport interface PoolDefinition { readonly poolDefinitionId: string; readonly dexDeploymentId: string; readonly chainId: DexChainId; readonly address: string; readonly token0DeploymentId: string; readonly token1DeploymentId: string; readonly adapter: Readonly<PoolAdapter>; readonly status: DexStatus; readonly replacedByPoolDefinitionId: string | null; }\nexport interface NativeWrapDefinition { readonly nativeWrapDefinitionId: string; readonly chainId: DexChainId; readonly nativeTokenDeploymentId: string; readonly wrappedTokenDeploymentId: string; readonly status: DexStatus; }\nexport interface DexAlias { readonly namespace: string; readonly name: string; readonly dexDeploymentId: string | null; readonly poolDefinitionId: string | null; }\nfunction deepFreeze<T>(value: T): T { if (value && typeof value === 'object') { Object.freeze(value); for (const child of Object.values(value as Record<string, unknown>)) deepFreeze(child); } return value; }\nexport const DEX_CATALOG_VERSION = \"1.0.0\" as const;\nexport const DEX_CATALOG_AS_OF_DATE = \"2026-09-15\" as const;\nexport const DEX_CATALOG_CONTENT_DIGEST = \"caccde1f997648dfa045af41d4f8b7f93a051c59d098cc770bd3a2757185aac1\" as const;\nexport const DEX_CHAIN_IDS = deepFreeze({\n \"ethereum\": \"eip155:1\",\n \"solana\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"avalancheC\": \"eip155:43114\"\n} as const);\nexport const dexes = deepFreeze({\n \"ethereum\": {\n \"UNISWAP_V2\": \"dex-deployment-0001\"\n },\n \"solana\": {\n \"ORCA_WHIRLPOOLS\": \"dex-deployment-0003\",\n \"RAYDIUM_CLMM\": \"dex-deployment-0004\"\n },\n \"avalancheC\": {\n \"LFJ_LEGACY\": \"dex-deployment-0002\"\n }\n} as const);\nexport const pools = deepFreeze({\n \"ethereum\": {\n \"DISCOVERED_POOL_1B98A5F24A364E05\": \"discovered-pool-1b98a5f24a364e05b3d56a9702c3560fc3a71f84b2195c486cfc5f8a956cc0b7\",\n \"DISCOVERED_POOL_6428A1E5DA293B2E\": \"discovered-pool-6428a1e5da293b2ef62027ec823ba27532219a40784def3930feee56a623b809\",\n \"DISCOVERED_POOL_866F890448D13C07\": \"discovered-pool-866f890448d13c078e217a894ebd47430da5941fe5bff7e382fc095916b4614d\",\n \"DISCOVERED_POOL_90805F8995C1D0B8\": \"discovered-pool-90805f8995c1d0b85a45fcd4587928a00066b1f14407baee4e8ed1b634c07804\",\n \"DISCOVERED_POOL_A7F9E600A86951F4\": \"discovered-pool-a7f9e600a86951f40472ff779fae467db8a6bbbc6076356058f427e97d4ae429\",\n \"DISCOVERED_POOL_B8F972F8BAE36C82\": \"discovered-pool-b8f972f8bae36c82b51ed2aeed070d3ef3e7642e2a708c7d3c0c134e6e1946ed\",\n \"DISCOVERED_POOL_E702B0CB56528418\": \"discovered-pool-e702b0cb56528418b4ce089dfc001c6241c94e92aabde72f1a340c4601541780\",\n \"UNISWAP_V2_USDC_WETH\": \"pool-0001\"\n },\n \"solana\": {\n \"ORCA_WHIRLPOOLS_WSOL_EURC\": \"pool-0003\",\n \"RAYDIUM_CLMM_WSOL_EURC\": \"pool-0004\"\n },\n \"avalancheC\": {\n \"DISCOVERED_POOL_1568E761C62F7DC5\": \"discovered-pool-1568e761c62f7dc58207a77f2dc32153805efe03a8d9cce9366ce68efdf276c4\",\n \"DISCOVERED_POOL_3C1E38D02092D16E\": \"discovered-pool-3c1e38d02092d16e396d2f3a22b2bfae55246a1c566831d31f211670e45bd562\",\n \"DISCOVERED_POOL_3F840A40991E755E\": \"discovered-pool-3f840a40991e755e42d242188bd8deb85cd5b9655308269b00c220f5237710cf\",\n \"DISCOVERED_POOL_5D7AA6A767A0C6EA\": \"discovered-pool-5d7aa6a767a0c6ea9ddeb06d1289bd12d85018935d5b25724b165dc8b9832252\",\n \"DISCOVERED_POOL_9E4ED76F76904A4A\": \"discovered-pool-9e4ed76f76904a4ae271946bb1a4b2dc7428e343040b05a42707071bbfac9462\",\n \"DISCOVERED_POOL_A2480F3D4EA5CE12\": \"discovered-pool-a2480f3d4ea5ce12252126acf64b174b9fe678b0f0fda8936a12fef180ae08cd\",\n \"DISCOVERED_POOL_ECE9088CF3894443\": \"discovered-pool-ece9088cf38944438897ff9fb2a1abc6855a687b5a3f0d6ab98dfe06c1a6dfef\",\n \"DISCOVERED_POOL_FB02E85806CD9079\": \"discovered-pool-fb02e85806cd907920126af935137b0775a858ddf04a28d7ca144f761fd7579e\",\n \"LFJ_LEGACY_WAVAX_USDC\": \"pool-0002\"\n }\n} as const);\nexport const DEX_DEPLOYMENTS: ReadonlyArray<Readonly<DexDeployment>> = deepFreeze([\n {\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"protocolId\": \"uniswap-v2\",\n \"name\": \"Uniswap V2\",\n \"chainId\": \"eip155:1\",\n \"programAddress\": \"0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f\",\n \"adapterKind\": \"evm-constant-product-v2\",\n \"status\": \"active\",\n \"replacedByDexDeploymentId\": null\n },\n {\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"protocolId\": \"lfj-legacy-constant-product\",\n \"name\": \"LFJ legacy constant-product (Joe V1)\",\n \"chainId\": \"eip155:43114\",\n \"programAddress\": \"0x9ad6c38be94206ca50bb0d90783181662f0cfa10\",\n \"adapterKind\": \"evm-constant-product-v2\",\n \"status\": \"active\",\n \"replacedByDexDeploymentId\": null\n },\n {\n \"dexDeploymentId\": \"dex-deployment-0003\",\n \"protocolId\": \"orca-whirlpools\",\n \"name\": \"Orca Whirlpools\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"programAddress\": \"whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc\",\n \"adapterKind\": \"solana-orca-whirlpool\",\n \"status\": \"active\",\n \"replacedByDexDeploymentId\": null\n },\n {\n \"dexDeploymentId\": \"dex-deployment-0004\",\n \"protocolId\": \"raydium-clmm\",\n \"name\": \"Raydium CLMM\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"programAddress\": \"CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK\",\n \"adapterKind\": \"solana-raydium-clmm\",\n \"status\": \"active\",\n \"replacedByDexDeploymentId\": null\n }\n]);\nexport const POOL_DEFINITIONS: ReadonlyArray<Readonly<PoolDefinition>> = deepFreeze([\n {\n \"poolDefinitionId\": \"discovered-pool-1568e761c62f7dc58207a77f2dc32153805efe03a8d9cce9366ce68efdf276c4\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xd5a37dc5c9a396a03dd1136fc76a1a02b1c88ffa\",\n \"token0DeploymentId\": \"discovered-token-9f9965cc065c9becf8d2cb58071524baafea37d27fda9bf683a93ea85f2e653d\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-1b98a5f24a364e05b3d56a9702c3560fc3a71f84b2195c486cfc5f8a956cc0b7\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xc2adda861f89bbb333c90c492cb837741916a225\",\n \"token0DeploymentId\": \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-3c1e38d02092d16e396d2f3a22b2bfae55246a1c566831d31f211670e45bd562\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xed8cbd9f0ce3c6986b22002f03c6475ceb7a6256\",\n \"token0DeploymentId\": \"deployment-0004\",\n \"token1DeploymentId\": \"discovered-token-288036a90ee0fa72a2751a78a6934cc6ced9e16de91c97ae8e109e2ee6189bc5\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-3f840a40991e755e42d242188bd8deb85cd5b9655308269b00c220f5237710cf\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xfe15c2695f1f920da45c30aae47d11de51007af9\",\n \"token0DeploymentId\": \"discovered-token-0a7f98c8752f15ee02ce0d801f25df8ff78864a1d70aff7e204f7bdb3f8a0692\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-5d7aa6a767a0c6ea9ddeb06d1289bd12d85018935d5b25724b165dc8b9832252\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0x48f7c83c29e5ecea926d8169864d8cd022deaf3c\",\n \"token0DeploymentId\": \"discovered-token-323d07c442f0d089197ae7eea9b3ebb829910177c5b780161a7623aaed5e4371\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-6428a1e5da293b2ef62027ec823ba27532219a40784def3930feee56a623b809\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xa2107fa5b38d9bbd2c461d6edf11b11a50f6b974\",\n \"token0DeploymentId\": \"deployment-0057\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-866f890448d13c078e217a894ebd47430da5941fe5bff7e382fc095916b4614d\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xb6909b960dbbe7392d405429eb2b3649752b4838\",\n \"token0DeploymentId\": \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-90805f8995c1d0b85a45fcd4587928a00066b1f14407baee4e8ed1b634c07804\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0x55d5c232d921b9eaa6b37b5845e439acd04b4dba\",\n \"token0DeploymentId\": \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-9e4ed76f76904a4ae271946bb1a4b2dc7428e343040b05a42707071bbfac9462\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0x6f3a0c89f611ef5dc9d96650324ac633d02265d3\",\n \"token0DeploymentId\": \"deployment-0058\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-a2480f3d4ea5ce12252126acf64b174b9fe678b0f0fda8936a12fef180ae08cd\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xa389f9430876455c36478deea9769b7ca4e3ddb1\",\n \"token0DeploymentId\": \"deployment-0018\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-a7f9e600a86951f40472ff779fae467db8a6bbbc6076356058f427e97d4ae429\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xa478c2975ab1ea89e8196811f51a7b7ade33eb11\",\n \"token0DeploymentId\": \"deployment-0019\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-b8f972f8bae36c82b51ed2aeed070d3ef3e7642e2a708c7d3c0c134e6e1946ed\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0x11b1f53204d03e5529f09eb3091939e4fd8c9cf3\",\n \"token0DeploymentId\": \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-e702b0cb56528418b4ce089dfc001c6241c94e92aabde72f1a340c4601541780\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xbb2b8038a1640196fbe3e38816f3e67cba72d940\",\n \"token0DeploymentId\": \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-ece9088cf38944438897ff9fb2a1abc6855a687b5a3f0d6ab98dfe06c1a6dfef\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0x454e67025631c065d3cfad6d71e6892f74487a15\",\n \"token0DeploymentId\": \"deployment-0059\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-fb02e85806cd907920126af935137b0775a858ddf04a28d7ca144f761fd7579e\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xb6a00cead355d1ec492fd72e1d79199c347a74b5\",\n \"token0DeploymentId\": \"discovered-token-1847342426b765add3c8b4feb724c6b15121f25097cb7917c967c285ca77e804\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"pool-0001\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc\",\n \"token0DeploymentId\": \"deployment-0008\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"pool-0002\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xf4003f4efbe8691b60249e6afbd307abe7758adb\",\n \"token0DeploymentId\": \"deployment-0004\",\n \"token1DeploymentId\": \"deployment-0009\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"pool-0003\",\n \"dexDeploymentId\": \"dex-deployment-0003\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"address\": \"FgH1dEvyRQoAqJjbUzzKVoM1HYdxTqPwjEF82kDH1kVe\",\n \"token0DeploymentId\": \"deployment-0006\",\n \"token1DeploymentId\": \"deployment-0013\",\n \"adapter\": {\n \"kind\": \"solana-orca-whirlpool\",\n \"feeNumerator\": null,\n \"feeDenominator\": null\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"pool-0004\",\n \"dexDeploymentId\": \"dex-deployment-0004\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"address\": \"AwaVyGAF3N6K4YRUJk55Ui1GquKhKdD6vTCmVvCzXpKf\",\n \"token0DeploymentId\": \"deployment-0006\",\n \"token1DeploymentId\": \"deployment-0013\",\n \"adapter\": {\n \"kind\": \"solana-raydium-clmm\",\n \"feeNumerator\": null,\n \"feeDenominator\": null\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n }\n]);\nexport const NATIVE_WRAP_DEFINITIONS: ReadonlyArray<Readonly<NativeWrapDefinition>> = deepFreeze([\n {\n \"nativeWrapDefinitionId\": \"native-wrap-0001\",\n \"chainId\": \"eip155:1\",\n \"nativeTokenDeploymentId\": \"deployment-0001\",\n \"wrappedTokenDeploymentId\": \"deployment-0002\",\n \"status\": \"active\"\n },\n {\n \"nativeWrapDefinitionId\": \"native-wrap-0002\",\n \"chainId\": \"eip155:43114\",\n \"nativeTokenDeploymentId\": \"deployment-0003\",\n \"wrappedTokenDeploymentId\": \"deployment-0004\",\n \"status\": \"active\"\n },\n {\n \"nativeWrapDefinitionId\": \"native-wrap-0003\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"nativeTokenDeploymentId\": \"deployment-0005\",\n \"wrappedTokenDeploymentId\": \"deployment-0006\",\n \"status\": \"active\"\n }\n]);\nexport const DEX_ALIASES: ReadonlyArray<Readonly<DexAlias>> = deepFreeze([\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_1568E761C62F7DC5\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_1568E761C62F7DC5 },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_3C1E38D02092D16E\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_3C1E38D02092D16E },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_3F840A40991E755E\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_3F840A40991E755E },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_5D7AA6A767A0C6EA\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_5D7AA6A767A0C6EA },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_9E4ED76F76904A4A\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_9E4ED76F76904A4A },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_A2480F3D4EA5CE12\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_A2480F3D4EA5CE12 },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_ECE9088CF3894443\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_ECE9088CF3894443 },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_FB02E85806CD9079\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_FB02E85806CD9079 },\n { namespace: \"avalancheC\", name: \"LFJ_LEGACY\", dexDeploymentId: dexes.avalancheC.LFJ_LEGACY, poolDefinitionId: null },\n { namespace: \"avalancheC\", name: \"LFJ_LEGACY_WAVAX_USDC\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.LFJ_LEGACY_WAVAX_USDC },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_1B98A5F24A364E05\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_1B98A5F24A364E05 },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_6428A1E5DA293B2E\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_6428A1E5DA293B2E },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_866F890448D13C07\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_866F890448D13C07 },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_90805F8995C1D0B8\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_90805F8995C1D0B8 },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_A7F9E600A86951F4\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_A7F9E600A86951F4 },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_B8F972F8BAE36C82\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_B8F972F8BAE36C82 },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_E702B0CB56528418\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_E702B0CB56528418 },\n { namespace: \"ethereum\", name: \"UNISWAP_V2\", dexDeploymentId: dexes.ethereum.UNISWAP_V2, poolDefinitionId: null },\n { namespace: \"ethereum\", name: \"UNISWAP_V2_USDC_WETH\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.UNISWAP_V2_USDC_WETH },\n { namespace: \"solana\", name: \"ORCA_WHIRLPOOLS\", dexDeploymentId: dexes.solana.ORCA_WHIRLPOOLS, poolDefinitionId: null },\n { namespace: \"solana\", name: \"ORCA_WHIRLPOOLS_WSOL_EURC\", dexDeploymentId: null, poolDefinitionId: pools.solana.ORCA_WHIRLPOOLS_WSOL_EURC },\n { namespace: \"solana\", name: \"RAYDIUM_CLMM\", dexDeploymentId: dexes.solana.RAYDIUM_CLMM, poolDefinitionId: null },\n { namespace: \"solana\", name: \"RAYDIUM_CLMM_WSOL_EURC\", dexDeploymentId: null, poolDefinitionId: pools.solana.RAYDIUM_CLMM_WSOL_EURC },\n]) as ReadonlyArray<Readonly<DexAlias>>;\n","import {\n DEX_ALIASES,\n DEX_CATALOG_AS_OF_DATE,\n DEX_CATALOG_CONTENT_DIGEST,\n DEX_CATALOG_VERSION,\n DEX_CHAIN_IDS,\n DEX_DEPLOYMENTS,\n NATIVE_WRAP_DEFINITIONS,\n POOL_DEFINITIONS,\n dexes,\n pools,\n} from './generated/dex_catalog'\nimport type {\n DexAlias,\n DexChainId,\n DexDeployment,\n DexStatus,\n NativeWrapDefinition,\n PoolDefinition,\n} from './generated/dex_catalog'\n\nexport {\n DEX_ALIASES,\n DEX_CATALOG_AS_OF_DATE,\n DEX_CATALOG_CONTENT_DIGEST,\n DEX_CATALOG_VERSION,\n DEX_CHAIN_IDS,\n DEX_DEPLOYMENTS,\n NATIVE_WRAP_DEFINITIONS,\n POOL_DEFINITIONS,\n}\n\nexport type {\n DexAlias,\n DexChainId,\n DexDeployment,\n DexStatus,\n NativeWrapDefinition,\n PoolDefinition,\n}\n\nexport type DexNamespace = 'ethereum' | 'solana' | 'avalancheC'\n\nexport interface ListPoolDefinitionsOptions {\n readonly chainId?: DexChainId\n readonly tokenDeploymentId?: string\n readonly adapterKind?: string\n}\n\nconst EMPTY_POOLS: readonly PoolDefinition[] = Object.freeze([])\n\nconst deepFreeze = <T>(value: T): T => {\n if (value && typeof value === 'object' && !Object.isFrozen(value)) {\n Object.freeze(value)\n for (const child of Object.values(value as Record<string, unknown>)) {\n deepFreeze(child)\n }\n }\n return value\n}\n\n// The generated module is a package data boundary. Freeze it again here so\n// hand-authored generator changes cannot accidentally expose mutable records.\ndeepFreeze(DEX_CHAIN_IDS)\ndeepFreeze(DEX_DEPLOYMENTS)\ndeepFreeze(POOL_DEFINITIONS)\ndeepFreeze(NATIVE_WRAP_DEFINITIONS)\ndeepFreeze(DEX_ALIASES)\ndeepFreeze(dexes)\ndeepFreeze(pools)\n\nconst knownChainIds = new Set<string>(Object.values(DEX_CHAIN_IDS))\nconst dexById = new Map<string, DexDeployment>(\n DEX_DEPLOYMENTS.map((deployment) => [deployment.dexDeploymentId, deployment]),\n)\nconst poolById = new Map<string, PoolDefinition>(\n POOL_DEFINITIONS.map((pool) => [pool.poolDefinitionId, pool]),\n)\nconst wrapByNativeTokenId = new Map<string, NativeWrapDefinition>(\n NATIVE_WRAP_DEFINITIONS.map((definition) => [\n definition.nativeTokenDeploymentId,\n definition,\n ]),\n)\n\n/** Chain-qualified DEX aliases whose values are opaque deployment IDs. */\nexport { dexes }\n\n/** Chain-qualified pool aliases whose values are opaque pool IDs. */\nexport { pools }\n\n/** Return a DEX deployment by its exact opaque ID. */\nexport function getDexDeployment(\n dexDeploymentId: string,\n): DexDeployment | undefined {\n return typeof dexDeploymentId === 'string'\n ? dexById.get(dexDeploymentId)\n : undefined\n}\n\n/** Return a pool definition by its exact opaque ID. */\nexport function getPoolDefinition(\n poolDefinitionId: string,\n): PoolDefinition | undefined {\n return typeof poolDefinitionId === 'string'\n ? poolById.get(poolDefinitionId)\n : undefined\n}\n\n/** Find a pool by its chain-qualified address. */\nexport function findPoolDefinitionByAddress(\n chainId: DexChainId,\n address: string,\n): PoolDefinition | undefined {\n if (!isKnownChain(chainId) || typeof address !== 'string' || address.length === 0) {\n return undefined\n }\n const normalizedAddress = isEvmChain(chainId)\n ? normalizeEvmAddress(address)\n : address\n if (normalizedAddress === undefined) return undefined\n return POOL_DEFINITIONS.find(\n (pool) =>\n pool.chainId === chainId && pool.address === normalizedAddress,\n )\n}\n\n/** Find all pools for an unordered token pair in stable pool-ID order. */\nexport function findPoolDefinitionsByPair(\n chainId: DexChainId,\n tokenADeploymentId: string,\n tokenBDeploymentId: string,\n): readonly PoolDefinition[] {\n if (\n !isKnownChain(chainId) ||\n typeof tokenADeploymentId !== 'string' ||\n typeof tokenBDeploymentId !== 'string' ||\n tokenADeploymentId.length === 0 ||\n tokenBDeploymentId.length === 0 ||\n tokenADeploymentId === tokenBDeploymentId\n ) {\n return EMPTY_POOLS\n }\n\n const wanted = [tokenADeploymentId, tokenBDeploymentId].sort().join('\\u0000')\n const matches = POOL_DEFINITIONS.filter((pool) => {\n const actual = [pool.token0DeploymentId, pool.token1DeploymentId]\n .sort()\n .join('\\u0000')\n return pool.chainId === chainId && actual === wanted\n }).sort((left, right) =>\n left.poolDefinitionId < right.poolDefinitionId\n ? -1\n : left.poolDefinitionId > right.poolDefinitionId\n ? 1\n : 0,\n )\n return matches.length === 0 ? EMPTY_POOLS : Object.freeze(matches)\n}\n\n/** List pool definitions using the optional exact filters. */\nexport function listPoolDefinitions(\n options: ListPoolDefinitionsOptions = {},\n): readonly PoolDefinition[] {\n if (!isRecord(options)) return EMPTY_POOLS\n const { chainId, tokenDeploymentId, adapterKind } = options\n if (chainId !== undefined && !isKnownChain(chainId)) return EMPTY_POOLS\n if (\n tokenDeploymentId !== undefined &&\n (typeof tokenDeploymentId !== 'string' || tokenDeploymentId.length === 0)\n ) {\n return EMPTY_POOLS\n }\n if (\n adapterKind !== undefined &&\n (typeof adapterKind !== 'string' || adapterKind.length === 0)\n ) {\n return EMPTY_POOLS\n }\n\n const matches = POOL_DEFINITIONS.filter((pool) => {\n if (chainId !== undefined && pool.chainId !== chainId) return false\n if (\n tokenDeploymentId !== undefined &&\n pool.token0DeploymentId !== tokenDeploymentId &&\n pool.token1DeploymentId !== tokenDeploymentId\n ) {\n return false\n }\n if (adapterKind !== undefined && pool.adapter.kind !== adapterKind) {\n return false\n }\n return true\n }).sort((left, right) =>\n left.poolDefinitionId < right.poolDefinitionId\n ? -1\n : left.poolDefinitionId > right.poolDefinitionId\n ? 1\n : 0,\n )\n return matches.length === 0 ? EMPTY_POOLS : Object.freeze(matches)\n}\n\n/** Return the active or historical native-to-wrapped relationship for a token. */\nexport function getNativeWrapDefinition(\n nativeTokenDeploymentId: string,\n): NativeWrapDefinition | undefined {\n return typeof nativeTokenDeploymentId === 'string'\n ? wrapByNativeTokenId.get(nativeTokenDeploymentId)\n : undefined\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction isKnownChain(value: unknown): value is DexChainId {\n return typeof value === 'string' && knownChainIds.has(value)\n}\n\nfunction isEvmChain(chainId: string): boolean {\n return (\n chainId === DEX_CHAIN_IDS.ethereum ||\n chainId === DEX_CHAIN_IDS.avalancheC\n )\n}\n\nfunction normalizeEvmAddress(address: string): string | undefined {\n if (!/^0x[0-9a-fA-F]{40}$/u.test(address)) return undefined\n return address.toLowerCase()\n}\n","import {\n DEX_CATALOG_CONTENT_DIGEST,\n DEX_CHAIN_IDS,\n getDexDeployment,\n getPoolDefinition,\n type DexDeployment,\n type PoolDefinition,\n} from './dex_catalog'\nimport {\n getTokenDeployment,\n TOKEN_CATALOG_CONTENT_DIGEST,\n type TokenDeployment,\n} from './token_catalog'\nimport type { HttpJsonRpcTransport } from './transport/http'\nimport type { RpcSendOptions } from './rpc/types'\n\nexport type SwapQuoteErrorCode =\n | 'SWAP_INVALID_ARGUMENT'\n | 'SWAP_UNSUPPORTED_CHAIN'\n | 'SWAP_UNKNOWN_POOL'\n | 'SWAP_UNKNOWN_TOKEN'\n | 'SWAP_TOKEN_NOT_ACTIVE'\n | 'SWAP_UNSUPPORTED_TOKEN_STANDARD'\n | 'SWAP_UNSUPPORTED_ADAPTER'\n | 'SWAP_UNSUPPORTED_TOKEN'\n | 'SWAP_CHAIN_MISMATCH'\n | 'SWAP_POOL_TOKEN_MISMATCH'\n | 'SWAP_PROGRAM_MISMATCH'\n | 'SWAP_INVALID_POOL_STATE'\n | 'SWAP_STATE_STALE'\n | 'SWAP_INSUFFICIENT_LIQUIDITY'\n | 'SWAP_ARITHMETIC'\n\nexport const SWAP_QUOTE_ERROR_MESSAGES: Readonly<\n Record<SwapQuoteErrorCode, string>\n> = Object.freeze({\n SWAP_INVALID_ARGUMENT: 'Swap request is invalid',\n SWAP_UNSUPPORTED_CHAIN: 'Swap chain is unsupported',\n SWAP_UNKNOWN_POOL: 'Swap pool is unknown',\n SWAP_UNKNOWN_TOKEN: 'Swap token is unknown',\n SWAP_TOKEN_NOT_ACTIVE: 'Swap token is not active',\n SWAP_UNSUPPORTED_TOKEN_STANDARD: 'Swap token standard is unsupported',\n SWAP_UNSUPPORTED_ADAPTER: 'Swap adapter is unsupported',\n SWAP_UNSUPPORTED_TOKEN: 'Swap token is unsupported for the selected pool',\n SWAP_CHAIN_MISMATCH: 'Swap chain does not match the selected records',\n SWAP_POOL_TOKEN_MISMATCH: 'Swap pool tokens do not match the request',\n SWAP_PROGRAM_MISMATCH: 'Swap program does not match the selected records',\n SWAP_INVALID_POOL_STATE: 'Swap pool state is invalid',\n SWAP_STATE_STALE: 'Swap pool state is stale',\n SWAP_INSUFFICIENT_LIQUIDITY: 'Swap pool liquidity is insufficient',\n SWAP_ARITHMETIC: 'Swap arithmetic overflowed or produced an invalid result',\n})\n\nexport class SwapQuoteError extends Error {\n readonly code: SwapQuoteErrorCode\n\n constructor(code: SwapQuoteErrorCode) {\n super(SWAP_QUOTE_ERROR_MESSAGES[code])\n this.name = 'SwapQuoteError'\n this.code = code\n }\n}\n\nexport interface SwapFreshness {\n readonly maxBlockAgeSeconds?: number\n readonly maxBlockLag?: number\n readonly maxClockSkewSeconds?: number\n}\n\nexport interface ExactInputQuoteRequest {\n readonly chainId: string\n readonly poolDefinitionId: string\n readonly inputTokenDeploymentId: string\n readonly outputTokenDeploymentId: string\n readonly amountIn: string\n readonly freshness?: SwapFreshness\n}\n\nexport interface ExactInputQuoteResult {\n readonly quoteKind: 'exact-input'\n readonly chainId: string\n readonly poolDefinitionId: string\n readonly dexDeploymentId: string\n readonly adapterKind: string\n readonly inputTokenDeploymentId: string\n readonly outputTokenDeploymentId: string\n readonly amountIn: string\n readonly amountOut: string\n readonly fee: {\n readonly numerator: string\n readonly denominator: string\n }\n readonly snapshot: {\n readonly kind: 'evm-block'\n readonly blockNumber: string\n readonly blockHash: string\n readonly blockTimestamp: string\n }\n readonly tokenCatalogDigest: string\n readonly dexCatalogDigest: string\n}\n\nexport interface SwapClient {\n readonly quoteExactInput: (\n request: ExactInputQuoteRequest,\n options?: RpcSendOptions,\n ) => Promise<ExactInputQuoteResult>\n}\n\ninterface SwapClientOptions {\n readonly ethereum: HttpJsonRpcTransport\n readonly avalanche: HttpJsonRpcTransport\n /** Test-only clock injection. Deliberately not exposed by createErpcClient. */\n readonly clock?: () => number\n}\n\ninterface NormalizedFreshness {\n readonly maxBlockAgeSeconds: number\n readonly maxBlockLag: number\n readonly maxClockSkewSeconds: number\n}\n\ninterface NormalizedRequest {\n readonly request: {\n readonly chainId: string\n readonly poolDefinitionId: string\n readonly inputTokenDeploymentId: string\n readonly outputTokenDeploymentId: string\n readonly amountIn: string\n readonly freshness: NormalizedFreshness\n }\n readonly amountIn: bigint\n readonly pool: PoolDefinition\n readonly dex: DexDeployment\n readonly input: TokenDeployment\n readonly output: TokenDeployment\n readonly freshness: NormalizedFreshness\n}\n\ninterface Header {\n readonly number: bigint\n readonly hash: string\n readonly timestamp: bigint\n}\n\ninterface Reserves {\n readonly reserve0: bigint\n readonly reserve1: bigint\n}\n\ninterface EvmState {\n readonly initial: Header\n readonly latestAfterReads: Header\n readonly reserves: Reserves\n}\n\nconst SUPPORTED_QUOTE_ADAPTER = 'evm-constant-product-v2'\n\ninterface SupportedQuoteCapability {\n readonly chainId: string\n readonly dexDeploymentId: string\n readonly factoryAddress: string\n readonly poolDefinitionId: string\n readonly poolAddress: string\n readonly token0DeploymentId: string\n readonly token0Address: string\n readonly token0Decimals: number\n readonly token0Standard: 'erc20'\n readonly token1DeploymentId: string\n readonly token1Address: string\n readonly token1Decimals: number\n readonly token1Standard: 'erc20'\n readonly adapterKind: typeof SUPPORTED_QUOTE_ADAPTER\n readonly feeNumerator: string\n readonly feeDenominator: string\n}\n\n// Swap eligibility is deliberately a handwritten, reviewed boundary. Catalog\n// growth can add lookup and ranking records without granting RPC quote access.\nconst SUPPORTED_QUOTE_CAPABILITIES: readonly SupportedQuoteCapability[] =\n Object.freeze([\n Object.freeze({\n chainId: 'eip155:1',\n dexDeploymentId: 'dex-deployment-0001',\n factoryAddress: '0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f',\n poolDefinitionId: 'pool-0001',\n poolAddress: '0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc',\n token0DeploymentId: 'deployment-0008',\n token0Address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n token0Decimals: 6,\n token0Standard: 'erc20',\n token1DeploymentId: 'deployment-0002',\n token1Address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n token1Decimals: 18,\n token1Standard: 'erc20',\n adapterKind: SUPPORTED_QUOTE_ADAPTER,\n feeNumerator: '3',\n feeDenominator: '1000',\n }),\n Object.freeze({\n chainId: 'eip155:43114',\n dexDeploymentId: 'dex-deployment-0002',\n factoryAddress: '0x9ad6c38be94206ca50bb0d90783181662f0cfa10',\n poolDefinitionId: 'pool-0002',\n poolAddress: '0xf4003f4efbe8691b60249e6afbd307abe7758adb',\n token0DeploymentId: 'deployment-0004',\n token0Address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7',\n token0Decimals: 18,\n token0Standard: 'erc20',\n token1DeploymentId: 'deployment-0009',\n token1Address: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e',\n token1Decimals: 6,\n token1Standard: 'erc20',\n adapterKind: SUPPORTED_QUOTE_ADAPTER,\n feeNumerator: '3',\n feeDenominator: '1000',\n }),\n ])\n\nconst matchesSupportedQuoteCapability = (\n pool: PoolDefinition,\n dex: DexDeployment,\n input: TokenDeployment,\n output: TokenDeployment,\n): boolean => {\n const capability = SUPPORTED_QUOTE_CAPABILITIES.find(\n (entry) => entry.poolDefinitionId === pool.poolDefinitionId,\n )\n if (!capability) return false\n if (\n input.representationKind === 'unclassified' ||\n output.representationKind === 'unclassified'\n ) {\n return false\n }\n\n const matchesToken = (\n token: TokenDeployment,\n deploymentId: string,\n address: string,\n decimals: number,\n standard: 'erc20',\n ): boolean =>\n token.chainId === capability.chainId &&\n token.deploymentId === deploymentId &&\n token.address === address &&\n token.decimals === decimals &&\n token.standard === standard\n\n return (\n pool.chainId === capability.chainId &&\n pool.dexDeploymentId === capability.dexDeploymentId &&\n pool.address === capability.poolAddress &&\n pool.token0DeploymentId === capability.token0DeploymentId &&\n pool.token1DeploymentId === capability.token1DeploymentId &&\n dex.chainId === capability.chainId &&\n dex.dexDeploymentId === capability.dexDeploymentId &&\n dex.programAddress === capability.factoryAddress &&\n dex.adapterKind === capability.adapterKind &&\n pool.adapter.kind === capability.adapterKind &&\n pool.adapter.feeNumerator === capability.feeNumerator &&\n pool.adapter.feeDenominator === capability.feeDenominator &&\n (matchesToken(\n input,\n capability.token0DeploymentId,\n capability.token0Address,\n capability.token0Decimals,\n capability.token0Standard,\n ) ||\n matchesToken(\n input,\n capability.token1DeploymentId,\n capability.token1Address,\n capability.token1Decimals,\n capability.token1Standard,\n )) &&\n (matchesToken(\n output,\n capability.token0DeploymentId,\n capability.token0Address,\n capability.token0Decimals,\n capability.token0Standard,\n ) ||\n matchesToken(\n output,\n capability.token1DeploymentId,\n capability.token1Address,\n capability.token1Decimals,\n capability.token1Standard,\n ))\n )\n}\nconst DEFAULT_FRESHNESS: NormalizedFreshness = Object.freeze({\n maxBlockAgeSeconds: 120,\n maxBlockLag: 3,\n maxClockSkewSeconds: 5,\n})\nconst UINT256_MAX = (1n << 256n) - 1n\nconst UINT112_MAX = (1n << 112n) - 1n\nconst UINT32_MAX = (1n << 32n) - 1n\nconst UINT256_DECIMAL = /^[1-9][0-9]*$/u\nconst NONNEGATIVE_DECIMAL = /^(0|[1-9][0-9]*)$/u\nconst HEX_BYTES = /^0x[0-9a-fA-F]*$/u\nconst HEX_QUANTITY = /^0x(?:0|[1-9a-fA-F][0-9a-fA-F]*)$/u\nconst EVM_ADDRESS = /^0x[0-9a-f]{40}$/u\n\nconst FACTORY_GET_PAIR_SELECTOR = '0xe6a43905'\nconst PAIR_FACTORY_SELECTOR = '0xc45a0155'\nconst PAIR_TOKEN0_SELECTOR = '0x0dfe1681'\nconst PAIR_TOKEN1_SELECTOR = '0xd21220a7'\nconst PAIR_GET_RESERVES_SELECTOR = '0x0902f1ac'\n\nfunction swapFail(code: SwapQuoteErrorCode): never {\n throw new SwapQuoteError(code)\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst isKnownChain = (value: unknown): value is string =>\n value === DEX_CHAIN_IDS.ethereum ||\n value === DEX_CHAIN_IDS.solana ||\n value === DEX_CHAIN_IDS.avalancheC\n\nconst isOpaqueId = (value: string): boolean =>\n /^[A-Za-z0-9][A-Za-z0-9._:-]*$/u.test(value)\n\nfunction assertRequestShape(\n request: unknown,\n): asserts request is ExactInputQuoteRequest {\n if (!isRecord(request)) swapFail('SWAP_INVALID_ARGUMENT')\n const allowed = new Set([\n 'chainId',\n 'poolDefinitionId',\n 'inputTokenDeploymentId',\n 'outputTokenDeploymentId',\n 'amountIn',\n 'freshness',\n ])\n if (Object.keys(request).some((key) => !allowed.has(key))) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n\n for (const key of [\n 'chainId',\n 'poolDefinitionId',\n 'inputTokenDeploymentId',\n 'outputTokenDeploymentId',\n 'amountIn',\n ] as const) {\n const value = request[key]\n if (\n typeof value !== 'string' ||\n value.length === 0 ||\n value.trim() !== value\n ) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n }\n\n for (const key of [\n 'poolDefinitionId',\n 'inputTokenDeploymentId',\n 'outputTokenDeploymentId',\n ] as const) {\n const value = request[key]\n if (typeof value !== 'string' || !isOpaqueId(value)) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n }\n}\n\nconst normalizeFreshness = (value: unknown): NormalizedFreshness => {\n if (value === undefined) return DEFAULT_FRESHNESS\n if (!isRecord(value)) swapFail('SWAP_INVALID_ARGUMENT')\n const keys = [\n 'maxBlockAgeSeconds',\n 'maxBlockLag',\n 'maxClockSkewSeconds',\n ] as const\n if (Object.keys(value).some((key) => !keys.includes(key as (typeof keys)[number]))) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n const ranges = {\n maxBlockAgeSeconds: [0, 86400],\n maxBlockLag: [0, 1024],\n maxClockSkewSeconds: [0, 300],\n } as const\n const result: Record<(typeof keys)[number], number> = {\n maxBlockAgeSeconds: DEFAULT_FRESHNESS.maxBlockAgeSeconds,\n maxBlockLag: DEFAULT_FRESHNESS.maxBlockLag,\n maxClockSkewSeconds: DEFAULT_FRESHNESS.maxClockSkewSeconds,\n }\n for (const key of keys) {\n const current = Object.hasOwn(value, key)\n ? value[key]\n : DEFAULT_FRESHNESS[key]\n const [minimum, maximum] = ranges[key]\n if (\n typeof current !== 'number' ||\n !Number.isSafeInteger(current) ||\n current < minimum ||\n current > maximum\n ) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n result[key] = current\n }\n return Object.freeze(result)\n}\n\nconst parseAmountIn = (value: string): bigint => {\n if (!UINT256_DECIMAL.test(value) || value.length > 78) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n let parsed: bigint\n try {\n parsed = BigInt(value)\n } catch {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n if (parsed <= 0n || parsed > UINT256_MAX) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n return parsed\n}\n\nconst normalizeQuoteRequest = (request: unknown): NormalizedRequest => {\n assertRequestShape(request)\n const freshness = normalizeFreshness(request.freshness)\n const amountIn = parseAmountIn(request.amountIn)\n\n if (!isKnownChain(request.chainId)) swapFail('SWAP_UNSUPPORTED_CHAIN')\n const pool = getPoolDefinition(request.poolDefinitionId)\n if (!pool) swapFail('SWAP_UNKNOWN_POOL')\n if (pool.chainId !== request.chainId) swapFail('SWAP_CHAIN_MISMATCH')\n if (pool.status !== 'active') swapFail('SWAP_INVALID_POOL_STATE')\n const dex = getDexDeployment(pool.dexDeploymentId)\n if (!dex || dex.status !== 'active') swapFail('SWAP_INVALID_POOL_STATE')\n\n const input = getTokenDeployment(request.inputTokenDeploymentId)\n if (!input) swapFail('SWAP_UNKNOWN_TOKEN')\n const output = getTokenDeployment(request.outputTokenDeploymentId)\n if (!output) swapFail('SWAP_UNKNOWN_TOKEN')\n if (input.chainId !== request.chainId || output.chainId !== request.chainId) {\n swapFail('SWAP_CHAIN_MISMATCH')\n }\n for (const token of [input, output]) {\n if (token.status !== 'active') swapFail('SWAP_TOKEN_NOT_ACTIVE')\n }\n // Native and Token-2022 records are rejected before any address/pool RPC.\n // Classic SPL records continue to the adapter gate so their failure is\n // deterministic and costs zero RPC calls.\n for (const token of [input, output]) {\n if (token.standard !== 'erc20' && token.standard !== 'spl-token') {\n swapFail('SWAP_UNSUPPORTED_TOKEN_STANDARD')\n }\n }\n if (request.inputTokenDeploymentId === request.outputTokenDeploymentId) {\n swapFail('SWAP_POOL_TOKEN_MISMATCH')\n }\n const wanted = [request.inputTokenDeploymentId, request.outputTokenDeploymentId]\n .sort()\n .join('\\u0000')\n const actual = [pool.token0DeploymentId, pool.token1DeploymentId]\n .sort()\n .join('\\u0000')\n if (wanted !== actual) swapFail('SWAP_POOL_TOKEN_MISMATCH')\n if (pool.adapter.kind !== SUPPORTED_QUOTE_ADAPTER || dex.adapterKind !== SUPPORTED_QUOTE_ADAPTER) {\n swapFail('SWAP_UNSUPPORTED_ADAPTER')\n }\n if (input.standard !== 'erc20' || output.standard !== 'erc20') {\n swapFail('SWAP_UNSUPPORTED_TOKEN_STANDARD')\n }\n if (!matchesSupportedQuoteCapability(pool, dex, input, output)) {\n swapFail('SWAP_UNSUPPORTED_TOKEN')\n }\n\n const snapshot = Object.freeze({\n chainId: request.chainId,\n poolDefinitionId: request.poolDefinitionId,\n inputTokenDeploymentId: request.inputTokenDeploymentId,\n outputTokenDeploymentId: request.outputTokenDeploymentId,\n amountIn: request.amountIn,\n freshness,\n })\n return {\n request: snapshot,\n amountIn,\n pool,\n dex,\n input,\n output,\n freshness,\n }\n}\n\nconst ensureUint256 = (\n value: bigint,\n code: SwapQuoteErrorCode = 'SWAP_ARITHMETIC',\n): bigint => {\n if (value < 0n || value > UINT256_MAX) swapFail(code)\n return value\n}\n\nconst parseHexQuantity = (\n value: unknown,\n code: SwapQuoteErrorCode = 'SWAP_INVALID_POOL_STATE',\n): bigint => {\n if (typeof value !== 'string') swapFail(code)\n if (value.length > 66 || !HEX_QUANTITY.test(value)) swapFail(code)\n let parsed: bigint\n try {\n parsed = BigInt(value)\n } catch {\n swapFail(code)\n }\n return ensureUint256(parsed, code)\n}\n\nconst parseHexBytes = (\n value: unknown,\n expectedBytes?: number,\n code: SwapQuoteErrorCode = 'SWAP_INVALID_POOL_STATE',\n): string => {\n if (typeof value !== 'string') swapFail(code)\n if (\n !HEX_BYTES.test(value) ||\n value.length % 2 !== 0 ||\n (expectedBytes !== undefined && value.length !== expectedBytes * 2 + 2)\n ) swapFail(code)\n return value.toLowerCase()\n}\n\nconst parseDecimalQuantity = (\n value: unknown,\n code: SwapQuoteErrorCode = 'SWAP_INVALID_POOL_STATE',\n): bigint => {\n if (typeof value !== 'string') swapFail(code)\n if (value.length > 78 || !NONNEGATIVE_DECIMAL.test(value)) swapFail(code)\n let parsed: bigint\n try {\n parsed = BigInt(value)\n } catch {\n swapFail(code)\n }\n return ensureUint256(parsed, code)\n}\n\nconst addressWord = (value: unknown): string => {\n const bytes = parseHexBytes(value, 32)\n const word = bytes.slice(2)\n if (!/^0{24}[0-9a-f]{40}$/u.test(word)) {\n swapFail('SWAP_INVALID_POOL_STATE')\n }\n return `0x${word.slice(24)}`\n}\n\nconst uintWord = (value: string, maximum: bigint = UINT256_MAX): bigint => {\n const bytes = parseHexBytes(value, 32)\n const parsed = BigInt(`0x${bytes.slice(2)}`)\n if (parsed > maximum) swapFail('SWAP_INVALID_POOL_STATE')\n return parsed\n}\n\nconst reserveWords = (value: unknown): Reserves => {\n const bytes = parseHexBytes(value, 96)\n const payload = bytes.slice(2)\n const reserve0 = uintWord(`0x${payload.slice(0, 64)}`, UINT112_MAX)\n const reserve1 = uintWord(`0x${payload.slice(64, 128)}`, UINT112_MAX)\n uintWord(`0x${payload.slice(128, 192)}`, UINT32_MAX)\n return { reserve0, reserve1 }\n}\n\nconst blockHeader = (value: unknown): Header => {\n if (!isRecord(value)) swapFail('SWAP_STATE_STALE')\n return {\n number: parseHexQuantity(value.number, 'SWAP_STATE_STALE'),\n hash: parseHexBytes(value.hash, 32, 'SWAP_STATE_STALE'),\n timestamp: parseHexQuantity(value.timestamp, 'SWAP_STATE_STALE'),\n }\n}\n\nconst assertChainIdResponse = (value: unknown, chainId: string): void => {\n const network = parseHexQuantity(value, 'SWAP_CHAIN_MISMATCH')\n const expected =\n chainId === DEX_CHAIN_IDS.ethereum\n ? 1n\n : chainId === DEX_CHAIN_IDS.avalancheC\n ? 43114n\n : null\n if (expected === null || network !== expected) swapFail('SWAP_CHAIN_MISMATCH')\n}\n\nconst rpcSelector = (hash: string): Readonly<{ blockHash: string; requireCanonical: true }> => ({\n blockHash: hash,\n requireCanonical: true,\n})\n\nconst abiCall = (to: string, data: string): Readonly<{ to: string; data: string }> => ({\n to,\n data,\n})\n\nconst encodeAddressArgument = (address: string): string => {\n if (!EVM_ADDRESS.test(address)) swapFail('SWAP_INVALID_POOL_STATE')\n return address.slice(2).padStart(64, '0')\n}\n\nconst rpcRequest = async (\n transport: HttpJsonRpcTransport,\n method: string,\n params: readonly unknown[],\n options?: RpcSendOptions,\n): Promise<unknown> => {\n if (options?.signal?.aborted) {\n if (options.signal.reason !== undefined) throw options.signal.reason\n throw new DOMException('The operation was aborted', 'AbortError')\n }\n return transport.request(method, params, options)\n}\n\nconst currentClockSeconds = (\n clock: (() => number) | undefined,\n): number => {\n const value = clock === undefined ? Math.floor(Date.now() / 1000) : clock()\n if (!Number.isSafeInteger(value)) swapFail('SWAP_INVALID_ARGUMENT')\n return value\n}\n\nconst assertFreshness = (\n state: Pick<EvmState, 'initial' | 'latestAfterReads'>,\n freshness: NormalizedFreshness,\n clock: (() => number) | undefined,\n): void => {\n const now = BigInt(currentClockSeconds(clock))\n const initialAge = now - state.initial.timestamp\n if (\n initialAge < -BigInt(freshness.maxClockSkewSeconds) ||\n initialAge > BigInt(freshness.maxBlockAgeSeconds)\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n const latestAge = now - state.latestAfterReads.timestamp\n if (\n latestAge < -BigInt(freshness.maxClockSkewSeconds) ||\n latestAge > BigInt(freshness.maxBlockAgeSeconds)\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n if (\n state.latestAfterReads.number < state.initial.number ||\n state.latestAfterReads.number - state.initial.number > BigInt(freshness.maxBlockLag)\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n if (\n state.latestAfterReads.number === state.initial.number &&\n state.latestAfterReads.hash !== state.initial.hash\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n if (\n state.latestAfterReads.number > state.initial.number &&\n state.latestAfterReads.timestamp < state.initial.timestamp\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n if (\n state.latestAfterReads.hash === state.initial.hash &&\n state.latestAfterReads.number === state.initial.number &&\n state.latestAfterReads.timestamp !== state.initial.timestamp\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n}\n\nconst readEvmState = async (\n transport: HttpJsonRpcTransport,\n normalized: NormalizedRequest,\n clock: (() => number) | undefined,\n options?: RpcSendOptions,\n): Promise<EvmState> => {\n const { pool, dex } = normalized\n const chainId = await rpcRequest(transport, 'eth_chainId', [], options)\n assertChainIdResponse(chainId, pool.chainId)\n\n const initial = blockHeader(\n await rpcRequest(transport, 'eth_getBlockByNumber', ['latest', false], options),\n )\n const selector = rpcSelector(initial.hash)\n\n // Keep all state responses opaque until both final header checks pass. This\n // preserves stale/reorg precedence over malformed ABI data.\n const factoryCodeRaw = await rpcRequest(transport, 'eth_getCode', [\n dex.programAddress,\n selector,\n ], options)\n const poolCodeRaw = await rpcRequest(transport, 'eth_getCode', [\n pool.address,\n selector,\n ], options)\n const token0 = getTokenDeployment(pool.token0DeploymentId)\n const token1 = getTokenDeployment(pool.token1DeploymentId)\n const token0Address = token0?.address\n const token1Address = token1?.address\n if (typeof token0Address !== 'string' || typeof token1Address !== 'string') {\n swapFail('SWAP_INVALID_POOL_STATE')\n }\n const pairCallData = `${FACTORY_GET_PAIR_SELECTOR}${encodeAddressArgument(\n token0Address,\n )}${encodeAddressArgument(token1Address)}`\n const factoryPairRaw = await rpcRequest(transport, 'eth_call', [\n abiCall(dex.programAddress, pairCallData),\n selector,\n ], options)\n const pairFactoryRaw = await rpcRequest(transport, 'eth_call', [\n abiCall(pool.address, PAIR_FACTORY_SELECTOR),\n selector,\n ], options)\n const pairToken0Raw = await rpcRequest(transport, 'eth_call', [\n abiCall(pool.address, PAIR_TOKEN0_SELECTOR),\n selector,\n ], options)\n const pairToken1Raw = await rpcRequest(transport, 'eth_call', [\n abiCall(pool.address, PAIR_TOKEN1_SELECTOR),\n selector,\n ], options)\n const reservesRaw = await rpcRequest(transport, 'eth_call', [\n abiCall(pool.address, PAIR_GET_RESERVES_SELECTOR),\n selector,\n ], options)\n\n const latestAfterReads = blockHeader(\n await rpcRequest(transport, 'eth_getBlockByNumber', ['latest', false], options),\n )\n const reread = blockHeader(\n await rpcRequest(transport, 'eth_getBlockByNumber', [\n `0x${initial.number.toString(16)}`,\n false,\n ], options),\n )\n if (\n reread.number !== initial.number ||\n reread.hash !== initial.hash ||\n reread.timestamp !== initial.timestamp\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n\n assertFreshness({ initial, latestAfterReads }, normalized.freshness, clock)\n\n const factoryCode = parseHexBytes(factoryCodeRaw)\n if (factoryCode.length <= 2) swapFail('SWAP_PROGRAM_MISMATCH')\n const poolCode = parseHexBytes(poolCodeRaw)\n if (poolCode.length <= 2) swapFail('SWAP_INVALID_POOL_STATE')\n\n const factoryPair = addressWord(factoryPairRaw)\n if (factoryPair !== pool.address) swapFail('SWAP_PROGRAM_MISMATCH')\n const pairFactory = addressWord(pairFactoryRaw)\n if (pairFactory !== dex.programAddress) swapFail('SWAP_PROGRAM_MISMATCH')\n const pairToken0 = addressWord(pairToken0Raw)\n const pairToken1 = addressWord(pairToken1Raw)\n if (pairToken0 !== token0Address || pairToken1 !== token1Address) {\n swapFail('SWAP_POOL_TOKEN_MISMATCH')\n }\n const reserves = reserveWords(reservesRaw)\n return { initial, latestAfterReads, reserves }\n}\n\nconst calculateQuote = (\n normalized: NormalizedRequest,\n state: EvmState,\n): { readonly amountOut: bigint; readonly feeNumerator: bigint; readonly feeDenominator: bigint } => {\n const feeNumerator = parseDecimalQuantity(\n normalized.pool.adapter.feeNumerator,\n 'SWAP_ARITHMETIC',\n )\n const feeDenominator = parseDecimalQuantity(\n normalized.pool.adapter.feeDenominator,\n 'SWAP_ARITHMETIC',\n )\n if (feeDenominator <= feeNumerator) swapFail('SWAP_ARITHMETIC')\n\n const token0 = getTokenDeployment(normalized.pool.token0DeploymentId)\n if (!token0?.address || !normalized.input.address || !normalized.output.address) {\n swapFail('SWAP_INVALID_POOL_STATE')\n }\n const inputIsToken0 = normalized.input.address.toLowerCase() === token0.address\n const reserveIn = inputIsToken0 ? state.reserves.reserve0 : state.reserves.reserve1\n const reserveOut = inputIsToken0 ? state.reserves.reserve1 : state.reserves.reserve0\n if (reserveIn <= 0n || reserveOut <= 0n) swapFail('SWAP_INSUFFICIENT_LIQUIDITY')\n\n const adjusted = ensureUint256(\n normalized.amountIn * (feeDenominator - feeNumerator),\n )\n const denominator = ensureUint256(reserveIn * feeDenominator + adjusted)\n if (denominator <= 0n) swapFail('SWAP_ARITHMETIC')\n const numerator = ensureUint256(adjusted * reserveOut)\n const amountOut = numerator / denominator\n ensureUint256(amountOut)\n if (amountOut <= 0n || amountOut > reserveOut) {\n swapFail('SWAP_INSUFFICIENT_LIQUIDITY')\n }\n return { amountOut, feeNumerator, feeDenominator }\n}\n\nconst quoteResult = (\n normalized: NormalizedRequest,\n state: EvmState,\n result: ReturnType<typeof calculateQuote>,\n): ExactInputQuoteResult => {\n const output: ExactInputQuoteResult = {\n quoteKind: 'exact-input',\n chainId: normalized.request.chainId,\n poolDefinitionId: normalized.pool.poolDefinitionId,\n dexDeploymentId: normalized.pool.dexDeploymentId,\n adapterKind: normalized.pool.adapter.kind,\n inputTokenDeploymentId: normalized.request.inputTokenDeploymentId,\n outputTokenDeploymentId: normalized.request.outputTokenDeploymentId,\n amountIn: normalized.amountIn.toString(10),\n amountOut: result.amountOut.toString(10),\n fee: {\n numerator: result.feeNumerator.toString(10),\n denominator: result.feeDenominator.toString(10),\n },\n snapshot: {\n kind: 'evm-block',\n blockNumber: state.initial.number.toString(10),\n blockHash: state.initial.hash,\n blockTimestamp: state.initial.timestamp.toString(10),\n },\n tokenCatalogDigest: TOKEN_CATALOG_CONTENT_DIGEST,\n dexCatalogDigest: DEX_CATALOG_CONTENT_DIGEST,\n }\n return deepFreeze(output)\n}\n\nconst quoteExactInputWithTransports = async (\n request: unknown,\n options: SwapClientOptions,\n requestOptions?: RpcSendOptions,\n): Promise<ExactInputQuoteResult> => {\n const normalized = normalizeQuoteRequest(request)\n if (normalized.pool.adapter.kind !== SUPPORTED_QUOTE_ADAPTER) {\n swapFail('SWAP_UNSUPPORTED_ADAPTER')\n }\n const transport =\n normalized.pool.chainId === DEX_CHAIN_IDS.ethereum\n ? options.ethereum\n : normalized.pool.chainId === DEX_CHAIN_IDS.avalancheC\n ? options.avalanche\n : undefined\n if (!transport) swapFail('SWAP_UNSUPPORTED_ADAPTER')\n const selectedTransport: HttpJsonRpcTransport = transport\n const state = await readEvmState(\n selectedTransport,\n normalized,\n options.clock,\n requestOptions,\n )\n // Repeat freshness immediately before decoding the quote result so the\n // private test clock and the real wall clock cannot silently drift.\n assertFreshness(state, normalized.freshness, options.clock)\n return quoteResult(normalized, state, calculateQuote(normalized, state))\n}\n\nconst deepFreeze = <T>(value: T): T => {\n if (value && typeof value === 'object' && !Object.isFrozen(value)) {\n Object.freeze(value)\n for (const child of Object.values(value as Record<string, unknown>)) {\n deepFreeze(child)\n }\n }\n return value\n}\n\n/** Internal constructor used by the configured client and package tests. */\nexport const createSwapClient = (options: SwapClientOptions): SwapClient =>\n Object.freeze({\n quoteExactInput: (\n request: ExactInputQuoteRequest,\n requestOptions?: RpcSendOptions,\n ) => quoteExactInputWithTransports(request, options, requestOptions),\n })\n","import {\n ErpcAbortedError,\n ErpcHttpError,\n ErpcInvalidResponseError,\n ErpcJsonRpcError,\n ErpcTimeoutError,\n ErpcTransportError,\n redactJsonRpcError,\n} from '../errors'\nimport type {\n JsonRpcFailure,\n JsonRpcId,\n JsonRpcParams,\n JsonRpcRequest,\n JsonRpcResponse,\n RpcBatchCall,\n RpcSendOptions,\n} from '../rpc/types'\n\nexport interface HttpTransportConfig {\n readonly apiKey: string\n readonly endpoint: URL\n readonly fetch: typeof globalThis.fetch\n readonly headers: Readonly<Record<string, string>>\n readonly maxBatchSize?: number\n readonly timeoutMs: number\n}\n\ninterface ControlledSignal {\n readonly cleanup: () => void\n readonly signal: AbortSignal\n readonly timedOut: () => boolean\n}\n\nconst controlledSignal = (\n timeoutMs: number,\n external?: AbortSignal,\n): ControlledSignal => {\n const controller = new AbortController()\n let didTimeOut = false\n\n const timeout = setTimeout(() => {\n didTimeOut = true\n controller.abort()\n }, timeoutMs)\n\n const abort = () => controller.abort()\n if (external?.aborted) controller.abort()\n else external?.addEventListener('abort', abort, { once: true })\n\n return {\n signal: controller.signal,\n timedOut: () => didTimeOut,\n cleanup: () => {\n clearTimeout(timeout)\n external?.removeEventListener('abort', abort)\n },\n }\n}\n\nconst isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst isFailure = (value: unknown): value is JsonRpcFailure =>\n isObject(value) &&\n isObject(value.error) &&\n typeof value.error.code === 'number' &&\n typeof value.error.message === 'string'\n\nconst parseJson = (text: string): unknown => {\n try {\n return JSON.parse(text) as unknown\n } catch {\n throw new ErpcInvalidResponseError('ERPC returned malformed JSON')\n }\n}\n\nexport class HttpJsonRpcTransport {\n readonly endpoint: string\n readonly maxBatchSize: number\n\n readonly #apiKey: string\n readonly #fetch: typeof globalThis.fetch\n readonly #headers: Readonly<Record<string, string>>\n readonly #timeoutMs: number\n #nextId = 1\n\n constructor(config: HttpTransportConfig) {\n this.#apiKey = config.apiKey\n this.#fetch = config.fetch\n this.#headers = config.headers\n this.#timeoutMs = config.timeoutMs\n this.maxBatchSize = config.maxBatchSize ?? 256\n\n const endpoint = new URL(config.endpoint)\n endpoint.search = ''\n endpoint.hash = ''\n this.endpoint = endpoint.toString()\n }\n\n async request<TResult>(\n method: string,\n params?: JsonRpcParams,\n options: RpcSendOptions = {},\n ): Promise<TResult> {\n const id = this.#id()\n const request = this.#request(id, method, params)\n const response = await this.#post(request, options)\n return this.#unwrap<TResult>(response, id)\n }\n\n async batch<TResult extends readonly unknown[]>(\n calls: readonly RpcBatchCall[],\n options: RpcSendOptions = {},\n ): Promise<TResult> {\n if (calls.length === 0) return [] as unknown as TResult\n if (calls.length > this.maxBatchSize) {\n throw new ErpcInvalidResponseError(\n `A batch may contain at most ${this.maxBatchSize} calls`,\n )\n }\n\n const requests = calls.map((call) => {\n const id = this.#id()\n return this.#request(id, call.method, call.params)\n })\n const raw = await this.#post(requests, options)\n if (!Array.isArray(raw)) {\n if (isFailure(raw)) {\n throw new ErpcJsonRpcError(redactJsonRpcError(raw.error, this.#apiKey))\n }\n throw new ErpcInvalidResponseError('ERPC returned a non-array batch response')\n }\n\n const expectedIds = new Set<JsonRpcId>(requests.map((request) => request.id))\n const byId = new Map<JsonRpcId, unknown>()\n for (const response of raw) {\n if (!isObject(response) || !('id' in response)) {\n throw new ErpcInvalidResponseError('ERPC returned an invalid batch item')\n }\n const id = response.id\n if (typeof id !== 'number' && typeof id !== 'string') {\n throw new ErpcInvalidResponseError('ERPC returned an invalid batch id')\n }\n if (!expectedIds.has(id)) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an unexpected batch response id',\n )\n }\n if (byId.has(id)) {\n throw new ErpcInvalidResponseError(\n `ERPC returned duplicate batch response id ${String(id)}`,\n )\n }\n byId.set(id, response)\n }\n\n const results = requests.map((request) => {\n const response = byId.get(request.id)\n if (response === undefined) {\n throw new ErpcInvalidResponseError(\n `ERPC omitted batch response id ${String(request.id)}`,\n )\n }\n return this.#unwrap(response, request.id)\n })\n return results as unknown as TResult\n }\n\n #id(): number {\n const id = this.#nextId\n this.#nextId = id >= Number.MAX_SAFE_INTEGER ? 1 : id + 1\n return id\n }\n\n #request(\n id: JsonRpcId,\n method: string,\n params?: JsonRpcParams,\n ): JsonRpcRequest<JsonRpcParams> {\n const request: {\n jsonrpc: '2.0'\n id: JsonRpcId\n method: string\n params?: JsonRpcParams\n } = { jsonrpc: '2.0', id, method }\n if (params !== undefined) request.params = params\n return request\n }\n\n async #post(\n body: unknown,\n options: RpcSendOptions,\n ): Promise<unknown> {\n const url = new URL(this.endpoint)\n url.searchParams.set('api-key', this.#apiKey)\n const controlled = controlledSignal(this.#timeoutMs, options.signal)\n\n try {\n const response = await this.#fetch(url, {\n method: 'POST',\n headers: {\n ...this.#headers,\n 'content-type': 'application/json',\n },\n body: JSON.stringify(body),\n signal: controlled.signal,\n })\n const text = await response.text()\n if (!response.ok) throw new ErpcHttpError(response.status)\n return parseJson(text)\n } catch (error) {\n if (error instanceof ErpcHttpError || error instanceof ErpcInvalidResponseError) {\n throw error\n }\n if (controlled.timedOut()) throw new ErpcTimeoutError(this.#timeoutMs)\n if (options.signal?.aborted) throw new ErpcAbortedError()\n // Do not retain the underlying fetch error: custom runtimes may include\n // the credential-bearing request URL or headers in its message.\n throw new ErpcTransportError('Unable to reach ERPC')\n } finally {\n controlled.cleanup()\n }\n }\n\n #unwrap<TResult>(response: unknown, expectedId: JsonRpcId): TResult {\n if (!isObject(response)) throw new ErpcInvalidResponseError()\n if (response.id !== expectedId) {\n throw new ErpcInvalidResponseError('ERPC returned an unexpected response id')\n }\n if (isFailure(response)) {\n throw new ErpcJsonRpcError(\n redactJsonRpcError(response.error, this.#apiKey),\n )\n }\n if (!('result' in response)) throw new ErpcInvalidResponseError()\n return (response as unknown as JsonRpcResponse<TResult> & { result: TResult })\n .result\n }\n}\n","import { ErpcConfigError, ErpcInvalidResponseError } from './errors'\nimport type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\n\nexport interface MonthlyApiKeyMethodUsage {\n readonly count: number\n readonly creditCost: number\n readonly credits: number\n readonly method: string\n readonly updatedAt: string | null\n}\n\nexport interface MonthlyApiKeyChainUsage {\n readonly chain: string\n readonly count: number\n readonly credits: number\n readonly methods: readonly MonthlyApiKeyMethodUsage[]\n readonly updatedAt: string | null\n}\n\nexport interface MonthlyApiKeyUsageEntry {\n readonly apiKeyLast4: string\n readonly apiKeyLength: number\n readonly chains: readonly MonthlyApiKeyChainUsage[]\n readonly count: number\n readonly credits: number\n readonly keyId: number | null\n readonly updatedAt: string | null\n}\n\nexport interface MonthlyApiKeyUsage {\n readonly apiKeys: readonly MonthlyApiKeyUsageEntry[]\n readonly chains: readonly MonthlyApiKeyChainUsage[]\n readonly hasStrandedUsage: boolean\n readonly keyCount: number\n readonly totalCount: number\n readonly totalCredits: number\n readonly updatedAt: string | null\n readonly yearMonth: string\n}\n\nexport interface MonthlyApiKeyUsageParams {\n /** Calendar month in `YYYY-MM` format. The current month is used when omitted. */\n readonly yearMonth?: string\n}\n\nconst YEAR_MONTH = /^\\d{4}-(0[1-9]|1[0-2])$/\n\nconst objectValue = (value: unknown): Record<string, unknown> | null =>\n typeof value === 'object' && value !== null\n ? value as Record<string, unknown>\n : null\n\nconst isTimestamp = (value: unknown): value is string | null =>\n value === null || typeof value === 'string'\n\nconst parseMethod = (value: unknown): MonthlyApiKeyMethodUsage | null => {\n const method = objectValue(value)\n if (\n method === null ||\n typeof method.count !== 'number' ||\n typeof method.creditCost !== 'number' ||\n typeof method.credits !== 'number' ||\n typeof method.method !== 'string' ||\n !isTimestamp(method.updatedAt)\n ) return null\n return {\n count: method.count,\n creditCost: method.creditCost,\n credits: method.credits,\n method: method.method,\n updatedAt: method.updatedAt,\n }\n}\n\nconst parseChain = (value: unknown): MonthlyApiKeyChainUsage | null => {\n const chain = objectValue(value)\n if (\n chain === null ||\n typeof chain.chain !== 'string' ||\n typeof chain.count !== 'number' ||\n typeof chain.credits !== 'number' ||\n !Array.isArray(chain.methods) ||\n !isTimestamp(chain.updatedAt)\n ) return null\n const methods = chain.methods.map(parseMethod)\n if (methods.some((method) => method === null)) return null\n return {\n chain: chain.chain,\n count: chain.count,\n credits: chain.credits,\n methods: methods as readonly MonthlyApiKeyMethodUsage[],\n updatedAt: chain.updatedAt,\n }\n}\n\nconst parseApiKey = (value: unknown): MonthlyApiKeyUsageEntry | null => {\n const apiKey = objectValue(value)\n if (\n apiKey === null ||\n typeof apiKey.apiKeyLast4 !== 'string' ||\n typeof apiKey.apiKeyLength !== 'number' ||\n !Array.isArray(apiKey.chains) ||\n typeof apiKey.count !== 'number' ||\n typeof apiKey.credits !== 'number' ||\n (apiKey.keyId !== null && typeof apiKey.keyId !== 'number') ||\n !isTimestamp(apiKey.updatedAt)\n ) return null\n const chains = apiKey.chains.map(parseChain)\n if (chains.some((chain) => chain === null)) return null\n return {\n apiKeyLast4: apiKey.apiKeyLast4,\n apiKeyLength: apiKey.apiKeyLength,\n chains: chains as readonly MonthlyApiKeyChainUsage[],\n count: apiKey.count,\n credits: apiKey.credits,\n keyId: apiKey.keyId,\n updatedAt: apiKey.updatedAt,\n }\n}\n\nconst parseMonthlyUsage = (value: unknown): MonthlyApiKeyUsage | null => {\n const usage = objectValue(value)\n if (\n usage === null ||\n !Array.isArray(usage.apiKeys) ||\n !Array.isArray(usage.chains) ||\n typeof usage.hasStrandedUsage !== 'boolean' ||\n typeof usage.keyCount !== 'number' ||\n typeof usage.totalCount !== 'number' ||\n typeof usage.totalCredits !== 'number' ||\n !isTimestamp(usage.updatedAt) ||\n typeof usage.yearMonth !== 'string' ||\n !YEAR_MONTH.test(usage.yearMonth)\n ) return null\n const apiKeys = usage.apiKeys.map(parseApiKey)\n const chains = usage.chains.map(parseChain)\n if (\n apiKeys.some((apiKey) => apiKey === null) ||\n chains.some((chain) => chain === null)\n ) return null\n return {\n apiKeys: apiKeys as readonly MonthlyApiKeyUsageEntry[],\n chains: chains as readonly MonthlyApiKeyChainUsage[],\n hasStrandedUsage: usage.hasStrandedUsage,\n keyCount: usage.keyCount,\n totalCount: usage.totalCount,\n totalCredits: usage.totalCredits,\n updatedAt: usage.updatedAt,\n yearMonth: usage.yearMonth,\n }\n}\n\nexport class UsageClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n async getMonthlyApiKeyUsage(\n params: MonthlyApiKeyUsageParams = {},\n options?: RpcSendOptions,\n ): Promise<MonthlyApiKeyUsage> {\n if (params.yearMonth !== undefined && !YEAR_MONTH.test(params.yearMonth)) {\n throw new ErpcConfigError('yearMonth must use YYYY-MM format')\n }\n\n const response: unknown = await this.#transport.get(\n '/v3/user/api-keys/usage',\n { yearMonth: params.yearMonth },\n options,\n )\n const envelope = objectValue(response)\n const usage = envelope?.success === true\n ? parseMonthlyUsage(envelope.message)\n : null\n if (usage === null) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid monthly API key usage response',\n )\n }\n return usage\n }\n}\n","import { AccountClient } from './account'\nimport {\n endpointWithPath,\n resolveConfig,\n websocketUrl,\n type ErpcClientConfig,\n} from './config'\nimport { PriceClient } from './price'\nimport {\n createAvalancheClient,\n type AvalancheClient,\n} from './rpc/avalanche'\nimport {\n createEthereumClient,\n type EthereumClient,\n} from './rpc/ethereum'\nimport { createSolanaClient, type SolanaClient } from './rpc/solana'\nimport {\n EthereumSubscriptions,\n SolanaSubscriptions,\n} from './subscriptions'\nimport { createSwapClient, type SwapClient } from './swap'\nimport { HttpJsonRpcTransport } from './transport/http'\nimport { RestTransport } from './transport/rest'\nimport { WebSocketJsonRpcTransport } from './transport/websocket'\nimport { UsageClient } from './usage'\n\nexport interface ErpcSolanaClient extends SolanaClient {\n readonly subscriptions: SolanaSubscriptions\n}\n\nexport interface ErpcEthereumClient extends EthereumClient {\n readonly subscriptions: EthereumSubscriptions\n}\n\nexport interface ErpcAvalancheClient extends AvalancheClient {\n readonly subscriptions: EthereumSubscriptions\n}\n\nexport interface ErpcClient {\n readonly account: AccountClient\n readonly avalanche: ErpcAvalancheClient\n readonly ethereum: ErpcEthereumClient\n readonly price: PriceClient\n readonly solana: ErpcSolanaClient\n readonly swap: SwapClient\n readonly usage: UsageClient\n close(): void\n}\n\nexport const createErpcClient = (config: ErpcClientConfig): ErpcClient => {\n const resolved = resolveConfig(config)\n const sharedTransport = {\n apiKey: resolved.apiKey,\n fetch: resolved.fetch,\n headers: resolved.headers,\n timeoutMs: resolved.timeoutMs,\n }\n\n const solanaTransport = new HttpJsonRpcTransport({\n ...sharedTransport,\n endpoint: resolved.endpoint,\n })\n const ethereumEndpoint = endpointWithPath(resolved.endpoint, '/eth')\n const ethereumTransport = new HttpJsonRpcTransport({\n ...sharedTransport,\n endpoint: ethereumEndpoint,\n })\n const avalancheTransport = new HttpJsonRpcTransport({\n ...sharedTransport,\n endpoint: endpointWithPath(resolved.avalancheEndpoint, '/ava'),\n })\n const avalancheIndexTransport = (path: string) =>\n new HttpJsonRpcTransport({\n ...sharedTransport,\n endpoint: endpointWithPath(resolved.avalancheEndpoint, path),\n })\n\n const solanaWebSocket = new WebSocketJsonRpcTransport({\n endpoint: websocketUrl(resolved.endpoint, resolved.apiKey),\n timeoutMs: resolved.timeoutMs,\n ...(resolved.webSocket === undefined\n ? {}\n : { webSocket: resolved.webSocket }),\n })\n const ethereumWebSocket = new WebSocketJsonRpcTransport({\n endpoint: websocketUrl(resolved.endpoint, resolved.apiKey, '/eth'),\n timeoutMs: resolved.timeoutMs,\n ...(resolved.webSocket === undefined\n ? {}\n : { webSocket: resolved.webSocket }),\n })\n const avalancheWebSocket = new WebSocketJsonRpcTransport({\n endpoint: websocketUrl(\n resolved.avalancheEndpoint,\n resolved.apiKey,\n '/ava-ws',\n ),\n timeoutMs: resolved.timeoutMs,\n ...(resolved.webSocket === undefined\n ? {}\n : { webSocket: resolved.webSocket }),\n })\n\n const priceTransport = new RestTransport({\n ...sharedTransport,\n endpoint: resolved.endpoint,\n })\n const accountTransport = new RestTransport({\n ...sharedTransport,\n endpoint: resolved.accountEndpoint,\n })\n const userTransport = new RestTransport({\n ...sharedTransport,\n endpoint: resolved.userEndpoint,\n })\n\n const solana: ErpcSolanaClient = {\n ...createSolanaClient(solanaTransport),\n subscriptions: new SolanaSubscriptions(solanaWebSocket),\n }\n const ethereum: ErpcEthereumClient = {\n ...createEthereumClient(ethereumTransport),\n subscriptions: new EthereumSubscriptions(ethereumWebSocket),\n }\n const avalanche: ErpcAvalancheClient = {\n ...createAvalancheClient(avalancheTransport, {\n cChainBlocks: avalancheIndexTransport('/ava/ext/index/C/block'),\n pChainBlocks: avalancheIndexTransport('/ava/ext/index/P/block'),\n xChainBlocks: avalancheIndexTransport('/ava/ext/index/X/block'),\n xChainTransactions: avalancheIndexTransport('/ava/ext/index/X/tx'),\n }),\n subscriptions: new EthereumSubscriptions(avalancheWebSocket),\n }\n const swap = createSwapClient({\n ethereum: ethereumTransport,\n avalanche: avalancheTransport,\n })\n\n return {\n solana,\n ethereum,\n avalanche,\n price: new PriceClient(priceTransport),\n account: new AccountClient(accountTransport),\n swap,\n usage: new UsageClient(userTransport),\n close: () => {\n solana.subscriptions.close()\n ethereum.subscriptions.close()\n avalanche.subscriptions.close()\n },\n }\n}\n","import { ErpcInvalidResponseError } from './errors'\nimport type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\n\nexport type CloudCreditAlertLevel =\n | 'critical'\n | 'normal'\n | 'suspended'\n | 'warning'\n\nexport interface CloudCredit {\n readonly alertLevel: CloudCreditAlertLevel\n readonly balanceCents: number\n readonly burnRateCentsPerHour: number\n readonly quoteExpiresAt: string\n readonly quoteTimestamp: string\n readonly timeToZeroHours: number | null\n}\n\nconst alertLevels: readonly CloudCreditAlertLevel[] = [\n 'critical',\n 'normal',\n 'suspended',\n 'warning',\n]\n\nconst objectValue = (value: unknown): Record<string, unknown> | null =>\n typeof value === 'object' && value !== null\n ? value as Record<string, unknown>\n : null\n\nconst isDateTime = (value: unknown): value is string =>\n typeof value === 'string' && Number.isFinite(Date.parse(value))\n\nconst parseCredit = (value: unknown): CloudCredit | null => {\n const credit = objectValue(value)\n if (\n credit === null ||\n typeof credit.balanceCents !== 'number' ||\n !Number.isInteger(credit.balanceCents) ||\n typeof credit.burnRateCentsPerHour !== 'number' ||\n !Number.isInteger(credit.burnRateCentsPerHour) ||\n credit.burnRateCentsPerHour < 0 ||\n (credit.timeToZeroHours !== null &&\n (typeof credit.timeToZeroHours !== 'number' ||\n !Number.isFinite(credit.timeToZeroHours) ||\n credit.timeToZeroHours < 0)) ||\n typeof credit.alertLevel !== 'string' ||\n !alertLevels.includes(credit.alertLevel as CloudCreditAlertLevel) ||\n !isDateTime(credit.quoteTimestamp) ||\n !isDateTime(credit.quoteExpiresAt)\n ) return null\n\n return {\n alertLevel: credit.alertLevel as CloudCreditAlertLevel,\n balanceCents: credit.balanceCents,\n burnRateCentsPerHour: credit.burnRateCentsPerHour,\n quoteExpiresAt: credit.quoteExpiresAt,\n quoteTimestamp: credit.quoteTimestamp,\n timeToZeroHours: credit.timeToZeroHours,\n }\n}\n\nexport class CloudCreditClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n async get(options?: RpcSendOptions): Promise<CloudCredit> {\n const response: unknown = await this.#transport.get(\n '/v4/cloud/credit',\n undefined,\n options,\n )\n const envelope = objectValue(response)\n const credit = envelope?.success === true\n ? parseCredit(envelope.message)\n : null\n if (credit === null) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud credit snapshot',\n )\n }\n return credit\n }\n}\n","import { ErpcConfigError, ErpcInvalidResponseError } from './errors'\nimport type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\n\nexport type CloudResourceKind =\n | 'bare-metal'\n | 'solana-grpc'\n | 'solana-shredstream'\n | 'vps'\n\nexport type CloudResourceMode = 'dedicated' | 'direct' | 'shared'\n\n/** A credential-free projection of an ERPC Cloud resource. */\nexport interface CloudResource {\n readonly createdAt?: string\n readonly id: string\n readonly kind: CloudResourceKind\n readonly mode?: CloudResourceMode\n readonly name?: string\n readonly region?: string\n readonly status: string\n}\n\nexport interface CloudResourceStatusBilling {\n readonly graceEndsAt?: string\n readonly hourlyCredits?: number\n readonly nextChargeAt?: string\n readonly status: 'active' | 'grace-period' | 'inactive' | 'suspended'\n}\n\nexport interface CloudResourceStatus {\n readonly billing?: CloudResourceStatusBilling\n readonly id: string\n readonly status: string\n}\n\nconst objectValue = (value: unknown): Record<string, unknown> | null =>\n typeof value === 'object' && value !== null\n ? value as Record<string, unknown>\n : null\n\nconst resourceKinds: readonly CloudResourceKind[] = [\n 'bare-metal',\n 'solana-grpc',\n 'solana-shredstream',\n 'vps',\n]\nconst resourceModes: readonly CloudResourceMode[] = [\n 'dedicated',\n 'direct',\n 'shared',\n]\nconst billingStatuses: readonly CloudResourceStatusBilling['status'][] = [\n 'active',\n 'grace-period',\n 'inactive',\n 'suspended',\n]\n\nconst isDateTime = (value: unknown): value is string =>\n typeof value === 'string' && Number.isFinite(Date.parse(value))\n\nconst parseStatusBilling = (\n value: unknown,\n): CloudResourceStatusBilling | null => {\n const billing = objectValue(value)\n if (\n billing === null ||\n typeof billing.status !== 'string' ||\n !billingStatuses.includes(\n billing.status as CloudResourceStatusBilling['status'],\n ) ||\n (billing.hourlyCredits !== undefined &&\n (typeof billing.hourlyCredits !== 'number' ||\n !Number.isFinite(billing.hourlyCredits) ||\n billing.hourlyCredits < 0)) ||\n (billing.nextChargeAt !== undefined &&\n !isDateTime(billing.nextChargeAt)) ||\n (billing.graceEndsAt !== undefined &&\n !isDateTime(billing.graceEndsAt))\n ) return null\n\n return {\n status: billing.status as CloudResourceStatusBilling['status'],\n ...(typeof billing.hourlyCredits === 'number'\n ? { hourlyCredits: billing.hourlyCredits }\n : {}),\n ...(typeof billing.nextChargeAt === 'string'\n ? { nextChargeAt: billing.nextChargeAt }\n : {}),\n ...(typeof billing.graceEndsAt === 'string'\n ? { graceEndsAt: billing.graceEndsAt }\n : {}),\n }\n}\n\nconst parseResourceStatus = (value: unknown): CloudResourceStatus | null => {\n const status = objectValue(value)\n if (\n status === null ||\n typeof status.id !== 'string' ||\n typeof status.status !== 'string'\n ) return null\n const billing = status.billing === undefined\n ? undefined\n : parseStatusBilling(status.billing)\n if (status.billing !== undefined && billing === null) return null\n return {\n id: status.id,\n status: status.status,\n ...(billing ? { billing } : {}),\n }\n}\nconst parseResource = (value: unknown): CloudResource | null => {\n const resource = objectValue(value)\n if (\n resource === null ||\n typeof resource.id !== 'string' ||\n typeof resource.kind !== 'string' ||\n !resourceKinds.includes(resource.kind as CloudResourceKind) ||\n typeof resource.status !== 'string' ||\n (resource.mode !== undefined &&\n (typeof resource.mode !== 'string' ||\n !resourceModes.includes(resource.mode as CloudResourceMode))) ||\n (resource.name !== undefined && typeof resource.name !== 'string') ||\n (resource.region !== undefined && typeof resource.region !== 'string') ||\n (resource.createdAt !== undefined && typeof resource.createdAt !== 'string')\n ) return null\n\n return {\n id: resource.id,\n kind: resource.kind as CloudResourceKind,\n status: resource.status,\n ...(typeof resource.mode === 'string'\n ? { mode: resource.mode as CloudResourceMode }\n : {}),\n ...(typeof resource.name === 'string' ? { name: resource.name } : {}),\n ...(typeof resource.region === 'string' ? { region: resource.region } : {}),\n ...(typeof resource.createdAt === 'string'\n ? { createdAt: resource.createdAt }\n : {}),\n }\n}\n\nexport class CloudResourcesClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n async list(options?: RpcSendOptions): Promise<readonly CloudResource[]> {\n const response: unknown = await this.#transport.get(\n '/v4/cloud/resources',\n undefined,\n options,\n )\n const envelope = objectValue(response)\n const message = objectValue(envelope?.message)\n if (envelope?.success !== true || !Array.isArray(message?.resources)) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud resource list',\n )\n }\n const resources = message.resources.map(parseResource)\n if (resources.some((resource) => resource === null)) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud resource list',\n )\n }\n return resources as readonly CloudResource[]\n }\n\n async get(\n resourceId: string,\n options?: RpcSendOptions,\n ): Promise<CloudResource> {\n const normalizedId = resourceId.trim()\n if (!normalizedId) {\n throw new ErpcConfigError('resourceId must not be empty')\n }\n const response: unknown = await this.#transport.get(\n `/v4/cloud/resources/${encodeURIComponent(normalizedId)}`,\n undefined,\n options,\n )\n const envelope = objectValue(response)\n const message = objectValue(envelope?.message)\n const resource = envelope?.success === true\n ? parseResource(message?.resource)\n : null\n if (resource === null) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud resource',\n )\n }\n return resource\n }\n\n async getStatus(\n resourceId: string,\n options?: RpcSendOptions,\n ): Promise<CloudResourceStatus> {\n const normalizedId = resourceId.trim()\n if (!normalizedId) {\n throw new ErpcConfigError('resourceId must not be empty')\n }\n const response: unknown = await this.#transport.get(\n `/v4/cloud/resources/${encodeURIComponent(normalizedId)}/status`,\n undefined,\n options,\n )\n const envelope = objectValue(response)\n const status = envelope?.success === true\n ? parseResourceStatus(envelope.message)\n : null\n if (status === null) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud resource status',\n )\n }\n return status\n }\n}\n","import { ErpcConfigError } from './errors'\nimport { CloudCatalogClient } from './catalog'\nimport { CloudCreditClient } from './credit'\nimport type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\nimport { UsageClient } from './usage'\nimport { CloudResourcesClient } from './resources'\nimport { DEFAULT_TIMEOUT_MS, DEFAULT_USER_ENDPOINT } from './config'\n\nexport interface ErpcCloudClientConfig {\n readonly accessToken: string\n readonly endpoint?: string\n readonly fetch?: typeof globalThis.fetch\n readonly headers?: Readonly<Record<string, string>>\n readonly timeoutMs?: number\n}\n\nexport interface ErpcCloudClient {\n readonly catalog: CloudCatalogClient\n readonly credit: CloudCreditClient\n readonly resources: CloudResourcesClient\n readonly usage: UsageClient\n}\n\nconst requireFetch = (provided?: typeof globalThis.fetch) => {\n const implementation = provided ?? globalThis.fetch\n if (typeof implementation !== 'function') {\n throw new ErpcConfigError(\n 'A Fetch API implementation is required in this runtime',\n )\n }\n return implementation\n}\n\nconst cloudEndpoint = (value?: string): URL => {\n let endpoint: URL\n try {\n endpoint = new URL(value ?? DEFAULT_USER_ENDPOINT)\n } catch {\n throw new ErpcConfigError('endpoint must be an absolute HTTP(S) URL')\n }\n const isLocalHttp = endpoint.protocol === 'http:' &&\n ['127.0.0.1', '::1', '[::1]', 'localhost'].includes(endpoint.hostname)\n if (endpoint.protocol !== 'https:' && !isLocalHttp) {\n throw new ErpcConfigError('endpoint must use HTTPS except on localhost')\n }\n endpoint.search = ''\n endpoint.hash = ''\n endpoint.pathname = endpoint.pathname.replace(/\\/+$/, '') || '/'\n return endpoint\n}\n\nexport const createErpcCloudClient = (\n config: ErpcCloudClientConfig,\n): ErpcCloudClient => {\n const accessToken = config.accessToken.trim()\n if (!accessToken) {\n throw new ErpcConfigError('accessToken must not be empty')\n }\n const timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS\n if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n throw new ErpcConfigError('timeoutMs must be a positive finite number')\n }\n\n const transport = new RestTransport({\n apiKey: accessToken,\n endpoint: cloudEndpoint(config.endpoint),\n fetch: requireFetch(config.fetch),\n headers: config.headers ?? {},\n timeoutMs,\n })\n\n return {\n catalog: new CloudCatalogClient(transport),\n credit: new CloudCreditClient(transport),\n resources: new CloudResourcesClient(transport),\n usage: new UsageClient(transport),\n }\n}\n\nexport type ErpcCloudRequestOptions = RpcSendOptions\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/transport/rest.ts","../src/account.ts","../src/generated/token_catalog.ts","../src/token_catalog.ts","../src/generated/token_rankings.ts","../src/token_rankings.ts","../src/catalog.ts","../src/transport/fetch.ts","../src/config.ts","../src/price.ts","../src/rpc/client.ts","../src/rpc/ethereum.ts","../src/rpc/avalanche.ts","../src/rpc/solana.ts","../src/transport/websocket.ts","../src/subscriptions.ts","../src/generated/dex_catalog.ts","../src/dex_catalog.ts","../src/generated/swap_execution_capabilities.ts","../src/swap.ts","../src/transport/http.ts","../src/usage.ts","../src/client.ts","../src/credit.ts","../src/resources.ts","../src/cloud.ts","../src/generated/bridge_capabilities.ts","../src/bridge.ts"],"names":["deepFreeze","isEvmChain","normalizeEvmAddress","isRecord","isKnownChain","controlledSignal","isObject","objectValue","resourceKinds","resourceModes","isDateTime","requireFetch","DEFAULT_TIMEOUT_MS","EVM_ADDRESS","HEX_BYTES","endpointWithPath"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { JsonRpcErrorObject } from './rpc/types'\n\nconst REDACTED = '[REDACTED]'\n\nconst credentialVariants = (credential: string): readonly string[] => {\n const queryEncoded = new URLSearchParams({ value: credential })\n .toString()\n .slice('value='.length)\n let componentEncoded: string | undefined\n try {\n componentEncoded = encodeURIComponent(credential)\n } catch {\n // URLSearchParams still provides a safe encoded representation.\n }\n return [\n ...new Set([\n credential,\n componentEncoded,\n queryEncoded,\n ]),\n ]\n .filter((value): value is string => Boolean(value))\n .sort((left, right) => right.length - left.length)\n}\n\nconst directEndpointVariants = (endpoint: URL): readonly string[] => {\n const values: string[] = []\n const add = (value: string | undefined): void => {\n if (value) values.push(value)\n }\n\n for (const value of endpoint.searchParams.values()) add(value)\n\n // URLSearchParams normalizes percent escapes. Preserve the raw query\n // components too, so an upstream error echoing a lower-case escape is still\n // safe to expose.\n const rawQuery = endpoint.search.startsWith('?')\n ? endpoint.search.slice(1)\n : endpoint.search\n for (const part of rawQuery.split('&')) {\n const separator = part.indexOf('=')\n const rawValue = separator === -1 ? '' : part.slice(separator + 1)\n add(rawValue)\n if (rawValue) {\n try {\n add(decodeURIComponent(rawValue.replaceAll('+', ' ')))\n } catch {\n // Invalid escapes are retained as raw input and have no decoded form.\n }\n }\n }\n\n return values\n}\n\nconst headerVariants = (\n headers: Readonly<Record<string, string>>,\n): readonly string[] => {\n const values: string[] = []\n for (const [name, value] of Object.entries(headers)) {\n values.push(value)\n if (\n name.toLowerCase() !== 'authorization' &&\n name.toLowerCase() !== 'proxy-authorization'\n ) continue\n const match = /^\\s*[^\\s]+\\s+(.+?)\\s*$/u.exec(value)\n if (match?.[1]) values.push(match[1])\n if (match?.[1] && /^basic$/iu.test(value.trim().split(/\\s+/u, 1)[0] ?? '')) {\n try {\n const decoded = globalThis.atob(match[1])\n values.push(decoded)\n const separator = decoded.indexOf(':')\n if (separator !== -1) {\n values.push(decoded.slice(0, separator), decoded.slice(separator + 1))\n }\n } catch {\n // Non-base64 Basic credentials remain covered by their raw forms.\n }\n }\n }\n return values\n}\n\nexport const directRedactionVariants = (\n endpoint: URL,\n headers: Readonly<Record<string, string>> = {},\n): readonly string[] =>\n [...new Set([...directEndpointVariants(endpoint), ...headerVariants(headers)])]\n .flatMap((value) => credentialVariants(value))\n .filter((value, index, all) => all.indexOf(value) === index)\n .sort((left, right) => right.length - left.length)\n\nconst escapeRegex = (value: string): string =>\n value.replace(/[.*+?^${}()|[\\]\\\\]/gu, '\\\\$&')\n\nconst hexCharacterPattern = (value: string): string => {\n const lower = value.toLowerCase()\n const upper = value.toUpperCase()\n if (lower === upper) return escapeRegex(value)\n return `[${lower}${upper}]`\n}\n\nconst percentTripletPattern = (value: string): string => {\n const pattern = /%([0-9a-f])([0-9a-f])/giu\n let result = ''\n let offset = 0\n for (const match of value.matchAll(pattern)) {\n const index = match.index ?? 0\n result += escapeRegex(value.slice(offset, index))\n result += `%${hexCharacterPattern(match[1] ?? '')}${hexCharacterPattern(\n match[2] ?? '',\n )}`\n offset = index + match[0].length\n }\n return result + escapeRegex(value.slice(offset))\n}\n\nconst redactString = (value: string, variants: readonly string[]): string => {\n let redacted = value\n for (const variant of variants) {\n if (!variant) continue\n const pattern = percentTripletPattern(variant)\n if (pattern === escapeRegex(variant)) {\n redacted = redacted.replaceAll(variant, REDACTED)\n } else {\n redacted = redacted.replace(new RegExp(pattern, 'gu'), REDACTED)\n }\n }\n return redacted\n}\n\nconst redactValue = (\n value: unknown,\n variants: readonly string[],\n seen: WeakSet<object>,\n depth: number,\n): unknown => {\n if (typeof value === 'string') return redactString(value, variants)\n if (typeof value !== 'object' || value === null) return value\n if (depth >= 32 || seen.has(value)) return REDACTED\n\n seen.add(value)\n if (Array.isArray(value)) {\n return value.map((item) => redactValue(item, variants, seen, depth + 1))\n }\n\n const result: Record<string, unknown> = {}\n for (const [key, item] of Object.entries(value)) {\n Object.defineProperty(result, redactString(key, variants), {\n configurable: true,\n enumerable: true,\n value: redactValue(item, variants, seen, depth + 1),\n writable: true,\n })\n }\n return result\n}\n\nexport const redactJsonRpcError = (\n error: JsonRpcErrorObject,\n credential: string | undefined,\n additionalCredentials: readonly string[] = [],\n): JsonRpcErrorObject => {\n const variants = [...new Set([\n ...(credential ? credentialVariants(credential) : []),\n ...additionalCredentials,\n ])].sort((left, right) => right.length - left.length)\n if (variants.length === 0) return error\n const result: {\n code: number\n data?: unknown\n message: string\n } = {\n code: error.code,\n message: redactString(error.message, variants),\n }\n if (error.data !== undefined) {\n result.data = redactValue(error.data, variants, new WeakSet(), 0)\n }\n return result\n}\n\nexport type ErpcErrorCode =\n | 'ERPC_ABORTED'\n | 'ERPC_BATCH_POLICY'\n | 'ERPC_CONFIG'\n | 'ERPC_HTTP'\n | 'ERPC_INVALID_RESPONSE'\n | 'ERPC_NOT_CONFIGURED'\n | 'ERPC_RPC'\n | 'ERPC_TIMEOUT'\n | 'ERPC_TRANSPORT'\n\nexport class ErpcError extends Error {\n readonly code: ErpcErrorCode\n\n constructor(code: ErpcErrorCode, message: string, options?: ErrorOptions) {\n super(message, options)\n this.name = 'ErpcError'\n this.code = code\n }\n}\n\nexport class ErpcConfigError extends ErpcError {\n constructor(message: string) {\n super('ERPC_CONFIG', message)\n this.name = 'ErpcConfigError'\n }\n}\n\nexport class ErpcNotConfiguredError extends ErpcError {\n readonly namespace: string\n\n constructor(namespace: string) {\n super('ERPC_NOT_CONFIGURED', `ERPC namespace '${namespace}' is not configured`)\n this.name = 'ErpcNotConfiguredError'\n this.namespace = namespace\n }\n}\n\nexport class ErpcTransportError extends ErpcError {\n constructor(message: string, options?: ErrorOptions) {\n super('ERPC_TRANSPORT', message, options)\n this.name = 'ErpcTransportError'\n }\n}\n\nexport class ErpcHttpError extends ErpcError {\n readonly status: number\n\n constructor(status: number, message = `ERPC request failed with HTTP ${status}`) {\n super('ERPC_HTTP', message)\n this.name = 'ErpcHttpError'\n this.status = status\n }\n}\n\nexport class ErpcTimeoutError extends ErpcError {\n readonly timeoutMs: number\n\n constructor(timeoutMs: number) {\n super('ERPC_TIMEOUT', `ERPC request timed out after ${timeoutMs}ms`)\n this.name = 'ErpcTimeoutError'\n this.timeoutMs = timeoutMs\n }\n}\n\nexport class ErpcAbortedError extends ErpcError {\n constructor() {\n super('ERPC_ABORTED', 'ERPC request was aborted')\n this.name = 'ErpcAbortedError'\n }\n}\n\nexport class ErpcInvalidResponseError extends ErpcError {\n constructor(message = 'ERPC returned an invalid response') {\n super('ERPC_INVALID_RESPONSE', message)\n this.name = 'ErpcInvalidResponseError'\n }\n}\n\nexport class ErpcJsonRpcError extends ErpcError {\n readonly rpcCode: number\n readonly data?: unknown\n\n constructor(error: JsonRpcErrorObject) {\n super('ERPC_RPC', error.message)\n this.name = 'ErpcJsonRpcError'\n this.rpcCode = error.code\n if (error.data !== undefined) this.data = error.data\n }\n}\n\nexport class ErpcBatchPolicyError extends ErpcError {\n constructor(message: string) {\n super('ERPC_BATCH_POLICY', message)\n this.name = 'ErpcBatchPolicyError'\n }\n}\n","import {\n ErpcAbortedError,\n ErpcHttpError,\n ErpcInvalidResponseError,\n ErpcNotConfiguredError,\n ErpcTimeoutError,\n ErpcTransportError,\n} from '../errors'\nimport type { RpcSendOptions } from '../rpc/types'\n\nexport type QueryValue =\n | boolean\n | number\n | readonly string[]\n | string\n | undefined\n\nexport type Query = Readonly<Record<string, QueryValue>>\n\nexport interface RestTransportConfig {\n readonly apiKey?: string\n readonly endpoint: URL\n readonly fetch: typeof globalThis.fetch\n readonly headers: Readonly<Record<string, string>>\n readonly timeoutMs: number\n readonly unavailableNamespace?: string\n}\n\nexport interface RestStreamResponse {\n readonly response: Response\n close(): void\n normalizeError(error: unknown): Error\n}\n\ninterface ControlledSignal {\n readonly cleanup: () => void\n readonly signal: AbortSignal\n readonly stopTimeout: () => void\n readonly timeoutMs: number\n readonly timedOut: () => boolean\n}\n\nconst controlledSignal = (\n timeoutMs: number,\n external?: AbortSignal,\n): ControlledSignal => {\n const controller = new AbortController()\n let didTimeOut = false\n let timeout: ReturnType<typeof setTimeout> | undefined = setTimeout(() => {\n didTimeOut = true\n controller.abort()\n }, timeoutMs)\n\n const abort = () => controller.abort()\n if (external?.aborted) controller.abort()\n else external?.addEventListener('abort', abort, { once: true })\n\n const stopTimeout = () => {\n if (timeout === undefined) return\n clearTimeout(timeout)\n timeout = undefined\n }\n\n return {\n signal: controller.signal,\n stopTimeout,\n timeoutMs,\n timedOut: () => didTimeOut,\n cleanup: () => {\n stopTimeout()\n external?.removeEventListener('abort', abort)\n },\n }\n}\n\nconst normalizeError = (\n error: unknown,\n controlled: ControlledSignal,\n external?: AbortSignal,\n): Error => {\n if (\n error instanceof ErpcAbortedError ||\n error instanceof ErpcHttpError ||\n error instanceof ErpcInvalidResponseError ||\n error instanceof ErpcTimeoutError ||\n error instanceof ErpcTransportError\n ) {\n return error\n }\n if (controlled.timedOut()) {\n return new ErpcTimeoutError(controlled.timeoutMs)\n }\n if (external?.aborted) return new ErpcAbortedError()\n return new ErpcTransportError('Unable to reach ERPC')\n}\n\nconst applyQuery = (url: URL, query?: Query): void => {\n if (!query) return\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined) continue\n if (Array.isArray(value)) {\n for (const item of value) url.searchParams.append(key, item)\n } else {\n url.searchParams.set(key, String(value))\n }\n }\n}\n\nexport class RestTransport {\n readonly endpoint: string\n\n readonly #apiKey: string\n readonly #endpoint: URL\n readonly #fetch: typeof globalThis.fetch\n readonly #headers: Readonly<Record<string, string>>\n readonly #timeoutMs: number\n readonly #unavailableNamespace: string | undefined\n\n constructor(config: RestTransportConfig) {\n this.#apiKey = config.apiKey ?? ''\n this.#endpoint = new URL(config.endpoint)\n this.#fetch = config.fetch\n this.#headers = config.headers\n this.#timeoutMs = config.timeoutMs\n this.#unavailableNamespace = config.unavailableNamespace\n const endpoint = new URL(config.endpoint)\n endpoint.search = ''\n endpoint.hash = ''\n this.endpoint = endpoint.toString()\n }\n\n url(path: string, query?: Query): URL {\n const url = new URL(this.#endpoint)\n const base = url.pathname === '/' ? '' : url.pathname.replace(/\\/+$/, '')\n url.pathname = `${base}/${path.replace(/^\\/+/, '')}`.replace(/\\/{2,}/g, '/')\n applyQuery(url, query)\n return url\n }\n\n async get<TResult>(\n path: string,\n query?: Query,\n options: RpcSendOptions = {},\n ): Promise<TResult> {\n if (this.#unavailableNamespace !== undefined) {\n throw new ErpcNotConfiguredError(this.#unavailableNamespace)\n }\n const controlled = controlledSignal(this.#timeoutMs, options.signal)\n try {\n const response = await this.#get(path, query, controlled.signal)\n if (!response.ok) throw new ErpcHttpError(response.status)\n const text = await response.text()\n try {\n return JSON.parse(text) as TResult\n } catch {\n throw new ErpcInvalidResponseError('ERPC returned malformed JSON')\n }\n } catch (error) {\n throw normalizeError(error, controlled, options.signal)\n } finally {\n controlled.cleanup()\n }\n }\n\n async stream(\n path: string,\n query?: Query,\n options: RpcSendOptions = {},\n ): Promise<RestStreamResponse> {\n if (this.#unavailableNamespace !== undefined) {\n throw new ErpcNotConfiguredError(this.#unavailableNamespace)\n }\n const controlled = controlledSignal(this.#timeoutMs, options.signal)\n try {\n const response = await this.#get(path, query, controlled.signal)\n if (!response.ok) throw new ErpcHttpError(response.status)\n\n // Long-lived streams use the timeout for connection establishment only.\n // The caller's AbortSignal remains attached until close() is called.\n controlled.stopTimeout()\n return {\n response,\n close: controlled.cleanup,\n normalizeError: (error) =>\n normalizeError(error, controlled, options.signal),\n }\n } catch (error) {\n controlled.cleanup()\n throw normalizeError(error, controlled, options.signal)\n }\n }\n\n #get(path: string, query: Query | undefined, signal: AbortSignal) {\n const headers: Record<string, string> = {\n ...this.#headers,\n accept: 'application/json',\n }\n if (this.#unavailableNamespace === undefined) {\n headers.authorization = `Bearer ${this.#apiKey}`\n }\n return this.#fetch(this.url(path, query), {\n method: 'GET',\n headers,\n signal,\n })\n }\n}\n","import type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\n\nexport type ErpcPlan = 'business' | 'developer' | 'free' | 'pro'\n\nexport interface TokenBalance {\n readonly max_tokens: number\n readonly next_refill_at: string | null\n readonly plan: ErpcPlan\n readonly remaining_tokens: number\n}\n\nexport class AccountClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n getTokenBalance(options?: RpcSendOptions): Promise<TokenBalance> {\n return this.#transport.get('/v3/erpc/token-balance', undefined, options)\n }\n}\n","/* Generated by registry/generate-token-catalog.mjs. Do not edit. */\n\nexport type TokenRepresentationKind = \"native\" | \"issued\" | \"wrapped\" | \"bridged\" | \"unclassified\";\nexport type TokenStandard = \"native\" | \"erc20\" | \"spl-token\" | \"spl-token-2022\";\nexport type TokenStatus = \"active\" | \"legacy\" | \"winding-down\" | \"retired\";\nexport type TokenStableCurrency = \"USD\" | \"EUR\" | \"JPY\" | null;\n\nexport interface TokenAsset {\n readonly assetId: string;\n readonly name: string;\n readonly representationKind: TokenRepresentationKind;\n readonly stableCurrency: TokenStableCurrency;\n readonly underlyingAssetId: string | null;\n readonly economicReferenceAssetId: string | null;\n}\n\nexport interface TokenDeployment {\n readonly deploymentId: string;\n readonly assetId: string;\n readonly name: string;\n readonly representationKind: TokenRepresentationKind;\n readonly stableCurrency: TokenStableCurrency;\n readonly underlyingAssetId: string | null;\n readonly economicReferenceAssetId: string | null;\n readonly chainId: TokenChainId;\n readonly symbol: string;\n readonly decimals: number;\n readonly standard: TokenStandard;\n readonly address: string | null;\n readonly status: TokenStatus;\n readonly replacedByDeploymentId: string | null;\n}\n\nexport interface TokenAlias {\n readonly namespace: string;\n readonly name: string;\n readonly deploymentId: string;\n}\n\nconst deepFreeze = <T>(value: T): Readonly<T> => {\n if (value && typeof value === \"object\" && !Object.isFrozen(value)) {\n Object.freeze(value);\n for (const child of Object.values(value as Record<string, unknown>)) deepFreeze(child);\n }\n return value as Readonly<T>;\n};\n\nexport const TOKEN_CATALOG_VERSION = \"1.0.0\" as const;\nexport const TOKEN_CATALOG_AS_OF_DATE = \"2026-09-15\" as const;\nexport const TOKEN_CATALOG_CONTENT_DIGEST = \"28318f4f6a6bc2cdeef51368eeb17c86685c6f12d1723b0b4dd27f7e54d7235d\" as const;\nexport const TOKEN_CHAIN_IDS = deepFreeze({\n \"ethereumMainnet\": \"eip155:1\",\n \"solanaMainnet\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"avalancheCMainnet\": \"eip155:43114\"\n}) as {\n readonly ethereumMainnet: \"eip155:1\";\n readonly solanaMainnet: \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\";\n readonly avalancheCMainnet: \"eip155:43114\";\n};\nexport type TokenChainId = (typeof TOKEN_CHAIN_IDS)[keyof typeof TOKEN_CHAIN_IDS];\n\nexport const tokens = deepFreeze({\n \"avalancheC\": {\n \"AUSD\": \"deployment-0035\",\n \"AVAX\": \"deployment-0003\",\n \"DISCOVERED_0A7F98C8752F15EE\": \"discovered-token-0a7f98c8752f15ee02ce0d801f25df8ff78864a1d70aff7e204f7bdb3f8a0692\",\n \"DISCOVERED_1847342426B765AD\": \"discovered-token-1847342426b765add3c8b4feb724c6b15121f25097cb7917c967c285ca77e804\",\n \"DISCOVERED_288036A90EE0FA72\": \"discovered-token-288036a90ee0fa72a2751a78a6934cc6ced9e16de91c97ae8e109e2ee6189bc5\",\n \"DISCOVERED_323D07C442F0D089\": \"discovered-token-323d07c442f0d089197ae7eea9b3ebb829910177c5b780161a7623aaed5e4371\",\n \"DISCOVERED_9F9965CC065C9BEC\": \"discovered-token-9f9965cc065c9becf8d2cb58071524baafea37d27fda9bf683a93ea85f2e653d\",\n \"EURC\": \"deployment-0012\",\n \"EUROP\": \"deployment-0045\",\n \"GHO\": \"deployment-0030\",\n \"JOE\": \"deployment-0059\",\n \"JPYC\": \"deployment-0039\",\n \"LINK\": \"deployment-0058\",\n \"USDC\": \"deployment-0009\",\n \"USDC_E\": \"deployment-0018\",\n \"USDT\": \"deployment-0015\",\n \"WAVAX\": \"deployment-0004\"\n },\n \"ethereum\": {\n \"AAVE\": \"deployment-0056\",\n \"AUSD\": \"deployment-0034\",\n \"DAI\": \"deployment-0019\",\n \"DISCOVERED_054D80A64E1F36A7\": \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\",\n \"DISCOVERED_611597BD13DAA43D\": \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\",\n \"DISCOVERED_69519FD08E31445C\": \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\",\n \"DISCOVERED_B475569F6A15E97A\": \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\",\n \"DISCOVERED_E375086901067FE3\": \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\",\n \"ETH\": \"deployment-0001\",\n \"EURA\": \"deployment-0051\",\n \"EURAU\": \"deployment-0042\",\n \"EURC\": \"deployment-0011\",\n \"EURCV\": \"deployment-0040\",\n \"EURE\": \"deployment-0054\",\n \"EURE_V1\": \"deployment-0053\",\n \"EUROP\": \"deployment-0044\",\n \"EURS\": \"deployment-0052\",\n \"EURT\": \"deployment-0017\",\n \"FDUSD\": \"deployment-0031\",\n \"GHO\": \"deployment-0029\",\n \"GYEN\": \"deployment-0047\",\n \"JPYC\": \"deployment-0038\",\n \"LINK\": \"deployment-0057\",\n \"PYUSD\": \"deployment-0022\",\n \"RLUSD\": \"deployment-0033\",\n \"UNI\": \"deployment-0055\",\n \"USDC\": \"deployment-0008\",\n \"USDE\": \"deployment-0028\",\n \"USDG\": \"deployment-0024\",\n \"USDP\": \"deployment-0026\",\n \"USDS\": \"deployment-0020\",\n \"USDT\": \"deployment-0014\",\n \"WETH\": \"deployment-0002\",\n \"ZUSD\": \"deployment-0049\"\n },\n \"solana\": {\n \"AUSD\": \"deployment-0036\",\n \"EURAU\": \"deployment-0043\",\n \"EURC\": \"deployment-0013\",\n \"EURCV\": \"deployment-0041\",\n \"EUROP\": \"deployment-0046\",\n \"FDUSD\": \"deployment-0032\",\n \"GYEN\": \"deployment-0048\",\n \"JUP\": \"deployment-0060\",\n \"JUPUSD\": \"deployment-0037\",\n \"PYUSD\": \"deployment-0023\",\n \"SOL\": \"deployment-0005\",\n \"USDC\": \"deployment-0010\",\n \"USDG\": \"deployment-0025\",\n \"USDP\": \"deployment-0027\",\n \"USDS\": \"deployment-0021\",\n \"USDT\": \"deployment-0016\",\n \"WSOL\": \"deployment-0006\",\n \"WSOL_TOKEN_2022\": \"deployment-0007\",\n \"ZUSD\": \"deployment-0050\"\n }\n} as const);\nexport const TOKEN_ASSETS: readonly TokenAsset[] = deepFreeze([\n {\n \"assetId\": \"asset-0001\",\n \"name\": \"Ether\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0002\",\n \"name\": \"Wrapped Ether\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0001\",\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0003\",\n \"name\": \"Avalanche\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0004\",\n \"name\": \"Wrapped AVAX\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0003\",\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0005\",\n \"name\": \"Solana\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0006\",\n \"name\": \"Wrapped SOL\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0005\",\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0007\",\n \"name\": \"USD Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0008\",\n \"name\": \"Euro Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0009\",\n \"name\": \"Tether USDt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0010\",\n \"name\": \"Tether EURt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0011\",\n \"name\": \"Bridged USD Coin (USDC.e)\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0007\"\n },\n {\n \"assetId\": \"asset-0012\",\n \"name\": \"Dai\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0013\",\n \"name\": \"Sky Dollar\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0014\",\n \"name\": \"Bridged Sky Dollar\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0013\"\n },\n {\n \"assetId\": \"asset-0015\",\n \"name\": \"PayPal USD (PYUSD)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0016\",\n \"name\": \"Global Dollar (USDG)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0017\",\n \"name\": \"Pax Dollar (USDP)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0018\",\n \"name\": \"USDe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0019\",\n \"name\": \"GHO\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0020\",\n \"name\": \"Bridged GHO\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0019\"\n },\n {\n \"assetId\": \"asset-0021\",\n \"name\": \"First Digital USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0022\",\n \"name\": \"Ripple USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0023\",\n \"name\": \"Agora USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0024\",\n \"name\": \"Jupiter USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0025\",\n \"name\": \"JPY Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0026\",\n \"name\": \"Euro CoinVertible\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0027\",\n \"name\": \"EURAU\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0028\",\n \"name\": \"EUROP\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0029\",\n \"name\": \"GYEN\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0030\",\n \"name\": \"ZUSD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0031\",\n \"name\": \"Angle EURA\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0032\",\n \"name\": \"STASIS EURS\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0033\",\n \"name\": \"Monerium EURe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0034\",\n \"name\": \"Uniswap\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0035\",\n \"name\": \"Aave\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0036\",\n \"name\": \"Chainlink\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0037\",\n \"name\": \"Bridged Chainlink\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0036\"\n },\n {\n \"assetId\": \"asset-0038\",\n \"name\": \"Trader Joe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"asset-0039\",\n \"name\": \"Jupiter\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\",\n \"name\": \"Unclassified token at 0x0f5d2fb29fb7d3cfee444a200298f468908cc942\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-0a7f98c8752f15ee02ce0d801f25df8ff78864a1d70aff7e204f7bdb3f8a0692\",\n \"name\": \"Unclassified token at 0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-1847342426b765add3c8b4feb724c6b15121f25097cb7917c967c285ca77e804\",\n \"name\": \"Unclassified token at 0x02e955e93055e5a9d7fe6e9ee65126b321acef76\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-288036a90ee0fa72a2751a78a6934cc6ced9e16de91c97ae8e109e2ee6189bc5\",\n \"name\": \"Unclassified token at 0xc7198437980c041c805a1edcba50c1ce5db95118\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-323d07c442f0d089197ae7eea9b3ebb829910177c5b780161a7623aaed5e4371\",\n \"name\": \"Unclassified token at 0x3ceeb67533e494c0dc6be579585e3c62916062e0\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\",\n \"name\": \"Unclassified token at 0x2b591e99afe9f32eaa6214f7b7629768c40eeb39\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\",\n \"name\": \"Unclassified token at 0x0d8775f648430679a709e98d2b0cb6250d2887ef\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-9f9965cc065c9becf8d2cb58071524baafea37d27fda9bf683a93ea85f2e653d\",\n \"name\": \"Unclassified token at 0x50b7545627a5162f82a992c33b87adc75187b218\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\",\n \"name\": \"Unclassified token at 0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n },\n {\n \"assetId\": \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\",\n \"name\": \"Unclassified token at 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null\n }\n]) as readonly TokenAsset[];\nexport const TOKEN_DEPLOYMENTS: readonly TokenDeployment[] = deepFreeze([\n {\n \"deploymentId\": \"deployment-0001\",\n \"assetId\": \"asset-0001\",\n \"name\": \"Ether\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"ETH\",\n \"decimals\": 18,\n \"standard\": \"native\",\n \"address\": null,\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0002\",\n \"assetId\": \"asset-0002\",\n \"name\": \"Wrapped Ether\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0001\",\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"WETH\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0003\",\n \"assetId\": \"asset-0003\",\n \"name\": \"Avalanche\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"AVAX\",\n \"decimals\": 18,\n \"standard\": \"native\",\n \"address\": null,\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0004\",\n \"assetId\": \"asset-0004\",\n \"name\": \"Wrapped AVAX\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0003\",\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"WAVAX\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0005\",\n \"assetId\": \"asset-0005\",\n \"name\": \"Solana\",\n \"representationKind\": \"native\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"SOL\",\n \"decimals\": 9,\n \"standard\": \"native\",\n \"address\": null,\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0006\",\n \"assetId\": \"asset-0006\",\n \"name\": \"Wrapped SOL\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0005\",\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"WSOL\",\n \"decimals\": 9,\n \"standard\": \"spl-token\",\n \"address\": \"So11111111111111111111111111111111111111112\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0007\",\n \"assetId\": \"asset-0006\",\n \"name\": \"Wrapped SOL\",\n \"representationKind\": \"wrapped\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": \"asset-0005\",\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"WSOL\",\n \"decimals\": 9,\n \"standard\": \"spl-token-2022\",\n \"address\": \"9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0008\",\n \"assetId\": \"asset-0007\",\n \"name\": \"USD Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDC\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0009\",\n \"assetId\": \"asset-0007\",\n \"name\": \"USD Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"USDC\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0010\",\n \"assetId\": \"asset-0007\",\n \"name\": \"USD Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"USDC\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0011\",\n \"assetId\": \"asset-0008\",\n \"name\": \"Euro Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURC\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x1abaea1f7c830bd89acc67ec4af516284b1bc33c\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0012\",\n \"assetId\": \"asset-0008\",\n \"name\": \"Euro Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"EURC\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xc891eb4cbdeff6e073e859e987815ed1505c2acd\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0013\",\n \"assetId\": \"asset-0008\",\n \"name\": \"Euro Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"EURC\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0014\",\n \"assetId\": \"asset-0009\",\n \"name\": \"Tether USDt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDT\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xdac17f958d2ee523a2206206994597c13d831ec7\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0015\",\n \"assetId\": \"asset-0009\",\n \"name\": \"Tether USDt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"USDT\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0016\",\n \"assetId\": \"asset-0009\",\n \"name\": \"Tether USDt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"USDT\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0017\",\n \"assetId\": \"asset-0010\",\n \"name\": \"Tether EURt\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURT\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xc581b735a1688071a1746c968e0798d642ede491\",\n \"status\": \"retired\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0018\",\n \"assetId\": \"asset-0011\",\n \"name\": \"Bridged USD Coin (USDC.e)\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0007\",\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"USDC.e\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664\",\n \"status\": \"legacy\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0019\",\n \"assetId\": \"asset-0012\",\n \"name\": \"Dai\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"DAI\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x6b175474e89094c44da98b954eedeac495271d0f\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0020\",\n \"assetId\": \"asset-0013\",\n \"name\": \"Sky Dollar\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDS\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xdc035d45d973e3ec169d2276ddab16f1e407384f\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0021\",\n \"assetId\": \"asset-0014\",\n \"name\": \"Bridged Sky Dollar\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0013\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"USDS\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0022\",\n \"assetId\": \"asset-0015\",\n \"name\": \"PayPal USD (PYUSD)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"PYUSD\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x6c3ea9036406852006290770bedfcaba0e23a0e8\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0023\",\n \"assetId\": \"asset-0015\",\n \"name\": \"PayPal USD (PYUSD)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"PYUSD\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0024\",\n \"assetId\": \"asset-0016\",\n \"name\": \"Global Dollar (USDG)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDG\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xe343167631d89b6ffc58b88d6b7fb0228795491d\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0025\",\n \"assetId\": \"asset-0016\",\n \"name\": \"Global Dollar (USDG)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"USDG\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"2u1tszSeqZ3qBWF3uNGPFc8TzMk2tdiwknnRMWGWjGWH\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0026\",\n \"assetId\": \"asset-0017\",\n \"name\": \"Pax Dollar (USDP)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDP\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x8e870d67f660d95d5be530380d0ec0bd388289e1\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0027\",\n \"assetId\": \"asset-0017\",\n \"name\": \"Pax Dollar (USDP)\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"USDP\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0028\",\n \"assetId\": \"asset-0018\",\n \"name\": \"USDe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"USDe\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x4c9edd5852cd905f086c759e8383e09bff1e68b3\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0029\",\n \"assetId\": \"asset-0019\",\n \"name\": \"GHO\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"GHO\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0030\",\n \"assetId\": \"asset-0020\",\n \"name\": \"Bridged GHO\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0019\",\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"GHO\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xfc421ad3c883bf9e7c4f42de845c4e4405799e73\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0031\",\n \"assetId\": \"asset-0021\",\n \"name\": \"First Digital USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"FDUSD\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xc5f0f7b66764f6ec8c8dff7ba683102295e16409\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0032\",\n \"assetId\": \"asset-0021\",\n \"name\": \"First Digital USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"FDUSD\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"9zNQRsGLjNKwCUU5Gq5LR8beUCPzQMVMqKAi3SSZh54u\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0033\",\n \"assetId\": \"asset-0022\",\n \"name\": \"Ripple USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"RLUSD\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x8292bb45bf1ee4d140127049757c2e0ff06317ed\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0034\",\n \"assetId\": \"asset-0023\",\n \"name\": \"Agora USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"AUSD\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x00000000efe302beaa2b3e6e1b18d08d69a9012a\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0035\",\n \"assetId\": \"asset-0023\",\n \"name\": \"Agora USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"AUSD\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x00000000efe302beaa2b3e6e1b18d08d69a9012a\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0036\",\n \"assetId\": \"asset-0023\",\n \"name\": \"Agora USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"AUSD\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"AUSD1jCcCyPLybk1YnvPWsHQSrZ46dxwoMniN4N2UEB9\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0037\",\n \"assetId\": \"asset-0024\",\n \"name\": \"Jupiter USD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"JupUSD\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"JuprjznTrTSp2UFa3ZBUFgwdAmtZCq4MQCwysN55USD\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0038\",\n \"assetId\": \"asset-0025\",\n \"name\": \"JPY Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"JPYC\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xe7c3d8c9a439fede00d2600032d5db0be71c3c29\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0039\",\n \"assetId\": \"asset-0025\",\n \"name\": \"JPY Coin\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"JPYC\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0xe7c3d8c9a439fede00d2600032d5db0be71c3c29\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0040\",\n \"assetId\": \"asset-0026\",\n \"name\": \"Euro CoinVertible\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURCV\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x5f7827fdeb7c20b443265fc2f40845b715385ff2\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0041\",\n \"assetId\": \"asset-0026\",\n \"name\": \"Euro CoinVertible\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"EURCV\",\n \"decimals\": 2,\n \"standard\": \"spl-token-2022\",\n \"address\": \"DghpMkatCiUsofbTmid3M3kAbDTPqDwKiYHnudXeGG52\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0042\",\n \"assetId\": \"asset-0027\",\n \"name\": \"EURAU\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURAU\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x4933a85b5b5466fbaf179f72d3de273c287ec2c2\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0043\",\n \"assetId\": \"asset-0027\",\n \"name\": \"EURAU\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"EURAU\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"9pCWprxbZMW2rYSMhPTeoyLMV2sN2WJqshdT7DQVt6hS\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0044\",\n \"assetId\": \"asset-0028\",\n \"name\": \"EUROP\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EUROP\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x888883b5f5d21fb10dfeb70e8f9722b9fb0e5e51\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0045\",\n \"assetId\": \"asset-0028\",\n \"name\": \"EUROP\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"EUROP\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0x8835a2f66a7aaccb297cb985831a616b75e2e16c\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0046\",\n \"assetId\": \"asset-0028\",\n \"name\": \"EUROP\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"EUROP\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"euro5sNHrZC2wu2RoLvy6xxoVMc3Qnd1vjxoWf4MftA\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0047\",\n \"assetId\": \"asset-0029\",\n \"name\": \"GYEN\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"GYEN\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xc08512927d12348f6620a698105e1baac6ecd911\",\n \"status\": \"winding-down\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0048\",\n \"assetId\": \"asset-0029\",\n \"name\": \"GYEN\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"JPY\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"GYEN\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"Crn4x1Y2HUKko7ox2EZMT6N2t2ZyH7eKtwkBGVnhEq1g\",\n \"status\": \"winding-down\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0049\",\n \"assetId\": \"asset-0030\",\n \"name\": \"ZUSD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"ZUSD\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xc56c2b7e71b54d38aab6d52e94a04cbfa8f604fa\",\n \"status\": \"winding-down\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0050\",\n \"assetId\": \"asset-0030\",\n \"name\": \"ZUSD\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"USD\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"ZUSD\",\n \"decimals\": 6,\n \"standard\": \"spl-token-2022\",\n \"address\": \"FrBfWJ4qE5sCzKm3k3JaAtqZcXUh4LvJygDeketsrsH4\",\n \"status\": \"winding-down\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0051\",\n \"assetId\": \"asset-0031\",\n \"name\": \"Angle EURA\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURA\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x1a7e4e63778b4f12a199c062f3efdd288afcbce8\",\n \"status\": \"winding-down\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0052\",\n \"assetId\": \"asset-0032\",\n \"name\": \"STASIS EURS\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURS\",\n \"decimals\": 2,\n \"standard\": \"erc20\",\n \"address\": \"0xdb25f211ab05b1c97d595516f45794528a807ad8\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0053\",\n \"assetId\": \"asset-0033\",\n \"name\": \"Monerium EURe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURe\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x3231cb76718cdef2155fc47b5286d82e6eda273f\",\n \"status\": \"legacy\",\n \"replacedByDeploymentId\": \"deployment-0054\"\n },\n {\n \"deploymentId\": \"deployment-0054\",\n \"assetId\": \"asset-0033\",\n \"name\": \"Monerium EURe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": \"EUR\",\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"EURe\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x39b8b6385416f4ca36a20319f70d28621895279d\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0055\",\n \"assetId\": \"asset-0034\",\n \"name\": \"Uniswap\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"UNI\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0056\",\n \"assetId\": \"asset-0035\",\n \"name\": \"Aave\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"AAVE\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0057\",\n \"assetId\": \"asset-0036\",\n \"name\": \"Chainlink\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"LINK\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x514910771af9ca656af840dff83e8264ecf986ca\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0058\",\n \"assetId\": \"asset-0037\",\n \"name\": \"Bridged Chainlink\",\n \"representationKind\": \"bridged\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": \"asset-0036\",\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"LINK\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x5947bb275c521040051d82396192181b413227a3\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0059\",\n \"assetId\": \"asset-0038\",\n \"name\": \"Trader Joe\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"JOE\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"deployment-0060\",\n \"assetId\": \"asset-0039\",\n \"name\": \"Jupiter\",\n \"representationKind\": \"issued\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"symbol\": \"JUP\",\n \"decimals\": 6,\n \"standard\": \"spl-token\",\n \"address\": \"JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\",\n \"assetId\": \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\",\n \"name\": \"Unclassified token at 0x0f5d2fb29fb7d3cfee444a200298f468908cc942\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"0x0f5d2fb29fb7d3cfee444a200298f468908cc942\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x0f5d2fb29fb7d3cfee444a200298f468908cc942\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-0a7f98c8752f15ee02ce0d801f25df8ff78864a1d70aff7e204f7bdb3f8a0692\",\n \"assetId\": \"discovered-token-0a7f98c8752f15ee02ce0d801f25df8ff78864a1d70aff7e204f7bdb3f8a0692\",\n \"name\": \"Unclassified token at 0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-1847342426b765add3c8b4feb724c6b15121f25097cb7917c967c285ca77e804\",\n \"assetId\": \"discovered-token-1847342426b765add3c8b4feb724c6b15121f25097cb7917c967c285ca77e804\",\n \"name\": \"Unclassified token at 0x02e955e93055e5a9d7fe6e9ee65126b321acef76\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"0x02e955e93055e5a9d7fe6e9ee65126b321acef76\",\n \"decimals\": 9,\n \"standard\": \"erc20\",\n \"address\": \"0x02e955e93055e5a9d7fe6e9ee65126b321acef76\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-288036a90ee0fa72a2751a78a6934cc6ced9e16de91c97ae8e109e2ee6189bc5\",\n \"assetId\": \"discovered-token-288036a90ee0fa72a2751a78a6934cc6ced9e16de91c97ae8e109e2ee6189bc5\",\n \"name\": \"Unclassified token at 0xc7198437980c041c805a1edcba50c1ce5db95118\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"0xc7198437980c041c805a1edcba50c1ce5db95118\",\n \"decimals\": 6,\n \"standard\": \"erc20\",\n \"address\": \"0xc7198437980c041c805a1edcba50c1ce5db95118\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-323d07c442f0d089197ae7eea9b3ebb829910177c5b780161a7623aaed5e4371\",\n \"assetId\": \"discovered-token-323d07c442f0d089197ae7eea9b3ebb829910177c5b780161a7623aaed5e4371\",\n \"name\": \"Unclassified token at 0x3ceeb67533e494c0dc6be579585e3c62916062e0\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"0x3ceeb67533e494c0dc6be579585e3c62916062e0\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x3ceeb67533e494c0dc6be579585e3c62916062e0\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\",\n \"assetId\": \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\",\n \"name\": \"Unclassified token at 0x2b591e99afe9f32eaa6214f7b7629768c40eeb39\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"0x2b591e99afe9f32eaa6214f7b7629768c40eeb39\",\n \"decimals\": 8,\n \"standard\": \"erc20\",\n \"address\": \"0x2b591e99afe9f32eaa6214f7b7629768c40eeb39\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\",\n \"assetId\": \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\",\n \"name\": \"Unclassified token at 0x0d8775f648430679a709e98d2b0cb6250d2887ef\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"0x0d8775f648430679a709e98d2b0cb6250d2887ef\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x0d8775f648430679a709e98d2b0cb6250d2887ef\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-9f9965cc065c9becf8d2cb58071524baafea37d27fda9bf683a93ea85f2e653d\",\n \"assetId\": \"discovered-token-9f9965cc065c9becf8d2cb58071524baafea37d27fda9bf683a93ea85f2e653d\",\n \"name\": \"Unclassified token at 0x50b7545627a5162f82a992c33b87adc75187b218\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:43114\",\n \"symbol\": \"0x50b7545627a5162f82a992c33b87adc75187b218\",\n \"decimals\": 8,\n \"standard\": \"erc20\",\n \"address\": \"0x50b7545627a5162f82a992c33b87adc75187b218\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\",\n \"assetId\": \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\",\n \"name\": \"Unclassified token at 0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2\",\n \"decimals\": 18,\n \"standard\": \"erc20\",\n \"address\": \"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n },\n {\n \"deploymentId\": \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\",\n \"assetId\": \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\",\n \"name\": \"Unclassified token at 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599\",\n \"representationKind\": \"unclassified\",\n \"stableCurrency\": null,\n \"underlyingAssetId\": null,\n \"economicReferenceAssetId\": null,\n \"chainId\": \"eip155:1\",\n \"symbol\": \"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599\",\n \"decimals\": 8,\n \"standard\": \"erc20\",\n \"address\": \"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599\",\n \"status\": \"active\",\n \"replacedByDeploymentId\": null\n }\n]) as readonly TokenDeployment[];\nexport const TOKEN_ALIASES: readonly TokenAlias[] = deepFreeze([\n { namespace: \"avalancheC\", name: \"AUSD\", deploymentId: tokens.avalancheC.AUSD },\n { namespace: \"avalancheC\", name: \"AVAX\", deploymentId: tokens.avalancheC.AVAX },\n { namespace: \"avalancheC\", name: \"DISCOVERED_0A7F98C8752F15EE\", deploymentId: tokens.avalancheC.DISCOVERED_0A7F98C8752F15EE },\n { namespace: \"avalancheC\", name: \"DISCOVERED_1847342426B765AD\", deploymentId: tokens.avalancheC.DISCOVERED_1847342426B765AD },\n { namespace: \"avalancheC\", name: \"DISCOVERED_288036A90EE0FA72\", deploymentId: tokens.avalancheC.DISCOVERED_288036A90EE0FA72 },\n { namespace: \"avalancheC\", name: \"DISCOVERED_323D07C442F0D089\", deploymentId: tokens.avalancheC.DISCOVERED_323D07C442F0D089 },\n { namespace: \"avalancheC\", name: \"DISCOVERED_9F9965CC065C9BEC\", deploymentId: tokens.avalancheC.DISCOVERED_9F9965CC065C9BEC },\n { namespace: \"avalancheC\", name: \"EURC\", deploymentId: tokens.avalancheC.EURC },\n { namespace: \"avalancheC\", name: \"EUROP\", deploymentId: tokens.avalancheC.EUROP },\n { namespace: \"avalancheC\", name: \"GHO\", deploymentId: tokens.avalancheC.GHO },\n { namespace: \"avalancheC\", name: \"JOE\", deploymentId: tokens.avalancheC.JOE },\n { namespace: \"avalancheC\", name: \"JPYC\", deploymentId: tokens.avalancheC.JPYC },\n { namespace: \"avalancheC\", name: \"LINK\", deploymentId: tokens.avalancheC.LINK },\n { namespace: \"avalancheC\", name: \"USDC\", deploymentId: tokens.avalancheC.USDC },\n { namespace: \"avalancheC\", name: \"USDC_E\", deploymentId: tokens.avalancheC.USDC_E },\n { namespace: \"avalancheC\", name: \"USDT\", deploymentId: tokens.avalancheC.USDT },\n { namespace: \"avalancheC\", name: \"WAVAX\", deploymentId: tokens.avalancheC.WAVAX },\n { namespace: \"ethereum\", name: \"AAVE\", deploymentId: tokens.ethereum.AAVE },\n { namespace: \"ethereum\", name: \"AUSD\", deploymentId: tokens.ethereum.AUSD },\n { namespace: \"ethereum\", name: \"DAI\", deploymentId: tokens.ethereum.DAI },\n { namespace: \"ethereum\", name: \"DISCOVERED_054D80A64E1F36A7\", deploymentId: tokens.ethereum.DISCOVERED_054D80A64E1F36A7 },\n { namespace: \"ethereum\", name: \"DISCOVERED_611597BD13DAA43D\", deploymentId: tokens.ethereum.DISCOVERED_611597BD13DAA43D },\n { namespace: \"ethereum\", name: \"DISCOVERED_69519FD08E31445C\", deploymentId: tokens.ethereum.DISCOVERED_69519FD08E31445C },\n { namespace: \"ethereum\", name: \"DISCOVERED_B475569F6A15E97A\", deploymentId: tokens.ethereum.DISCOVERED_B475569F6A15E97A },\n { namespace: \"ethereum\", name: \"DISCOVERED_E375086901067FE3\", deploymentId: tokens.ethereum.DISCOVERED_E375086901067FE3 },\n { namespace: \"ethereum\", name: \"ETH\", deploymentId: tokens.ethereum.ETH },\n { namespace: \"ethereum\", name: \"EURA\", deploymentId: tokens.ethereum.EURA },\n { namespace: \"ethereum\", name: \"EURAU\", deploymentId: tokens.ethereum.EURAU },\n { namespace: \"ethereum\", name: \"EURC\", deploymentId: tokens.ethereum.EURC },\n { namespace: \"ethereum\", name: \"EURCV\", deploymentId: tokens.ethereum.EURCV },\n { namespace: \"ethereum\", name: \"EURE\", deploymentId: tokens.ethereum.EURE },\n { namespace: \"ethereum\", name: \"EURE_V1\", deploymentId: tokens.ethereum.EURE_V1 },\n { namespace: \"ethereum\", name: \"EUROP\", deploymentId: tokens.ethereum.EUROP },\n { namespace: \"ethereum\", name: \"EURS\", deploymentId: tokens.ethereum.EURS },\n { namespace: \"ethereum\", name: \"EURT\", deploymentId: tokens.ethereum.EURT },\n { namespace: \"ethereum\", name: \"FDUSD\", deploymentId: tokens.ethereum.FDUSD },\n { namespace: \"ethereum\", name: \"GHO\", deploymentId: tokens.ethereum.GHO },\n { namespace: \"ethereum\", name: \"GYEN\", deploymentId: tokens.ethereum.GYEN },\n { namespace: \"ethereum\", name: \"JPYC\", deploymentId: tokens.ethereum.JPYC },\n { namespace: \"ethereum\", name: \"LINK\", deploymentId: tokens.ethereum.LINK },\n { namespace: \"ethereum\", name: \"PYUSD\", deploymentId: tokens.ethereum.PYUSD },\n { namespace: \"ethereum\", name: \"RLUSD\", deploymentId: tokens.ethereum.RLUSD },\n { namespace: \"ethereum\", name: \"UNI\", deploymentId: tokens.ethereum.UNI },\n { namespace: \"ethereum\", name: \"USDC\", deploymentId: tokens.ethereum.USDC },\n { namespace: \"ethereum\", name: \"USDE\", deploymentId: tokens.ethereum.USDE },\n { namespace: \"ethereum\", name: \"USDG\", deploymentId: tokens.ethereum.USDG },\n { namespace: \"ethereum\", name: \"USDP\", deploymentId: tokens.ethereum.USDP },\n { namespace: \"ethereum\", name: \"USDS\", deploymentId: tokens.ethereum.USDS },\n { namespace: \"ethereum\", name: \"USDT\", deploymentId: tokens.ethereum.USDT },\n { namespace: \"ethereum\", name: \"WETH\", deploymentId: tokens.ethereum.WETH },\n { namespace: \"ethereum\", name: \"ZUSD\", deploymentId: tokens.ethereum.ZUSD },\n { namespace: \"solana\", name: \"AUSD\", deploymentId: tokens.solana.AUSD },\n { namespace: \"solana\", name: \"EURAU\", deploymentId: tokens.solana.EURAU },\n { namespace: \"solana\", name: \"EURC\", deploymentId: tokens.solana.EURC },\n { namespace: \"solana\", name: \"EURCV\", deploymentId: tokens.solana.EURCV },\n { namespace: \"solana\", name: \"EUROP\", deploymentId: tokens.solana.EUROP },\n { namespace: \"solana\", name: \"FDUSD\", deploymentId: tokens.solana.FDUSD },\n { namespace: \"solana\", name: \"GYEN\", deploymentId: tokens.solana.GYEN },\n { namespace: \"solana\", name: \"JUP\", deploymentId: tokens.solana.JUP },\n { namespace: \"solana\", name: \"JUPUSD\", deploymentId: tokens.solana.JUPUSD },\n { namespace: \"solana\", name: \"PYUSD\", deploymentId: tokens.solana.PYUSD },\n { namespace: \"solana\", name: \"SOL\", deploymentId: tokens.solana.SOL },\n { namespace: \"solana\", name: \"USDC\", deploymentId: tokens.solana.USDC },\n { namespace: \"solana\", name: \"USDG\", deploymentId: tokens.solana.USDG },\n { namespace: \"solana\", name: \"USDP\", deploymentId: tokens.solana.USDP },\n { namespace: \"solana\", name: \"USDS\", deploymentId: tokens.solana.USDS },\n { namespace: \"solana\", name: \"USDT\", deploymentId: tokens.solana.USDT },\n { namespace: \"solana\", name: \"WSOL\", deploymentId: tokens.solana.WSOL },\n { namespace: \"solana\", name: \"WSOL_TOKEN_2022\", deploymentId: tokens.solana.WSOL_TOKEN_2022 },\n { namespace: \"solana\", name: \"ZUSD\", deploymentId: tokens.solana.ZUSD },\n]) as readonly TokenAlias[];\n","import {\n TOKEN_ALIASES,\n TOKEN_ASSETS,\n TOKEN_CATALOG_AS_OF_DATE,\n TOKEN_CATALOG_CONTENT_DIGEST,\n TOKEN_CATALOG_VERSION,\n TOKEN_CHAIN_IDS,\n TOKEN_DEPLOYMENTS,\n tokens,\n} from './generated/token_catalog'\nimport type {\n TokenAlias,\n TokenAsset,\n TokenChainId,\n TokenDeployment,\n TokenRepresentationKind,\n TokenStandard,\n TokenStatus,\n} from './generated/token_catalog'\n\nexport {\n TOKEN_ALIASES,\n TOKEN_ASSETS,\n TOKEN_CATALOG_AS_OF_DATE,\n TOKEN_CATALOG_CONTENT_DIGEST,\n TOKEN_CATALOG_VERSION,\n TOKEN_CHAIN_IDS,\n TOKEN_DEPLOYMENTS,\n tokens,\n}\n\nexport type {\n TokenAlias,\n TokenAsset,\n TokenChainId,\n TokenDeployment,\n TokenRepresentationKind,\n TokenStandard,\n TokenStatus,\n}\n\n/** Stable currencies represented by the catalog's stablecoin metadata. */\nexport type StableCurrency = 'USD' | 'EUR' | 'JPY'\n\nexport interface ListTokenDeploymentsOptions {\n readonly chainId?: TokenChainId\n readonly stableCurrency?: StableCurrency\n}\n\nconst EMPTY_DEPLOYMENTS: readonly TokenDeployment[] = Object.freeze([])\n\nconst assetsById = new Map<string, TokenAsset>(\n TOKEN_ASSETS.map((asset) => [asset.assetId, asset]),\n)\n\nconst deploymentsById = new Map<string, TokenDeployment>(\n TOKEN_DEPLOYMENTS.map((deployment) => [deployment.deploymentId, deployment]),\n)\n\nconst deploymentsBySymbol = new Map<string, readonly TokenDeployment[]>()\nfor (const deployment of TOKEN_DEPLOYMENTS) {\n const key = `${deployment.chainId}\\u0000${deployment.symbol}`\n const existing = deploymentsBySymbol.get(key)\n if (existing) {\n deploymentsBySymbol.set(key, [...existing, deployment])\n } else {\n deploymentsBySymbol.set(key, [deployment])\n }\n}\n\nfor (const [key, deployments] of deploymentsBySymbol) {\n deploymentsBySymbol.set(\n key,\n Object.freeze(\n [...deployments].sort((left, right) =>\n left.deploymentId < right.deploymentId\n ? -1\n : left.deploymentId > right.deploymentId\n ? 1\n : 0,\n ),\n ),\n )\n}\n\nconst deploymentsByAddress = new Map<string, TokenDeployment>()\nfor (const deployment of TOKEN_DEPLOYMENTS) {\n if (deployment.address === null || deployment.address === '') continue\n\n const normalizedAddress = isEvmChain(deployment.chainId)\n ? normalizeEvmAddress(deployment.address)\n : deployment.address\n if (normalizedAddress === undefined || isZeroEvmAddress(normalizedAddress)) {\n continue\n }\n\n const key = `${deployment.chainId}\\u0000${normalizedAddress}`\n if (!deploymentsByAddress.has(key)) {\n deploymentsByAddress.set(key, deployment)\n }\n}\n\n/**\n * Return an asset by its opaque, exact asset ID.\n *\n * IDs are intentionally treated as opaque strings. No chain or symbol is\n * inferred from the value.\n */\nexport function getTokenAsset(assetId: string): TokenAsset | undefined {\n return typeof assetId === 'string' ? assetsById.get(assetId) : undefined\n}\n\n/** Return a deployment by its opaque, exact deployment ID. */\nexport function getTokenDeployment(\n deploymentId: string,\n): TokenDeployment | undefined {\n return typeof deploymentId === 'string'\n ? deploymentsById.get(deploymentId)\n : undefined\n}\n\n/**\n * List all catalog deployments, optionally restricted by chain and stable\n * currency. Every status remains visible in the result.\n */\nexport function listTokenDeployments(\n options: ListTokenDeploymentsOptions = {},\n): readonly TokenDeployment[] {\n if (!isRecord(options)) return EMPTY_DEPLOYMENTS\n\n const { chainId, stableCurrency } = options\n if (chainId !== undefined && !isKnownChainId(chainId)) {\n return EMPTY_DEPLOYMENTS\n }\n if (\n stableCurrency !== undefined &&\n !isStableCurrency(stableCurrency)\n ) {\n return EMPTY_DEPLOYMENTS\n }\n\n const filtered = TOKEN_DEPLOYMENTS.filter((deployment) => {\n if (chainId !== undefined && deployment.chainId !== chainId) return false\n if (\n stableCurrency !== undefined &&\n deployment.stableCurrency !== stableCurrency\n ) {\n return false\n }\n return true\n })\n\n return filtered.length === 0 ? EMPTY_DEPLOYMENTS : Object.freeze(filtered)\n}\n\n/**\n * Find every exact-case symbol match on a chain, ordered by deployment ID.\n */\nexport function findTokenDeploymentsBySymbol(\n chainId: TokenChainId,\n symbol: string,\n): readonly TokenDeployment[] {\n if (\n !isKnownChainId(chainId) ||\n typeof symbol !== 'string' ||\n symbol.length === 0\n ) {\n return EMPTY_DEPLOYMENTS\n }\n\n return (\n deploymentsBySymbol.get(`${chainId}\\u0000${symbol}`) ?? EMPTY_DEPLOYMENTS\n )\n}\n\n/**\n * Find a deployment by address. EVM addresses are ASCII hex and are matched\n * case-insensitively; Solana addresses are matched byte-for-byte as strings.\n */\nexport function findTokenDeploymentByAddress(\n chainId: TokenChainId,\n address: string,\n): TokenDeployment | undefined {\n if (!isKnownChainId(chainId) || typeof address !== 'string') return undefined\n if (address.length === 0) return undefined\n\n const normalizedAddress = isEvmChain(chainId)\n ? normalizeEvmAddress(address)\n : address\n if (\n normalizedAddress === undefined ||\n (isEvmChain(chainId) && isZeroEvmAddress(normalizedAddress))\n ) {\n return undefined\n }\n\n return deploymentsByAddress.get(`${chainId}\\u0000${normalizedAddress}`)\n}\n\n/** Find the chain's native deployment. Native deployments use address null. */\nexport function getNativeTokenDeployment(\n chainId: TokenChainId,\n): TokenDeployment | undefined {\n if (!isKnownChainId(chainId)) return undefined\n\n return TOKEN_DEPLOYMENTS.find(\n (deployment) =>\n deployment.chainId === chainId &&\n deployment.standard === 'native' &&\n deployment.address === null,\n )\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction isKnownChainId(value: unknown): value is TokenChainId {\n return (\n value === TOKEN_CHAIN_IDS.ethereumMainnet ||\n value === TOKEN_CHAIN_IDS.solanaMainnet ||\n value === TOKEN_CHAIN_IDS.avalancheCMainnet\n )\n}\n\nfunction isStableCurrency(value: unknown): value is StableCurrency {\n return value === 'USD' || value === 'EUR' || value === 'JPY'\n}\n\nfunction isEvmChain(chainId: string): boolean {\n return (\n chainId === TOKEN_CHAIN_IDS.ethereumMainnet ||\n chainId === TOKEN_CHAIN_IDS.avalancheCMainnet\n )\n}\n\nfunction normalizeEvmAddress(address: string): string | undefined {\n if (!/^0x[0-9a-fA-F]{40}$/.test(address)) return undefined\n return address.toLowerCase()\n}\n\nfunction isZeroEvmAddress(address: string): boolean {\n return address === `0x${'0'.repeat(40)}`\n}\n","/* Generated by registry/generate-token-rankings.mjs. Do not edit. */\n\nexport type TokenRankingMetric = 'onchain-total-supply-value-native' | 'global-circulating-market-cap-usd';\nexport type TokenRankingStatus = 'unconfigured' | 'complete' | 'partial';\nexport interface TokenRankingCoverage { readonly chainId: string; readonly totalDeployments: number; readonly rankedDeployments: number; readonly unrankedDeployments: number; readonly observedAt: string | null; }\nexport interface TokenRankingMetadata { readonly schemaVersion: 1; readonly metric: TokenRankingMetric | null; readonly asOf: string | null; readonly contentDigest: string; readonly status: TokenRankingStatus; readonly coverage: readonly TokenRankingCoverage[]; readonly sourceIds: readonly string[]; }\nexport interface TokenRanking { readonly rank: number; readonly chainId: string; readonly deploymentIds: readonly string[]; readonly metric: TokenRankingMetric; readonly valueNumerator: string; readonly valueDenominator: string; readonly quoteCurrency: 'native' | 'USD'; readonly quoteDeploymentId: string | null; readonly observedAt: string; readonly sourceId: string; readonly sourceAssetId: string | null; }\nconst deepFreeze = <T>(value: T): Readonly<T> => { if (value && typeof value === 'object' && !Object.isFrozen(value)) { Object.freeze(value); for (const child of Object.values(value as Record<string, unknown>)) deepFreeze(child); } return value as Readonly<T>; };\nexport const TOKEN_RANKINGS_METADATA = deepFreeze({\n \"schemaVersion\": 1,\n \"metric\": \"onchain-total-supply-value-native\",\n \"asOf\": \"2026-09-16T16:41:59Z\",\n \"contentDigest\": \"26d1dc0a1091c8bfcb475c22877d1ce4ee7384462a184c9d4fc509c57110c0ea\",\n \"status\": \"partial\",\n \"coverage\": [\n {\n \"chainId\": \"eip155:1\",\n \"totalDeployments\": 34,\n \"rankedDeployments\": 8,\n \"unrankedDeployments\": 26,\n \"observedAt\": \"2026-09-16T16:41:59Z\"\n },\n {\n \"chainId\": \"eip155:43114\",\n \"totalDeployments\": 17,\n \"rankedDeployments\": 0,\n \"unrankedDeployments\": 17,\n \"observedAt\": \"2026-09-16T16:57:22Z\"\n },\n {\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"totalDeployments\": 19,\n \"rankedDeployments\": 1,\n \"unrankedDeployments\": 18,\n \"observedAt\": \"2026-09-16T16:57:16Z\"\n }\n ],\n \"sourceIds\": [\n \"rpc-avalanche-c-mainnet\",\n \"rpc-ethereum-mainnet\",\n \"rpc-solana-mainnet\"\n ]\n}) as TokenRankingMetadata;\nexport const TOKEN_RANKINGS = deepFreeze([\n {\n \"rank\": 1,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0008\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"207204000029972648356119414046913566875\",\n \"valueDenominator\": \"9901974834827\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 2,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0057\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"33884048421157235660750000000000000000000000000\",\n \"valueDenominator\": \"7575670698454356114489\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 3,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"2530529372917746092314437530549111\",\n \"valueDenominator\": \"689351076\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 4,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0019\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"8563994066253688594928908892314570251695637864181\",\n \"valueDenominator\": \"4480501906764632895725190\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 5,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"33087553822039834447063841834161374382321688576\",\n \"valueDenominator\": \"507606550755599406088755\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 6,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"22129458437198611962075707523082974663376278\",\n \"valueDenominator\": \"466235585330384227837\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 7,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"461823962164048108560000000000000000000000000\",\n \"valueDenominator\": \"10479085950557704780219\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 8,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"591208964484530983367688374937406614318\",\n \"valueDenominator\": \"21093793193177765\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 1,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"deploymentIds\": [\n \"deployment-0013\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"8934052641907075195235710143877572821100144726376448\",\n \"valueDenominator\": \"7196706365568923421366403517072759025\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0005\",\n \"observedAt\": \"2026-09-16T16:57:16Z\",\n \"sourceId\": \"rpc-solana-mainnet\",\n \"sourceAssetId\": null\n }\n]) as readonly TokenRanking[];\nexport const TOKEN_RANKINGS_CONTENT_DIGEST = TOKEN_RANKINGS_METADATA.contentDigest;\nexport const TOKEN_RANKINGS_BY_CHAIN = deepFreeze({\n \"eip155:1\": [\n {\n \"rank\": 1,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0008\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"207204000029972648356119414046913566875\",\n \"valueDenominator\": \"9901974834827\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 2,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0057\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"33884048421157235660750000000000000000000000000\",\n \"valueDenominator\": \"7575670698454356114489\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 3,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"2530529372917746092314437530549111\",\n \"valueDenominator\": \"689351076\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 4,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"deployment-0019\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"8563994066253688594928908892314570251695637864181\",\n \"valueDenominator\": \"4480501906764632895725190\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 5,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"33087553822039834447063841834161374382321688576\",\n \"valueDenominator\": \"507606550755599406088755\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 6,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"22129458437198611962075707523082974663376278\",\n \"valueDenominator\": \"466235585330384227837\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 7,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"461823962164048108560000000000000000000000000\",\n \"valueDenominator\": \"10479085950557704780219\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n },\n {\n \"rank\": 8,\n \"chainId\": \"eip155:1\",\n \"deploymentIds\": [\n \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"591208964484530983367688374937406614318\",\n \"valueDenominator\": \"21093793193177765\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0001\",\n \"observedAt\": \"2026-09-16T16:41:59Z\",\n \"sourceId\": \"rpc-ethereum-mainnet\",\n \"sourceAssetId\": null\n }\n ],\n \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\": [\n {\n \"rank\": 1,\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"deploymentIds\": [\n \"deployment-0013\"\n ],\n \"metric\": \"onchain-total-supply-value-native\",\n \"valueNumerator\": \"8934052641907075195235710143877572821100144726376448\",\n \"valueDenominator\": \"7196706365568923421366403517072759025\",\n \"quoteCurrency\": \"native\",\n \"quoteDeploymentId\": \"deployment-0005\",\n \"observedAt\": \"2026-09-16T16:57:16Z\",\n \"sourceId\": \"rpc-solana-mainnet\",\n \"sourceAssetId\": null\n }\n ]\n}) as Readonly<Record<string, readonly TokenRanking[]>>;\n","import {\n TOKEN_RANKINGS,\n TOKEN_RANKINGS_BY_CHAIN,\n TOKEN_RANKINGS_CONTENT_DIGEST,\n TOKEN_RANKINGS_METADATA,\n} from './generated/token_rankings'\nimport type {\n TokenRanking,\n TokenRankingCoverage,\n TokenRankingMetadata,\n TokenRankingMetric,\n TokenRankingStatus,\n} from './generated/token_rankings'\n\nexport {\n TOKEN_RANKINGS,\n TOKEN_RANKINGS_BY_CHAIN,\n TOKEN_RANKINGS_CONTENT_DIGEST,\n TOKEN_RANKINGS_METADATA,\n}\n\nexport type {\n TokenRanking,\n TokenRankingCoverage,\n TokenRankingMetadata,\n TokenRankingMetric,\n TokenRankingStatus,\n}\n\nconst EMPTY_RANKINGS: readonly TokenRanking[] = Object.freeze([])\n\n/**\n * Return the bundled token rankings for an exact chain ID.\n *\n * Rankings are an offline snapshot. An unknown or empty chain ID is a safe,\n * immutable empty result; no chain aliases or network lookups are inferred.\n */\nexport function listTokenRankings(chainId: string): readonly TokenRanking[] {\n if (typeof chainId !== 'string' || chainId.length === 0) {\n return EMPTY_RANKINGS\n }\n return Object.hasOwn(TOKEN_RANKINGS_BY_CHAIN, chainId)\n ? TOKEN_RANKINGS_BY_CHAIN[chainId] ?? EMPTY_RANKINGS\n : EMPTY_RANKINGS\n}\n","import { ErpcInvalidResponseError } from './errors'\nimport type { CloudResourceKind, CloudResourceMode } from './resources'\nimport type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\n\nexport interface CloudOfferingBilling {\n readonly amountCents: number\n readonly unit: 'cents-per-hour'\n}\n\nexport interface CloudOfferingCompute {\n readonly tenancy: 'bare-metal' | 'virtual-machine'\n}\n\nexport interface CloudOfferingSolana {\n readonly transport: 'grpc' | 'shredstream'\n}\n\nexport interface CloudOffering {\n readonly billing?: CloudOfferingBilling\n readonly capabilities: readonly string[]\n readonly compute?: CloudOfferingCompute\n readonly description: string\n readonly id: string\n readonly kind: CloudResourceKind\n readonly mode?: CloudResourceMode\n readonly name: string\n readonly regions: readonly string[]\n readonly solana?: CloudOfferingSolana\n}\n\nconst resourceKinds: readonly CloudResourceKind[] = [\n 'bare-metal',\n 'solana-grpc',\n 'solana-shredstream',\n 'vps',\n]\nconst resourceModes: readonly CloudResourceMode[] = [\n 'dedicated',\n 'direct',\n 'shared',\n]\n\nconst objectValue = (value: unknown): Record<string, unknown> | null =>\n typeof value === 'object' && value !== null\n ? value as Record<string, unknown>\n : null\n\nconst stringArray = (value: unknown): readonly string[] | null =>\n Array.isArray(value) && value.every((item) => typeof item === 'string')\n ? value\n : null\n\nconst parseOffering = (value: unknown): CloudOffering | null => {\n const offering = objectValue(value)\n if (\n offering === null ||\n typeof offering.id !== 'string' ||\n typeof offering.kind !== 'string' ||\n !resourceKinds.includes(offering.kind as CloudResourceKind) ||\n typeof offering.name !== 'string' ||\n typeof offering.description !== 'string' ||\n (offering.mode !== undefined &&\n (typeof offering.mode !== 'string' ||\n !resourceModes.includes(offering.mode as CloudResourceMode)))\n ) return null\n\n const regions = stringArray(offering.regions)\n const capabilities = stringArray(offering.capabilities)\n if (regions === null || capabilities === null) return null\n\n const compute = offering.compute === undefined\n ? undefined\n : objectValue(offering.compute)\n if (\n compute !== undefined &&\n (compute === null ||\n (compute.tenancy !== 'virtual-machine' &&\n compute.tenancy !== 'bare-metal'))\n ) return null\n\n const solana = offering.solana === undefined\n ? undefined\n : objectValue(offering.solana)\n if (\n solana !== undefined &&\n (solana === null ||\n (solana.transport !== 'grpc' && solana.transport !== 'shredstream'))\n ) return null\n\n const billing = offering.billing === undefined\n ? undefined\n : objectValue(offering.billing)\n if (\n billing !== undefined &&\n (billing === null ||\n billing.unit !== 'cents-per-hour' ||\n typeof billing.amountCents !== 'number' ||\n !Number.isInteger(billing.amountCents) ||\n billing.amountCents < 0)\n ) return null\n\n return {\n id: offering.id,\n kind: offering.kind as CloudResourceKind,\n name: offering.name,\n description: offering.description,\n regions,\n capabilities,\n ...(typeof offering.mode === 'string'\n ? { mode: offering.mode as CloudResourceMode }\n : {}),\n ...(compute &&\n (compute.tenancy === 'virtual-machine' || compute.tenancy === 'bare-metal')\n ? { compute: { tenancy: compute.tenancy } }\n : {}),\n ...(solana &&\n (solana.transport === 'grpc' || solana.transport === 'shredstream')\n ? { solana: { transport: solana.transport } }\n : {}),\n ...(billing &&\n billing.unit === 'cents-per-hour' &&\n typeof billing.amountCents === 'number'\n ? {\n billing: {\n amountCents: billing.amountCents,\n unit: billing.unit,\n },\n }\n : {}),\n }\n}\n\nexport class CloudCatalogClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n async list(options?: RpcSendOptions): Promise<readonly CloudOffering[]> {\n const response: unknown = await this.#transport.get(\n '/v4/cloud/catalog',\n undefined,\n options,\n )\n const envelope = objectValue(response)\n const message = objectValue(envelope?.message)\n if (envelope?.success !== true || !Array.isArray(message?.offerings)) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud catalog',\n )\n }\n const offerings = message.offerings.map(parseOffering)\n if (offerings.some((offering) => offering === null)) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud catalog',\n )\n }\n return offerings as readonly CloudOffering[]\n }\n}\n","export const wrapFetch = (\n implementation: typeof globalThis.fetch,\n): typeof globalThis.fetch => (input, init) => implementation(input, init)\n","import { ErpcConfigError } from './errors'\nimport { wrapFetch } from './transport/fetch'\n\nexport const DEFAULT_ENDPOINT = 'https://edge.erpc.global'\nexport const DEFAULT_AVALANCHE_ENDPOINT = 'https://ava-rpc.erpc.global'\nexport const DEFAULT_ACCOUNT_ENDPOINT = 'https://solana-rpc.erpc.global'\nexport const DEFAULT_USER_ENDPOINT = 'https://user-api.erpc.global'\nexport const DEFAULT_TIMEOUT_MS = 30_000\n\nexport interface RpcEndpointConfig {\n readonly headers?: Readonly<Record<string, string>>\n readonly httpUrl: string\n readonly webSocketUrl?: string\n}\n\nexport interface ResolvedRpcEndpointConfig {\n readonly headers: Readonly<Record<string, string>>\n readonly httpUrl: URL\n readonly webSocketUrl?: URL\n}\n\nexport interface ErpcClientConfig {\n readonly accountEndpoint?: string\n readonly apiKey?: string\n readonly avalancheEndpoint?: string\n readonly avalancheCRpc?: RpcEndpointConfig\n readonly endpoint?: string\n readonly ethereumRpc?: RpcEndpointConfig\n readonly fetch?: typeof globalThis.fetch\n readonly headers?: Readonly<Record<string, string>>\n readonly solanaRpc?: RpcEndpointConfig\n readonly timeoutMs?: number\n readonly userEndpoint?: string\n readonly webSocket?: typeof globalThis.WebSocket\n}\n\nexport interface ResolvedErpcClientConfig {\n readonly accountEndpoint: URL\n readonly apiKey?: string\n readonly avalancheEndpoint: URL\n readonly avalancheCRpc?: ResolvedRpcEndpointConfig\n readonly endpoint: URL\n readonly ethereumRpc?: ResolvedRpcEndpointConfig\n readonly fetch: typeof globalThis.fetch\n readonly headers: Readonly<Record<string, string>>\n readonly solanaRpc?: ResolvedRpcEndpointConfig\n readonly timeoutMs: number\n readonly userEndpoint: URL\n readonly webSocket?: typeof globalThis.WebSocket\n}\n\nconst requireFetch = (provided?: typeof globalThis.fetch) => {\n const implementation = provided ?? globalThis.fetch\n if (typeof implementation !== 'function') {\n throw new ErpcConfigError(\n 'A Fetch API implementation is required in this runtime',\n )\n }\n return wrapFetch(implementation)\n}\n\nconst normalizeLegacyEndpoint = (endpoint: URL): URL => {\n endpoint.search = ''\n endpoint.hash = ''\n endpoint.pathname = endpoint.pathname.replace(/\\/+$/, '') || '/'\n return endpoint\n}\n\nconst explicitAuthority = (value: string): boolean =>\n /^[a-z][a-z\\d+.-]*:\\/\\//iu.test(value)\n\nconst hasUserInfo = (value: string): boolean => {\n const separator = value.indexOf('://')\n if (separator === -1) return false\n const authorityAndPath = value.slice(separator + 3)\n const authority = authorityAndPath.split(/[/?#]/u, 1)[0] ?? ''\n return authority.length === 0 || authority.includes('@')\n}\n\nconst parseDirectUrl = (\n value: unknown,\n namespace: string,\n kind: 'HTTP(S)' | 'WS(S)',\n): URL => {\n if (typeof value !== 'string') {\n throw new ErpcConfigError(`${namespace} URL must be an absolute ${kind} URL`)\n }\n const input = value.trim()\n if (!input || !explicitAuthority(input) || input.includes('#') || hasUserInfo(input)) {\n throw new ErpcConfigError(`${namespace} URL must be an absolute ${kind} URL`)\n }\n\n let url: URL\n try {\n url = new URL(input)\n } catch {\n throw new ErpcConfigError(`${namespace} URL must be an absolute ${kind} URL`)\n }\n\n const allowed = kind === 'HTTP(S)'\n ? url.protocol === 'http:' || url.protocol === 'https:'\n : url.protocol === 'ws:' || url.protocol === 'wss:'\n if (!allowed || !url.hostname || url.username || url.password) {\n throw new ErpcConfigError(`${namespace} URL must be an absolute ${kind} URL`)\n }\n return url\n}\n\nconst directHeaders = (\n value: unknown,\n namespace: string,\n): Readonly<Record<string, string>> => {\n if (value === undefined) return {}\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new ErpcConfigError(`${namespace} headers must be string values`)\n }\n const result: Record<string, string> = {}\n for (const [name, header] of Object.entries(value)) {\n if (typeof header !== 'string') {\n throw new ErpcConfigError(`${namespace} headers must be string values`)\n }\n result[name] = header\n }\n return Object.freeze(result)\n}\n\nconst resolveRpcEndpoint = (\n value: unknown,\n namespace: string,\n): ResolvedRpcEndpointConfig => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new ErpcConfigError(`${namespace} must define an HTTP(S) URL`)\n }\n const config = value as Record<string, unknown>\n const httpUrl = parseDirectUrl(config.httpUrl, `${namespace}.httpUrl`, 'HTTP(S)')\n const webSocketUrl = config.webSocketUrl === undefined\n ? undefined\n : parseDirectUrl(\n config.webSocketUrl,\n `${namespace}.webSocketUrl`,\n 'WS(S)',\n )\n const headers = directHeaders(config.headers, namespace)\n return {\n headers,\n httpUrl,\n ...(webSocketUrl === undefined ? {} : { webSocketUrl }),\n }\n}\n\nexport const resolveConfig = (\n config: ErpcClientConfig,\n): ResolvedErpcClientConfig => {\n const configuredApiKey = config.apiKey === undefined\n ? undefined\n : typeof config.apiKey === 'string'\n ? config.apiKey.trim()\n : (() => {\n throw new ErpcConfigError('apiKey must be a string')\n })()\n\n const solanaRpc = config.solanaRpc === undefined\n ? undefined\n : resolveRpcEndpoint(config.solanaRpc, 'solanaRpc')\n const ethereumRpc = config.ethereumRpc === undefined\n ? undefined\n : resolveRpcEndpoint(config.ethereumRpc, 'ethereumRpc')\n const avalancheCRpc = config.avalancheCRpc === undefined\n ? undefined\n : resolveRpcEndpoint(config.avalancheCRpc, 'avalancheCRpc')\n const hasDirectRpc =\n solanaRpc !== undefined || ethereumRpc !== undefined || avalancheCRpc !== undefined\n if (!configuredApiKey && !hasDirectRpc) {\n throw new ErpcConfigError('apiKey must not be empty')\n }\n const apiKey = configuredApiKey || undefined\n\n let endpoint: URL\n let avalancheEndpoint: URL\n let accountEndpoint: URL\n let userEndpoint: URL\n try {\n endpoint = normalizeLegacyEndpoint(new URL(config.endpoint ?? DEFAULT_ENDPOINT))\n avalancheEndpoint = normalizeLegacyEndpoint(new URL(\n config.avalancheEndpoint ?? DEFAULT_AVALANCHE_ENDPOINT,\n ))\n accountEndpoint = normalizeLegacyEndpoint(new URL(\n config.accountEndpoint ?? DEFAULT_ACCOUNT_ENDPOINT,\n ))\n userEndpoint = normalizeLegacyEndpoint(new URL(config.userEndpoint ?? DEFAULT_USER_ENDPOINT))\n } catch {\n throw new ErpcConfigError('endpoint must be an absolute HTTP(S) URL')\n }\n\n if (endpoint.protocol !== 'https:' && endpoint.protocol !== 'http:') {\n throw new ErpcConfigError('endpoint must use HTTP or HTTPS')\n }\n if (\n avalancheEndpoint.protocol !== 'https:' &&\n avalancheEndpoint.protocol !== 'http:'\n ) {\n throw new ErpcConfigError('avalancheEndpoint must use HTTP or HTTPS')\n }\n if (\n accountEndpoint.protocol !== 'https:' &&\n accountEndpoint.protocol !== 'http:'\n ) {\n throw new ErpcConfigError('accountEndpoint must use HTTP or HTTPS')\n }\n if (\n userEndpoint.protocol !== 'https:' &&\n userEndpoint.protocol !== 'http:'\n ) {\n throw new ErpcConfigError('userEndpoint must use HTTP or HTTPS')\n }\n\n const timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS\n if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n throw new ErpcConfigError('timeoutMs must be a positive finite number')\n }\n\n return {\n accountEndpoint,\n avalancheEndpoint,\n endpoint,\n fetch: requireFetch(config.fetch),\n headers: config.headers ?? {},\n timeoutMs,\n userEndpoint,\n ...(apiKey === undefined ? {} : { apiKey }),\n ...(avalancheCRpc === undefined ? {} : { avalancheCRpc }),\n ...(ethereumRpc === undefined ? {} : { ethereumRpc }),\n ...(solanaRpc === undefined ? {} : { solanaRpc }),\n ...(config.webSocket === undefined\n ? {}\n : { webSocket: config.webSocket }),\n }\n}\n\nexport const endpointWithPath = (endpoint: URL, path: string): URL => {\n const url = new URL(endpoint)\n const base = endpoint.pathname === '/' ? '' : endpoint.pathname\n url.pathname = `${base}/${path.replace(/^\\/+/, '')}`.replace(/\\/{2,}/g, '/')\n return url\n}\n\nexport const websocketUrl = (\n endpoint: URL,\n apiKey: string,\n path = '',\n): URL => {\n const url = endpointWithPath(endpoint, path)\n url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:'\n url.searchParams.set('api-key', apiKey)\n return url\n}\n","import { ErpcInvalidResponseError } from './errors'\nimport type { RpcSendOptions } from './rpc/types'\nimport type { Query } from './transport/rest'\nimport { RestTransport } from './transport/rest'\n\nexport type PriceEncoding = 'base64' | 'hex'\nexport type PriceAssetType = 'crypto' | 'equity' | 'fx' | 'metal' | 'rates'\n\nexport interface PriceFeedMetadata {\n readonly attributes?: Readonly<Record<string, string>>\n readonly id: string\n}\n\nexport interface PricePoint {\n readonly conf: string\n readonly expo: number\n readonly price: string\n readonly publish_time: number\n}\n\nexport interface ParsedPriceUpdate {\n readonly ema_price: PricePoint\n readonly id: string\n readonly metadata?: {\n readonly prev_publish_time?: number\n readonly proof_available_time?: number\n readonly slot?: number\n }\n readonly price: PricePoint\n}\n\nexport interface BinaryUpdate {\n readonly data: readonly string[]\n readonly encoding: string\n}\n\nexport interface PriceUpdateResponse {\n readonly binary: BinaryUpdate\n readonly parsed?: readonly ParsedPriceUpdate[]\n}\n\nexport interface PriceUpdateOptions {\n readonly encoding?: PriceEncoding\n readonly ids: readonly string[]\n readonly ignoreInvalidPriceIds?: boolean\n readonly parsed?: boolean\n}\n\nexport interface PriceStreamOptions extends PriceUpdateOptions {\n readonly allowUnordered?: boolean\n readonly benchmarksOnly?: boolean\n}\n\nexport interface PublisherStakeCap {\n readonly cap: number\n readonly publisher: string\n}\n\nexport interface PublisherStakeCapsResponse {\n readonly binary: BinaryUpdate\n readonly parsed?: readonly {\n readonly publisher_stake_caps: readonly PublisherStakeCap[]\n }[]\n}\n\nexport interface PriceStreamEvent {\n readonly data: PriceUpdateResponse\n readonly event?: string\n readonly id?: string\n}\n\nconst updateQuery = (options: PriceUpdateOptions): Query => ({\n 'ids[]': options.ids,\n encoding: options.encoding,\n parsed: options.parsed,\n ignore_invalid_price_ids: options.ignoreInvalidPriceIds,\n})\n\nconst parseSseBlock = (block: string): PriceStreamEvent | null => {\n const data: string[] = []\n let event: string | undefined\n let id: string | undefined\n\n for (const line of block.split(/\\r?\\n/)) {\n if (!line || line.startsWith(':')) continue\n const separator = line.indexOf(':')\n const field = separator === -1 ? line : line.slice(0, separator)\n const raw = separator === -1 ? '' : line.slice(separator + 1)\n const value = raw.startsWith(' ') ? raw.slice(1) : raw\n if (field === 'data') data.push(value)\n else if (field === 'event') event = value\n else if (field === 'id') id = value\n }\n\n if (data.length === 0) return null\n let parsed: PriceUpdateResponse\n try {\n parsed = JSON.parse(data.join('\\n')) as PriceUpdateResponse\n } catch {\n throw new ErpcInvalidResponseError('ERPC returned malformed stream data')\n }\n const result: {\n data: PriceUpdateResponse\n event?: string\n id?: string\n } = { data: parsed }\n if (event !== undefined) result.event = event\n if (id !== undefined) result.id = id\n return result\n}\n\nexport class PriceClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n getPriceFeeds(\n options: {\n readonly assetType?: PriceAssetType\n readonly query?: string\n } = {},\n sendOptions?: RpcSendOptions,\n ): Promise<readonly PriceFeedMetadata[]> {\n return this.#transport.get(\n '/v2/price_feeds',\n { query: options.query, asset_type: options.assetType },\n sendOptions,\n )\n }\n\n getLatestPriceUpdates(\n options: PriceUpdateOptions,\n sendOptions?: RpcSendOptions,\n ): Promise<PriceUpdateResponse> {\n return this.#transport.get(\n '/v2/updates/price/latest',\n updateQuery(options),\n sendOptions,\n )\n }\n\n getPriceUpdatesAtTimestamp(\n publishTime: number | string,\n options: PriceUpdateOptions,\n sendOptions?: RpcSendOptions,\n ): Promise<PriceUpdateResponse> {\n return this.#transport.get(\n `/v2/updates/price/${encodeURIComponent(String(publishTime))}`,\n updateQuery(options),\n sendOptions,\n )\n }\n\n getLatestPublisherStakeCaps(\n options: { readonly encoding?: PriceEncoding; readonly parsed?: boolean } = {},\n sendOptions?: RpcSendOptions,\n ): Promise<PublisherStakeCapsResponse> {\n return this.#transport.get(\n '/v2/updates/publisher_stake_caps/latest',\n options,\n sendOptions,\n )\n }\n\n async *streamPriceUpdates(\n options: PriceStreamOptions,\n sendOptions?: RpcSendOptions,\n ): AsyncGenerator<PriceStreamEvent, void, undefined> {\n const stream = await this.#transport.stream(\n '/v2/updates/price/stream',\n {\n ...updateQuery(options),\n allow_unordered: options.allowUnordered,\n benchmarks_only: options.benchmarksOnly,\n },\n sendOptions,\n )\n const response = stream.response\n if (!response.body) {\n stream.close()\n throw new ErpcInvalidResponseError('ERPC returned an empty stream')\n }\n\n const reader = response.body.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n try {\n while (true) {\n const { done, value } = await reader.read()\n buffer += decoder.decode(value, { stream: !done })\n let boundary = buffer.search(/\\r?\\n\\r?\\n/)\n while (boundary !== -1) {\n const separatorLength = buffer.slice(boundary).startsWith('\\r\\n')\n ? 4\n : 2\n const block = buffer.slice(0, boundary)\n buffer = buffer.slice(boundary + separatorLength)\n const event = parseSseBlock(block)\n if (event) yield event\n boundary = buffer.search(/\\r?\\n\\r?\\n/)\n }\n if (done) break\n }\n const finalEvent = parseSseBlock(buffer)\n if (finalEvent) yield finalEvent\n } catch (error) {\n throw stream.normalizeError(error)\n } finally {\n try {\n await reader.cancel()\n } catch {\n // Preserve the original stream result or error.\n } finally {\n reader.releaseLock()\n stream.close()\n }\n }\n }\n}\n","import type {\n JsonRpcParams,\n RpcBatchCall,\n RpcMethodSpec,\n RpcParams,\n RpcResult,\n RpcSendOptions,\n} from './types'\n\nexport interface JsonRpcTransport {\n readonly endpoint: string\n readonly maxBatchSize: number\n\n batch<TResult extends readonly unknown[]>(\n calls: readonly RpcBatchCall[],\n options?: RpcSendOptions,\n ): Promise<TResult>\n\n request<TResult>(\n method: string,\n params?: JsonRpcParams,\n options?: RpcSendOptions,\n ): Promise<TResult>\n}\n\nexport class PendingRpcRequest<TResult> {\n readonly #send: (options?: RpcSendOptions) => Promise<TResult>\n\n constructor(send: (options?: RpcSendOptions) => Promise<TResult>) {\n this.#send = send\n }\n\n send(options?: RpcSendOptions): Promise<TResult> {\n return this.#send(options)\n }\n}\n\nexport class PendingRpcBatchRequest<TResult extends readonly unknown[]> {\n readonly #send: (options?: RpcSendOptions) => Promise<TResult>\n\n constructor(send: (options?: RpcSendOptions) => Promise<TResult>) {\n this.#send = send\n }\n\n send(options?: RpcSendOptions): Promise<TResult> {\n return this.#send(options)\n }\n}\n\ntype SchemaConstraint<TSchema> = {\n readonly [TMethod in keyof TSchema]: RpcMethodSpec<\n JsonRpcParams | undefined,\n unknown\n >\n}\n\ntype MethodName<TSchema> = Extract<keyof TSchema, string>\n\ntype MethodFunction<TSpec> = TSpec extends RpcMethodSpec<\n infer TParams,\n infer TResult\n>\n ? TParams extends readonly unknown[]\n ? (...params: TParams) => PendingRpcRequest<TResult>\n : TParams extends object\n ? (params: TParams) => PendingRpcRequest<TResult>\n : () => PendingRpcRequest<TResult>\n : never\n\ntype BatchCall<TSchema> = {\n readonly [TMethod in MethodName<TSchema>]: RpcParams<\n TSchema[TMethod]\n > extends undefined\n ? { readonly method: TMethod; readonly params?: undefined }\n : {\n readonly method: TMethod\n readonly params: RpcParams<TSchema[TMethod]>\n }\n}[MethodName<TSchema>]\n\ntype BatchResults<\n TSchema,\n TCalls extends readonly BatchCall<TSchema>[],\n> = {\n readonly [TIndex in keyof TCalls]: TCalls[TIndex] extends {\n readonly method: infer TMethod\n }\n ? TMethod extends MethodName<TSchema>\n ? RpcResult<TSchema[TMethod]>\n : never\n : never\n}\n\nexport interface RpcNamespaceBase<TSchema> {\n readonly endpoint: string\n\n batch<const TCalls extends readonly BatchCall<TSchema>[]>(\n calls: TCalls,\n ): PendingRpcBatchRequest<BatchResults<TSchema, TCalls>>\n\n raw<TResult = unknown>(\n method: string,\n params?: JsonRpcParams,\n ): PendingRpcRequest<TResult>\n\n request<TMethod extends MethodName<TSchema>>(\n method: TMethod,\n ...params: RpcParams<TSchema[TMethod]> extends undefined\n ? []\n : [params: RpcParams<TSchema[TMethod]>]\n ): PendingRpcRequest<RpcResult<TSchema[TMethod]>>\n}\n\nexport type RpcNamespace<TSchema extends SchemaConstraint<TSchema>> =\n RpcNamespaceBase<TSchema> & {\n readonly [TMethod in MethodName<TSchema>]: MethodFunction<TSchema[TMethod]>\n }\n\nexport interface CreateRpcNamespaceConfig {\n readonly methodPrefix?: string\n readonly parameterMode: 'named' | 'positional'\n readonly transport: JsonRpcTransport\n readonly validateBatch?: (calls: readonly RpcBatchCall[]) => void\n}\n\nconst methodParams = (\n mode: CreateRpcNamespaceConfig['parameterMode'],\n args: readonly unknown[],\n): JsonRpcParams | undefined => {\n if (mode === 'positional') return args\n if (args.length === 0) return undefined\n return args[0] as object\n}\n\nexport const createRpcNamespace = <\n TSchema extends SchemaConstraint<TSchema>,\n>(config: CreateRpcNamespaceConfig): RpcNamespace<TSchema> => {\n const wireMethod = (method: string) =>\n config.methodPrefix === undefined\n ? method\n : `${config.methodPrefix}.${method}`\n\n const base: RpcNamespaceBase<TSchema> = {\n endpoint: config.transport.endpoint,\n batch: <const TCalls extends readonly BatchCall<TSchema>[]>(calls: TCalls) => {\n const wireCalls = (calls as readonly RpcBatchCall[]).map((call) => ({\n ...call,\n method: wireMethod(call.method),\n }))\n config.validateBatch?.(wireCalls)\n return new PendingRpcBatchRequest((options) =>\n config.transport.batch<BatchResults<TSchema, TCalls>>(\n wireCalls,\n options,\n ),\n )\n },\n raw: <TResult>(method: string, params?: JsonRpcParams) =>\n new PendingRpcRequest<TResult>((options) =>\n config.transport.request<TResult>(method, params, options),\n ),\n request: <TMethod extends MethodName<TSchema>>(\n method: TMethod,\n ...params: RpcParams<TSchema[TMethod]> extends undefined\n ? []\n : [params: RpcParams<TSchema[TMethod]>]\n ) =>\n new PendingRpcRequest<RpcResult<TSchema[TMethod]>>((options) =>\n config.transport.request<RpcResult<TSchema[TMethod]>>(\n wireMethod(method),\n params[0] as JsonRpcParams | undefined,\n options,\n ),\n ),\n }\n\n return new Proxy(base as RpcNamespace<TSchema>, {\n get(target, property, receiver) {\n if (typeof property !== 'string' || property in target) {\n return Reflect.get(target, property, receiver) as unknown\n }\n if (property === 'then') return undefined\n return (...args: readonly unknown[]) =>\n new PendingRpcRequest((options) =>\n config.transport.request(\n wireMethod(property),\n methodParams(config.parameterMode, args),\n options,\n ),\n )\n },\n })\n}\n","import type { HttpJsonRpcTransport } from '../transport/http'\nimport { createRpcNamespace, type RpcNamespace } from './client'\nimport type { JsonValue, RpcMethodSpec } from './types'\n\nexport type Hex = `0x${string}`\nexport type EthereumAddress = Hex\nexport type EthereumBlockTag =\n | 'earliest'\n | 'finalized'\n | 'latest'\n | 'pending'\n | 'safe'\n | Hex\n\nexport type EthereumObject = Readonly<Record<string, unknown>>\nexport type EthereumTransactionRequest = EthereumObject\nexport type EthereumFilter = EthereumObject\n\nexport interface EthereumRpcSchema {\n readonly eth_accounts: RpcMethodSpec<readonly [], readonly EthereumAddress[]>\n readonly eth_baseFee: RpcMethodSpec<readonly [], Hex>\n readonly eth_blobBaseFee: RpcMethodSpec<readonly [], Hex>\n readonly eth_blockNumber: RpcMethodSpec<readonly [], Hex>\n readonly eth_call: RpcMethodSpec<\n readonly [\n transaction: EthereumTransactionRequest,\n block?: EthereumBlockTag,\n stateOverride?: EthereumObject,\n ],\n Hex\n >\n readonly eth_callMany: RpcMethodSpec<\n readonly [\n calls: readonly EthereumObject[],\n simulationContext?: EthereumObject,\n stateOverride?: EthereumObject,\n timeout?: number,\n ],\n JsonValue\n >\n readonly eth_capabilities: RpcMethodSpec<readonly [], JsonValue>\n readonly eth_chainId: RpcMethodSpec<readonly [], Hex>\n readonly eth_createAccessList: RpcMethodSpec<\n readonly [\n transaction: EthereumTransactionRequest,\n block?: EthereumBlockTag,\n ],\n JsonValue\n >\n readonly eth_estimateGas: RpcMethodSpec<\n readonly [\n transaction: EthereumTransactionRequest,\n block?: EthereumBlockTag,\n stateOverride?: EthereumObject,\n ],\n Hex\n >\n readonly eth_feeHistory: RpcMethodSpec<\n readonly [\n blockCount: Hex,\n newestBlock: EthereumBlockTag,\n rewardPercentiles: readonly number[],\n ],\n JsonValue\n >\n readonly eth_gasPrice: RpcMethodSpec<readonly [], Hex>\n readonly eth_getAccount: RpcMethodSpec<\n readonly [address: EthereumAddress, block: EthereumBlockTag],\n JsonValue\n >\n readonly eth_getBalance: RpcMethodSpec<\n readonly [address: EthereumAddress, block?: EthereumBlockTag],\n Hex\n >\n readonly eth_getBlockByHash: RpcMethodSpec<\n readonly [hash: Hex, includeTransactions: boolean],\n JsonValue | null\n >\n readonly eth_getBlockByNumber: RpcMethodSpec<\n readonly [block: EthereumBlockTag, includeTransactions: boolean],\n JsonValue | null\n >\n readonly eth_getBlockReceipts: RpcMethodSpec<\n readonly [block: EthereumBlockTag],\n JsonValue | null\n >\n readonly eth_getBlockTransactionCountByHash: RpcMethodSpec<\n readonly [hash: Hex],\n Hex | null\n >\n readonly eth_getBlockTransactionCountByNumber: RpcMethodSpec<\n readonly [block: EthereumBlockTag],\n Hex | null\n >\n readonly eth_getCode: RpcMethodSpec<\n readonly [address: EthereumAddress, block?: EthereumBlockTag],\n Hex\n >\n readonly eth_getFilterChanges: RpcMethodSpec<readonly [filterId: Hex], JsonValue>\n readonly eth_getFilterLogs: RpcMethodSpec<readonly [filterId: Hex], JsonValue>\n readonly eth_getLogs: RpcMethodSpec<\n readonly [filter?: EthereumFilter],\n JsonValue\n >\n readonly eth_getProof: RpcMethodSpec<\n readonly [\n address: EthereumAddress,\n storageKeys: readonly Hex[],\n block: EthereumBlockTag,\n ],\n JsonValue\n >\n readonly eth_getRawTransactionByHash: RpcMethodSpec<\n readonly [hash: Hex],\n Hex | null\n >\n readonly eth_getStorageAt: RpcMethodSpec<\n readonly [\n address: EthereumAddress,\n position: Hex,\n block?: EthereumBlockTag,\n ],\n Hex\n >\n readonly eth_getTransactionByBlockHashAndIndex: RpcMethodSpec<\n readonly [blockHash: Hex, index: Hex],\n JsonValue | null\n >\n readonly eth_getTransactionByBlockNumberAndIndex: RpcMethodSpec<\n readonly [block: EthereumBlockTag, index: Hex],\n JsonValue | null\n >\n readonly eth_getTransactionByHash: RpcMethodSpec<\n readonly [hash: Hex],\n JsonValue | null\n >\n readonly eth_getTransactionBySenderAndNonce: RpcMethodSpec<\n readonly [sender: EthereumAddress, nonce: Hex],\n JsonValue | null\n >\n readonly eth_getTransactionCount: RpcMethodSpec<\n readonly [address: EthereumAddress, block?: EthereumBlockTag],\n Hex\n >\n readonly eth_getTransactionReceipt: RpcMethodSpec<\n readonly [hash: Hex],\n JsonValue | null\n >\n readonly eth_getUncleCountByBlockHash: RpcMethodSpec<\n readonly [hash: Hex],\n Hex\n >\n readonly eth_getUncleCountByBlockNumber: RpcMethodSpec<\n readonly [block: EthereumBlockTag],\n Hex\n >\n readonly eth_maxPriorityFeePerGas: RpcMethodSpec<readonly [], Hex>\n readonly eth_newBlockFilter: RpcMethodSpec<readonly [], Hex>\n readonly eth_newFilter: RpcMethodSpec<\n readonly [filter?: EthereumFilter],\n Hex\n >\n readonly eth_newPendingTransactionFilter: RpcMethodSpec<readonly [], Hex>\n readonly eth_sendRawTransaction: RpcMethodSpec<\n readonly [transaction: Hex],\n Hex\n >\n readonly eth_signTransaction: RpcMethodSpec<\n readonly [transaction: EthereumTransactionRequest],\n Hex\n >\n readonly eth_simulateV1: RpcMethodSpec<\n readonly [simulation: EthereumObject, block?: EthereumBlockTag],\n JsonValue\n >\n readonly eth_submitWork: RpcMethodSpec<\n readonly [nonce: Hex, proofOfWorkHash: Hex, digest: Hex],\n boolean\n >\n readonly eth_syncing: RpcMethodSpec<readonly [], boolean | JsonValue>\n readonly eth_uninstallFilter: RpcMethodSpec<readonly [filterId: Hex], boolean>\n readonly net_listening: RpcMethodSpec<readonly [], boolean>\n readonly net_peerCount: RpcMethodSpec<readonly [], Hex>\n readonly net_version: RpcMethodSpec<readonly [], string>\n readonly txpool_content: RpcMethodSpec<readonly [], JsonValue>\n readonly txpool_contentFrom: RpcMethodSpec<\n readonly [address: EthereumAddress],\n JsonValue\n >\n readonly txpool_inspect: RpcMethodSpec<readonly [], JsonValue>\n readonly txpool_status: RpcMethodSpec<readonly [], JsonValue>\n readonly web3_clientVersion: RpcMethodSpec<readonly [], string>\n readonly web3_sha3: RpcMethodSpec<readonly [data: Hex], Hex>\n}\n\nexport interface EthereumSubscriptionSchema {\n readonly eth_subscribe: RpcMethodSpec<\n readonly [subscription: string, ...options: readonly unknown[]],\n string\n >\n readonly eth_unsubscribe: RpcMethodSpec<\n readonly [subscriptionId: string],\n boolean\n >\n}\n\nexport const ETHEREUM_RPC_METHODS = [\n 'eth_accounts',\n 'eth_baseFee',\n 'eth_blobBaseFee',\n 'eth_blockNumber',\n 'eth_call',\n 'eth_callMany',\n 'eth_capabilities',\n 'eth_chainId',\n 'eth_createAccessList',\n 'eth_estimateGas',\n 'eth_feeHistory',\n 'eth_gasPrice',\n 'eth_getAccount',\n 'eth_getBalance',\n 'eth_getBlockByHash',\n 'eth_getBlockByNumber',\n 'eth_getBlockReceipts',\n 'eth_getBlockTransactionCountByHash',\n 'eth_getBlockTransactionCountByNumber',\n 'eth_getCode',\n 'eth_getFilterChanges',\n 'eth_getFilterLogs',\n 'eth_getLogs',\n 'eth_getProof',\n 'eth_getRawTransactionByHash',\n 'eth_getStorageAt',\n 'eth_getTransactionByBlockHashAndIndex',\n 'eth_getTransactionByBlockNumberAndIndex',\n 'eth_getTransactionByHash',\n 'eth_getTransactionBySenderAndNonce',\n 'eth_getTransactionCount',\n 'eth_getTransactionReceipt',\n 'eth_getUncleCountByBlockHash',\n 'eth_getUncleCountByBlockNumber',\n 'eth_maxPriorityFeePerGas',\n 'eth_newBlockFilter',\n 'eth_newFilter',\n 'eth_newPendingTransactionFilter',\n 'eth_sendRawTransaction',\n 'eth_signTransaction',\n 'eth_simulateV1',\n 'eth_submitWork',\n 'eth_syncing',\n 'eth_uninstallFilter',\n 'net_listening',\n 'net_peerCount',\n 'net_version',\n 'txpool_content',\n 'txpool_contentFrom',\n 'txpool_inspect',\n 'txpool_status',\n 'web3_clientVersion',\n 'web3_sha3',\n] as const satisfies readonly (keyof EthereumRpcSchema)[]\n\nexport const ETHEREUM_SUBSCRIPTION_METHODS = [\n 'eth_subscribe',\n 'eth_unsubscribe',\n] as const satisfies readonly (keyof EthereumSubscriptionSchema)[]\n\nexport interface EthereumClient {\n readonly rpc: RpcNamespace<EthereumRpcSchema>\n}\n\nexport const createEthereumClient = (\n transport: HttpJsonRpcTransport,\n): EthereumClient => ({\n rpc: createRpcNamespace<EthereumRpcSchema>({\n transport,\n parameterMode: 'positional',\n }),\n})\n","import { ErpcBatchPolicyError } from '../errors'\nimport type { HttpJsonRpcTransport } from '../transport/http'\nimport { createRpcNamespace, type RpcNamespace } from './client'\nimport {\n createEthereumClient,\n type EthereumClient,\n} from './ethereum'\nimport type { JsonValue, RpcBatchCall, RpcMethodSpec } from './types'\n\nexport interface AvalancheEncodingParams {\n readonly encoding?: string\n}\n\nexport interface AvalancheUtxoParams extends AvalancheEncodingParams {\n readonly addresses: readonly string[]\n readonly limit?: number | string\n readonly sourceChain?: string\n readonly startIndex?: Readonly<Record<string, JsonValue>>\n}\n\nexport interface AvalancheAvaxSchema {\n readonly getAtomicTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly txID: string },\n JsonValue\n >\n readonly getAtomicTxStatus: RpcMethodSpec<\n { readonly txID: string },\n JsonValue\n >\n readonly getUTXOs: RpcMethodSpec<\n AvalancheUtxoParams & { readonly sourceChain: string },\n JsonValue\n >\n readonly issueTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly tx: string },\n JsonValue\n >\n}\n\nexport interface AvalancheXChainSchema {\n readonly buildGenesis: RpcMethodSpec<\n AvalancheEncodingParams & {\n readonly genesisData: Readonly<Record<string, JsonValue>>\n readonly networkId: number | string\n },\n JsonValue\n >\n readonly getAllBalances: RpcMethodSpec<{ readonly address: string }, JsonValue>\n readonly getAssetDescription: RpcMethodSpec<\n { readonly assetID: string },\n JsonValue\n >\n readonly getBalance: RpcMethodSpec<\n { readonly address: string; readonly assetID: string },\n JsonValue\n >\n readonly getBlockByHeight: RpcMethodSpec<\n AvalancheEncodingParams & { readonly height: number | string },\n JsonValue\n >\n readonly getHeight: RpcMethodSpec<undefined, JsonValue>\n readonly getTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly txID: string },\n JsonValue\n >\n readonly getTxFee: RpcMethodSpec<undefined, JsonValue>\n readonly getTxStatus: RpcMethodSpec<{ readonly txID: string }, JsonValue>\n readonly getUTXOs: RpcMethodSpec<AvalancheUtxoParams, JsonValue>\n readonly issueTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly tx: string },\n JsonValue\n >\n}\n\nexport interface AvalanchePChainSchema {\n readonly getAllValidatorsAt: RpcMethodSpec<\n { readonly height: number | string },\n JsonValue\n >\n readonly getBalance: RpcMethodSpec<\n { readonly addresses?: readonly string[] },\n JsonValue\n >\n readonly getBlockchainStatus: RpcMethodSpec<\n { readonly blockchainID?: string },\n JsonValue\n >\n readonly getBlockchains: RpcMethodSpec<undefined, JsonValue>\n readonly getCurrentSupply: RpcMethodSpec<undefined, JsonValue>\n readonly getCurrentValidators: RpcMethodSpec<\n { readonly nodeIDs?: readonly string[]; readonly subnetID?: string },\n JsonValue\n >\n readonly getFeeConfig: RpcMethodSpec<undefined, JsonValue>\n readonly getFeeState: RpcMethodSpec<undefined, JsonValue>\n readonly getHeight: RpcMethodSpec<undefined, JsonValue>\n readonly getMinStake: RpcMethodSpec<undefined, JsonValue>\n readonly getRewardUTXOs: RpcMethodSpec<\n AvalancheEncodingParams & { readonly txID?: string },\n JsonValue\n >\n readonly getStake: RpcMethodSpec<\n AvalancheEncodingParams & {\n readonly addresses?: readonly string[]\n readonly validatorsOnly?: boolean\n },\n JsonValue\n >\n readonly getStakingAssetID: RpcMethodSpec<\n { readonly subnetID?: string },\n JsonValue\n >\n readonly getSubnets: RpcMethodSpec<\n { readonly ids?: readonly string[] },\n JsonValue\n >\n readonly getTimestamp: RpcMethodSpec<undefined, JsonValue>\n readonly getTotalStake: RpcMethodSpec<\n { readonly subnetID?: string },\n JsonValue\n >\n readonly getTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly txID: string },\n JsonValue\n >\n readonly getTxStatus: RpcMethodSpec<{ readonly txID: string }, JsonValue>\n readonly getUTXOs: RpcMethodSpec<AvalancheUtxoParams, JsonValue>\n readonly getValidatorFeeConfig: RpcMethodSpec<undefined, JsonValue>\n readonly getValidatorFeeState: RpcMethodSpec<undefined, JsonValue>\n readonly getValidatorsAt: RpcMethodSpec<\n { readonly height: number | string; readonly subnetID?: string },\n JsonValue\n >\n readonly issueTx: RpcMethodSpec<\n AvalancheEncodingParams & { readonly tx: string },\n JsonValue\n >\n readonly sampleValidators: RpcMethodSpec<\n { readonly size: number | string; readonly subnetID?: string },\n JsonValue\n >\n readonly validatedBy: RpcMethodSpec<\n { readonly blockchainID: string },\n JsonValue\n >\n readonly validates: RpcMethodSpec<{ readonly subnetID: string }, JsonValue>\n}\n\nexport interface AvalancheProposerVmSchema {\n readonly getCurrentEpoch: RpcMethodSpec<undefined, JsonValue>\n readonly getProposedHeight: RpcMethodSpec<undefined, JsonValue>\n}\n\nexport interface AvalancheInfoSchema {\n readonly upgrades: RpcMethodSpec<undefined, JsonValue>\n}\n\nexport interface AvalancheIndexSchema {\n readonly getContainerByID: RpcMethodSpec<\n AvalancheEncodingParams & { readonly id: string },\n JsonValue\n >\n readonly getContainerByIndex: RpcMethodSpec<\n AvalancheEncodingParams & { readonly index: number | string },\n JsonValue\n >\n readonly getContainerRange: RpcMethodSpec<\n AvalancheEncodingParams & {\n readonly numToFetch: number | string\n readonly startIndex: number | string\n },\n JsonValue\n >\n readonly getIndex: RpcMethodSpec<\n AvalancheEncodingParams & { readonly containerID: string },\n JsonValue\n >\n readonly getLastAccepted: RpcMethodSpec<AvalancheEncodingParams, JsonValue>\n readonly isAccepted: RpcMethodSpec<\n AvalancheEncodingParams & { readonly containerID: string },\n JsonValue\n >\n}\n\nexport const AVALANCHE_AVAX_METHODS = [\n 'avax.getAtomicTx',\n 'avax.getAtomicTxStatus',\n 'avax.getUTXOs',\n 'avax.issueTx',\n] as const\n\nexport const AVALANCHE_X_CHAIN_METHODS = [\n 'avm.buildGenesis',\n 'avm.getAllBalances',\n 'avm.getAssetDescription',\n 'avm.getBalance',\n 'avm.getBlockByHeight',\n 'avm.getHeight',\n 'avm.getTx',\n 'avm.getTxFee',\n 'avm.getTxStatus',\n 'avm.getUTXOs',\n 'avm.issueTx',\n] as const\n\nexport const AVALANCHE_P_CHAIN_METHODS = [\n 'platform.getAllValidatorsAt',\n 'platform.getBalance',\n 'platform.getBlockchainStatus',\n 'platform.getBlockchains',\n 'platform.getCurrentSupply',\n 'platform.getCurrentValidators',\n 'platform.getFeeConfig',\n 'platform.getFeeState',\n 'platform.getHeight',\n 'platform.getMinStake',\n 'platform.getRewardUTXOs',\n 'platform.getStake',\n 'platform.getStakingAssetID',\n 'platform.getSubnets',\n 'platform.getTimestamp',\n 'platform.getTotalStake',\n 'platform.getTx',\n 'platform.getTxStatus',\n 'platform.getUTXOs',\n 'platform.getValidatorFeeConfig',\n 'platform.getValidatorFeeState',\n 'platform.getValidatorsAt',\n 'platform.issueTx',\n 'platform.sampleValidators',\n 'platform.validatedBy',\n 'platform.validates',\n] as const\n\nexport const AVALANCHE_PROPOSER_VM_METHODS = [\n 'proposervm.getCurrentEpoch',\n 'proposervm.getProposedHeight',\n] as const\n\nexport const AVALANCHE_INFO_METHODS = ['info.upgrades'] as const\n\nexport const AVALANCHE_INDEX_METHODS = [\n 'index.getContainerByID',\n 'index.getContainerByIndex',\n 'index.getContainerRange',\n 'index.getIndex',\n 'index.getLastAccepted',\n 'index.isAccepted',\n] as const\n\nconst rejectNativeBatch = (calls: readonly RpcBatchCall[]) => {\n if (calls.length > 0) {\n throw new ErpcBatchPolicyError(\n 'Avalanche native RPC methods do not support batching',\n )\n }\n}\n\nconst nativeNamespace = <\n TSchema extends {\n readonly [TMethod in keyof TSchema]: RpcMethodSpec<\n object | readonly unknown[] | undefined,\n unknown\n >\n },\n>(transport: HttpJsonRpcTransport, methodPrefix: string) =>\n createRpcNamespace<TSchema>({\n methodPrefix,\n parameterMode: 'named',\n transport,\n validateBatch: rejectNativeBatch,\n })\n\nexport interface AvalancheIndexClient {\n readonly cChainBlocks: RpcNamespace<AvalancheIndexSchema>\n readonly pChainBlocks: RpcNamespace<AvalancheIndexSchema>\n readonly xChainBlocks: RpcNamespace<AvalancheIndexSchema>\n readonly xChainTransactions: RpcNamespace<AvalancheIndexSchema>\n}\n\nexport interface AvalancheClient extends EthereumClient {\n readonly avax: RpcNamespace<AvalancheAvaxSchema>\n readonly index: AvalancheIndexClient\n readonly info: RpcNamespace<AvalancheInfoSchema>\n readonly pChain: RpcNamespace<AvalanchePChainSchema>\n readonly proposerVm: RpcNamespace<AvalancheProposerVmSchema>\n readonly xChain: RpcNamespace<AvalancheXChainSchema>\n}\n\nexport interface AvalancheIndexTransports {\n readonly cChainBlocks: HttpJsonRpcTransport\n readonly pChainBlocks: HttpJsonRpcTransport\n readonly xChainBlocks: HttpJsonRpcTransport\n readonly xChainTransactions: HttpJsonRpcTransport\n}\n\nexport const createAvalancheClient = (\n transport: HttpJsonRpcTransport,\n indexTransports: AvalancheIndexTransports,\n nativeTransport: HttpJsonRpcTransport = transport,\n): AvalancheClient => ({\n ...createEthereumClient(transport),\n avax: nativeNamespace<AvalancheAvaxSchema>(nativeTransport, 'avax'),\n xChain: nativeNamespace<AvalancheXChainSchema>(nativeTransport, 'avm'),\n pChain: nativeNamespace<AvalanchePChainSchema>(nativeTransport, 'platform'),\n proposerVm: nativeNamespace<AvalancheProposerVmSchema>(\n nativeTransport,\n 'proposervm',\n ),\n info: nativeNamespace<AvalancheInfoSchema>(nativeTransport, 'info'),\n index: {\n cChainBlocks: nativeNamespace<AvalancheIndexSchema>(\n indexTransports.cChainBlocks,\n 'index',\n ),\n pChainBlocks: nativeNamespace<AvalancheIndexSchema>(\n indexTransports.pChainBlocks,\n 'index',\n ),\n xChainBlocks: nativeNamespace<AvalancheIndexSchema>(\n indexTransports.xChainBlocks,\n 'index',\n ),\n xChainTransactions: nativeNamespace<AvalancheIndexSchema>(\n indexTransports.xChainTransactions,\n 'index',\n ),\n },\n})\n","import { ErpcBatchPolicyError } from '../errors'\nimport type { HttpJsonRpcTransport } from '../transport/http'\nimport { createRpcNamespace, type RpcNamespace } from './client'\nimport type {\n JsonObject,\n JsonValue,\n RpcBatchCall,\n RpcMethodSpec,\n} from './types'\n\nexport type SolanaCommitment = 'confirmed' | 'finalized' | 'processed'\nexport type SolanaEncoding = 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed'\nexport type SolanaConfig = Readonly<Record<string, unknown>>\n\nexport interface SolanaContext {\n readonly apiVersion?: string\n readonly slot: number\n}\n\nexport interface SolanaContextResult<TValue> {\n readonly context: SolanaContext\n readonly value: TValue\n}\n\nexport interface PriorityFeeEstimate {\n readonly priorityFeeEstimate: number\n readonly [key: string]: unknown\n}\n\nexport interface SolanaRpcSchema {\n readonly getAccountInfo: RpcMethodSpec<\n readonly [address: string, config?: SolanaConfig],\n SolanaContextResult<JsonValue | null>\n >\n readonly getBalance: RpcMethodSpec<\n readonly [address: string, config?: SolanaConfig],\n SolanaContextResult<number>\n >\n readonly getBlock: RpcMethodSpec<\n readonly [slot: number, config?: SolanaConfig],\n JsonValue | null\n >\n readonly getBlockCommitment: RpcMethodSpec<\n readonly [slot: number],\n JsonValue\n >\n readonly getBlockHeight: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n number\n >\n readonly getBlockProduction: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getBlockTime: RpcMethodSpec<\n readonly [slot: number],\n number | null\n >\n readonly getBlocks: RpcMethodSpec<\n readonly [startSlot: number, endSlot?: number, commitment?: SolanaCommitment],\n readonly number[]\n >\n readonly getBlocksWithLimit: RpcMethodSpec<\n readonly [startSlot: number, limit: number, commitment?: SolanaCommitment],\n readonly number[]\n >\n readonly getClusterNodes: RpcMethodSpec<readonly [], JsonValue>\n readonly getEpochInfo: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getEpochSchedule: RpcMethodSpec<readonly [], JsonValue>\n readonly getFeeForMessage: RpcMethodSpec<\n readonly [message: string, config?: SolanaConfig],\n SolanaContextResult<number | null>\n >\n readonly getFirstAvailableBlock: RpcMethodSpec<readonly [], number>\n readonly getGenesisHash: RpcMethodSpec<readonly [], string>\n readonly getHealth: RpcMethodSpec<readonly [], string>\n readonly getHighestSnapshotSlot: RpcMethodSpec<readonly [], JsonValue>\n readonly getIdentity: RpcMethodSpec<readonly [], JsonValue>\n readonly getInflationGovernor: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getInflationRate: RpcMethodSpec<readonly [], JsonValue>\n readonly getInflationReward: RpcMethodSpec<\n readonly [addresses: readonly string[], config?: SolanaConfig],\n JsonValue\n >\n readonly getLargestAccounts: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getLatestBlockhash: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getLeaderSchedule: RpcMethodSpec<\n readonly [slot?: number | null, config?: SolanaConfig],\n JsonValue | null\n >\n readonly getMaxRetransmitSlot: RpcMethodSpec<readonly [], number>\n readonly getMaxShredInsertSlot: RpcMethodSpec<readonly [], number>\n readonly getMinimumBalanceForRentExemption: RpcMethodSpec<\n readonly [dataLength: number, config?: SolanaConfig],\n number\n >\n readonly getMultipleAccounts: RpcMethodSpec<\n readonly [addresses: readonly string[], config?: SolanaConfig],\n SolanaContextResult<JsonValue>\n >\n readonly getParsedTransaction: RpcMethodSpec<\n readonly [signature: string, config?: SolanaConfig],\n JsonValue | null\n >\n readonly getPriorityFeeEstimate: RpcMethodSpec<\n readonly [request: SolanaConfig],\n PriorityFeeEstimate\n >\n readonly getProgramAccounts: RpcMethodSpec<\n readonly [programAddress: string, config?: SolanaConfig],\n JsonValue\n >\n readonly getProgramAccountsV2: RpcMethodSpec<\n readonly [programAddress: string, config: SolanaConfig],\n JsonValue\n >\n readonly getRecentPerformanceSamples: RpcMethodSpec<\n readonly [limit?: number],\n JsonValue\n >\n readonly getRecentPrioritizationFees: RpcMethodSpec<\n readonly [addresses?: readonly string[]],\n JsonValue\n >\n readonly getSignatureStatuses: RpcMethodSpec<\n readonly [signatures: readonly string[], config?: SolanaConfig],\n JsonValue\n >\n readonly getSignaturesForAddress: RpcMethodSpec<\n readonly [address: string, config?: SolanaConfig],\n JsonValue\n >\n readonly getSlot: RpcMethodSpec<readonly [config?: SolanaConfig], number>\n readonly getSlotLeader: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n string\n >\n readonly getSlotLeaders: RpcMethodSpec<\n readonly [startSlot: number, limit: number],\n readonly string[]\n >\n readonly getStakeMinimumDelegation: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n SolanaContextResult<number>\n >\n readonly getSupply: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly getTokenAccountBalance: RpcMethodSpec<\n readonly [address: string, config?: SolanaConfig],\n JsonValue\n >\n readonly getTokenAccountsByDelegate: RpcMethodSpec<\n readonly [delegate: string, filter: SolanaConfig, config?: SolanaConfig],\n JsonValue\n >\n readonly getTokenAccountsByOwner: RpcMethodSpec<\n readonly [owner: string, filter: SolanaConfig, config?: SolanaConfig],\n JsonValue\n >\n readonly getTokenLargestAccounts: RpcMethodSpec<\n readonly [mint: string, config?: SolanaConfig],\n JsonValue\n >\n readonly getTokenSupply: RpcMethodSpec<\n readonly [mint: string, config?: SolanaConfig],\n JsonValue\n >\n readonly getTransaction: RpcMethodSpec<\n readonly [signature: string, config?: SolanaConfig],\n JsonValue | null\n >\n readonly getTransactionCount: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n number\n >\n readonly getVersion: RpcMethodSpec<readonly [], JsonObject>\n readonly getVoteAccounts: RpcMethodSpec<\n readonly [config?: SolanaConfig],\n JsonValue\n >\n readonly isBlockhashValid: RpcMethodSpec<\n readonly [blockhash: string, config?: SolanaConfig],\n SolanaContextResult<boolean>\n >\n readonly minimumLedgerSlot: RpcMethodSpec<readonly [], number>\n readonly requestAirdrop: RpcMethodSpec<\n readonly [address: string, lamports: number, config?: SolanaConfig],\n string\n >\n readonly sendTransaction: RpcMethodSpec<\n readonly [transaction: string, config?: SolanaConfig],\n string\n >\n readonly simulateTransaction: RpcMethodSpec<\n readonly [transaction: string, config?: SolanaConfig],\n JsonValue\n >\n}\n\nexport interface AssetRequest {\n readonly id: string\n readonly displayOptions?: Readonly<Record<string, boolean>>\n}\n\nexport interface AssetBatchRequest {\n readonly ids: readonly string[]\n readonly displayOptions?: Readonly<Record<string, boolean>>\n}\n\nexport interface AssetListRequest {\n readonly cursor?: string\n readonly limit?: number\n readonly page?: number\n readonly [key: string]: unknown\n}\n\nexport type IndexedAsset = Readonly<Record<string, unknown>>\nexport type IndexedAssetProof = Readonly<Record<string, unknown>>\n\nexport interface IndexedAssetList<TItem = IndexedAsset> {\n readonly cursor?: string\n readonly items: readonly TItem[]\n readonly limit?: number\n readonly page?: number\n readonly total?: number\n readonly [key: string]: unknown\n}\n\nexport interface SolanaDasSchema {\n readonly getAsset: RpcMethodSpec<AssetRequest, IndexedAsset | null>\n readonly getAssetBatch: RpcMethodSpec<\n AssetBatchRequest,\n readonly (IndexedAsset | null)[]\n >\n readonly getAssetProof: RpcMethodSpec<AssetRequest, IndexedAssetProof | null>\n readonly getAssetProofBatch: RpcMethodSpec<\n AssetBatchRequest,\n readonly (IndexedAssetProof | null)[]\n >\n readonly getAssetsByAuthority: RpcMethodSpec<\n AssetListRequest & { readonly authorityAddress: string },\n IndexedAssetList\n >\n readonly getAssetsByCreator: RpcMethodSpec<\n AssetListRequest & {\n readonly creatorAddress: string\n readonly onlyVerified?: boolean\n },\n IndexedAssetList\n >\n readonly getAssetsByGroup: RpcMethodSpec<\n AssetListRequest & {\n readonly groupKey: string\n readonly groupValue: string\n },\n IndexedAssetList\n >\n readonly getAssetsByOwner: RpcMethodSpec<\n AssetListRequest & { readonly ownerAddress: string },\n IndexedAssetList\n >\n readonly getNftEditions: RpcMethodSpec<\n AssetListRequest & { readonly mint: string },\n Readonly<Record<string, unknown>>\n >\n readonly getSignaturesForAsset: RpcMethodSpec<\n AssetListRequest & { readonly id: string },\n Readonly<Record<string, unknown>>\n >\n readonly getTokenAccounts: RpcMethodSpec<\n AssetListRequest,\n Readonly<Record<string, unknown>>\n >\n readonly getTokensByDelegate: RpcMethodSpec<\n AssetListRequest & { readonly delegate: string },\n Readonly<Record<string, unknown>>\n >\n readonly getTokensByOwner: RpcMethodSpec<\n AssetListRequest & { readonly owner: string },\n Readonly<Record<string, unknown>>\n >\n readonly searchAssets: RpcMethodSpec<AssetListRequest, IndexedAssetList>\n}\n\nexport interface NumericFilter {\n readonly eq?: number\n readonly gt?: number\n readonly gte?: number\n readonly lt?: number\n readonly lte?: number\n}\n\nexport interface AddressTransactionsOptions {\n readonly before?: string\n readonly commitment?: SolanaCommitment\n readonly encoding?: 'base58' | 'base64' | 'json'\n readonly filters?: Readonly<Record<string, unknown>>\n readonly limit?: number\n readonly maxSupportedTransactionVersion?: number\n readonly paginationToken?: string\n readonly sortOrder?: 'asc' | 'desc'\n readonly transactionDetails?: 'full' | 'signatures'\n readonly until?: string\n}\n\nexport interface AddressTransaction {\n readonly blockTime: number | null\n readonly confirmationStatus: SolanaCommitment\n readonly err: unknown\n readonly memo: string | null\n readonly meta?: unknown\n readonly signature: string\n readonly slot: number\n readonly transaction?: unknown\n readonly transactionIndex: number\n readonly version?: unknown\n readonly [key: string]: unknown\n}\n\nexport interface AddressTransactionPage {\n readonly data: readonly AddressTransaction[]\n readonly paginationToken: string | null\n readonly windowStart: number | null\n}\n\nexport interface AddressTransfersOptions {\n readonly commitment?: SolanaCommitment\n readonly direction?: 'any' | 'in' | 'out'\n readonly filters?: {\n readonly amount?: NumericFilter\n readonly blockTime?: NumericFilter\n readonly slot?: NumericFilter\n }\n readonly limit?: number\n readonly mint?: string\n readonly paginationToken?: string\n readonly solMode?: 'merged' | 'separate'\n readonly sortOrder?: 'asc' | 'desc'\n readonly with?: string\n}\n\nexport interface AddressTransfer {\n readonly amount: string\n readonly blockTime: number | null\n readonly confirmationStatus: 'finalized'\n readonly decimals: number\n readonly feeAmount: string | null\n readonly feeUiAmount: string | null\n readonly fromTokenAccount: string | null\n readonly fromUserAccount: string | null\n readonly innerInstructionIdx: number\n readonly instructionIdx: number\n readonly mint: string | null\n readonly signature: string\n readonly slot: number\n readonly toTokenAccount: string | null\n readonly toUserAccount: string | null\n readonly transactionIdx: number\n readonly type:\n | 'burn'\n | 'changeOwner'\n | 'mint'\n | 'transfer'\n | 'unwrap'\n | 'withdrawWithheldFee'\n | 'wrap'\n readonly uiAmount: string\n readonly [key: string]: unknown\n}\n\nexport interface AddressTransferPage {\n readonly data: readonly AddressTransfer[]\n readonly paginationToken: string | null\n readonly windowStart: number | null\n}\n\nexport interface SolanaHistorySchema {\n readonly getTransactionsForAddress: RpcMethodSpec<\n readonly [address: string, options?: AddressTransactionsOptions],\n AddressTransactionPage | null\n >\n readonly getTransfersByAddress: RpcMethodSpec<\n readonly [address: string, options?: AddressTransfersOptions],\n AddressTransferPage\n >\n}\n\nexport interface PingMeasurement {\n readonly city: string | null\n readonly country: string | null\n readonly fromIp: string | null\n readonly icmpReplied: boolean\n readonly lat: number | null\n readonly lon: number | null\n readonly measuredAt: string | null\n readonly ms: number | null\n readonly org: string | null\n readonly postal: string | null\n readonly region: string | null\n readonly timezone: string | null\n readonly [key: string]: unknown\n}\n\nexport interface LeaderSlot {\n readonly epoch: number\n readonly featureSet: string | null\n readonly gossipPort: number | null\n readonly gossipUpdatedAt: string | null\n readonly identity: string\n readonly ipAddress: string | null\n readonly leaderCity: string | null\n readonly leaderCountry: string | null\n readonly leaderLat: number | null\n readonly leaderLon: number | null\n readonly leaderOrg: string | null\n readonly leaderRegion: string | null\n readonly leaderTimezone: string | null\n readonly pingToLeaders: readonly PingMeasurement[]\n readonly rpcAddress: string | null\n readonly slot: string\n readonly stakeWeight: number\n readonly tpuPort: number | null\n readonly tpuQuicPort: number | null\n readonly version: string | null\n readonly [key: string]: unknown\n}\n\nexport interface LeaderSlotsResult {\n readonly data: readonly LeaderSlot[]\n readonly message: string\n readonly success: boolean\n readonly total: number\n readonly [key: string]: unknown\n}\n\nexport interface ValidatorInformation\n extends Omit<LeaderSlot, 'epoch' | 'slot'> {\n readonly gossipNodeId: number | null\n readonly slotCount: number\n}\n\nexport interface ValidatorsInformationOptions {\n readonly country?: string\n readonly limit?: number\n readonly region?: string\n}\n\nexport interface ValidatorsInformationResult {\n readonly data: readonly ValidatorInformation[]\n readonly epoch: number\n readonly message: string\n readonly success: boolean\n readonly total: number\n readonly totalValidators: number\n readonly [key: string]: unknown\n}\n\nexport interface SolanaLeaderSchema {\n readonly getLeaderSlots: RpcMethodSpec<\n readonly [slot: number],\n LeaderSlotsResult\n >\n readonly getValidatorsInformation: RpcMethodSpec<\n readonly [options: ValidatorsInformationOptions],\n ValidatorsInformationResult\n >\n}\n\nexport type AnalyticsTimeBound = number | string\n\nexport interface TopProgramsOptions {\n readonly includeVotes?: boolean\n readonly limit?: number\n readonly since?: AnalyticsTimeBound\n readonly until?: AnalyticsTimeBound\n}\n\nexport interface TopProgramRow {\n readonly errors: string\n readonly invocations: string\n readonly program: string\n readonly total_cus: string\n readonly [key: string]: unknown\n}\n\nexport type SlotStatsOptions =\n | { readonly slot: number }\n | { readonly fromSlot: number; readonly toSlot: number }\n\nexport interface SlotStatsRow {\n readonly block_time: number\n readonly non_vote_transaction_count: number\n readonly slot: number\n readonly transaction_count: number\n readonly vote_transaction_count: number\n readonly [key: string]: unknown\n}\n\nexport interface TpsTimeseriesOptions {\n readonly bucketSec?: number\n readonly from: AnalyticsTimeBound\n readonly to: AnalyticsTimeBound\n}\n\nexport interface TpsBucket {\n readonly bucket: number\n readonly non_vote_tps: number\n readonly total_tps: number\n readonly [key: string]: unknown\n}\n\nexport interface EpochSummary {\n readonly distinct_programs: string\n readonly epoch: number\n readonly first_block_time: number\n readonly last_block_time: number\n readonly non_vote_txs: string\n readonly program_invocations: string\n readonly slots: string\n readonly total_txs: string\n readonly vote_txs: string\n readonly [key: string]: unknown\n}\n\nexport interface ProgramStatsOptions {\n readonly bucketSec?: number\n readonly programIdBase58: string\n readonly since?: AnalyticsTimeBound\n readonly until?: AnalyticsTimeBound\n}\n\nexport interface ProgramStatsBucket {\n readonly bucket: number\n readonly errors: string\n readonly invocations: string\n readonly total_cus: string\n readonly [key: string]: unknown\n}\n\nexport interface SolanaAnalyticsSchema {\n readonly jetEpochSummary: RpcMethodSpec<\n readonly [options: { readonly epoch: number }],\n EpochSummary | null\n >\n readonly jetProgramStats: RpcMethodSpec<\n readonly [options: ProgramStatsOptions],\n readonly ProgramStatsBucket[]\n >\n readonly jetSlotStats: RpcMethodSpec<\n readonly [options: SlotStatsOptions],\n readonly SlotStatsRow[]\n >\n readonly jetTopPrograms: RpcMethodSpec<\n readonly [options: TopProgramsOptions],\n readonly TopProgramRow[]\n >\n readonly jetTpsTimeseries: RpcMethodSpec<\n readonly [options: TpsTimeseriesOptions],\n readonly TpsBucket[]\n >\n}\n\nexport const SOLANA_RPC_METHODS = [\n 'getAccountInfo',\n 'getBalance',\n 'getBlock',\n 'getBlockCommitment',\n 'getBlockHeight',\n 'getBlockProduction',\n 'getBlockTime',\n 'getBlocks',\n 'getBlocksWithLimit',\n 'getClusterNodes',\n 'getEpochInfo',\n 'getEpochSchedule',\n 'getFeeForMessage',\n 'getFirstAvailableBlock',\n 'getGenesisHash',\n 'getHealth',\n 'getHighestSnapshotSlot',\n 'getIdentity',\n 'getInflationGovernor',\n 'getInflationRate',\n 'getInflationReward',\n 'getLargestAccounts',\n 'getLatestBlockhash',\n 'getLeaderSchedule',\n 'getMaxRetransmitSlot',\n 'getMaxShredInsertSlot',\n 'getMinimumBalanceForRentExemption',\n 'getMultipleAccounts',\n 'getParsedTransaction',\n 'getPriorityFeeEstimate',\n 'getProgramAccounts',\n 'getProgramAccountsV2',\n 'getRecentPerformanceSamples',\n 'getRecentPrioritizationFees',\n 'getSignatureStatuses',\n 'getSignaturesForAddress',\n 'getSlot',\n 'getSlotLeader',\n 'getSlotLeaders',\n 'getStakeMinimumDelegation',\n 'getSupply',\n 'getTokenAccountBalance',\n 'getTokenAccountsByDelegate',\n 'getTokenAccountsByOwner',\n 'getTokenLargestAccounts',\n 'getTokenSupply',\n 'getTransaction',\n 'getTransactionCount',\n 'getVersion',\n 'getVoteAccounts',\n 'isBlockhashValid',\n 'minimumLedgerSlot',\n 'requestAirdrop',\n 'sendTransaction',\n 'simulateTransaction',\n] as const satisfies readonly (keyof SolanaRpcSchema)[]\n\nexport const SOLANA_DAS_METHODS = [\n 'getAsset',\n 'getAssetBatch',\n 'getAssetProof',\n 'getAssetProofBatch',\n 'getAssetsByAuthority',\n 'getAssetsByCreator',\n 'getAssetsByGroup',\n 'getAssetsByOwner',\n 'getNftEditions',\n 'getSignaturesForAsset',\n 'getTokenAccounts',\n 'getTokensByDelegate',\n 'getTokensByOwner',\n 'searchAssets',\n] as const satisfies readonly (keyof SolanaDasSchema)[]\n\nexport const SOLANA_HISTORY_METHODS = [\n 'getTransactionsForAddress',\n 'getTransfersByAddress',\n] as const satisfies readonly (keyof SolanaHistorySchema)[]\n\nexport const SOLANA_LEADER_METHODS = [\n 'getLeaderSlots',\n 'getValidatorsInformation',\n] as const satisfies readonly (keyof SolanaLeaderSchema)[]\n\nexport const SOLANA_ANALYTICS_METHODS = [\n 'jetEpochSummary',\n 'jetProgramStats',\n 'jetSlotStats',\n 'jetTopPrograms',\n 'jetTpsTimeseries',\n] as const satisfies readonly (keyof SolanaAnalyticsSchema)[]\n\nconst heavyRpcMethods = new Set<string>([\n 'getPriorityFeeEstimate',\n 'getProgramAccounts',\n 'getProgramAccountsV2',\n 'getTokenLargestAccounts',\n])\n\nconst validateStandardBatch = (calls: readonly RpcBatchCall[]) => {\n let containsHeavy = false\n let containsStandard = false\n for (const call of calls) {\n if (heavyRpcMethods.has(call.method)) containsHeavy = true\n else containsStandard = true\n }\n if (containsHeavy && containsStandard) {\n throw new ErpcBatchPolicyError(\n 'Solana indexed and standard RPC methods cannot share a batch',\n )\n }\n}\n\nconst rejectLeaderBatch = (calls: readonly RpcBatchCall[]) => {\n if (calls.length > 0) {\n throw new ErpcBatchPolicyError('Leader RPC methods do not support batching')\n }\n}\n\nexport interface SolanaClient {\n readonly analytics: RpcNamespace<SolanaAnalyticsSchema>\n readonly das: RpcNamespace<SolanaDasSchema>\n readonly history: RpcNamespace<SolanaHistorySchema>\n readonly leaders: RpcNamespace<SolanaLeaderSchema>\n readonly rpc: RpcNamespace<SolanaRpcSchema>\n}\n\nexport const createSolanaClient = (\n transport: HttpJsonRpcTransport,\n): SolanaClient => ({\n rpc: createRpcNamespace<SolanaRpcSchema>({\n transport,\n parameterMode: 'positional',\n validateBatch: validateStandardBatch,\n }),\n das: createRpcNamespace<SolanaDasSchema>({\n transport,\n parameterMode: 'named',\n }),\n history: createRpcNamespace<SolanaHistorySchema>({\n transport,\n parameterMode: 'positional',\n }),\n leaders: createRpcNamespace<SolanaLeaderSchema>({\n transport,\n parameterMode: 'positional',\n validateBatch: rejectLeaderBatch,\n }),\n analytics: createRpcNamespace<SolanaAnalyticsSchema>({\n transport,\n parameterMode: 'positional',\n }),\n})\n","import {\n ErpcAbortedError,\n ErpcConfigError,\n ErpcInvalidResponseError,\n ErpcJsonRpcError,\n ErpcNotConfiguredError,\n ErpcTimeoutError,\n ErpcTransportError,\n directRedactionVariants,\n redactJsonRpcError,\n} from '../errors'\nimport type { JsonRpcTransport } from '../rpc/client'\nimport type {\n JsonRpcErrorObject,\n JsonRpcId,\n JsonRpcParams,\n RpcBatchCall,\n RpcSendOptions,\n} from '../rpc/types'\n\nexport interface RpcNotification {\n readonly jsonrpc: '2.0'\n readonly method: string\n readonly params: unknown\n}\n\nexport type RpcNotificationListener = (notification: RpcNotification) => void\n\nexport interface WebSocketTransportConfig {\n readonly endpoint: URL\n readonly maxBatchSize?: number\n readonly redactionHeaders?: Readonly<Record<string, string>>\n readonly timeoutMs: number\n readonly unavailableNamespace?: string\n readonly webSocket?: typeof globalThis.WebSocket\n}\n\ninterface PendingResponse {\n readonly cleanup: () => void\n readonly reject: (reason: unknown) => void\n readonly resolve: (value: unknown) => void\n}\n\nconst isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst isRpcError = (value: unknown): value is JsonRpcErrorObject =>\n isObject(value) &&\n typeof value.code === 'number' &&\n typeof value.message === 'string'\n\nconst publicEndpoint = (endpoint: URL): string => {\n const url = new URL(endpoint)\n url.search = ''\n url.hash = ''\n return url.toString()\n}\n\nexport class WebSocketJsonRpcTransport implements JsonRpcTransport {\n readonly endpoint: string\n readonly maxBatchSize: number\n\n readonly #connectionUrl: string\n readonly #credential: string | undefined\n readonly #listeners = new Set<RpcNotificationListener>()\n readonly #pending = new Map<JsonRpcId, PendingResponse>()\n readonly #redactionVariants: readonly string[]\n readonly #timeoutMs: number\n readonly #unavailableNamespace: string | undefined\n readonly #webSocket?: typeof globalThis.WebSocket\n #connectPromise: Promise<void> | undefined\n #nextId = 1\n #socket: WebSocket | undefined\n\n constructor(config: WebSocketTransportConfig) {\n const implementation = config.webSocket ?? globalThis.WebSocket\n if (typeof implementation === 'function') this.#webSocket = implementation\n this.#credential = config.endpoint.searchParams.get('api-key') ?? undefined\n this.#connectionUrl = config.endpoint.toString()\n this.endpoint = publicEndpoint(config.endpoint)\n this.maxBatchSize = config.maxBatchSize ?? 256\n this.#redactionVariants = directRedactionVariants(\n config.endpoint,\n config.redactionHeaders,\n )\n this.#timeoutMs = config.timeoutMs\n this.#unavailableNamespace = config.unavailableNamespace\n }\n\n async connect(): Promise<void> {\n if (this.#socket?.readyState === 1) return\n if (this.#connectPromise) return this.#connectPromise\n if (this.#unavailableNamespace !== undefined) {\n throw new ErpcNotConfiguredError(this.#unavailableNamespace)\n }\n if (!this.#webSocket) {\n throw new ErpcConfigError(\n 'A WebSocket implementation is required for subscriptions',\n )\n }\n\n this.#connectPromise = new Promise<void>((resolve, reject) => {\n let socket: WebSocket\n try {\n socket = new this.#webSocket!(this.#connectionUrl)\n } catch {\n reject(new ErpcTransportError('Unable to connect to ERPC WebSocket'))\n return\n }\n this.#socket = socket\n\n const timeout = setTimeout(() => {\n try {\n socket.close()\n } catch {\n // The timeout result is stable even when a custom socket rejects close.\n }\n reject(new ErpcTimeoutError(this.#timeoutMs))\n }, this.#timeoutMs)\n\n socket.addEventListener(\n 'open',\n () => {\n clearTimeout(timeout)\n resolve()\n },\n { once: true },\n )\n socket.addEventListener(\n 'error',\n () => {\n clearTimeout(timeout)\n reject(new ErpcTransportError('Unable to connect to ERPC WebSocket'))\n },\n { once: true },\n )\n socket.addEventListener('message', (event: MessageEvent<unknown>) => {\n void this.#onMessage(event.data)\n })\n socket.addEventListener('close', () => {\n this.#socket = undefined\n this.#connectPromise = undefined\n const error = new ErpcTransportError('ERPC WebSocket connection closed')\n for (const pending of this.#pending.values()) pending.reject(error)\n this.#pending.clear()\n })\n }).catch((error: unknown) => {\n this.#connectPromise = undefined\n throw error\n })\n\n return this.#connectPromise\n }\n\n close(code = 1000, reason = 'Client closed connection'): void {\n this.#socket?.close(code, reason)\n this.#socket = undefined\n this.#connectPromise = undefined\n }\n\n onNotification(listener: RpcNotificationListener): () => void {\n this.#listeners.add(listener)\n return () => this.#listeners.delete(listener)\n }\n\n async request<TResult>(\n method: string,\n params?: JsonRpcParams,\n options: RpcSendOptions = {},\n ): Promise<TResult> {\n await this.connect()\n const id = this.#id()\n const promise = this.#waitFor<TResult>(id, options)\n const request: Record<string, unknown> = { jsonrpc: '2.0', id, method }\n if (params !== undefined) request.params = params\n this.#send(request, id)\n return promise\n }\n\n async batch<TResult extends readonly unknown[]>(\n calls: readonly RpcBatchCall[],\n options: RpcSendOptions = {},\n ): Promise<TResult> {\n if (this.#unavailableNamespace !== undefined) {\n throw new ErpcNotConfiguredError(this.#unavailableNamespace)\n }\n if (calls.length === 0) return [] as unknown as TResult\n if (calls.length > this.maxBatchSize) {\n throw new ErpcInvalidResponseError(\n `A batch may contain at most ${this.maxBatchSize} calls`,\n )\n }\n\n await this.connect()\n const requests = calls.map((call) => {\n const id = this.#id()\n const request: Record<string, unknown> = {\n jsonrpc: '2.0',\n id,\n method: call.method,\n }\n if (call.params !== undefined) request.params = call.params\n return { id, request, response: this.#waitFor(id, options) }\n })\n\n try {\n this.#socket?.send(JSON.stringify(requests.map(({ request }) => request)))\n } catch (error) {\n for (const { id } of requests) this.#reject(id, error)\n }\n return Promise.all(requests.map(({ response }) => response)) as unknown as Promise<TResult>\n }\n\n #id(): number {\n const id = this.#nextId\n this.#nextId = id >= Number.MAX_SAFE_INTEGER ? 1 : id + 1\n return id\n }\n\n #send(request: unknown, id: JsonRpcId): void {\n try {\n this.#socket?.send(JSON.stringify(request))\n } catch (error) {\n this.#reject(id, error)\n }\n }\n\n #waitFor<TResult>(\n id: JsonRpcId,\n options: RpcSendOptions,\n ): Promise<TResult> {\n return new Promise<TResult>((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.#pending.delete(id)\n reject(new ErpcTimeoutError(this.#timeoutMs))\n }, this.#timeoutMs)\n\n const abort = () => {\n clearTimeout(timeout)\n this.#pending.delete(id)\n reject(new ErpcAbortedError())\n }\n options.signal?.addEventListener('abort', abort, { once: true })\n\n const cleanup = () => {\n clearTimeout(timeout)\n options.signal?.removeEventListener('abort', abort)\n }\n this.#pending.set(id, {\n resolve: (value) => resolve(value as TResult),\n reject,\n cleanup,\n })\n if (options.signal?.aborted) abort()\n })\n }\n\n #reject(id: JsonRpcId, _reason: unknown): void {\n const pending = this.#pending.get(id)\n if (!pending) return\n pending.cleanup()\n this.#pending.delete(id)\n // A custom WebSocket implementation may include its connection URL in a\n // thrown error, so never retain the original error as a public cause.\n pending.reject(\n new ErpcTransportError('Unable to send ERPC WebSocket request'),\n )\n }\n\n async #onMessage(data: unknown): Promise<void> {\n const text = await this.#messageText(data)\n if (text === null) return\n\n let parsed: unknown\n try {\n parsed = JSON.parse(text) as unknown\n } catch {\n return\n }\n\n if (Array.isArray(parsed)) {\n for (const item of parsed) this.#dispatch(item)\n } else {\n this.#dispatch(parsed)\n }\n }\n\n async #messageText(data: unknown): Promise<string | null> {\n if (typeof data === 'string') return data\n if (data instanceof ArrayBuffer) return new TextDecoder().decode(data)\n if (ArrayBuffer.isView(data)) {\n return new TextDecoder().decode(\n new Uint8Array(data.buffer, data.byteOffset, data.byteLength),\n )\n }\n if (typeof Blob !== 'undefined' && data instanceof Blob) return data.text()\n return null\n }\n\n #dispatch(message: unknown): void {\n if (!isObject(message)) return\n const id = message.id\n if (typeof id === 'number' || typeof id === 'string') {\n const pending = this.#pending.get(id)\n if (!pending) return\n pending.cleanup()\n this.#pending.delete(id)\n if (isRpcError(message.error)) {\n pending.reject(\n new ErpcJsonRpcError(\n redactJsonRpcError(\n message.error,\n this.#credential,\n this.#redactionVariants,\n ),\n ),\n )\n }\n else if ('result' in message) pending.resolve(message.result)\n else pending.reject(new ErpcInvalidResponseError())\n return\n }\n\n if (\n message.jsonrpc === '2.0' &&\n typeof message.method === 'string' &&\n 'params' in message\n ) {\n const notification: RpcNotification = {\n jsonrpc: '2.0',\n method: message.method,\n params: message.params,\n }\n for (const listener of this.#listeners) listener(notification)\n }\n }\n}\n","import { createRpcNamespace, type RpcNamespace } from './rpc/client'\nimport type { EthereumSubscriptionSchema } from './rpc/ethereum'\nimport type { RpcMethodSpec } from './rpc/types'\nimport {\n WebSocketJsonRpcTransport,\n type RpcNotification,\n type RpcNotificationListener,\n} from './transport/websocket'\n\nexport type SubscriptionId = number | string\nexport type SubscriptionListener<TResult> = (result: TResult) => void\n\ninterface NotificationParams {\n readonly result: unknown\n readonly subscription: SubscriptionId\n}\n\nconst notificationParams = (\n notification: RpcNotification,\n): NotificationParams | null => {\n if (typeof notification.params !== 'object' || notification.params === null) {\n return null\n }\n const params = notification.params as Record<string, unknown>\n if (\n (typeof params.subscription !== 'number' &&\n typeof params.subscription !== 'string') ||\n !('result' in params)\n ) {\n return null\n }\n return {\n subscription: params.subscription,\n result: params.result,\n }\n}\n\nexport class RpcSubscription<TId extends SubscriptionId = SubscriptionId> {\n readonly id: TId\n readonly #unsubscribe: () => Promise<boolean>\n #closed = false\n\n constructor(id: TId, unsubscribe: () => Promise<boolean>) {\n this.id = id\n this.#unsubscribe = unsubscribe\n }\n\n async unsubscribe(): Promise<boolean> {\n if (this.#closed) return true\n const result = await this.#unsubscribe()\n if (result) this.#closed = true\n return result\n }\n}\n\nexport class EthereumSubscriptions {\n readonly rpc: RpcNamespace<EthereumSubscriptionSchema>\n readonly #transport: WebSocketJsonRpcTransport\n\n constructor(transport: WebSocketJsonRpcTransport) {\n this.#transport = transport\n this.rpc = createRpcNamespace<EthereumSubscriptionSchema>({\n transport,\n parameterMode: 'positional',\n })\n }\n\n close(): void {\n this.#transport.close()\n }\n\n onNotification(listener: RpcNotificationListener): () => void {\n return this.#transport.onNotification(listener)\n }\n\n async subscribe<TResult = unknown>(\n subscription: string,\n listener: SubscriptionListener<TResult>,\n ...options: readonly unknown[]\n ): Promise<RpcSubscription<string>> {\n let id: string | undefined\n const removeListener = this.#transport.onNotification((notification) => {\n const params = notificationParams(notification)\n if (params && params.subscription === id) listener(params.result as TResult)\n })\n\n try {\n id = await this.#transport.request<string>('eth_subscribe', [\n subscription,\n ...options,\n ])\n } catch (error) {\n removeListener()\n throw error\n }\n\n return new RpcSubscription(id, async () => {\n const result = await this.#transport.request<boolean>('eth_unsubscribe', [\n id,\n ])\n if (result) removeListener()\n return result\n })\n }\n}\n\nexport interface SolanaEnhancedSubscriptionSchema {\n readonly accountSubscribe: RpcMethodSpec<\n readonly [address: string, options?: Readonly<Record<string, unknown>>],\n number\n >\n readonly accountUnsubscribe: RpcMethodSpec<\n readonly [subscriptionId: number],\n boolean\n >\n readonly transactionSubscribe: RpcMethodSpec<\n readonly [\n filter: Readonly<Record<string, unknown>>,\n options?: Readonly<Record<string, unknown>>,\n ],\n number\n >\n readonly transactionUnsubscribe: RpcMethodSpec<\n readonly [subscriptionId: number],\n boolean\n >\n}\n\nexport const SOLANA_ENHANCED_SUBSCRIPTION_METHODS = [\n 'accountSubscribe',\n 'accountUnsubscribe',\n 'transactionSubscribe',\n 'transactionUnsubscribe',\n] as const satisfies readonly (keyof SolanaEnhancedSubscriptionSchema)[]\n\nexport class SolanaSubscriptions {\n readonly rpc: RpcNamespace<SolanaEnhancedSubscriptionSchema>\n readonly #transport: WebSocketJsonRpcTransport\n\n constructor(transport: WebSocketJsonRpcTransport) {\n this.#transport = transport\n this.rpc = createRpcNamespace<SolanaEnhancedSubscriptionSchema>({\n transport,\n parameterMode: 'positional',\n })\n }\n\n close(): void {\n this.#transport.close()\n }\n\n onNotification(listener: RpcNotificationListener): () => void {\n return this.#transport.onNotification(listener)\n }\n\n accountSubscribe<TResult = unknown>(\n address: string,\n listener: SubscriptionListener<TResult>,\n options?: Readonly<Record<string, unknown>>,\n ): Promise<RpcSubscription<number>> {\n const params = options === undefined ? [address] : [address, options]\n return this.#subscribe<number, TResult>(\n 'accountSubscribe',\n params,\n 'accountUnsubscribe',\n listener,\n )\n }\n\n transactionSubscribe<TResult = unknown>(\n filter: Readonly<Record<string, unknown>>,\n listener: SubscriptionListener<TResult>,\n options?: Readonly<Record<string, unknown>>,\n ): Promise<RpcSubscription<number>> {\n const params = options === undefined ? [filter] : [filter, options]\n return this.#subscribe<number, TResult>(\n 'transactionSubscribe',\n params,\n 'transactionUnsubscribe',\n listener,\n )\n }\n\n async rawSubscribe<TResult = unknown>(\n subscribeMethod: string,\n params: readonly unknown[],\n unsubscribeMethod: string,\n listener: SubscriptionListener<TResult>,\n ): Promise<RpcSubscription> {\n return this.#subscribe(\n subscribeMethod,\n params,\n unsubscribeMethod,\n listener,\n )\n }\n\n async #subscribe<TId extends SubscriptionId, TResult>(\n subscribeMethod: string,\n params: readonly unknown[],\n unsubscribeMethod: string,\n listener: SubscriptionListener<TResult>,\n ): Promise<RpcSubscription<TId>> {\n let id: TId | undefined\n const removeListener = this.#transport.onNotification((notification) => {\n const value = notificationParams(notification)\n if (value && value.subscription === id) listener(value.result as TResult)\n })\n\n try {\n id = await this.#transport.request<TId>(subscribeMethod, params)\n } catch (error) {\n removeListener()\n throw error\n }\n\n return new RpcSubscription(id, async () => {\n const result = await this.#transport.request<boolean>(unsubscribeMethod, [\n id,\n ])\n if (result) removeListener()\n return result\n })\n }\n}\n","/* Generated by registry/generate-dex-catalog.mjs. Do not edit. */\n\nexport type DexStatus = 'active' | 'legacy' | 'winding-down' | 'retired';\nexport type DexChainId = string;\nexport interface DexDeployment { readonly dexDeploymentId: string; readonly protocolId: string; readonly name: string; readonly chainId: DexChainId; readonly programAddress: string; readonly adapterKind: string; readonly status: DexStatus; readonly replacedByDexDeploymentId: string | null; }\nexport interface PoolAdapter { readonly kind: string; readonly feeNumerator: string | null; readonly feeDenominator: string | null; }\nexport interface PoolDefinition { readonly poolDefinitionId: string; readonly dexDeploymentId: string; readonly chainId: DexChainId; readonly address: string; readonly token0DeploymentId: string; readonly token1DeploymentId: string; readonly adapter: Readonly<PoolAdapter>; readonly status: DexStatus; readonly replacedByPoolDefinitionId: string | null; }\nexport interface NativeWrapDefinition { readonly nativeWrapDefinitionId: string; readonly chainId: DexChainId; readonly nativeTokenDeploymentId: string; readonly wrappedTokenDeploymentId: string; readonly status: DexStatus; }\nexport interface DexAlias { readonly namespace: string; readonly name: string; readonly dexDeploymentId: string | null; readonly poolDefinitionId: string | null; }\nfunction deepFreeze<T>(value: T): T { if (value && typeof value === 'object') { Object.freeze(value); for (const child of Object.values(value as Record<string, unknown>)) deepFreeze(child); } return value; }\nexport const DEX_CATALOG_VERSION = \"1.0.0\" as const;\nexport const DEX_CATALOG_AS_OF_DATE = \"2026-09-15\" as const;\nexport const DEX_CATALOG_CONTENT_DIGEST = \"caccde1f997648dfa045af41d4f8b7f93a051c59d098cc770bd3a2757185aac1\" as const;\nexport const DEX_CHAIN_IDS = deepFreeze({\n \"ethereum\": \"eip155:1\",\n \"solana\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"avalancheC\": \"eip155:43114\"\n} as const);\nexport const dexes = deepFreeze({\n \"ethereum\": {\n \"UNISWAP_V2\": \"dex-deployment-0001\"\n },\n \"solana\": {\n \"ORCA_WHIRLPOOLS\": \"dex-deployment-0003\",\n \"RAYDIUM_CLMM\": \"dex-deployment-0004\"\n },\n \"avalancheC\": {\n \"LFJ_LEGACY\": \"dex-deployment-0002\"\n }\n} as const);\nexport const pools = deepFreeze({\n \"ethereum\": {\n \"DISCOVERED_POOL_1B98A5F24A364E05\": \"discovered-pool-1b98a5f24a364e05b3d56a9702c3560fc3a71f84b2195c486cfc5f8a956cc0b7\",\n \"DISCOVERED_POOL_6428A1E5DA293B2E\": \"discovered-pool-6428a1e5da293b2ef62027ec823ba27532219a40784def3930feee56a623b809\",\n \"DISCOVERED_POOL_866F890448D13C07\": \"discovered-pool-866f890448d13c078e217a894ebd47430da5941fe5bff7e382fc095916b4614d\",\n \"DISCOVERED_POOL_90805F8995C1D0B8\": \"discovered-pool-90805f8995c1d0b85a45fcd4587928a00066b1f14407baee4e8ed1b634c07804\",\n \"DISCOVERED_POOL_A7F9E600A86951F4\": \"discovered-pool-a7f9e600a86951f40472ff779fae467db8a6bbbc6076356058f427e97d4ae429\",\n \"DISCOVERED_POOL_B8F972F8BAE36C82\": \"discovered-pool-b8f972f8bae36c82b51ed2aeed070d3ef3e7642e2a708c7d3c0c134e6e1946ed\",\n \"DISCOVERED_POOL_E702B0CB56528418\": \"discovered-pool-e702b0cb56528418b4ce089dfc001c6241c94e92aabde72f1a340c4601541780\",\n \"UNISWAP_V2_USDC_WETH\": \"pool-0001\"\n },\n \"solana\": {\n \"ORCA_WHIRLPOOLS_WSOL_EURC\": \"pool-0003\",\n \"RAYDIUM_CLMM_WSOL_EURC\": \"pool-0004\"\n },\n \"avalancheC\": {\n \"DISCOVERED_POOL_1568E761C62F7DC5\": \"discovered-pool-1568e761c62f7dc58207a77f2dc32153805efe03a8d9cce9366ce68efdf276c4\",\n \"DISCOVERED_POOL_3C1E38D02092D16E\": \"discovered-pool-3c1e38d02092d16e396d2f3a22b2bfae55246a1c566831d31f211670e45bd562\",\n \"DISCOVERED_POOL_3F840A40991E755E\": \"discovered-pool-3f840a40991e755e42d242188bd8deb85cd5b9655308269b00c220f5237710cf\",\n \"DISCOVERED_POOL_5D7AA6A767A0C6EA\": \"discovered-pool-5d7aa6a767a0c6ea9ddeb06d1289bd12d85018935d5b25724b165dc8b9832252\",\n \"DISCOVERED_POOL_9E4ED76F76904A4A\": \"discovered-pool-9e4ed76f76904a4ae271946bb1a4b2dc7428e343040b05a42707071bbfac9462\",\n \"DISCOVERED_POOL_A2480F3D4EA5CE12\": \"discovered-pool-a2480f3d4ea5ce12252126acf64b174b9fe678b0f0fda8936a12fef180ae08cd\",\n \"DISCOVERED_POOL_ECE9088CF3894443\": \"discovered-pool-ece9088cf38944438897ff9fb2a1abc6855a687b5a3f0d6ab98dfe06c1a6dfef\",\n \"DISCOVERED_POOL_FB02E85806CD9079\": \"discovered-pool-fb02e85806cd907920126af935137b0775a858ddf04a28d7ca144f761fd7579e\",\n \"LFJ_LEGACY_WAVAX_USDC\": \"pool-0002\"\n }\n} as const);\nexport const DEX_DEPLOYMENTS: ReadonlyArray<Readonly<DexDeployment>> = deepFreeze([\n {\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"protocolId\": \"uniswap-v2\",\n \"name\": \"Uniswap V2\",\n \"chainId\": \"eip155:1\",\n \"programAddress\": \"0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f\",\n \"adapterKind\": \"evm-constant-product-v2\",\n \"status\": \"active\",\n \"replacedByDexDeploymentId\": null\n },\n {\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"protocolId\": \"lfj-legacy-constant-product\",\n \"name\": \"LFJ legacy constant-product (Joe V1)\",\n \"chainId\": \"eip155:43114\",\n \"programAddress\": \"0x9ad6c38be94206ca50bb0d90783181662f0cfa10\",\n \"adapterKind\": \"evm-constant-product-v2\",\n \"status\": \"active\",\n \"replacedByDexDeploymentId\": null\n },\n {\n \"dexDeploymentId\": \"dex-deployment-0003\",\n \"protocolId\": \"orca-whirlpools\",\n \"name\": \"Orca Whirlpools\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"programAddress\": \"whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc\",\n \"adapterKind\": \"solana-orca-whirlpool\",\n \"status\": \"active\",\n \"replacedByDexDeploymentId\": null\n },\n {\n \"dexDeploymentId\": \"dex-deployment-0004\",\n \"protocolId\": \"raydium-clmm\",\n \"name\": \"Raydium CLMM\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"programAddress\": \"CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK\",\n \"adapterKind\": \"solana-raydium-clmm\",\n \"status\": \"active\",\n \"replacedByDexDeploymentId\": null\n }\n]);\nexport const POOL_DEFINITIONS: ReadonlyArray<Readonly<PoolDefinition>> = deepFreeze([\n {\n \"poolDefinitionId\": \"discovered-pool-1568e761c62f7dc58207a77f2dc32153805efe03a8d9cce9366ce68efdf276c4\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xd5a37dc5c9a396a03dd1136fc76a1a02b1c88ffa\",\n \"token0DeploymentId\": \"discovered-token-9f9965cc065c9becf8d2cb58071524baafea37d27fda9bf683a93ea85f2e653d\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-1b98a5f24a364e05b3d56a9702c3560fc3a71f84b2195c486cfc5f8a956cc0b7\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xc2adda861f89bbb333c90c492cb837741916a225\",\n \"token0DeploymentId\": \"discovered-token-b475569f6a15e97ac04e531dd813e9dcc902521c098d60d6ae4d21d53baf1395\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-3c1e38d02092d16e396d2f3a22b2bfae55246a1c566831d31f211670e45bd562\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xed8cbd9f0ce3c6986b22002f03c6475ceb7a6256\",\n \"token0DeploymentId\": \"deployment-0004\",\n \"token1DeploymentId\": \"discovered-token-288036a90ee0fa72a2751a78a6934cc6ced9e16de91c97ae8e109e2ee6189bc5\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-3f840a40991e755e42d242188bd8deb85cd5b9655308269b00c220f5237710cf\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xfe15c2695f1f920da45c30aae47d11de51007af9\",\n \"token0DeploymentId\": \"discovered-token-0a7f98c8752f15ee02ce0d801f25df8ff78864a1d70aff7e204f7bdb3f8a0692\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-5d7aa6a767a0c6ea9ddeb06d1289bd12d85018935d5b25724b165dc8b9832252\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0x48f7c83c29e5ecea926d8169864d8cd022deaf3c\",\n \"token0DeploymentId\": \"discovered-token-323d07c442f0d089197ae7eea9b3ebb829910177c5b780161a7623aaed5e4371\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-6428a1e5da293b2ef62027ec823ba27532219a40784def3930feee56a623b809\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xa2107fa5b38d9bbd2c461d6edf11b11a50f6b974\",\n \"token0DeploymentId\": \"deployment-0057\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-866f890448d13c078e217a894ebd47430da5941fe5bff7e382fc095916b4614d\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xb6909b960dbbe7392d405429eb2b3649752b4838\",\n \"token0DeploymentId\": \"discovered-token-69519fd08e31445cad84b0c17a5346b7ee9c5692e270602af9308ca6d8943bb6\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-90805f8995c1d0b85a45fcd4587928a00066b1f14407baee4e8ed1b634c07804\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0x55d5c232d921b9eaa6b37b5845e439acd04b4dba\",\n \"token0DeploymentId\": \"discovered-token-611597bd13daa43d01a23caa9cca6a98797c64be7fb5b2677370ddbcdeaf01ec\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-9e4ed76f76904a4ae271946bb1a4b2dc7428e343040b05a42707071bbfac9462\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0x6f3a0c89f611ef5dc9d96650324ac633d02265d3\",\n \"token0DeploymentId\": \"deployment-0058\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-a2480f3d4ea5ce12252126acf64b174b9fe678b0f0fda8936a12fef180ae08cd\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xa389f9430876455c36478deea9769b7ca4e3ddb1\",\n \"token0DeploymentId\": \"deployment-0018\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-a7f9e600a86951f40472ff779fae467db8a6bbbc6076356058f427e97d4ae429\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xa478c2975ab1ea89e8196811f51a7b7ade33eb11\",\n \"token0DeploymentId\": \"deployment-0019\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-b8f972f8bae36c82b51ed2aeed070d3ef3e7642e2a708c7d3c0c134e6e1946ed\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0x11b1f53204d03e5529f09eb3091939e4fd8c9cf3\",\n \"token0DeploymentId\": \"discovered-token-054d80a64e1f36a756129763ca2f1e7a140b50b04c83876ff01dd5fd497a74c5\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-e702b0cb56528418b4ce089dfc001c6241c94e92aabde72f1a340c4601541780\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xbb2b8038a1640196fbe3e38816f3e67cba72d940\",\n \"token0DeploymentId\": \"discovered-token-e375086901067fe3de023bcdc70f1bafca798e1719ed7e676a98f57de3350a07\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-ece9088cf38944438897ff9fb2a1abc6855a687b5a3f0d6ab98dfe06c1a6dfef\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0x454e67025631c065d3cfad6d71e6892f74487a15\",\n \"token0DeploymentId\": \"deployment-0059\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"discovered-pool-fb02e85806cd907920126af935137b0775a858ddf04a28d7ca144f761fd7579e\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xb6a00cead355d1ec492fd72e1d79199c347a74b5\",\n \"token0DeploymentId\": \"discovered-token-1847342426b765add3c8b4feb724c6b15121f25097cb7917c967c285ca77e804\",\n \"token1DeploymentId\": \"deployment-0004\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"pool-0001\",\n \"dexDeploymentId\": \"dex-deployment-0001\",\n \"chainId\": \"eip155:1\",\n \"address\": \"0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc\",\n \"token0DeploymentId\": \"deployment-0008\",\n \"token1DeploymentId\": \"deployment-0002\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"pool-0002\",\n \"dexDeploymentId\": \"dex-deployment-0002\",\n \"chainId\": \"eip155:43114\",\n \"address\": \"0xf4003f4efbe8691b60249e6afbd307abe7758adb\",\n \"token0DeploymentId\": \"deployment-0004\",\n \"token1DeploymentId\": \"deployment-0009\",\n \"adapter\": {\n \"kind\": \"evm-constant-product-v2\",\n \"feeNumerator\": \"3\",\n \"feeDenominator\": \"1000\"\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"pool-0003\",\n \"dexDeploymentId\": \"dex-deployment-0003\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"address\": \"FgH1dEvyRQoAqJjbUzzKVoM1HYdxTqPwjEF82kDH1kVe\",\n \"token0DeploymentId\": \"deployment-0006\",\n \"token1DeploymentId\": \"deployment-0013\",\n \"adapter\": {\n \"kind\": \"solana-orca-whirlpool\",\n \"feeNumerator\": null,\n \"feeDenominator\": null\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n },\n {\n \"poolDefinitionId\": \"pool-0004\",\n \"dexDeploymentId\": \"dex-deployment-0004\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"address\": \"AwaVyGAF3N6K4YRUJk55Ui1GquKhKdD6vTCmVvCzXpKf\",\n \"token0DeploymentId\": \"deployment-0006\",\n \"token1DeploymentId\": \"deployment-0013\",\n \"adapter\": {\n \"kind\": \"solana-raydium-clmm\",\n \"feeNumerator\": null,\n \"feeDenominator\": null\n },\n \"status\": \"active\",\n \"replacedByPoolDefinitionId\": null\n }\n]);\nexport const NATIVE_WRAP_DEFINITIONS: ReadonlyArray<Readonly<NativeWrapDefinition>> = deepFreeze([\n {\n \"nativeWrapDefinitionId\": \"native-wrap-0001\",\n \"chainId\": \"eip155:1\",\n \"nativeTokenDeploymentId\": \"deployment-0001\",\n \"wrappedTokenDeploymentId\": \"deployment-0002\",\n \"status\": \"active\"\n },\n {\n \"nativeWrapDefinitionId\": \"native-wrap-0002\",\n \"chainId\": \"eip155:43114\",\n \"nativeTokenDeploymentId\": \"deployment-0003\",\n \"wrappedTokenDeploymentId\": \"deployment-0004\",\n \"status\": \"active\"\n },\n {\n \"nativeWrapDefinitionId\": \"native-wrap-0003\",\n \"chainId\": \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\",\n \"nativeTokenDeploymentId\": \"deployment-0005\",\n \"wrappedTokenDeploymentId\": \"deployment-0006\",\n \"status\": \"active\"\n }\n]);\nexport const DEX_ALIASES: ReadonlyArray<Readonly<DexAlias>> = deepFreeze([\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_1568E761C62F7DC5\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_1568E761C62F7DC5 },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_3C1E38D02092D16E\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_3C1E38D02092D16E },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_3F840A40991E755E\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_3F840A40991E755E },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_5D7AA6A767A0C6EA\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_5D7AA6A767A0C6EA },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_9E4ED76F76904A4A\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_9E4ED76F76904A4A },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_A2480F3D4EA5CE12\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_A2480F3D4EA5CE12 },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_ECE9088CF3894443\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_ECE9088CF3894443 },\n { namespace: \"avalancheC\", name: \"DISCOVERED_POOL_FB02E85806CD9079\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.DISCOVERED_POOL_FB02E85806CD9079 },\n { namespace: \"avalancheC\", name: \"LFJ_LEGACY\", dexDeploymentId: dexes.avalancheC.LFJ_LEGACY, poolDefinitionId: null },\n { namespace: \"avalancheC\", name: \"LFJ_LEGACY_WAVAX_USDC\", dexDeploymentId: null, poolDefinitionId: pools.avalancheC.LFJ_LEGACY_WAVAX_USDC },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_1B98A5F24A364E05\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_1B98A5F24A364E05 },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_6428A1E5DA293B2E\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_6428A1E5DA293B2E },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_866F890448D13C07\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_866F890448D13C07 },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_90805F8995C1D0B8\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_90805F8995C1D0B8 },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_A7F9E600A86951F4\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_A7F9E600A86951F4 },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_B8F972F8BAE36C82\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_B8F972F8BAE36C82 },\n { namespace: \"ethereum\", name: \"DISCOVERED_POOL_E702B0CB56528418\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.DISCOVERED_POOL_E702B0CB56528418 },\n { namespace: \"ethereum\", name: \"UNISWAP_V2\", dexDeploymentId: dexes.ethereum.UNISWAP_V2, poolDefinitionId: null },\n { namespace: \"ethereum\", name: \"UNISWAP_V2_USDC_WETH\", dexDeploymentId: null, poolDefinitionId: pools.ethereum.UNISWAP_V2_USDC_WETH },\n { namespace: \"solana\", name: \"ORCA_WHIRLPOOLS\", dexDeploymentId: dexes.solana.ORCA_WHIRLPOOLS, poolDefinitionId: null },\n { namespace: \"solana\", name: \"ORCA_WHIRLPOOLS_WSOL_EURC\", dexDeploymentId: null, poolDefinitionId: pools.solana.ORCA_WHIRLPOOLS_WSOL_EURC },\n { namespace: \"solana\", name: \"RAYDIUM_CLMM\", dexDeploymentId: dexes.solana.RAYDIUM_CLMM, poolDefinitionId: null },\n { namespace: \"solana\", name: \"RAYDIUM_CLMM_WSOL_EURC\", dexDeploymentId: null, poolDefinitionId: pools.solana.RAYDIUM_CLMM_WSOL_EURC },\n]) as ReadonlyArray<Readonly<DexAlias>>;\n","import {\n DEX_ALIASES,\n DEX_CATALOG_AS_OF_DATE,\n DEX_CATALOG_CONTENT_DIGEST,\n DEX_CATALOG_VERSION,\n DEX_CHAIN_IDS,\n DEX_DEPLOYMENTS,\n NATIVE_WRAP_DEFINITIONS,\n POOL_DEFINITIONS,\n dexes,\n pools,\n} from './generated/dex_catalog'\nimport type {\n DexAlias,\n DexChainId,\n DexDeployment,\n DexStatus,\n NativeWrapDefinition,\n PoolDefinition,\n} from './generated/dex_catalog'\n\nexport {\n DEX_ALIASES,\n DEX_CATALOG_AS_OF_DATE,\n DEX_CATALOG_CONTENT_DIGEST,\n DEX_CATALOG_VERSION,\n DEX_CHAIN_IDS,\n DEX_DEPLOYMENTS,\n NATIVE_WRAP_DEFINITIONS,\n POOL_DEFINITIONS,\n}\n\nexport type {\n DexAlias,\n DexChainId,\n DexDeployment,\n DexStatus,\n NativeWrapDefinition,\n PoolDefinition,\n}\n\nexport type DexNamespace = 'ethereum' | 'solana' | 'avalancheC'\n\nexport interface ListPoolDefinitionsOptions {\n readonly chainId?: DexChainId\n readonly tokenDeploymentId?: string\n readonly adapterKind?: string\n}\n\nconst EMPTY_POOLS: readonly PoolDefinition[] = Object.freeze([])\n\nconst deepFreeze = <T>(value: T): T => {\n if (value && typeof value === 'object' && !Object.isFrozen(value)) {\n Object.freeze(value)\n for (const child of Object.values(value as Record<string, unknown>)) {\n deepFreeze(child)\n }\n }\n return value\n}\n\n// The generated module is a package data boundary. Freeze it again here so\n// hand-authored generator changes cannot accidentally expose mutable records.\ndeepFreeze(DEX_CHAIN_IDS)\ndeepFreeze(DEX_DEPLOYMENTS)\ndeepFreeze(POOL_DEFINITIONS)\ndeepFreeze(NATIVE_WRAP_DEFINITIONS)\ndeepFreeze(DEX_ALIASES)\ndeepFreeze(dexes)\ndeepFreeze(pools)\n\nconst knownChainIds = new Set<string>(Object.values(DEX_CHAIN_IDS))\nconst dexById = new Map<string, DexDeployment>(\n DEX_DEPLOYMENTS.map((deployment) => [deployment.dexDeploymentId, deployment]),\n)\nconst poolById = new Map<string, PoolDefinition>(\n POOL_DEFINITIONS.map((pool) => [pool.poolDefinitionId, pool]),\n)\nconst wrapByNativeTokenId = new Map<string, NativeWrapDefinition>(\n NATIVE_WRAP_DEFINITIONS.map((definition) => [\n definition.nativeTokenDeploymentId,\n definition,\n ]),\n)\n\n/** Chain-qualified DEX aliases whose values are opaque deployment IDs. */\nexport { dexes }\n\n/** Chain-qualified pool aliases whose values are opaque pool IDs. */\nexport { pools }\n\n/** Return a DEX deployment by its exact opaque ID. */\nexport function getDexDeployment(\n dexDeploymentId: string,\n): DexDeployment | undefined {\n return typeof dexDeploymentId === 'string'\n ? dexById.get(dexDeploymentId)\n : undefined\n}\n\n/** Return a pool definition by its exact opaque ID. */\nexport function getPoolDefinition(\n poolDefinitionId: string,\n): PoolDefinition | undefined {\n return typeof poolDefinitionId === 'string'\n ? poolById.get(poolDefinitionId)\n : undefined\n}\n\n/** Find a pool by its chain-qualified address. */\nexport function findPoolDefinitionByAddress(\n chainId: DexChainId,\n address: string,\n): PoolDefinition | undefined {\n if (!isKnownChain(chainId) || typeof address !== 'string' || address.length === 0) {\n return undefined\n }\n const normalizedAddress = isEvmChain(chainId)\n ? normalizeEvmAddress(address)\n : address\n if (normalizedAddress === undefined) return undefined\n return POOL_DEFINITIONS.find(\n (pool) =>\n pool.chainId === chainId && pool.address === normalizedAddress,\n )\n}\n\n/** Find all pools for an unordered token pair in stable pool-ID order. */\nexport function findPoolDefinitionsByPair(\n chainId: DexChainId,\n tokenADeploymentId: string,\n tokenBDeploymentId: string,\n): readonly PoolDefinition[] {\n if (\n !isKnownChain(chainId) ||\n typeof tokenADeploymentId !== 'string' ||\n typeof tokenBDeploymentId !== 'string' ||\n tokenADeploymentId.length === 0 ||\n tokenBDeploymentId.length === 0 ||\n tokenADeploymentId === tokenBDeploymentId\n ) {\n return EMPTY_POOLS\n }\n\n const wanted = [tokenADeploymentId, tokenBDeploymentId].sort().join('\\u0000')\n const matches = POOL_DEFINITIONS.filter((pool) => {\n const actual = [pool.token0DeploymentId, pool.token1DeploymentId]\n .sort()\n .join('\\u0000')\n return pool.chainId === chainId && actual === wanted\n }).sort((left, right) =>\n left.poolDefinitionId < right.poolDefinitionId\n ? -1\n : left.poolDefinitionId > right.poolDefinitionId\n ? 1\n : 0,\n )\n return matches.length === 0 ? EMPTY_POOLS : Object.freeze(matches)\n}\n\n/** List pool definitions using the optional exact filters. */\nexport function listPoolDefinitions(\n options: ListPoolDefinitionsOptions = {},\n): readonly PoolDefinition[] {\n if (!isRecord(options)) return EMPTY_POOLS\n const { chainId, tokenDeploymentId, adapterKind } = options\n if (chainId !== undefined && !isKnownChain(chainId)) return EMPTY_POOLS\n if (\n tokenDeploymentId !== undefined &&\n (typeof tokenDeploymentId !== 'string' || tokenDeploymentId.length === 0)\n ) {\n return EMPTY_POOLS\n }\n if (\n adapterKind !== undefined &&\n (typeof adapterKind !== 'string' || adapterKind.length === 0)\n ) {\n return EMPTY_POOLS\n }\n\n const matches = POOL_DEFINITIONS.filter((pool) => {\n if (chainId !== undefined && pool.chainId !== chainId) return false\n if (\n tokenDeploymentId !== undefined &&\n pool.token0DeploymentId !== tokenDeploymentId &&\n pool.token1DeploymentId !== tokenDeploymentId\n ) {\n return false\n }\n if (adapterKind !== undefined && pool.adapter.kind !== adapterKind) {\n return false\n }\n return true\n }).sort((left, right) =>\n left.poolDefinitionId < right.poolDefinitionId\n ? -1\n : left.poolDefinitionId > right.poolDefinitionId\n ? 1\n : 0,\n )\n return matches.length === 0 ? EMPTY_POOLS : Object.freeze(matches)\n}\n\n/** Return the active or historical native-to-wrapped relationship for a token. */\nexport function getNativeWrapDefinition(\n nativeTokenDeploymentId: string,\n): NativeWrapDefinition | undefined {\n return typeof nativeTokenDeploymentId === 'string'\n ? wrapByNativeTokenId.get(nativeTokenDeploymentId)\n : undefined\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction isKnownChain(value: unknown): value is DexChainId {\n return typeof value === 'string' && knownChainIds.has(value)\n}\n\nfunction isEvmChain(chainId: string): boolean {\n return (\n chainId === DEX_CHAIN_IDS.ethereum ||\n chainId === DEX_CHAIN_IDS.avalancheC\n )\n}\n\nfunction normalizeEvmAddress(address: string): string | undefined {\n if (!/^0x[0-9a-fA-F]{40}$/u.test(address)) return undefined\n return address.toLowerCase()\n}\n","/* Generated by registry/generate-swap-execution-capabilities.mjs. Do not edit. */\n\nexport const SWAP_EXECUTION_CAPABILITIES_JSON = \"[{\\\"swapExecutionCapabilityId\\\":\\\"swap-execution-0001\\\",\\\"chainId\\\":\\\"eip155:1\\\",\\\"dexDeploymentId\\\":\\\"dex-deployment-0001\\\",\\\"poolDefinitionId\\\":\\\"pool-0001\\\",\\\"factoryAddress\\\":\\\"0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f\\\",\\\"routerAddress\\\":\\\"0x7a250d5630b4cf539739df2c5dacb4c659f2488d\\\",\\\"routerKind\\\":\\\"uniswap-v2-router02\\\",\\\"adapterKind\\\":\\\"evm-constant-product-v2\\\",\\\"token0DeploymentId\\\":\\\"deployment-0008\\\",\\\"token0Address\\\":\\\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\\\",\\\"token0Standard\\\":\\\"erc20\\\",\\\"token1DeploymentId\\\":\\\"deployment-0002\\\",\\\"token1Address\\\":\\\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\\\",\\\"token1Standard\\\":\\\"erc20\\\",\\\"wrappedNativeTokenDeploymentId\\\":\\\"deployment-0002\\\",\\\"wrappedNativeTokenAddress\\\":\\\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\\\",\\\"wrappedNativeFunctionSelector\\\":\\\"0xad5c4648\\\",\\\"functionKind\\\":\\\"exact-input-erc20-to-erc20\\\",\\\"functionSignature\\\":\\\"swapExactTokensForTokens(uint256,uint256,address[],address,uint256)\\\",\\\"functionSelector\\\":\\\"0x38ed1739\\\",\\\"status\\\":\\\"active\\\"},{\\\"swapExecutionCapabilityId\\\":\\\"swap-execution-0002\\\",\\\"chainId\\\":\\\"eip155:43114\\\",\\\"dexDeploymentId\\\":\\\"dex-deployment-0002\\\",\\\"poolDefinitionId\\\":\\\"pool-0002\\\",\\\"factoryAddress\\\":\\\"0x9ad6c38be94206ca50bb0d90783181662f0cfa10\\\",\\\"routerAddress\\\":\\\"0x60ae616a2155ee3d9a68541ba4544862310933d4\\\",\\\"routerKind\\\":\\\"joe-v1-router02\\\",\\\"adapterKind\\\":\\\"evm-constant-product-v2\\\",\\\"token0DeploymentId\\\":\\\"deployment-0004\\\",\\\"token0Address\\\":\\\"0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7\\\",\\\"token0Standard\\\":\\\"erc20\\\",\\\"token1DeploymentId\\\":\\\"deployment-0009\\\",\\\"token1Address\\\":\\\"0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e\\\",\\\"token1Standard\\\":\\\"erc20\\\",\\\"wrappedNativeTokenDeploymentId\\\":\\\"deployment-0004\\\",\\\"wrappedNativeTokenAddress\\\":\\\"0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7\\\",\\\"wrappedNativeFunctionSelector\\\":\\\"0x73b295c2\\\",\\\"functionKind\\\":\\\"exact-input-erc20-to-erc20\\\",\\\"functionSignature\\\":\\\"swapExactTokensForTokens(uint256,uint256,address[],address,uint256)\\\",\\\"functionSelector\\\":\\\"0x38ed1739\\\",\\\"status\\\":\\\"active\\\"}]\" as const;\nexport const SWAP_EXECUTION_CAPABILITIES_CONTENT_DIGEST = \"84424dc48687e2cb1dd0c9a2446f820efd2c311e71ce5acacfeb6e882811875f\" as const;\nexport const SWAP_EXECUTION_CAPABILITIES_AS_OF_DATE = \"2026-09-16\" as const;\nexport const SWAP_EXECUTION_FUNCTION_SIGNATURE = \"swapExactTokensForTokens(uint256,uint256,address[],address,uint256)\" as const;\nexport const SWAP_EXECUTION_FUNCTION_SELECTOR = \"0x38ed1739\" as const;\n","import {\n DEX_CATALOG_CONTENT_DIGEST,\n DEX_CHAIN_IDS,\n NATIVE_WRAP_DEFINITIONS,\n getDexDeployment,\n getPoolDefinition,\n type DexDeployment,\n type PoolDefinition,\n} from './dex_catalog'\nimport {\n getTokenDeployment,\n TOKEN_CATALOG_CONTENT_DIGEST,\n type TokenDeployment,\n} from './token_catalog'\nimport {\n SWAP_EXECUTION_CAPABILITIES_CONTENT_DIGEST,\n SWAP_EXECUTION_CAPABILITIES_JSON,\n SWAP_EXECUTION_FUNCTION_SELECTOR,\n SWAP_EXECUTION_FUNCTION_SIGNATURE,\n} from './generated/swap_execution_capabilities'\nimport { ErpcJsonRpcError } from './errors'\nimport type { HttpJsonRpcTransport } from './transport/http'\nimport type { RpcSendOptions } from './rpc/types'\n\nexport type SwapQuoteErrorCode =\n | 'SWAP_INVALID_ARGUMENT'\n | 'SWAP_UNSUPPORTED_CHAIN'\n | 'SWAP_UNKNOWN_POOL'\n | 'SWAP_UNKNOWN_TOKEN'\n | 'SWAP_TOKEN_NOT_ACTIVE'\n | 'SWAP_UNSUPPORTED_TOKEN_STANDARD'\n | 'SWAP_UNSUPPORTED_ADAPTER'\n | 'SWAP_UNSUPPORTED_TOKEN'\n | 'SWAP_CHAIN_MISMATCH'\n | 'SWAP_POOL_TOKEN_MISMATCH'\n | 'SWAP_PROGRAM_MISMATCH'\n | 'SWAP_INVALID_POOL_STATE'\n | 'SWAP_STATE_STALE'\n | 'SWAP_INSUFFICIENT_LIQUIDITY'\n | 'SWAP_ARITHMETIC'\n\nexport const SWAP_QUOTE_ERROR_MESSAGES: Readonly<\n Record<SwapQuoteErrorCode, string>\n> = Object.freeze({\n SWAP_INVALID_ARGUMENT: 'Swap request is invalid',\n SWAP_UNSUPPORTED_CHAIN: 'Swap chain is unsupported',\n SWAP_UNKNOWN_POOL: 'Swap pool is unknown',\n SWAP_UNKNOWN_TOKEN: 'Swap token is unknown',\n SWAP_TOKEN_NOT_ACTIVE: 'Swap token is not active',\n SWAP_UNSUPPORTED_TOKEN_STANDARD: 'Swap token standard is unsupported',\n SWAP_UNSUPPORTED_ADAPTER: 'Swap adapter is unsupported',\n SWAP_UNSUPPORTED_TOKEN: 'Swap token is unsupported for the selected pool',\n SWAP_CHAIN_MISMATCH: 'Swap chain does not match the selected records',\n SWAP_POOL_TOKEN_MISMATCH: 'Swap pool tokens do not match the request',\n SWAP_PROGRAM_MISMATCH: 'Swap program does not match the selected records',\n SWAP_INVALID_POOL_STATE: 'Swap pool state is invalid',\n SWAP_STATE_STALE: 'Swap pool state is stale',\n SWAP_INSUFFICIENT_LIQUIDITY: 'Swap pool liquidity is insufficient',\n SWAP_ARITHMETIC: 'Swap arithmetic overflowed or produced an invalid result',\n})\n\nexport class SwapQuoteError extends Error {\n readonly code: SwapQuoteErrorCode\n\n constructor(code: SwapQuoteErrorCode) {\n super(SWAP_QUOTE_ERROR_MESSAGES[code])\n this.name = 'SwapQuoteError'\n this.code = code\n }\n}\n\nexport type SwapExecutionErrorCode =\n | 'SWAP_EXECUTION_INVALID_ARGUMENT'\n | 'SWAP_UNSUPPORTED_EXECUTION'\n | 'SWAP_PROGRAM_MISMATCH'\n | 'SWAP_INSUFFICIENT_ALLOWANCE'\n | 'SWAP_SIMULATION_REVERTED'\n | 'SWAP_INVALID_SIMULATION'\n\nexport const SWAP_EXECUTION_ERROR_MESSAGES: Readonly<\n Record<SwapExecutionErrorCode, string>\n> = Object.freeze({\n SWAP_EXECUTION_INVALID_ARGUMENT: 'Swap execution request is invalid',\n SWAP_UNSUPPORTED_EXECUTION:\n 'Swap execution is unsupported for the selected records',\n SWAP_PROGRAM_MISMATCH: 'Swap program does not match the selected records',\n SWAP_INSUFFICIENT_ALLOWANCE: 'Swap allowance is insufficient',\n SWAP_SIMULATION_REVERTED: 'Swap simulation reverted',\n SWAP_INVALID_SIMULATION: 'Swap simulation result is invalid',\n})\n\nexport class SwapExecutionError extends Error {\n readonly code: SwapExecutionErrorCode\n\n constructor(code: SwapExecutionErrorCode) {\n super(SWAP_EXECUTION_ERROR_MESSAGES[code])\n this.name = 'SwapExecutionError'\n this.code = code\n }\n}\n\nexport interface SwapFreshness {\n readonly maxBlockAgeSeconds?: number\n readonly maxBlockLag?: number\n readonly maxClockSkewSeconds?: number\n}\n\nexport interface ExactInputQuoteRequest {\n readonly chainId: string\n readonly poolDefinitionId: string\n readonly inputTokenDeploymentId: string\n readonly outputTokenDeploymentId: string\n readonly amountIn: string\n readonly freshness?: SwapFreshness\n}\n\nexport interface ExactInputQuoteResult {\n readonly quoteKind: 'exact-input'\n readonly chainId: string\n readonly poolDefinitionId: string\n readonly dexDeploymentId: string\n readonly adapterKind: string\n readonly inputTokenDeploymentId: string\n readonly outputTokenDeploymentId: string\n readonly amountIn: string\n readonly amountOut: string\n readonly fee: {\n readonly numerator: string\n readonly denominator: string\n }\n readonly snapshot: {\n readonly kind: 'evm-block'\n readonly blockNumber: string\n readonly blockHash: string\n readonly blockTimestamp: string\n }\n readonly tokenCatalogDigest: string\n readonly dexCatalogDigest: string\n}\n\nexport interface PrepareExactInputSwapRequest extends ExactInputQuoteRequest {\n readonly sender: string\n readonly recipient: string\n readonly slippageBps: number\n readonly deadline: string\n}\n\n/** Alias for callers that prefer a shorter execution request name. */\nexport type ExactInputSwapRequest = PrepareExactInputSwapRequest\n\nexport interface ExactInputSwapPathEntry {\n readonly tokenDeploymentId: string\n readonly address: string\n readonly standard: 'erc20'\n readonly representationKind: TokenDeployment['representationKind']\n}\n\nexport interface ExactInputSwapPreparation {\n readonly preparationKind: 'evm-router-v2-exact-input'\n readonly executionCapabilityId: string\n readonly executionCapabilityDigest: string\n readonly quote: ExactInputQuoteResult\n readonly minimumAmountOut: string\n readonly slippageBps: number\n readonly deadline: string\n readonly recipient: string\n readonly path: readonly [ExactInputSwapPathEntry, ExactInputSwapPathEntry]\n readonly transaction: {\n readonly kind: 'evm-unsigned-transaction'\n readonly chainId: string\n readonly from: string\n readonly to: string\n readonly data: string\n readonly value: '0'\n }\n readonly allowance: {\n readonly tokenDeploymentId: string\n readonly tokenAddress: string\n readonly owner: string\n readonly spender: string\n readonly requiredAmount: string\n }\n}\n\nexport interface ExactInputSwapSimulation {\n readonly simulationKind: 'evm-call'\n readonly preparation: ExactInputSwapPreparation\n readonly snapshot: ExactInputQuoteResult['snapshot']\n readonly currentAllowance: string\n readonly amounts: readonly [string, string]\n readonly amountOut: string\n}\n\n/** Alias for callers that prefer the method-name result spelling. */\nexport type PrepareExactInputSwapResult = ExactInputSwapPreparation\n\n/** Alias for callers that use the generic preparation name. */\nexport type SwapPreparation = ExactInputSwapPreparation\n\n/** Alias for callers that prefer the method-name result spelling. */\nexport type SimulateExactInputSwapResult = ExactInputSwapSimulation\n\n/** Alias for callers that use the generic simulation name. */\nexport type SwapSimulation = ExactInputSwapSimulation\n\nexport interface SwapClient {\n readonly quoteExactInput: (\n request: ExactInputQuoteRequest,\n options?: RpcSendOptions,\n ) => Promise<ExactInputQuoteResult>\n readonly prepareExactInputSwap: (\n request: PrepareExactInputSwapRequest,\n options?: RpcSendOptions,\n ) => Promise<ExactInputSwapPreparation>\n readonly simulateExactInputSwap: (\n request: PrepareExactInputSwapRequest,\n options?: RpcSendOptions,\n ) => Promise<ExactInputSwapSimulation>\n}\n\ninterface SwapClientOptions {\n readonly ethereum: HttpJsonRpcTransport\n readonly avalanche: HttpJsonRpcTransport\n /** Test-only clock injection. Deliberately not exposed by createErpcClient. */\n readonly clock?: () => number\n}\n\ninterface NormalizedFreshness {\n readonly maxBlockAgeSeconds: number\n readonly maxBlockLag: number\n readonly maxClockSkewSeconds: number\n}\n\ninterface NormalizedRequest {\n readonly request: {\n readonly chainId: string\n readonly poolDefinitionId: string\n readonly inputTokenDeploymentId: string\n readonly outputTokenDeploymentId: string\n readonly amountIn: string\n readonly freshness: NormalizedFreshness\n }\n readonly amountIn: bigint\n readonly pool: PoolDefinition\n readonly dex: DexDeployment\n readonly input: TokenDeployment\n readonly output: TokenDeployment\n readonly freshness: NormalizedFreshness\n}\n\ninterface Header {\n readonly number: bigint\n readonly hash: string\n readonly timestamp: bigint\n}\n\ninterface Reserves {\n readonly reserve0: bigint\n readonly reserve1: bigint\n}\n\ninterface EvmState {\n readonly initial: Header\n readonly latestAfterReads: Header\n readonly reserves: Reserves\n}\n\nconst SUPPORTED_QUOTE_ADAPTER = 'evm-constant-product-v2'\n\ninterface SupportedQuoteCapability {\n readonly chainId: string\n readonly dexDeploymentId: string\n readonly factoryAddress: string\n readonly poolDefinitionId: string\n readonly poolAddress: string\n readonly token0DeploymentId: string\n readonly token0Address: string\n readonly token0Decimals: number\n readonly token0Standard: 'erc20'\n readonly token1DeploymentId: string\n readonly token1Address: string\n readonly token1Decimals: number\n readonly token1Standard: 'erc20'\n readonly adapterKind: typeof SUPPORTED_QUOTE_ADAPTER\n readonly feeNumerator: string\n readonly feeDenominator: string\n}\n\n// Swap eligibility is deliberately a handwritten, reviewed boundary. Catalog\n// growth can add lookup and ranking records without granting RPC quote access.\nconst SUPPORTED_QUOTE_CAPABILITIES: readonly SupportedQuoteCapability[] =\n Object.freeze([\n Object.freeze({\n chainId: 'eip155:1',\n dexDeploymentId: 'dex-deployment-0001',\n factoryAddress: '0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f',\n poolDefinitionId: 'pool-0001',\n poolAddress: '0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc',\n token0DeploymentId: 'deployment-0008',\n token0Address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n token0Decimals: 6,\n token0Standard: 'erc20',\n token1DeploymentId: 'deployment-0002',\n token1Address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n token1Decimals: 18,\n token1Standard: 'erc20',\n adapterKind: SUPPORTED_QUOTE_ADAPTER,\n feeNumerator: '3',\n feeDenominator: '1000',\n }),\n Object.freeze({\n chainId: 'eip155:43114',\n dexDeploymentId: 'dex-deployment-0002',\n factoryAddress: '0x9ad6c38be94206ca50bb0d90783181662f0cfa10',\n poolDefinitionId: 'pool-0002',\n poolAddress: '0xf4003f4efbe8691b60249e6afbd307abe7758adb',\n token0DeploymentId: 'deployment-0004',\n token0Address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7',\n token0Decimals: 18,\n token0Standard: 'erc20',\n token1DeploymentId: 'deployment-0009',\n token1Address: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e',\n token1Decimals: 6,\n token1Standard: 'erc20',\n adapterKind: SUPPORTED_QUOTE_ADAPTER,\n feeNumerator: '3',\n feeDenominator: '1000',\n }),\n ])\n\nconst matchesSupportedQuoteCapability = (\n pool: PoolDefinition,\n dex: DexDeployment,\n input: TokenDeployment,\n output: TokenDeployment,\n): boolean => {\n const capability = SUPPORTED_QUOTE_CAPABILITIES.find(\n (entry) => entry.poolDefinitionId === pool.poolDefinitionId,\n )\n if (!capability) return false\n if (\n input.representationKind === 'unclassified' ||\n output.representationKind === 'unclassified'\n ) {\n return false\n }\n\n const matchesToken = (\n token: TokenDeployment,\n deploymentId: string,\n address: string,\n decimals: number,\n standard: 'erc20',\n ): boolean =>\n token.chainId === capability.chainId &&\n token.deploymentId === deploymentId &&\n token.address === address &&\n token.decimals === decimals &&\n token.standard === standard\n\n return (\n pool.chainId === capability.chainId &&\n pool.dexDeploymentId === capability.dexDeploymentId &&\n pool.address === capability.poolAddress &&\n pool.token0DeploymentId === capability.token0DeploymentId &&\n pool.token1DeploymentId === capability.token1DeploymentId &&\n dex.chainId === capability.chainId &&\n dex.dexDeploymentId === capability.dexDeploymentId &&\n dex.programAddress === capability.factoryAddress &&\n dex.adapterKind === capability.adapterKind &&\n pool.adapter.kind === capability.adapterKind &&\n pool.adapter.feeNumerator === capability.feeNumerator &&\n pool.adapter.feeDenominator === capability.feeDenominator &&\n (matchesToken(\n input,\n capability.token0DeploymentId,\n capability.token0Address,\n capability.token0Decimals,\n capability.token0Standard,\n ) ||\n matchesToken(\n input,\n capability.token1DeploymentId,\n capability.token1Address,\n capability.token1Decimals,\n capability.token1Standard,\n )) &&\n (matchesToken(\n output,\n capability.token0DeploymentId,\n capability.token0Address,\n capability.token0Decimals,\n capability.token0Standard,\n ) ||\n matchesToken(\n output,\n capability.token1DeploymentId,\n capability.token1Address,\n capability.token1Decimals,\n capability.token1Standard,\n ))\n )\n}\nconst DEFAULT_FRESHNESS: NormalizedFreshness = Object.freeze({\n maxBlockAgeSeconds: 120,\n maxBlockLag: 3,\n maxClockSkewSeconds: 5,\n})\nconst UINT256_MAX = (1n << 256n) - 1n\nconst UINT112_MAX = (1n << 112n) - 1n\nconst UINT32_MAX = (1n << 32n) - 1n\nconst UINT256_DECIMAL = /^[1-9][0-9]*$/u\nconst NONNEGATIVE_DECIMAL = /^(0|[1-9][0-9]*)$/u\nconst HEX_BYTES = /^0x[0-9a-fA-F]*$/u\nconst HEX_QUANTITY = /^0x(?:0|[1-9a-fA-F][0-9a-fA-F]*)$/u\nconst EVM_ADDRESS = /^0x[0-9a-f]{40}$/u\n\nconst FACTORY_GET_PAIR_SELECTOR = '0xe6a43905'\nconst PAIR_FACTORY_SELECTOR = '0xc45a0155'\nconst PAIR_TOKEN0_SELECTOR = '0x0dfe1681'\nconst PAIR_TOKEN1_SELECTOR = '0xd21220a7'\nconst PAIR_GET_RESERVES_SELECTOR = '0x0902f1ac'\n\nconst ROUTER_FACTORY_SELECTOR = '0xc45a0155'\nconst ROUTER_GET_AMOUNTS_OUT_SELECTOR = '0xd06ca61f'\nconst ERC20_ALLOWANCE_SELECTOR = '0xdd62ed3e'\n\ninterface SwapExecutionCapability {\n readonly swapExecutionCapabilityId: string\n readonly chainId: string\n readonly dexDeploymentId: string\n readonly poolDefinitionId: string\n readonly factoryAddress: string\n readonly routerAddress: string\n readonly routerKind: string\n readonly adapterKind: string\n readonly token0DeploymentId: string\n readonly token0Address: string\n readonly token0Standard: 'erc20'\n readonly token1DeploymentId: string\n readonly token1Address: string\n readonly token1Standard: 'erc20'\n readonly wrappedNativeTokenDeploymentId: string\n readonly wrappedNativeTokenAddress: string\n readonly wrappedNativeFunctionSelector: string\n readonly functionKind: string\n readonly functionSignature: string\n readonly functionSelector: string\n readonly status: 'active'\n}\n\ninterface ExecutionRequestSnapshot {\n readonly quoteRequest: ExactInputQuoteRequest\n readonly sender: unknown\n readonly recipient: unknown\n readonly slippageBps: unknown\n readonly deadline: unknown\n}\n\ninterface NormalizedExecutionRequest {\n readonly normalized: NormalizedRequest\n readonly sender: string\n readonly recipient: string\n readonly slippageBps: number\n readonly deadline: string\n readonly deadlineValue: bigint\n}\n\ninterface PreparedExecutionContext {\n readonly normalized: NormalizedExecutionRequest\n readonly capability: SwapExecutionCapability\n readonly transport: HttpJsonRpcTransport\n readonly state: EvmState\n readonly quote: ExactInputQuoteResult\n readonly preparation: ExactInputSwapPreparation\n}\n\nfunction swapFail(code: SwapQuoteErrorCode): never {\n throw new SwapQuoteError(code)\n}\n\nfunction executionFail(code: SwapExecutionErrorCode): never {\n throw new SwapExecutionError(code)\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst isKnownChain = (value: unknown): value is string =>\n value === DEX_CHAIN_IDS.ethereum ||\n value === DEX_CHAIN_IDS.solana ||\n value === DEX_CHAIN_IDS.avalancheC\n\nconst isOpaqueId = (value: string): boolean =>\n /^[A-Za-z0-9][A-Za-z0-9._:-]*$/u.test(value)\n\nfunction assertRequestShape(\n request: unknown,\n): asserts request is ExactInputQuoteRequest {\n if (!isRecord(request)) swapFail('SWAP_INVALID_ARGUMENT')\n const allowed = new Set([\n 'chainId',\n 'poolDefinitionId',\n 'inputTokenDeploymentId',\n 'outputTokenDeploymentId',\n 'amountIn',\n 'freshness',\n ])\n if (Object.keys(request).some((key) => !allowed.has(key))) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n\n for (const key of [\n 'chainId',\n 'poolDefinitionId',\n 'inputTokenDeploymentId',\n 'outputTokenDeploymentId',\n 'amountIn',\n ] as const) {\n const value = request[key]\n if (\n typeof value !== 'string' ||\n value.length === 0 ||\n value.trim() !== value\n ) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n }\n\n for (const key of [\n 'poolDefinitionId',\n 'inputTokenDeploymentId',\n 'outputTokenDeploymentId',\n ] as const) {\n const value = request[key]\n if (typeof value !== 'string' || !isOpaqueId(value)) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n }\n}\n\nconst normalizeFreshness = (value: unknown): NormalizedFreshness => {\n if (value === undefined) return DEFAULT_FRESHNESS\n if (!isRecord(value)) swapFail('SWAP_INVALID_ARGUMENT')\n const keys = [\n 'maxBlockAgeSeconds',\n 'maxBlockLag',\n 'maxClockSkewSeconds',\n ] as const\n if (Object.keys(value).some((key) => !keys.includes(key as (typeof keys)[number]))) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n const ranges = {\n maxBlockAgeSeconds: [0, 86400],\n maxBlockLag: [0, 1024],\n maxClockSkewSeconds: [0, 300],\n } as const\n const result: Record<(typeof keys)[number], number> = {\n maxBlockAgeSeconds: DEFAULT_FRESHNESS.maxBlockAgeSeconds,\n maxBlockLag: DEFAULT_FRESHNESS.maxBlockLag,\n maxClockSkewSeconds: DEFAULT_FRESHNESS.maxClockSkewSeconds,\n }\n for (const key of keys) {\n const current = Object.hasOwn(value, key)\n ? value[key]\n : DEFAULT_FRESHNESS[key]\n const [minimum, maximum] = ranges[key]\n if (\n typeof current !== 'number' ||\n !Number.isSafeInteger(current) ||\n current < minimum ||\n current > maximum\n ) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n result[key] = current\n }\n return Object.freeze(result)\n}\n\nconst parseAmountIn = (value: string): bigint => {\n if (!UINT256_DECIMAL.test(value) || value.length > 78) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n let parsed: bigint\n try {\n parsed = BigInt(value)\n } catch {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n if (parsed <= 0n || parsed > UINT256_MAX) {\n swapFail('SWAP_INVALID_ARGUMENT')\n }\n return parsed\n}\n\nconst normalizeQuoteRequest = (request: unknown): NormalizedRequest => {\n assertRequestShape(request)\n const freshness = normalizeFreshness(request.freshness)\n const amountIn = parseAmountIn(request.amountIn)\n\n if (!isKnownChain(request.chainId)) swapFail('SWAP_UNSUPPORTED_CHAIN')\n const pool = getPoolDefinition(request.poolDefinitionId)\n if (!pool) swapFail('SWAP_UNKNOWN_POOL')\n if (pool.chainId !== request.chainId) swapFail('SWAP_CHAIN_MISMATCH')\n if (pool.status !== 'active') swapFail('SWAP_INVALID_POOL_STATE')\n const dex = getDexDeployment(pool.dexDeploymentId)\n if (!dex || dex.status !== 'active') swapFail('SWAP_INVALID_POOL_STATE')\n\n const input = getTokenDeployment(request.inputTokenDeploymentId)\n if (!input) swapFail('SWAP_UNKNOWN_TOKEN')\n const output = getTokenDeployment(request.outputTokenDeploymentId)\n if (!output) swapFail('SWAP_UNKNOWN_TOKEN')\n if (input.chainId !== request.chainId || output.chainId !== request.chainId) {\n swapFail('SWAP_CHAIN_MISMATCH')\n }\n for (const token of [input, output]) {\n if (token.status !== 'active') swapFail('SWAP_TOKEN_NOT_ACTIVE')\n }\n // Native and Token-2022 records are rejected before any address/pool RPC.\n // Classic SPL records continue to the adapter gate so their failure is\n // deterministic and costs zero RPC calls.\n for (const token of [input, output]) {\n if (token.standard !== 'erc20' && token.standard !== 'spl-token') {\n swapFail('SWAP_UNSUPPORTED_TOKEN_STANDARD')\n }\n }\n if (request.inputTokenDeploymentId === request.outputTokenDeploymentId) {\n swapFail('SWAP_POOL_TOKEN_MISMATCH')\n }\n const wanted = [request.inputTokenDeploymentId, request.outputTokenDeploymentId]\n .sort()\n .join('\\u0000')\n const actual = [pool.token0DeploymentId, pool.token1DeploymentId]\n .sort()\n .join('\\u0000')\n if (wanted !== actual) swapFail('SWAP_POOL_TOKEN_MISMATCH')\n if (pool.adapter.kind !== SUPPORTED_QUOTE_ADAPTER || dex.adapterKind !== SUPPORTED_QUOTE_ADAPTER) {\n swapFail('SWAP_UNSUPPORTED_ADAPTER')\n }\n if (input.standard !== 'erc20' || output.standard !== 'erc20') {\n swapFail('SWAP_UNSUPPORTED_TOKEN_STANDARD')\n }\n if (!matchesSupportedQuoteCapability(pool, dex, input, output)) {\n swapFail('SWAP_UNSUPPORTED_TOKEN')\n }\n\n const snapshot = Object.freeze({\n chainId: request.chainId,\n poolDefinitionId: request.poolDefinitionId,\n inputTokenDeploymentId: request.inputTokenDeploymentId,\n outputTokenDeploymentId: request.outputTokenDeploymentId,\n amountIn: request.amountIn,\n freshness,\n })\n return {\n request: snapshot,\n amountIn,\n pool,\n dex,\n input,\n output,\n freshness,\n }\n}\n\nconst ensureUint256 = (\n value: bigint,\n code: SwapQuoteErrorCode = 'SWAP_ARITHMETIC',\n): bigint => {\n if (value < 0n || value > UINT256_MAX) swapFail(code)\n return value\n}\n\nconst parseHexQuantity = (\n value: unknown,\n code: SwapQuoteErrorCode = 'SWAP_INVALID_POOL_STATE',\n): bigint => {\n if (typeof value !== 'string') swapFail(code)\n if (value.length > 66 || !HEX_QUANTITY.test(value)) swapFail(code)\n let parsed: bigint\n try {\n parsed = BigInt(value)\n } catch {\n swapFail(code)\n }\n return ensureUint256(parsed, code)\n}\n\nconst parseHexBytes = (\n value: unknown,\n expectedBytes?: number,\n code: SwapQuoteErrorCode = 'SWAP_INVALID_POOL_STATE',\n): string => {\n if (typeof value !== 'string') swapFail(code)\n if (\n !HEX_BYTES.test(value) ||\n value.length % 2 !== 0 ||\n (expectedBytes !== undefined && value.length !== expectedBytes * 2 + 2)\n ) swapFail(code)\n return value.toLowerCase()\n}\n\nconst parseDecimalQuantity = (\n value: unknown,\n code: SwapQuoteErrorCode = 'SWAP_INVALID_POOL_STATE',\n): bigint => {\n if (typeof value !== 'string') swapFail(code)\n if (value.length > 78 || !NONNEGATIVE_DECIMAL.test(value)) swapFail(code)\n let parsed: bigint\n try {\n parsed = BigInt(value)\n } catch {\n swapFail(code)\n }\n return ensureUint256(parsed, code)\n}\n\nconst addressWord = (value: unknown): string => {\n const bytes = parseHexBytes(value, 32)\n const word = bytes.slice(2)\n if (!/^0{24}[0-9a-f]{40}$/u.test(word)) {\n swapFail('SWAP_INVALID_POOL_STATE')\n }\n return `0x${word.slice(24)}`\n}\n\nconst uintWord = (value: string, maximum: bigint = UINT256_MAX): bigint => {\n const bytes = parseHexBytes(value, 32)\n const parsed = BigInt(`0x${bytes.slice(2)}`)\n if (parsed > maximum) swapFail('SWAP_INVALID_POOL_STATE')\n return parsed\n}\n\nconst parseExecutionHexBytes = (\n value: unknown,\n expectedBytes?: number,\n code: SwapExecutionErrorCode = 'SWAP_INVALID_SIMULATION',\n): string => {\n if (typeof value !== 'string') executionFail(code)\n if (\n !HEX_BYTES.test(value) ||\n value.length % 2 !== 0 ||\n (expectedBytes !== undefined && value.length !== expectedBytes * 2 + 2)\n ) {\n executionFail(code)\n }\n return value.toLowerCase()\n}\n\nconst executionAddressWord = (\n value: unknown,\n code: SwapExecutionErrorCode = 'SWAP_INVALID_SIMULATION',\n): string => {\n const bytes = parseExecutionHexBytes(value, 32, code)\n const word = bytes.slice(2)\n if (!/^0{24}[0-9a-f]{40}$/u.test(word)) executionFail(code)\n return `0x${word.slice(24)}`\n}\n\nconst executionUintWord = (\n value: unknown,\n code: SwapExecutionErrorCode = 'SWAP_INVALID_SIMULATION',\n): bigint => {\n const bytes = parseExecutionHexBytes(value, 32, code)\n try {\n return BigInt(`0x${bytes.slice(2)}`)\n } catch {\n executionFail(code)\n }\n}\n\nconst executionUintArrayOfTwo = (\n value: unknown,\n): readonly [bigint, bigint] => {\n const bytes = parseExecutionHexBytes(value)\n const payload = bytes.slice(2)\n if (payload.length % 64 !== 0 || payload.length < 256) {\n executionFail('SWAP_INVALID_SIMULATION')\n }\n const offset = BigInt(`0x${payload.slice(0, 64)}`)\n const length = BigInt(`0x${payload.slice(64, 128)}`)\n if (offset !== 0x20n || length !== 2n || payload.length !== 256) {\n executionFail('SWAP_INVALID_SIMULATION')\n }\n return [\n executionUintWord(`0x${payload.slice(128, 192)}`),\n executionUintWord(`0x${payload.slice(192, 256)}`),\n ]\n}\n\nconst reserveWords = (value: unknown): Reserves => {\n const bytes = parseHexBytes(value, 96)\n const payload = bytes.slice(2)\n const reserve0 = uintWord(`0x${payload.slice(0, 64)}`, UINT112_MAX)\n const reserve1 = uintWord(`0x${payload.slice(64, 128)}`, UINT112_MAX)\n uintWord(`0x${payload.slice(128, 192)}`, UINT32_MAX)\n return { reserve0, reserve1 }\n}\n\nconst blockHeader = (value: unknown): Header => {\n if (!isRecord(value)) swapFail('SWAP_STATE_STALE')\n return {\n number: parseHexQuantity(value.number, 'SWAP_STATE_STALE'),\n hash: parseHexBytes(value.hash, 32, 'SWAP_STATE_STALE'),\n timestamp: parseHexQuantity(value.timestamp, 'SWAP_STATE_STALE'),\n }\n}\n\nconst assertChainIdResponse = (value: unknown, chainId: string): void => {\n const network = parseHexQuantity(value, 'SWAP_CHAIN_MISMATCH')\n const expected =\n chainId === DEX_CHAIN_IDS.ethereum\n ? 1n\n : chainId === DEX_CHAIN_IDS.avalancheC\n ? 43114n\n : null\n if (expected === null || network !== expected) swapFail('SWAP_CHAIN_MISMATCH')\n}\n\nconst rpcSelector = (hash: string): Readonly<{ blockHash: string; requireCanonical: true }> => ({\n blockHash: hash,\n requireCanonical: true,\n})\n\nconst abiCall = (to: string, data: string): Readonly<{ to: string; data: string }> => ({\n to,\n data,\n})\n\nconst encodeAddressArgument = (address: string): string => {\n if (!EVM_ADDRESS.test(address)) swapFail('SWAP_INVALID_POOL_STATE')\n return address.slice(2).padStart(64, '0')\n}\n\nconst rpcRequest = async (\n transport: HttpJsonRpcTransport,\n method: string,\n params: readonly unknown[],\n options?: RpcSendOptions,\n): Promise<unknown> => {\n if (options?.signal?.aborted) {\n if (options.signal.reason !== undefined) throw options.signal.reason\n throw new DOMException('The operation was aborted', 'AbortError')\n }\n return transport.request(method, params, options)\n}\n\nconst currentClockSeconds = (\n clock: (() => number) | undefined,\n): number => {\n const value = clock === undefined ? Math.floor(Date.now() / 1000) : clock()\n if (!Number.isSafeInteger(value)) swapFail('SWAP_INVALID_ARGUMENT')\n return value\n}\n\nconst EXECUTION_REQUEST_KEYS = new Set([\n 'chainId',\n 'poolDefinitionId',\n 'inputTokenDeploymentId',\n 'outputTokenDeploymentId',\n 'amountIn',\n 'freshness',\n 'sender',\n 'recipient',\n 'slippageBps',\n 'deadline',\n])\n\nconst snapshotExecutionRequest = (\n request: unknown,\n): ExecutionRequestSnapshot => {\n if (!isRecord(request)) executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n if (Object.keys(request).some((key) => !EXECUTION_REQUEST_KEYS.has(key))) {\n executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n }\n\n // Copy every scalar and the shallow freshness record synchronously. The\n // resulting quote request is independent of mutations made while RPC is in\n // flight, while quote-field errors still come from normalizeQuoteRequest.\n const freshness = request.freshness\n const freshnessSnapshot = isRecord(freshness)\n ? { ...freshness }\n : freshness\n const quoteRequest = {\n chainId: request.chainId as string,\n poolDefinitionId: request.poolDefinitionId as string,\n inputTokenDeploymentId: request.inputTokenDeploymentId as string,\n outputTokenDeploymentId: request.outputTokenDeploymentId as string,\n amountIn: request.amountIn as string,\n ...(freshnessSnapshot === undefined\n ? {}\n : { freshness: freshnessSnapshot }),\n } as ExactInputQuoteRequest\n return {\n quoteRequest,\n sender: request.sender,\n recipient: request.recipient,\n slippageBps: request.slippageBps,\n deadline: request.deadline,\n }\n}\n\nconst normalizeExecutionAddress = (value: unknown): string => {\n if (typeof value !== 'string' || !/^0x[0-9a-fA-F]{40}$/u.test(value)) {\n executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n }\n const normalized = value.toLowerCase()\n if (normalized === `0x${'0'.repeat(40)}`) {\n executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n }\n return normalized\n}\n\nconst normalizeExecutionSlippage = (value: unknown): number => {\n if (\n typeof value !== 'number' ||\n !Number.isSafeInteger(value) ||\n value < 0 ||\n value > 9999\n ) {\n executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n }\n return value\n}\n\nconst parseExecutionDeadline = (\n value: unknown,\n): { readonly source: string; readonly value: bigint } => {\n if (typeof value !== 'string' || !UINT256_DECIMAL.test(value) || value.length > 78) {\n executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n }\n let parsed: bigint\n try {\n parsed = BigInt(value)\n } catch {\n executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n }\n if (parsed <= 0n || parsed > UINT256_MAX) {\n executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n }\n return { source: value, value: parsed }\n}\n\nconst normalizeExecutionRequest = (\n request: unknown,\n clock: (() => number) | undefined,\n): NormalizedExecutionRequest => {\n const snapshot = snapshotExecutionRequest(request)\n const sender = normalizeExecutionAddress(snapshot.sender)\n const recipient = normalizeExecutionAddress(snapshot.recipient)\n const slippageBps = normalizeExecutionSlippage(snapshot.slippageBps)\n const deadline = parseExecutionDeadline(snapshot.deadline)\n\n // A deadline that has already elapsed is rejected before the first RPC.\n // The quote snapshot and completion clock are checked again after I/O.\n const initialClock = BigInt(currentClockSeconds(clock))\n if (deadline.value <= initialClock) {\n executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n }\n\n let normalized: NormalizedRequest\n try {\n normalized = normalizeQuoteRequest(snapshot.quoteRequest)\n } catch (error) {\n if (\n error instanceof SwapQuoteError &&\n (error.code === 'SWAP_UNKNOWN_POOL' ||\n error.code === 'SWAP_UNSUPPORTED_ADAPTER' ||\n error.code === 'SWAP_UNSUPPORTED_TOKEN' ||\n error.code === 'SWAP_UNSUPPORTED_TOKEN_STANDARD')\n ) {\n executionFail('SWAP_UNSUPPORTED_EXECUTION')\n }\n throw error\n }\n return {\n normalized,\n sender,\n recipient,\n slippageBps,\n deadline: deadline.source,\n deadlineValue: deadline.value,\n }\n}\n\nconst assertFreshnessAtNow = (\n state: Pick<EvmState, 'initial' | 'latestAfterReads'>,\n freshness: NormalizedFreshness,\n now: bigint,\n): void => {\n const initialAge = now - state.initial.timestamp\n if (\n initialAge < -BigInt(freshness.maxClockSkewSeconds) ||\n initialAge > BigInt(freshness.maxBlockAgeSeconds)\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n const latestAge = now - state.latestAfterReads.timestamp\n if (\n latestAge < -BigInt(freshness.maxClockSkewSeconds) ||\n latestAge > BigInt(freshness.maxBlockAgeSeconds)\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n if (\n state.latestAfterReads.number < state.initial.number ||\n state.latestAfterReads.number - state.initial.number > BigInt(freshness.maxBlockLag)\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n if (\n state.latestAfterReads.number === state.initial.number &&\n state.latestAfterReads.hash !== state.initial.hash\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n if (\n state.latestAfterReads.number > state.initial.number &&\n state.latestAfterReads.timestamp < state.initial.timestamp\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n if (\n state.latestAfterReads.hash === state.initial.hash &&\n state.latestAfterReads.number === state.initial.number &&\n state.latestAfterReads.timestamp !== state.initial.timestamp\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n}\n\nconst assertFreshness = (\n state: Pick<EvmState, 'initial' | 'latestAfterReads'>,\n freshness: NormalizedFreshness,\n clock: (() => number) | undefined,\n): void => {\n assertFreshnessAtNow(\n state,\n freshness,\n BigInt(currentClockSeconds(clock)),\n )\n}\n\nconst executionCapabilityFor = (\n normalized: NormalizedRequest,\n): SwapExecutionCapability => {\n const capability = EXECUTION_CAPABILITIES.find(\n (entry) => entry.poolDefinitionId === normalized.pool.poolDefinitionId,\n )\n if (!capability || capability.status !== 'active') {\n executionFail('SWAP_UNSUPPORTED_EXECUTION')\n }\n\n const token0 = getTokenDeployment(capability.token0DeploymentId)\n const token1 = getTokenDeployment(capability.token1DeploymentId)\n const wrapped = getTokenDeployment(capability.wrappedNativeTokenDeploymentId)\n const nativeWrap = NATIVE_WRAP_DEFINITIONS.find(\n (entry) =>\n entry.chainId === capability.chainId &&\n entry.wrappedTokenDeploymentId === capability.wrappedNativeTokenDeploymentId,\n )\n const matchesCapabilityToken = (\n token: TokenDeployment | undefined,\n deploymentId: string,\n address: string,\n standard: 'erc20',\n ): boolean =>\n token?.deploymentId === deploymentId &&\n token.chainId === capability.chainId &&\n token.address === address &&\n token.standard === standard &&\n token.status === 'active'\n\n const inputMatches =\n matchesCapabilityToken(\n normalized.input,\n capability.token0DeploymentId,\n capability.token0Address,\n capability.token0Standard,\n ) ||\n matchesCapabilityToken(\n normalized.input,\n capability.token1DeploymentId,\n capability.token1Address,\n capability.token1Standard,\n )\n const outputMatches =\n matchesCapabilityToken(\n normalized.output,\n capability.token0DeploymentId,\n capability.token0Address,\n capability.token0Standard,\n ) ||\n matchesCapabilityToken(\n normalized.output,\n capability.token1DeploymentId,\n capability.token1Address,\n capability.token1Standard,\n )\n\n if (\n capability.chainId !== normalized.pool.chainId ||\n capability.dexDeploymentId !== normalized.pool.dexDeploymentId ||\n capability.adapterKind !== SUPPORTED_QUOTE_ADAPTER ||\n capability.functionKind !== 'exact-input-erc20-to-erc20' ||\n capability.functionSignature !== SWAP_EXECUTION_FUNCTION_SIGNATURE ||\n capability.functionSelector !== SWAP_EXECUTION_FUNCTION_SELECTOR ||\n normalized.dex.status !== 'active' ||\n normalized.dex.programAddress !== capability.factoryAddress ||\n normalized.dex.adapterKind !== capability.adapterKind ||\n normalized.pool.status !== 'active' ||\n normalized.pool.adapter.kind !== capability.adapterKind ||\n normalized.pool.adapter.feeNumerator !== '3' ||\n normalized.pool.adapter.feeDenominator !== '1000' ||\n normalized.pool.token0DeploymentId !== capability.token0DeploymentId ||\n normalized.pool.token1DeploymentId !== capability.token1DeploymentId ||\n !inputMatches ||\n !outputMatches ||\n !token0 ||\n !token1 ||\n !wrapped ||\n wrapped.chainId !== capability.chainId ||\n wrapped.address !== capability.wrappedNativeTokenAddress ||\n wrapped.standard !== 'erc20' ||\n wrapped.status !== 'active' ||\n !nativeWrap ||\n nativeWrap.status !== 'active' ||\n nativeWrap.wrappedTokenDeploymentId !== capability.wrappedNativeTokenDeploymentId\n ) {\n executionFail('SWAP_UNSUPPORTED_EXECUTION')\n }\n return capability\n}\n\nconst readEvmState = async (\n transport: HttpJsonRpcTransport,\n normalized: NormalizedRequest,\n clock: (() => number) | undefined,\n options?: RpcSendOptions,\n): Promise<EvmState> => {\n const { pool, dex } = normalized\n const chainId = await rpcRequest(transport, 'eth_chainId', [], options)\n assertChainIdResponse(chainId, pool.chainId)\n\n const initial = blockHeader(\n await rpcRequest(transport, 'eth_getBlockByNumber', ['latest', false], options),\n )\n const selector = rpcSelector(initial.hash)\n\n // Keep all state responses opaque until both final header checks pass. This\n // preserves stale/reorg precedence over malformed ABI data.\n const factoryCodeRaw = await rpcRequest(transport, 'eth_getCode', [\n dex.programAddress,\n selector,\n ], options)\n const poolCodeRaw = await rpcRequest(transport, 'eth_getCode', [\n pool.address,\n selector,\n ], options)\n const token0 = getTokenDeployment(pool.token0DeploymentId)\n const token1 = getTokenDeployment(pool.token1DeploymentId)\n const token0Address = token0?.address\n const token1Address = token1?.address\n if (typeof token0Address !== 'string' || typeof token1Address !== 'string') {\n swapFail('SWAP_INVALID_POOL_STATE')\n }\n const pairCallData = `${FACTORY_GET_PAIR_SELECTOR}${encodeAddressArgument(\n token0Address,\n )}${encodeAddressArgument(token1Address)}`\n const factoryPairRaw = await rpcRequest(transport, 'eth_call', [\n abiCall(dex.programAddress, pairCallData),\n selector,\n ], options)\n const pairFactoryRaw = await rpcRequest(transport, 'eth_call', [\n abiCall(pool.address, PAIR_FACTORY_SELECTOR),\n selector,\n ], options)\n const pairToken0Raw = await rpcRequest(transport, 'eth_call', [\n abiCall(pool.address, PAIR_TOKEN0_SELECTOR),\n selector,\n ], options)\n const pairToken1Raw = await rpcRequest(transport, 'eth_call', [\n abiCall(pool.address, PAIR_TOKEN1_SELECTOR),\n selector,\n ], options)\n const reservesRaw = await rpcRequest(transport, 'eth_call', [\n abiCall(pool.address, PAIR_GET_RESERVES_SELECTOR),\n selector,\n ], options)\n\n const latestAfterReads = blockHeader(\n await rpcRequest(transport, 'eth_getBlockByNumber', ['latest', false], options),\n )\n const reread = blockHeader(\n await rpcRequest(transport, 'eth_getBlockByNumber', [\n `0x${initial.number.toString(16)}`,\n false,\n ], options),\n )\n if (\n reread.number !== initial.number ||\n reread.hash !== initial.hash ||\n reread.timestamp !== initial.timestamp\n ) {\n swapFail('SWAP_STATE_STALE')\n }\n\n assertFreshness({ initial, latestAfterReads }, normalized.freshness, clock)\n\n const factoryCode = parseHexBytes(factoryCodeRaw)\n if (factoryCode.length <= 2) swapFail('SWAP_PROGRAM_MISMATCH')\n const poolCode = parseHexBytes(poolCodeRaw)\n if (poolCode.length <= 2) swapFail('SWAP_INVALID_POOL_STATE')\n\n const factoryPair = addressWord(factoryPairRaw)\n if (factoryPair !== pool.address) swapFail('SWAP_PROGRAM_MISMATCH')\n const pairFactory = addressWord(pairFactoryRaw)\n if (pairFactory !== dex.programAddress) swapFail('SWAP_PROGRAM_MISMATCH')\n const pairToken0 = addressWord(pairToken0Raw)\n const pairToken1 = addressWord(pairToken1Raw)\n if (pairToken0 !== token0Address || pairToken1 !== token1Address) {\n swapFail('SWAP_POOL_TOKEN_MISMATCH')\n }\n const reserves = reserveWords(reservesRaw)\n return { initial, latestAfterReads, reserves }\n}\n\nconst calculateQuote = (\n normalized: NormalizedRequest,\n state: EvmState,\n): { readonly amountOut: bigint; readonly feeNumerator: bigint; readonly feeDenominator: bigint } => {\n const feeNumerator = parseDecimalQuantity(\n normalized.pool.adapter.feeNumerator,\n 'SWAP_ARITHMETIC',\n )\n const feeDenominator = parseDecimalQuantity(\n normalized.pool.adapter.feeDenominator,\n 'SWAP_ARITHMETIC',\n )\n if (feeDenominator <= feeNumerator) swapFail('SWAP_ARITHMETIC')\n\n const token0 = getTokenDeployment(normalized.pool.token0DeploymentId)\n if (!token0?.address || !normalized.input.address || !normalized.output.address) {\n swapFail('SWAP_INVALID_POOL_STATE')\n }\n const inputIsToken0 = normalized.input.address.toLowerCase() === token0.address\n const reserveIn = inputIsToken0 ? state.reserves.reserve0 : state.reserves.reserve1\n const reserveOut = inputIsToken0 ? state.reserves.reserve1 : state.reserves.reserve0\n if (reserveIn <= 0n || reserveOut <= 0n) swapFail('SWAP_INSUFFICIENT_LIQUIDITY')\n\n const adjusted = ensureUint256(\n normalized.amountIn * (feeDenominator - feeNumerator),\n )\n const denominator = ensureUint256(reserveIn * feeDenominator + adjusted)\n if (denominator <= 0n) swapFail('SWAP_ARITHMETIC')\n const numerator = ensureUint256(adjusted * reserveOut)\n const amountOut = numerator / denominator\n ensureUint256(amountOut)\n if (amountOut <= 0n || amountOut > reserveOut) {\n swapFail('SWAP_INSUFFICIENT_LIQUIDITY')\n }\n return { amountOut, feeNumerator, feeDenominator }\n}\n\nconst quoteResult = (\n normalized: NormalizedRequest,\n state: EvmState,\n result: ReturnType<typeof calculateQuote>,\n): ExactInputQuoteResult => {\n const output: ExactInputQuoteResult = {\n quoteKind: 'exact-input',\n chainId: normalized.request.chainId,\n poolDefinitionId: normalized.pool.poolDefinitionId,\n dexDeploymentId: normalized.pool.dexDeploymentId,\n adapterKind: normalized.pool.adapter.kind,\n inputTokenDeploymentId: normalized.request.inputTokenDeploymentId,\n outputTokenDeploymentId: normalized.request.outputTokenDeploymentId,\n amountIn: normalized.amountIn.toString(10),\n amountOut: result.amountOut.toString(10),\n fee: {\n numerator: result.feeNumerator.toString(10),\n denominator: result.feeDenominator.toString(10),\n },\n snapshot: {\n kind: 'evm-block',\n blockNumber: state.initial.number.toString(10),\n blockHash: state.initial.hash,\n blockTimestamp: state.initial.timestamp.toString(10),\n },\n tokenCatalogDigest: TOKEN_CATALOG_CONTENT_DIGEST,\n dexCatalogDigest: DEX_CATALOG_CONTENT_DIGEST,\n }\n return deepFreeze(output)\n}\n\nconst transportForNormalized = (\n normalized: NormalizedRequest,\n options: SwapClientOptions,\n): HttpJsonRpcTransport => {\n const transport =\n normalized.pool.chainId === DEX_CHAIN_IDS.ethereum\n ? options.ethereum\n : normalized.pool.chainId === DEX_CHAIN_IDS.avalancheC\n ? options.avalanche\n : undefined\n if (!transport) swapFail('SWAP_UNSUPPORTED_ADAPTER')\n return transport\n}\n\nconst encodeUint256Word = (value: bigint): string =>\n ensureUint256(value).toString(16).padStart(64, '0')\n\nconst executionTokenAddress = (token: TokenDeployment): string => {\n if (typeof token.address !== 'string' || !EVM_ADDRESS.test(token.address)) {\n executionFail('SWAP_INVALID_SIMULATION')\n }\n return token.address.toLowerCase()\n}\n\nconst executionGetAmountsOutData = (\n amountIn: bigint,\n inputAddress: string,\n outputAddress: string,\n): string =>\n `${ROUTER_GET_AMOUNTS_OUT_SELECTOR}${encodeUint256Word(amountIn)}${encodeUint256Word(\n 0x40n,\n )}${encodeUint256Word(2n)}${encodeAddressArgument(\n inputAddress,\n )}${encodeAddressArgument(outputAddress)}`\n\nconst executionSwapData = (\n amountIn: bigint,\n minimumAmountOut: bigint,\n inputAddress: string,\n outputAddress: string,\n recipient: string,\n deadline: bigint,\n): string =>\n `${SWAP_EXECUTION_FUNCTION_SELECTOR}${encodeUint256Word(\n amountIn,\n )}${encodeUint256Word(minimumAmountOut)}${encodeUint256Word(\n 0xa0n,\n )}${encodeAddressArgument(recipient)}${encodeUint256Word(\n deadline,\n )}${encodeUint256Word(2n)}${encodeAddressArgument(\n inputAddress,\n )}${encodeAddressArgument(outputAddress)}`\n\nconst buildExecutionPreparation = (\n execution: NormalizedExecutionRequest,\n capability: SwapExecutionCapability,\n quote: ExactInputQuoteResult,\n): ExactInputSwapPreparation => {\n const inputAddress = executionTokenAddress(execution.normalized.input)\n const outputAddress = executionTokenAddress(execution.normalized.output)\n const quoteAmountOut = parseDecimalQuantity(quote.amountOut, 'SWAP_ARITHMETIC')\n const minimumAmountOut = ensureUint256(\n quoteAmountOut * BigInt(10000 - execution.slippageBps),\n 'SWAP_ARITHMETIC',\n ) / 10000n\n if (minimumAmountOut <= 0n) {\n executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n }\n\n const path = [\n {\n tokenDeploymentId: execution.normalized.input.deploymentId,\n address: inputAddress,\n standard: 'erc20' as const,\n representationKind: execution.normalized.input.representationKind,\n },\n {\n tokenDeploymentId: execution.normalized.output.deploymentId,\n address: outputAddress,\n standard: 'erc20' as const,\n representationKind: execution.normalized.output.representationKind,\n },\n ] as const\n const transaction = {\n kind: 'evm-unsigned-transaction' as const,\n chainId: quote.chainId,\n from: execution.sender,\n to: capability.routerAddress,\n data: executionSwapData(\n execution.normalized.amountIn,\n minimumAmountOut,\n inputAddress,\n outputAddress,\n execution.recipient,\n execution.deadlineValue,\n ),\n value: '0' as const,\n }\n return deepFreeze({\n preparationKind: 'evm-router-v2-exact-input' as const,\n executionCapabilityId: capability.swapExecutionCapabilityId,\n executionCapabilityDigest: SWAP_EXECUTION_CAPABILITIES_CONTENT_DIGEST,\n quote,\n minimumAmountOut: minimumAmountOut.toString(10),\n slippageBps: execution.slippageBps,\n deadline: execution.deadline,\n recipient: execution.recipient,\n path,\n transaction,\n allowance: {\n tokenDeploymentId: execution.normalized.input.deploymentId,\n tokenAddress: inputAddress,\n owner: execution.sender,\n spender: capability.routerAddress,\n requiredAmount: quote.amountIn,\n },\n })\n}\n\nconst assertExecutionDeadline = (\n execution: NormalizedExecutionRequest,\n quoteTimestamp: bigint,\n completionClock: bigint,\n): void => {\n if (\n execution.deadlineValue <= quoteTimestamp ||\n execution.deadlineValue <= completionClock\n ) {\n executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n }\n}\n\nconst prepareExecutionContext = async (\n execution: NormalizedExecutionRequest,\n capability: SwapExecutionCapability,\n transport: HttpJsonRpcTransport,\n options: SwapClientOptions,\n requestOptions?: RpcSendOptions,\n): Promise<PreparedExecutionContext> => {\n // The quote path is deliberately reused verbatim: this gives preparation\n // the existing eleven reads and the same local arithmetic/result contract.\n const state = await readEvmState(\n transport,\n execution.normalized,\n options.clock,\n requestOptions,\n )\n assertFreshness(state, execution.normalized.freshness, options.clock)\n const quote = quoteResult(\n execution.normalized,\n state,\n calculateQuote(execution.normalized, state),\n )\n if (execution.deadlineValue <= state.initial.timestamp) {\n executionFail('SWAP_EXECUTION_INVALID_ARGUMENT')\n }\n\n const inputAddress = executionTokenAddress(execution.normalized.input)\n const outputAddress = executionTokenAddress(execution.normalized.output)\n const selector = rpcSelector(state.initial.hash)\n const routerCodeRaw = await rpcRequest(transport, 'eth_getCode', [\n capability.routerAddress,\n selector,\n ], requestOptions)\n const routerCode = parseExecutionHexBytes(routerCodeRaw)\n if (routerCode.length <= 2) executionFail('SWAP_INVALID_SIMULATION')\n\n const routerFactoryRaw = await rpcRequest(transport, 'eth_call', [\n abiCall(capability.routerAddress, ROUTER_FACTORY_SELECTOR),\n selector,\n ], requestOptions)\n const routerFactory = executionAddressWord(routerFactoryRaw)\n if (routerFactory !== capability.factoryAddress) {\n executionFail('SWAP_PROGRAM_MISMATCH')\n }\n\n const wrappedNativeRaw = await rpcRequest(transport, 'eth_call', [\n abiCall(capability.routerAddress, capability.wrappedNativeFunctionSelector),\n selector,\n ], requestOptions)\n const wrappedNative = executionAddressWord(wrappedNativeRaw)\n if (wrappedNative !== capability.wrappedNativeTokenAddress) {\n executionFail('SWAP_PROGRAM_MISMATCH')\n }\n\n const amountsOutRaw = await rpcRequest(transport, 'eth_call', [\n abiCall(\n capability.routerAddress,\n executionGetAmountsOutData(\n execution.normalized.amountIn,\n inputAddress,\n outputAddress,\n ),\n ),\n selector,\n ], requestOptions)\n const amountsOut = executionUintArrayOfTwo(amountsOutRaw)\n const quoteAmountOut = parseDecimalQuantity(quote.amountOut, 'SWAP_ARITHMETIC')\n if (\n amountsOut[0] !== execution.normalized.amountIn ||\n amountsOut[1] !== quoteAmountOut\n ) {\n executionFail('SWAP_INVALID_SIMULATION')\n }\n\n const latestAfterRouterReads = blockHeader(\n await rpcRequest(\n transport,\n 'eth_getBlockByNumber',\n ['latest', false],\n requestOptions,\n ),\n )\n\n // The final latest read is the freshness/reorg check for the router reads.\n const completionClock = BigInt(currentClockSeconds(options.clock))\n assertFreshnessAtNow(\n {\n initial: state.initial,\n latestAfterReads: latestAfterRouterReads,\n },\n execution.normalized.freshness,\n completionClock,\n )\n\n const preparation = buildExecutionPreparation(execution, capability, quote)\n assertExecutionDeadline(\n execution,\n state.initial.timestamp,\n BigInt(currentClockSeconds(options.clock)),\n )\n return { normalized: execution, capability, transport, state, quote, preparation }\n}\n\nconst isRecognizedExecutionRevert = (error: unknown): boolean => {\n if (!(error instanceof ErpcJsonRpcError)) return false\n if (![3, -32000, -32015, -32603].includes(error.rpcCode)) return false\n const message = error.message.toLowerCase()\n return (\n message.includes('execution reverted') ||\n message.includes('transaction reverted') ||\n message.includes('vm execution error') ||\n /^revert(?:ed)?(?:\\b|:)/u.test(message)\n )\n}\n\nconst simulateExecutionContext = async (\n context: PreparedExecutionContext,\n options: SwapClientOptions,\n requestOptions?: RpcSendOptions,\n): Promise<ExactInputSwapSimulation> => {\n const { normalized, capability, transport, state, preparation } = context\n const selector = rpcSelector(state.initial.hash)\n const inputAddress = preparation.allowance.tokenAddress\n const allowanceData = `${ERC20_ALLOWANCE_SELECTOR}${encodeAddressArgument(\n normalized.sender,\n )}${encodeAddressArgument(capability.routerAddress)}`\n const allowanceRaw = await rpcRequest(transport, 'eth_call', [\n abiCall(inputAddress, allowanceData),\n selector,\n ], requestOptions)\n const currentAllowance = executionUintWord(\n allowanceRaw,\n 'SWAP_INSUFFICIENT_ALLOWANCE',\n )\n if (currentAllowance < normalized.normalized.amountIn) {\n executionFail('SWAP_INSUFFICIENT_ALLOWANCE')\n }\n\n let simulationRaw: unknown\n try {\n simulationRaw = await rpcRequest(transport, 'eth_call', [\n {\n from: preparation.transaction.from,\n to: preparation.transaction.to,\n data: preparation.transaction.data,\n value: '0x0',\n },\n selector,\n ], requestOptions)\n } catch (error) {\n if (isRecognizedExecutionRevert(error)) {\n executionFail('SWAP_SIMULATION_REVERTED')\n }\n throw error\n }\n\n const latestAfterSimulation = blockHeader(\n await rpcRequest(\n transport,\n 'eth_getBlockByNumber',\n ['latest', false],\n requestOptions,\n ),\n )\n const completionClock = BigInt(currentClockSeconds(options.clock))\n assertFreshnessAtNow(\n { initial: state.initial, latestAfterReads: latestAfterSimulation },\n normalized.normalized.freshness,\n completionClock,\n )\n\n const amounts = executionUintArrayOfTwo(simulationRaw)\n const quoteAmountOut = parseDecimalQuantity(\n preparation.quote.amountOut,\n 'SWAP_ARITHMETIC',\n )\n const minimumAmountOut = parseDecimalQuantity(\n preparation.minimumAmountOut,\n 'SWAP_ARITHMETIC',\n )\n if (\n amounts[0] !== normalized.normalized.amountIn ||\n amounts[1] !== quoteAmountOut ||\n amounts[1] < minimumAmountOut\n ) {\n executionFail('SWAP_INVALID_SIMULATION')\n }\n\n // Keep the completion check immediately adjacent to the returned result so\n // an expired deadline cannot be handed to the caller after decoding.\n assertExecutionDeadline(\n normalized,\n state.initial.timestamp,\n BigInt(currentClockSeconds(options.clock)),\n )\n\n return deepFreeze({\n simulationKind: 'evm-call' as const,\n preparation,\n snapshot: preparation.quote.snapshot,\n currentAllowance: currentAllowance.toString(10),\n amounts: [\n amounts[0].toString(10),\n amounts[1].toString(10),\n ] as const,\n amountOut: amounts[1].toString(10),\n })\n}\n\nconst quoteExactInputWithTransports = async (\n request: unknown,\n options: SwapClientOptions,\n requestOptions?: RpcSendOptions,\n): Promise<ExactInputQuoteResult> => {\n const normalized = normalizeQuoteRequest(request)\n if (normalized.pool.adapter.kind !== SUPPORTED_QUOTE_ADAPTER) {\n swapFail('SWAP_UNSUPPORTED_ADAPTER')\n }\n const selectedTransport = transportForNormalized(normalized, options)\n const state = await readEvmState(\n selectedTransport,\n normalized,\n options.clock,\n requestOptions,\n )\n // Repeat freshness immediately before decoding the quote result so the\n // private test clock and the real wall clock cannot silently drift.\n assertFreshness(state, normalized.freshness, options.clock)\n return quoteResult(normalized, state, calculateQuote(normalized, state))\n}\n\nconst prepareExactInputSwapWithTransports = async (\n request: unknown,\n options: SwapClientOptions,\n requestOptions?: RpcSendOptions,\n): Promise<ExactInputSwapPreparation> => {\n const normalized = normalizeExecutionRequest(request, options.clock)\n const capability = executionCapabilityFor(normalized.normalized)\n const transport = transportForNormalized(normalized.normalized, options)\n const context = await prepareExecutionContext(\n normalized,\n capability,\n transport,\n options,\n requestOptions,\n )\n return context.preparation\n}\n\nconst simulateExactInputSwapWithTransports = async (\n request: unknown,\n options: SwapClientOptions,\n requestOptions?: RpcSendOptions,\n): Promise<ExactInputSwapSimulation> => {\n const normalized = normalizeExecutionRequest(request, options.clock)\n const capability = executionCapabilityFor(normalized.normalized)\n const transport = transportForNormalized(normalized.normalized, options)\n const context = await prepareExecutionContext(\n normalized,\n capability,\n transport,\n options,\n requestOptions,\n )\n return simulateExecutionContext(context, options, requestOptions)\n}\n\nconst deepFreeze = <T>(value: T): T => {\n if (value && typeof value === 'object' && !Object.isFrozen(value)) {\n Object.freeze(value)\n for (const child of Object.values(value as Record<string, unknown>)) {\n deepFreeze(child)\n }\n }\n return value\n}\n\nconst EXECUTION_CAPABILITIES = deepFreeze(\n JSON.parse(SWAP_EXECUTION_CAPABILITIES_JSON) as SwapExecutionCapability[],\n)\n\n/** Internal constructor used by the configured client and package tests. */\nexport const createSwapClient = (options: SwapClientOptions): SwapClient =>\n Object.freeze({\n quoteExactInput: (\n request: ExactInputQuoteRequest,\n requestOptions?: RpcSendOptions,\n ) => quoteExactInputWithTransports(request, options, requestOptions),\n prepareExactInputSwap: (\n request: PrepareExactInputSwapRequest,\n requestOptions?: RpcSendOptions,\n ) => prepareExactInputSwapWithTransports(request, options, requestOptions),\n simulateExactInputSwap: (\n request: PrepareExactInputSwapRequest,\n requestOptions?: RpcSendOptions,\n ) => simulateExactInputSwapWithTransports(request, options, requestOptions),\n })\n","import {\n ErpcAbortedError,\n ErpcHttpError,\n ErpcInvalidResponseError,\n ErpcJsonRpcError,\n ErpcNotConfiguredError,\n ErpcTimeoutError,\n ErpcTransportError,\n directRedactionVariants,\n redactJsonRpcError,\n} from '../errors'\nimport type {\n JsonRpcFailure,\n JsonRpcId,\n JsonRpcParams,\n JsonRpcRequest,\n JsonRpcResponse,\n RpcBatchCall,\n RpcSendOptions,\n} from '../rpc/types'\n\nexport interface HttpTransportConfig {\n readonly apiKey?: string\n readonly direct?: boolean\n readonly endpoint: URL\n readonly fetch: typeof globalThis.fetch\n readonly headers: Readonly<Record<string, string>>\n readonly maxBatchSize?: number\n readonly timeoutMs: number\n readonly unavailableNamespace?: string\n}\n\ninterface ControlledSignal {\n readonly cleanup: () => void\n readonly signal: AbortSignal\n readonly timedOut: () => boolean\n}\n\nconst controlledSignal = (\n timeoutMs: number,\n external?: AbortSignal,\n): ControlledSignal => {\n const controller = new AbortController()\n let didTimeOut = false\n\n const timeout = setTimeout(() => {\n didTimeOut = true\n controller.abort()\n }, timeoutMs)\n\n const abort = () => controller.abort()\n if (external?.aborted) controller.abort()\n else external?.addEventListener('abort', abort, { once: true })\n\n return {\n signal: controller.signal,\n timedOut: () => didTimeOut,\n cleanup: () => {\n clearTimeout(timeout)\n external?.removeEventListener('abort', abort)\n },\n }\n}\n\nconst isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst isFailure = (value: unknown): value is JsonRpcFailure =>\n isObject(value) &&\n isObject(value.error) &&\n typeof value.error.code === 'number' &&\n typeof value.error.message === 'string'\n\nconst parseJson = (text: string): unknown => {\n try {\n return JSON.parse(text) as unknown\n } catch {\n throw new ErpcInvalidResponseError('ERPC returned malformed JSON')\n }\n}\n\nconst directRequestHeaders = (\n headers: Readonly<Record<string, string>>,\n): Headers | Readonly<Record<string, string>> => {\n try {\n const result = new Headers(headers)\n result.set('accept', 'application/json')\n result.set('content-type', 'application/json')\n return result\n } catch {\n // Keep the transport error generic when a caller supplied an invalid\n // header, while still removing protocol-header case duplicates.\n const result: Record<string, string> = {}\n for (const [name, value] of Object.entries(headers)) {\n const lowerName = name.toLowerCase()\n if (lowerName === 'accept' || lowerName === 'content-type') continue\n result[name] = value\n }\n result.accept = 'application/json'\n result['content-type'] = 'application/json'\n return result\n }\n}\n\nexport class HttpJsonRpcTransport {\n readonly endpoint: string\n readonly maxBatchSize: number\n\n readonly #apiKey: string\n readonly #direct: boolean\n readonly #requestEndpoint: URL\n readonly #fetch: typeof globalThis.fetch\n readonly #headers: Readonly<Record<string, string>>\n readonly #redactionVariants: readonly string[]\n readonly #timeoutMs: number\n readonly #unavailableNamespace: string | undefined\n #nextId = 1\n\n constructor(config: HttpTransportConfig) {\n this.#apiKey = config.apiKey ?? ''\n this.#direct = config.direct ?? false\n this.#requestEndpoint = new URL(config.endpoint)\n this.#fetch = config.fetch\n this.#headers = config.headers\n this.#redactionVariants = this.#direct\n ? directRedactionVariants(this.#requestEndpoint, this.#headers)\n : []\n this.#timeoutMs = config.timeoutMs\n this.#unavailableNamespace = config.unavailableNamespace\n this.maxBatchSize = config.maxBatchSize ?? 256\n\n const endpoint = new URL(config.endpoint)\n endpoint.search = ''\n endpoint.hash = ''\n this.endpoint = endpoint.toString()\n }\n\n async request<TResult>(\n method: string,\n params?: JsonRpcParams,\n options: RpcSendOptions = {},\n ): Promise<TResult> {\n this.#ensureConfigured()\n const id = this.#id()\n const request = this.#request(id, method, params)\n const response = await this.#post(request, options)\n return this.#unwrap<TResult>(response, id)\n }\n\n async batch<TResult extends readonly unknown[]>(\n calls: readonly RpcBatchCall[],\n options: RpcSendOptions = {},\n ): Promise<TResult> {\n this.#ensureConfigured()\n if (calls.length === 0) return [] as unknown as TResult\n if (calls.length > this.maxBatchSize) {\n throw new ErpcInvalidResponseError(\n `A batch may contain at most ${this.maxBatchSize} calls`,\n )\n }\n\n const requests = calls.map((call) => {\n const id = this.#id()\n return this.#request(id, call.method, call.params)\n })\n const raw = await this.#post(requests, options)\n if (!Array.isArray(raw)) {\n if (isFailure(raw)) {\n throw new ErpcJsonRpcError(\n redactJsonRpcError(\n raw.error,\n this.#direct ? undefined : this.#apiKey,\n this.#redactionVariants,\n ),\n )\n }\n throw new ErpcInvalidResponseError('ERPC returned a non-array batch response')\n }\n\n const expectedIds = new Set<JsonRpcId>(requests.map((request) => request.id))\n const byId = new Map<JsonRpcId, unknown>()\n for (const response of raw) {\n if (!isObject(response) || !('id' in response)) {\n throw new ErpcInvalidResponseError('ERPC returned an invalid batch item')\n }\n const id = response.id\n if (typeof id !== 'number' && typeof id !== 'string') {\n throw new ErpcInvalidResponseError('ERPC returned an invalid batch id')\n }\n if (!expectedIds.has(id)) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an unexpected batch response id',\n )\n }\n if (byId.has(id)) {\n throw new ErpcInvalidResponseError(\n `ERPC returned duplicate batch response id ${String(id)}`,\n )\n }\n byId.set(id, response)\n }\n\n const results = requests.map((request) => {\n const response = byId.get(request.id)\n if (response === undefined) {\n throw new ErpcInvalidResponseError(\n `ERPC omitted batch response id ${String(request.id)}`,\n )\n }\n return this.#unwrap(response, request.id)\n })\n return results as unknown as TResult\n }\n\n #id(): number {\n const id = this.#nextId\n this.#nextId = id >= Number.MAX_SAFE_INTEGER ? 1 : id + 1\n return id\n }\n\n #ensureConfigured(): void {\n if (this.#unavailableNamespace !== undefined) {\n throw new ErpcNotConfiguredError(this.#unavailableNamespace)\n }\n }\n\n #request(\n id: JsonRpcId,\n method: string,\n params?: JsonRpcParams,\n ): JsonRpcRequest<JsonRpcParams> {\n const request: {\n jsonrpc: '2.0'\n id: JsonRpcId\n method: string\n params?: JsonRpcParams\n } = { jsonrpc: '2.0', id, method }\n if (params !== undefined) request.params = params\n return request\n }\n\n async #post(\n body: unknown,\n options: RpcSendOptions,\n ): Promise<unknown> {\n this.#ensureConfigured()\n\n const url = new URL(this.#requestEndpoint)\n if (!this.#direct) url.searchParams.set('api-key', this.#apiKey)\n const controlled = controlledSignal(this.#timeoutMs, options.signal)\n\n try {\n const response = await this.#fetch(url, {\n method: 'POST',\n headers: this.#direct\n ? directRequestHeaders(this.#headers)\n : {\n ...this.#headers,\n 'content-type': 'application/json',\n },\n body: JSON.stringify(body),\n signal: controlled.signal,\n ...(this.#direct\n ? {\n credentials: 'omit' as const,\n redirect: 'manual' as const,\n }\n : {}),\n })\n const text = await response.text()\n if (!response.ok) throw new ErpcHttpError(response.status)\n return parseJson(text)\n } catch (error) {\n if (error instanceof ErpcHttpError || error instanceof ErpcInvalidResponseError) {\n throw error\n }\n if (controlled.timedOut()) throw new ErpcTimeoutError(this.#timeoutMs)\n if (options.signal?.aborted) throw new ErpcAbortedError()\n // Do not retain the underlying fetch error: custom runtimes may include\n // the credential-bearing request URL or headers in its message.\n throw new ErpcTransportError('Unable to reach ERPC')\n } finally {\n controlled.cleanup()\n }\n }\n\n #unwrap<TResult>(response: unknown, expectedId: JsonRpcId): TResult {\n if (!isObject(response)) throw new ErpcInvalidResponseError()\n if (response.id !== expectedId) {\n throw new ErpcInvalidResponseError('ERPC returned an unexpected response id')\n }\n if (isFailure(response)) {\n throw new ErpcJsonRpcError(\n redactJsonRpcError(\n response.error,\n this.#direct ? undefined : this.#apiKey,\n this.#redactionVariants,\n ),\n )\n }\n if (!('result' in response)) throw new ErpcInvalidResponseError()\n return (response as unknown as JsonRpcResponse<TResult> & { result: TResult })\n .result\n }\n}\n","import { ErpcConfigError, ErpcInvalidResponseError } from './errors'\nimport type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\n\nexport interface MonthlyApiKeyMethodUsage {\n readonly count: number\n readonly creditCost: number\n readonly credits: number\n readonly method: string\n readonly updatedAt: string | null\n}\n\nexport interface MonthlyApiKeyChainUsage {\n readonly chain: string\n readonly count: number\n readonly credits: number\n readonly methods: readonly MonthlyApiKeyMethodUsage[]\n readonly updatedAt: string | null\n}\n\nexport interface MonthlyApiKeyUsageEntry {\n readonly apiKeyLast4: string\n readonly apiKeyLength: number\n readonly chains: readonly MonthlyApiKeyChainUsage[]\n readonly count: number\n readonly credits: number\n readonly keyId: number | null\n readonly updatedAt: string | null\n}\n\nexport interface MonthlyApiKeyUsage {\n readonly apiKeys: readonly MonthlyApiKeyUsageEntry[]\n readonly chains: readonly MonthlyApiKeyChainUsage[]\n readonly hasStrandedUsage: boolean\n readonly keyCount: number\n readonly totalCount: number\n readonly totalCredits: number\n readonly updatedAt: string | null\n readonly yearMonth: string\n}\n\nexport interface MonthlyApiKeyUsageParams {\n /** Calendar month in `YYYY-MM` format. The current month is used when omitted. */\n readonly yearMonth?: string\n}\n\nconst YEAR_MONTH = /^\\d{4}-(0[1-9]|1[0-2])$/\n\nconst objectValue = (value: unknown): Record<string, unknown> | null =>\n typeof value === 'object' && value !== null\n ? value as Record<string, unknown>\n : null\n\nconst isTimestamp = (value: unknown): value is string | null =>\n value === null || typeof value === 'string'\n\nconst parseMethod = (value: unknown): MonthlyApiKeyMethodUsage | null => {\n const method = objectValue(value)\n if (\n method === null ||\n typeof method.count !== 'number' ||\n typeof method.creditCost !== 'number' ||\n typeof method.credits !== 'number' ||\n typeof method.method !== 'string' ||\n !isTimestamp(method.updatedAt)\n ) return null\n return {\n count: method.count,\n creditCost: method.creditCost,\n credits: method.credits,\n method: method.method,\n updatedAt: method.updatedAt,\n }\n}\n\nconst parseChain = (value: unknown): MonthlyApiKeyChainUsage | null => {\n const chain = objectValue(value)\n if (\n chain === null ||\n typeof chain.chain !== 'string' ||\n typeof chain.count !== 'number' ||\n typeof chain.credits !== 'number' ||\n !Array.isArray(chain.methods) ||\n !isTimestamp(chain.updatedAt)\n ) return null\n const methods = chain.methods.map(parseMethod)\n if (methods.some((method) => method === null)) return null\n return {\n chain: chain.chain,\n count: chain.count,\n credits: chain.credits,\n methods: methods as readonly MonthlyApiKeyMethodUsage[],\n updatedAt: chain.updatedAt,\n }\n}\n\nconst parseApiKey = (value: unknown): MonthlyApiKeyUsageEntry | null => {\n const apiKey = objectValue(value)\n if (\n apiKey === null ||\n typeof apiKey.apiKeyLast4 !== 'string' ||\n typeof apiKey.apiKeyLength !== 'number' ||\n !Array.isArray(apiKey.chains) ||\n typeof apiKey.count !== 'number' ||\n typeof apiKey.credits !== 'number' ||\n (apiKey.keyId !== null && typeof apiKey.keyId !== 'number') ||\n !isTimestamp(apiKey.updatedAt)\n ) return null\n const chains = apiKey.chains.map(parseChain)\n if (chains.some((chain) => chain === null)) return null\n return {\n apiKeyLast4: apiKey.apiKeyLast4,\n apiKeyLength: apiKey.apiKeyLength,\n chains: chains as readonly MonthlyApiKeyChainUsage[],\n count: apiKey.count,\n credits: apiKey.credits,\n keyId: apiKey.keyId,\n updatedAt: apiKey.updatedAt,\n }\n}\n\nconst parseMonthlyUsage = (value: unknown): MonthlyApiKeyUsage | null => {\n const usage = objectValue(value)\n if (\n usage === null ||\n !Array.isArray(usage.apiKeys) ||\n !Array.isArray(usage.chains) ||\n typeof usage.hasStrandedUsage !== 'boolean' ||\n typeof usage.keyCount !== 'number' ||\n typeof usage.totalCount !== 'number' ||\n typeof usage.totalCredits !== 'number' ||\n !isTimestamp(usage.updatedAt) ||\n typeof usage.yearMonth !== 'string' ||\n !YEAR_MONTH.test(usage.yearMonth)\n ) return null\n const apiKeys = usage.apiKeys.map(parseApiKey)\n const chains = usage.chains.map(parseChain)\n if (\n apiKeys.some((apiKey) => apiKey === null) ||\n chains.some((chain) => chain === null)\n ) return null\n return {\n apiKeys: apiKeys as readonly MonthlyApiKeyUsageEntry[],\n chains: chains as readonly MonthlyApiKeyChainUsage[],\n hasStrandedUsage: usage.hasStrandedUsage,\n keyCount: usage.keyCount,\n totalCount: usage.totalCount,\n totalCredits: usage.totalCredits,\n updatedAt: usage.updatedAt,\n yearMonth: usage.yearMonth,\n }\n}\n\nexport class UsageClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n async getMonthlyApiKeyUsage(\n params: MonthlyApiKeyUsageParams = {},\n options?: RpcSendOptions,\n ): Promise<MonthlyApiKeyUsage> {\n if (params.yearMonth !== undefined && !YEAR_MONTH.test(params.yearMonth)) {\n throw new ErpcConfigError('yearMonth must use YYYY-MM format')\n }\n\n const response: unknown = await this.#transport.get(\n '/v3/user/api-keys/usage',\n { yearMonth: params.yearMonth },\n options,\n )\n const envelope = objectValue(response)\n const usage = envelope?.success === true\n ? parseMonthlyUsage(envelope.message)\n : null\n if (usage === null) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid monthly API key usage response',\n )\n }\n return usage\n }\n}\n","import { AccountClient } from './account'\nimport {\n endpointWithPath,\n resolveConfig,\n websocketUrl,\n type ErpcClientConfig,\n type ResolvedRpcEndpointConfig,\n} from './config'\nimport { PriceClient } from './price'\nimport {\n createAvalancheClient,\n type AvalancheClient,\n} from './rpc/avalanche'\nimport {\n createEthereumClient,\n type EthereumClient,\n} from './rpc/ethereum'\nimport { createSolanaClient, type SolanaClient } from './rpc/solana'\nimport {\n EthereumSubscriptions,\n SolanaSubscriptions,\n} from './subscriptions'\nimport { createSwapClient, type SwapClient } from './swap'\nimport { HttpJsonRpcTransport } from './transport/http'\nimport { RestTransport } from './transport/rest'\nimport { WebSocketJsonRpcTransport } from './transport/websocket'\nimport { UsageClient } from './usage'\n\nexport interface ErpcSolanaClient extends SolanaClient {\n readonly subscriptions: SolanaSubscriptions\n}\n\nexport interface ErpcEthereumClient extends EthereumClient {\n readonly subscriptions: EthereumSubscriptions\n}\n\nexport interface ErpcAvalancheClient extends AvalancheClient {\n readonly subscriptions: EthereumSubscriptions\n}\n\nexport interface ErpcClient {\n readonly account: AccountClient\n readonly avalanche: ErpcAvalancheClient\n readonly ethereum: ErpcEthereumClient\n readonly price: PriceClient\n readonly solana: ErpcSolanaClient\n readonly swap: SwapClient\n readonly usage: UsageClient\n close(): void\n}\n\nconst unavailableEndpoint = (namespace: string): URL =>\n new URL(\n `https://unconfigured.invalid/${namespace.replace(/[^a-z\\d._-]+/giu, '-')}`,\n )\n\nexport const createErpcClient = (config: ErpcClientConfig): ErpcClient => {\n const resolved = resolveConfig(config)\n const legacyTransport = {\n fetch: resolved.fetch,\n headers: resolved.headers,\n timeoutMs: resolved.timeoutMs,\n ...(resolved.apiKey === undefined ? {} : { apiKey: resolved.apiKey }),\n }\n\n const createUnavailableHttp = (namespace: string) =>\n new HttpJsonRpcTransport({\n endpoint: unavailableEndpoint(namespace),\n fetch: resolved.fetch,\n headers: {},\n timeoutMs: resolved.timeoutMs,\n unavailableNamespace: namespace,\n })\n\n const createUnavailableWebSocket = (namespace: string) =>\n new WebSocketJsonRpcTransport({\n endpoint: unavailableEndpoint(namespace),\n timeoutMs: resolved.timeoutMs,\n unavailableNamespace: namespace,\n })\n\n const createDirectHttp = (\n endpoint: ResolvedRpcEndpointConfig,\n ) =>\n new HttpJsonRpcTransport({\n direct: true,\n endpoint: endpoint.httpUrl,\n fetch: resolved.fetch,\n headers: endpoint.headers,\n timeoutMs: resolved.timeoutMs,\n })\n\n const createDirectWebSocket = (\n endpoint: ResolvedRpcEndpointConfig,\n namespace: string,\n ) => {\n if (endpoint.webSocketUrl === undefined) {\n return createUnavailableWebSocket(namespace)\n }\n return new WebSocketJsonRpcTransport({\n endpoint: endpoint.webSocketUrl,\n redactionHeaders: endpoint.headers,\n timeoutMs: resolved.timeoutMs,\n ...(resolved.webSocket === undefined\n ? {}\n : { webSocket: resolved.webSocket }),\n })\n }\n\n const createLegacyHttp = (endpoint: URL) =>\n new HttpJsonRpcTransport({ ...legacyTransport, endpoint })\n\n const createLegacyWebSocket = (endpoint: URL) =>\n new WebSocketJsonRpcTransport({\n endpoint,\n timeoutMs: resolved.timeoutMs,\n ...(resolved.webSocket === undefined\n ? {}\n : { webSocket: resolved.webSocket }),\n })\n\n const solanaTransport = resolved.solanaRpc === undefined\n ? resolved.apiKey === undefined\n ? createUnavailableHttp('solana.rpc')\n : createLegacyHttp(resolved.endpoint)\n : createDirectHttp(resolved.solanaRpc)\n\n const ethereumTransport = resolved.ethereumRpc === undefined\n ? resolved.apiKey === undefined\n ? createUnavailableHttp('ethereum.rpc')\n : createLegacyHttp(endpointWithPath(resolved.endpoint, '/eth'))\n : createDirectHttp(resolved.ethereumRpc)\n\n const avalancheTransport = resolved.avalancheCRpc === undefined\n ? resolved.apiKey === undefined\n ? createUnavailableHttp('avalanche.rpc')\n : createLegacyHttp(endpointWithPath(resolved.avalancheEndpoint, '/ava'))\n : createDirectHttp(resolved.avalancheCRpc)\n\n const avalancheNativeTransport = resolved.apiKey === undefined\n ? createUnavailableHttp('avalanche.native')\n : createLegacyHttp(endpointWithPath(resolved.avalancheEndpoint, '/ava'))\n\n const avalancheIndexTransport = (path: string, namespace: string) =>\n resolved.apiKey === undefined\n ? createUnavailableHttp(namespace)\n : createLegacyHttp(endpointWithPath(resolved.avalancheEndpoint, path))\n\n const solanaWebSocket = resolved.solanaRpc === undefined\n ? resolved.apiKey === undefined\n ? createUnavailableWebSocket('solana.subscriptions')\n : createLegacyWebSocket(websocketUrl(resolved.endpoint, resolved.apiKey))\n : createDirectWebSocket(resolved.solanaRpc, 'solana.subscriptions')\n\n const ethereumWebSocket = resolved.ethereumRpc === undefined\n ? resolved.apiKey === undefined\n ? createUnavailableWebSocket('ethereum.subscriptions')\n : createLegacyWebSocket(\n websocketUrl(resolved.endpoint, resolved.apiKey, '/eth'),\n )\n : createDirectWebSocket(resolved.ethereumRpc, 'ethereum.subscriptions')\n\n const avalancheWebSocket = resolved.avalancheCRpc === undefined\n ? resolved.apiKey === undefined\n ? createUnavailableWebSocket('avalanche.subscriptions')\n : createLegacyWebSocket(\n websocketUrl(resolved.avalancheEndpoint, resolved.apiKey, '/ava-ws'),\n )\n : createDirectWebSocket(\n resolved.avalancheCRpc,\n 'avalanche.subscriptions',\n )\n\n const createUnavailableRest = (namespace: string) =>\n new RestTransport({\n endpoint: unavailableEndpoint(namespace),\n fetch: resolved.fetch,\n headers: {},\n timeoutMs: resolved.timeoutMs,\n unavailableNamespace: namespace,\n })\n\n const priceTransport = resolved.apiKey === undefined\n ? createUnavailableRest('price')\n : new RestTransport({ ...legacyTransport, endpoint: resolved.endpoint })\n const accountTransport = resolved.apiKey === undefined\n ? createUnavailableRest('account')\n : new RestTransport({\n ...legacyTransport,\n endpoint: resolved.accountEndpoint,\n })\n const userTransport = resolved.apiKey === undefined\n ? createUnavailableRest('usage')\n : new RestTransport({ ...legacyTransport, endpoint: resolved.userEndpoint })\n\n const solana: ErpcSolanaClient = {\n ...createSolanaClient(solanaTransport),\n subscriptions: new SolanaSubscriptions(solanaWebSocket),\n }\n const ethereum: ErpcEthereumClient = {\n ...createEthereumClient(ethereumTransport),\n subscriptions: new EthereumSubscriptions(ethereumWebSocket),\n }\n const avalanche: ErpcAvalancheClient = {\n ...createAvalancheClient(avalancheTransport, {\n cChainBlocks: avalancheIndexTransport(\n '/ava/ext/index/C/block',\n 'avalanche.index.cChainBlocks',\n ),\n pChainBlocks: avalancheIndexTransport(\n '/ava/ext/index/P/block',\n 'avalanche.index.pChainBlocks',\n ),\n xChainBlocks: avalancheIndexTransport(\n '/ava/ext/index/X/block',\n 'avalanche.index.xChainBlocks',\n ),\n xChainTransactions: avalancheIndexTransport(\n '/ava/ext/index/X/tx',\n 'avalanche.index.xChainTransactions',\n ),\n }, avalancheNativeTransport),\n subscriptions: new EthereumSubscriptions(avalancheWebSocket),\n }\n const swap = createSwapClient({\n ethereum: ethereumTransport,\n avalanche: avalancheTransport,\n })\n\n return {\n solana,\n ethereum,\n avalanche,\n price: new PriceClient(priceTransport),\n account: new AccountClient(accountTransport),\n swap,\n usage: new UsageClient(userTransport),\n close: () => {\n solana.subscriptions.close()\n ethereum.subscriptions.close()\n avalanche.subscriptions.close()\n },\n }\n}\n","import { ErpcInvalidResponseError } from './errors'\nimport type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\n\nexport type CloudCreditAlertLevel =\n | 'critical'\n | 'normal'\n | 'suspended'\n | 'warning'\n\nexport interface CloudCredit {\n readonly alertLevel: CloudCreditAlertLevel\n readonly balanceCents: number\n readonly burnRateCentsPerHour: number\n readonly quoteExpiresAt: string\n readonly quoteTimestamp: string\n readonly timeToZeroHours: number | null\n}\n\nconst alertLevels: readonly CloudCreditAlertLevel[] = [\n 'critical',\n 'normal',\n 'suspended',\n 'warning',\n]\n\nconst objectValue = (value: unknown): Record<string, unknown> | null =>\n typeof value === 'object' && value !== null\n ? value as Record<string, unknown>\n : null\n\nconst isDateTime = (value: unknown): value is string =>\n typeof value === 'string' && Number.isFinite(Date.parse(value))\n\nconst parseCredit = (value: unknown): CloudCredit | null => {\n const credit = objectValue(value)\n if (\n credit === null ||\n typeof credit.balanceCents !== 'number' ||\n !Number.isInteger(credit.balanceCents) ||\n typeof credit.burnRateCentsPerHour !== 'number' ||\n !Number.isInteger(credit.burnRateCentsPerHour) ||\n credit.burnRateCentsPerHour < 0 ||\n (credit.timeToZeroHours !== null &&\n (typeof credit.timeToZeroHours !== 'number' ||\n !Number.isFinite(credit.timeToZeroHours) ||\n credit.timeToZeroHours < 0)) ||\n typeof credit.alertLevel !== 'string' ||\n !alertLevels.includes(credit.alertLevel as CloudCreditAlertLevel) ||\n !isDateTime(credit.quoteTimestamp) ||\n !isDateTime(credit.quoteExpiresAt)\n ) return null\n\n return {\n alertLevel: credit.alertLevel as CloudCreditAlertLevel,\n balanceCents: credit.balanceCents,\n burnRateCentsPerHour: credit.burnRateCentsPerHour,\n quoteExpiresAt: credit.quoteExpiresAt,\n quoteTimestamp: credit.quoteTimestamp,\n timeToZeroHours: credit.timeToZeroHours,\n }\n}\n\nexport class CloudCreditClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n async get(options?: RpcSendOptions): Promise<CloudCredit> {\n const response: unknown = await this.#transport.get(\n '/v4/cloud/credit',\n undefined,\n options,\n )\n const envelope = objectValue(response)\n const credit = envelope?.success === true\n ? parseCredit(envelope.message)\n : null\n if (credit === null) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud credit snapshot',\n )\n }\n return credit\n }\n}\n","import { ErpcConfigError, ErpcInvalidResponseError } from './errors'\nimport type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\n\nexport type CloudResourceKind =\n | 'bare-metal'\n | 'solana-grpc'\n | 'solana-shredstream'\n | 'vps'\n\nexport type CloudResourceMode = 'dedicated' | 'direct' | 'shared'\n\n/** A credential-free projection of an ERPC Cloud resource. */\nexport interface CloudResource {\n readonly createdAt?: string\n readonly id: string\n readonly kind: CloudResourceKind\n readonly mode?: CloudResourceMode\n readonly name?: string\n readonly region?: string\n readonly status: string\n}\n\nexport interface CloudResourceStatusBilling {\n readonly graceEndsAt?: string\n readonly hourlyCredits?: number\n readonly nextChargeAt?: string\n readonly status: 'active' | 'grace-period' | 'inactive' | 'suspended'\n}\n\nexport interface CloudResourceStatus {\n readonly billing?: CloudResourceStatusBilling\n readonly id: string\n readonly status: string\n}\n\nconst objectValue = (value: unknown): Record<string, unknown> | null =>\n typeof value === 'object' && value !== null\n ? value as Record<string, unknown>\n : null\n\nconst resourceKinds: readonly CloudResourceKind[] = [\n 'bare-metal',\n 'solana-grpc',\n 'solana-shredstream',\n 'vps',\n]\nconst resourceModes: readonly CloudResourceMode[] = [\n 'dedicated',\n 'direct',\n 'shared',\n]\nconst billingStatuses: readonly CloudResourceStatusBilling['status'][] = [\n 'active',\n 'grace-period',\n 'inactive',\n 'suspended',\n]\n\nconst isDateTime = (value: unknown): value is string =>\n typeof value === 'string' && Number.isFinite(Date.parse(value))\n\nconst parseStatusBilling = (\n value: unknown,\n): CloudResourceStatusBilling | null => {\n const billing = objectValue(value)\n if (\n billing === null ||\n typeof billing.status !== 'string' ||\n !billingStatuses.includes(\n billing.status as CloudResourceStatusBilling['status'],\n ) ||\n (billing.hourlyCredits !== undefined &&\n (typeof billing.hourlyCredits !== 'number' ||\n !Number.isFinite(billing.hourlyCredits) ||\n billing.hourlyCredits < 0)) ||\n (billing.nextChargeAt !== undefined &&\n !isDateTime(billing.nextChargeAt)) ||\n (billing.graceEndsAt !== undefined &&\n !isDateTime(billing.graceEndsAt))\n ) return null\n\n return {\n status: billing.status as CloudResourceStatusBilling['status'],\n ...(typeof billing.hourlyCredits === 'number'\n ? { hourlyCredits: billing.hourlyCredits }\n : {}),\n ...(typeof billing.nextChargeAt === 'string'\n ? { nextChargeAt: billing.nextChargeAt }\n : {}),\n ...(typeof billing.graceEndsAt === 'string'\n ? { graceEndsAt: billing.graceEndsAt }\n : {}),\n }\n}\n\nconst parseResourceStatus = (value: unknown): CloudResourceStatus | null => {\n const status = objectValue(value)\n if (\n status === null ||\n typeof status.id !== 'string' ||\n typeof status.status !== 'string'\n ) return null\n const billing = status.billing === undefined\n ? undefined\n : parseStatusBilling(status.billing)\n if (status.billing !== undefined && billing === null) return null\n return {\n id: status.id,\n status: status.status,\n ...(billing ? { billing } : {}),\n }\n}\nconst parseResource = (value: unknown): CloudResource | null => {\n const resource = objectValue(value)\n if (\n resource === null ||\n typeof resource.id !== 'string' ||\n typeof resource.kind !== 'string' ||\n !resourceKinds.includes(resource.kind as CloudResourceKind) ||\n typeof resource.status !== 'string' ||\n (resource.mode !== undefined &&\n (typeof resource.mode !== 'string' ||\n !resourceModes.includes(resource.mode as CloudResourceMode))) ||\n (resource.name !== undefined && typeof resource.name !== 'string') ||\n (resource.region !== undefined && typeof resource.region !== 'string') ||\n (resource.createdAt !== undefined && typeof resource.createdAt !== 'string')\n ) return null\n\n return {\n id: resource.id,\n kind: resource.kind as CloudResourceKind,\n status: resource.status,\n ...(typeof resource.mode === 'string'\n ? { mode: resource.mode as CloudResourceMode }\n : {}),\n ...(typeof resource.name === 'string' ? { name: resource.name } : {}),\n ...(typeof resource.region === 'string' ? { region: resource.region } : {}),\n ...(typeof resource.createdAt === 'string'\n ? { createdAt: resource.createdAt }\n : {}),\n }\n}\n\nexport class CloudResourcesClient {\n readonly #transport: RestTransport\n\n constructor(transport: RestTransport) {\n this.#transport = transport\n }\n\n async list(options?: RpcSendOptions): Promise<readonly CloudResource[]> {\n const response: unknown = await this.#transport.get(\n '/v4/cloud/resources',\n undefined,\n options,\n )\n const envelope = objectValue(response)\n const message = objectValue(envelope?.message)\n if (envelope?.success !== true || !Array.isArray(message?.resources)) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud resource list',\n )\n }\n const resources = message.resources.map(parseResource)\n if (resources.some((resource) => resource === null)) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud resource list',\n )\n }\n return resources as readonly CloudResource[]\n }\n\n async get(\n resourceId: string,\n options?: RpcSendOptions,\n ): Promise<CloudResource> {\n const normalizedId = resourceId.trim()\n if (!normalizedId) {\n throw new ErpcConfigError('resourceId must not be empty')\n }\n const response: unknown = await this.#transport.get(\n `/v4/cloud/resources/${encodeURIComponent(normalizedId)}`,\n undefined,\n options,\n )\n const envelope = objectValue(response)\n const message = objectValue(envelope?.message)\n const resource = envelope?.success === true\n ? parseResource(message?.resource)\n : null\n if (resource === null) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud resource',\n )\n }\n return resource\n }\n\n async getStatus(\n resourceId: string,\n options?: RpcSendOptions,\n ): Promise<CloudResourceStatus> {\n const normalizedId = resourceId.trim()\n if (!normalizedId) {\n throw new ErpcConfigError('resourceId must not be empty')\n }\n const response: unknown = await this.#transport.get(\n `/v4/cloud/resources/${encodeURIComponent(normalizedId)}/status`,\n undefined,\n options,\n )\n const envelope = objectValue(response)\n const status = envelope?.success === true\n ? parseResourceStatus(envelope.message)\n : null\n if (status === null) {\n throw new ErpcInvalidResponseError(\n 'ERPC returned an invalid Cloud resource status',\n )\n }\n return status\n }\n}\n","import { ErpcConfigError } from './errors'\nimport { CloudCatalogClient } from './catalog'\nimport { CloudCreditClient } from './credit'\nimport type { RpcSendOptions } from './rpc/types'\nimport { RestTransport } from './transport/rest'\nimport { wrapFetch } from './transport/fetch'\nimport { UsageClient } from './usage'\nimport { CloudResourcesClient } from './resources'\nimport { DEFAULT_TIMEOUT_MS, DEFAULT_USER_ENDPOINT } from './config'\n\nexport interface ErpcCloudClientConfig {\n readonly accessToken: string\n readonly endpoint?: string\n readonly fetch?: typeof globalThis.fetch\n readonly headers?: Readonly<Record<string, string>>\n readonly timeoutMs?: number\n}\n\nexport interface ErpcCloudClient {\n readonly catalog: CloudCatalogClient\n readonly credit: CloudCreditClient\n readonly resources: CloudResourcesClient\n readonly usage: UsageClient\n}\n\nconst requireFetch = (provided?: typeof globalThis.fetch) => {\n const implementation = provided ?? globalThis.fetch\n if (typeof implementation !== 'function') {\n throw new ErpcConfigError(\n 'A Fetch API implementation is required in this runtime',\n )\n }\n return wrapFetch(implementation)\n}\n\nconst cloudEndpoint = (value?: string): URL => {\n let endpoint: URL\n try {\n endpoint = new URL(value ?? DEFAULT_USER_ENDPOINT)\n } catch {\n throw new ErpcConfigError('endpoint must be an absolute HTTP(S) URL')\n }\n const isLocalHttp = endpoint.protocol === 'http:' &&\n ['127.0.0.1', '::1', '[::1]', 'localhost'].includes(endpoint.hostname)\n if (endpoint.protocol !== 'https:' && !isLocalHttp) {\n throw new ErpcConfigError('endpoint must use HTTPS except on localhost')\n }\n endpoint.search = ''\n endpoint.hash = ''\n endpoint.pathname = endpoint.pathname.replace(/\\/+$/, '') || '/'\n return endpoint\n}\n\nexport const createErpcCloudClient = (\n config: ErpcCloudClientConfig,\n): ErpcCloudClient => {\n const accessToken = config.accessToken.trim()\n if (!accessToken) {\n throw new ErpcConfigError('accessToken must not be empty')\n }\n const timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS\n if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n throw new ErpcConfigError('timeoutMs must be a positive finite number')\n }\n\n const transport = new RestTransport({\n apiKey: accessToken,\n endpoint: cloudEndpoint(config.endpoint),\n fetch: requireFetch(config.fetch),\n headers: config.headers ?? {},\n timeoutMs,\n })\n\n return {\n catalog: new CloudCatalogClient(transport),\n credit: new CloudCreditClient(transport),\n resources: new CloudResourcesClient(transport),\n usage: new UsageClient(transport),\n }\n}\n\nexport type ErpcCloudRequestOptions = RpcSendOptions\n","/* Generated by registry/generate-bridge-capabilities.mjs. Do not edit. */\n\nexport const BRIDGE_CAPABILITIES_JSON = \"[{\\\"bridgeCapabilityId\\\":\\\"bridge-mayan-swift-v2-eurc-eth-sol\\\",\\\"providerId\\\":\\\"mayan-swift-v2\\\",\\\"capabilityKind\\\":\\\"external-provider-dynamic\\\",\\\"sourceChainId\\\":\\\"eip155:1\\\",\\\"destinationChainId\\\":\\\"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\\\",\\\"sourceTokenDeploymentId\\\":\\\"deployment-0011\\\",\\\"destinationTokenDeploymentId\\\":\\\"deployment-0013\\\",\\\"sourceTokenAddress\\\":\\\"0x1abaea1f7c830bd89acc67ec4af516284b1bc33c\\\",\\\"destinationTokenAddress\\\":\\\"HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr\\\",\\\"sourceTokenStandard\\\":\\\"erc20\\\",\\\"destinationTokenStandard\\\":\\\"spl-token\\\",\\\"sourceTokenDecimals\\\":6,\\\"destinationTokenDecimals\\\":6,\\\"sourceProviderChainName\\\":\\\"ethereum\\\",\\\"destinationProviderChainName\\\":\\\"solana\\\",\\\"sourceProviderChainId\\\":1,\\\"destinationProviderChainId\\\":0,\\\"sourceWormholeChainId\\\":2,\\\"destinationWormholeChainId\\\":1,\\\"sourceUsdcDeploymentId\\\":\\\"deployment-0008\\\",\\\"sourceUsdcAddress\\\":\\\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\\\",\\\"sourceUsdcStandard\\\":\\\"erc20\\\",\\\"sourceUsdcDecimals\\\":6,\\\"swiftContract\\\":\\\"0x40ffe85a28dc9993541449464d7529a922142960\\\",\\\"forwarderAddress\\\":\\\"0x337685fdab40d39bd02028545a4ffa7d287cc3e2\\\",\\\"forwarderFunctionSelector\\\":\\\"0x30dedc57\\\",\\\"jupiterProgramAddress\\\":null,\\\"builderEndpoint\\\":\\\"https://tx-builder.mayan.finance\\\",\\\"explorerEndpoint\\\":\\\"https://explorer-api.mayan.finance/v3\\\",\\\"dependencies\\\":[\\\"mayan-hosted-quote-api\\\",\\\"mayan-hosted-transaction-builder\\\",\\\"mayan-hosted-source-swap-builder\\\",\\\"swift-auction-solvers\\\",\\\"relayers\\\",\\\"wormhole-guardian-messaging\\\",\\\"mayan-explorer-indexer\\\"],\\\"status\\\":\\\"active\\\"},{\\\"bridgeCapabilityId\\\":\\\"bridge-mayan-swift-v2-eurc-sol-eth\\\",\\\"providerId\\\":\\\"mayan-swift-v2\\\",\\\"capabilityKind\\\":\\\"external-provider-dynamic\\\",\\\"sourceChainId\\\":\\\"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\\\",\\\"destinationChainId\\\":\\\"eip155:1\\\",\\\"sourceTokenDeploymentId\\\":\\\"deployment-0013\\\",\\\"destinationTokenDeploymentId\\\":\\\"deployment-0011\\\",\\\"sourceTokenAddress\\\":\\\"HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr\\\",\\\"destinationTokenAddress\\\":\\\"0x1abaea1f7c830bd89acc67ec4af516284b1bc33c\\\",\\\"sourceTokenStandard\\\":\\\"spl-token\\\",\\\"destinationTokenStandard\\\":\\\"erc20\\\",\\\"sourceTokenDecimals\\\":6,\\\"destinationTokenDecimals\\\":6,\\\"sourceProviderChainName\\\":\\\"solana\\\",\\\"destinationProviderChainName\\\":\\\"ethereum\\\",\\\"sourceProviderChainId\\\":0,\\\"destinationProviderChainId\\\":1,\\\"sourceWormholeChainId\\\":1,\\\"destinationWormholeChainId\\\":2,\\\"sourceUsdcDeploymentId\\\":\\\"deployment-0010\\\",\\\"sourceUsdcAddress\\\":\\\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\\\",\\\"sourceUsdcStandard\\\":\\\"spl-token\\\",\\\"sourceUsdcDecimals\\\":6,\\\"swiftContract\\\":\\\"mayan34VedncxdK2XobtvWFDXQASUTBXhUVzt2kKgny\\\",\\\"forwarderAddress\\\":null,\\\"forwarderFunctionSelector\\\":null,\\\"jupiterProgramAddress\\\":\\\"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4\\\",\\\"builderEndpoint\\\":\\\"https://tx-builder.mayan.finance\\\",\\\"explorerEndpoint\\\":\\\"https://explorer-api.mayan.finance/v3\\\",\\\"dependencies\\\":[\\\"mayan-hosted-quote-api\\\",\\\"mayan-hosted-transaction-builder\\\",\\\"mayan-hosted-source-swap-builder\\\",\\\"swift-auction-solvers\\\",\\\"relayers\\\",\\\"wormhole-guardian-messaging\\\",\\\"mayan-explorer-indexer\\\",\\\"jupiter-v6-source-swap\\\"],\\\"status\\\":\\\"active\\\"}]\" as const;\nexport const BRIDGE_CAPABILITIES_CONTENT_DIGEST = \"fe698f99218057f8cb40b3e24421d1d78e4e2cd7508cf6e3eb2457b329e5141b\" as const;\nexport const BRIDGE_CAPABILITIES_AS_OF_DATE = \"2026-09-16\" as const;\n","import {\n BRIDGE_CAPABILITIES_AS_OF_DATE,\n BRIDGE_CAPABILITIES_CONTENT_DIGEST,\n BRIDGE_CAPABILITIES_JSON,\n} from './generated/bridge_capabilities'\nimport {\n TOKEN_CHAIN_IDS,\n getTokenDeployment,\n type TokenDeployment,\n} from './token_catalog'\nimport { wrapFetch } from './transport/fetch'\n\nexport type BridgeErrorCode =\n | 'BRIDGE_INVALID_ARGUMENT'\n | 'BRIDGE_UNSUPPORTED_ROUTE'\n | 'BRIDGE_PROVIDER_AUTH_REQUIRED'\n | 'BRIDGE_PROVIDER_TRANSPORT'\n | 'BRIDGE_PROVIDER_HTTP'\n | 'BRIDGE_PROVIDER_INVALID_RESPONSE'\n | 'BRIDGE_QUOTE_UNAVAILABLE'\n | 'BRIDGE_QUOTE_EXPIRED'\n | 'BRIDGE_QUOTE_MISMATCH'\n | 'BRIDGE_BUILD_INVALID'\n | 'BRIDGE_STATUS_NOT_FOUND'\n | 'BRIDGE_TIMEOUT'\n | 'BRIDGE_ABORTED'\n\nexport const BRIDGE_ERROR_MESSAGES: Readonly<\n Record<BridgeErrorCode, string>\n> = Object.freeze({\n BRIDGE_INVALID_ARGUMENT: 'Bridge request is invalid',\n BRIDGE_UNSUPPORTED_ROUTE: 'Bridge route is unsupported',\n BRIDGE_PROVIDER_AUTH_REQUIRED: 'Bridge provider authentication is required',\n BRIDGE_PROVIDER_TRANSPORT: 'Bridge provider transport failed',\n BRIDGE_PROVIDER_HTTP: 'Bridge provider HTTP request failed',\n BRIDGE_PROVIDER_INVALID_RESPONSE: 'Bridge provider response is invalid',\n BRIDGE_QUOTE_UNAVAILABLE: 'Bridge quote is unavailable',\n BRIDGE_QUOTE_EXPIRED: 'Bridge quote is expired',\n BRIDGE_QUOTE_MISMATCH: 'Bridge quote does not match the request',\n BRIDGE_BUILD_INVALID: 'Bridge provider build is invalid',\n BRIDGE_STATUS_NOT_FOUND: 'Bridge status was not found',\n BRIDGE_TIMEOUT: 'Bridge provider request timed out',\n BRIDGE_ABORTED: 'Bridge provider request was aborted',\n})\n\nexport class BridgeError extends Error {\n readonly code: BridgeErrorCode\n readonly status?: number\n\n constructor(code: BridgeErrorCode, status?: number) {\n super(BRIDGE_ERROR_MESSAGES[code])\n this.name = 'BridgeError'\n this.code = code\n if (status !== undefined) this.status = status\n }\n}\n\nexport interface MayanSwiftV2BridgeConfig {\n readonly builderEndpoint?: string\n readonly explorerEndpoint?: string\n readonly builderApiKey?: string\n readonly allowUnauthenticatedBuild?: boolean\n readonly minimumQuoteValiditySeconds?: number\n readonly timeoutMs?: number\n readonly fetch?: typeof globalThis.fetch\n}\n\nexport interface BridgeRequestOptions {\n readonly signal?: AbortSignal\n}\n\nexport interface MayanSwiftV2QuoteRequest {\n readonly sourceChainId: string\n readonly destinationChainId: string\n readonly sourceTokenDeploymentId: string\n readonly destinationTokenDeploymentId: string\n readonly amountIn: string\n readonly slippageBps: number\n}\n\nexport interface MayanSwiftV2SourceSwap {\n readonly required: true\n readonly inputTokenDeploymentId: string\n readonly intermediateTokenDeploymentId: string\n readonly intermediateTokenAddress: string\n readonly intermediateTokenStandard: string\n readonly intermediateTokenDecimals: 6\n readonly providerMinimumAmount: string\n readonly routerKind: 'provider-selected-evm' | 'jupiter-v6'\n readonly routerAddress: string\n}\n\nexport interface MayanSwiftV2Quote {\n readonly quoteKind: 'mayan-swift-v2'\n readonly providerId: 'mayan-swift-v2'\n readonly sourceChainId: string\n readonly destinationChainId: string\n readonly sourceTokenDeploymentId: string\n readonly destinationTokenDeploymentId: string\n readonly amountIn: string\n readonly expectedAmountOut: string\n readonly minimumAmountOut: string\n readonly minimumReceived: string\n readonly deadline: string\n readonly slippageBps: number\n readonly quoteId: string\n readonly providerSignature: string\n readonly sourceSwap: MayanSwiftV2SourceSwap\n readonly dependencies: readonly string[]\n readonly quoteVerification: 'provider-signed-not-locally-verified'\n readonly rawSignedQuoteJson: string\n}\n\nexport type MayanSwiftV2QuoteResult = readonly MayanSwiftV2Quote[]\n\nexport interface MayanEvmUnsignedTransaction {\n readonly kind: 'evm-unsigned-transaction'\n readonly chainId: 'eip155:1'\n readonly from: string\n readonly to: string\n readonly data: string\n readonly value: '0'\n}\n\nexport interface MayanSolanaUnsignedTransaction {\n readonly kind: 'solana-v0-unsigned-transaction'\n readonly chainId: typeof TOKEN_CHAIN_IDS.solanaMainnet\n readonly feePayer: string\n readonly transactionBase64: string\n}\n\nexport type MayanSwiftV2UnsignedTransaction =\n | MayanEvmUnsignedTransaction\n | MayanSolanaUnsignedTransaction\n\nexport interface MayanSwiftV2BuildValidation {\n readonly level: 'structural'\n readonly quoteSignatureLocallyVerified: false\n readonly transactionSemanticsLocallyVerified: false\n readonly settlementLocallyVerified: false\n}\n\nexport interface MayanSwiftV2Build {\n readonly buildKind: 'mayan-swift-v2-unsigned'\n readonly providerId: 'mayan-swift-v2'\n readonly quote: MayanSwiftV2Quote\n readonly sourceChainId: string\n readonly destinationChainId: string\n readonly transaction: MayanSwiftV2UnsignedTransaction\n readonly allowance: {\n readonly tokenDeploymentId: 'deployment-0011'\n readonly tokenAddress: string\n readonly owner: string\n readonly spender: string\n readonly requiredAmount: string\n } | null\n readonly validation: MayanSwiftV2BuildValidation\n readonly rawProviderBuildJson: string\n}\n\nexport type MayanSwiftV2BuildResult = MayanSwiftV2Build\n\nexport interface MayanSwiftV2StatusRequest {\n readonly sourceChainId: string\n readonly sourceTransactionHash: string\n}\n\nexport interface MayanSwiftV2Status {\n readonly statusKind: 'mayan-explorer-index'\n readonly providerId: 'mayan-swift-v2'\n readonly sourceChainId: string\n readonly sourceTransactionHash: string\n readonly state: 'in-progress' | 'completed' | 'refunded' | 'unknown'\n readonly providerClientStatus: string\n readonly providerStatus: string | null\n readonly statusVerification: 'provider-indexed-not-locally-verified'\n readonly rawProviderStatusJson: string\n}\n\nexport type MayanSwiftV2StatusResult = MayanSwiftV2Status\n\nexport interface MayanSwiftV2BridgeClient {\n quoteExactInput(\n request: MayanSwiftV2QuoteRequest,\n options?: BridgeRequestOptions,\n ): Promise<readonly MayanSwiftV2Quote[]>\n buildUnsigned(\n request: MayanSwiftV2BuildRequest,\n options?: BridgeRequestOptions,\n ): Promise<MayanSwiftV2Build>\n getStatus(\n request: MayanSwiftV2StatusRequest,\n options?: BridgeRequestOptions,\n ): Promise<MayanSwiftV2Status>\n close(): void\n}\n\nexport type BridgeClient = MayanSwiftV2BridgeClient\n\nexport interface MayanSwiftV2BuildRequest {\n readonly quote: MayanSwiftV2Quote\n readonly swapperAddress: string\n readonly destinationAddress: string\n readonly refundAddress?: string\n}\n\nexport type MayanSwiftV2BuildUnsignedRequest = MayanSwiftV2BuildRequest\n\ntype JsonRecord = Record<string, unknown>\n\ninterface JsonNode {\n readonly value: unknown\n readonly start: number\n readonly end: number\n readonly objectEntries?: ReadonlyMap<string, JsonNode>\n readonly arrayItems?: readonly JsonNode[]\n readonly rawNumber?: string\n}\n\ninterface ProviderResponse {\n readonly text: string\n readonly root: JsonNode\n}\n\ninterface NormalizedBridgeConfig {\n readonly builderEndpoint: URL\n readonly explorerEndpoint: URL\n readonly builderApiKey?: string\n readonly allowUnauthenticatedBuild: boolean\n readonly minimumQuoteValiditySeconds: number\n readonly timeoutMs: number\n readonly fetch: typeof globalThis.fetch\n}\n\ninterface BridgeCapability {\n readonly bridgeCapabilityId: string\n readonly providerId: string\n readonly capabilityKind: string\n readonly sourceChainId: string\n readonly destinationChainId: string\n readonly sourceTokenDeploymentId: string\n readonly destinationTokenDeploymentId: string\n readonly sourceTokenAddress: string\n readonly destinationTokenAddress: string\n readonly sourceTokenStandard: string\n readonly destinationTokenStandard: string\n readonly sourceTokenDecimals: number\n readonly destinationTokenDecimals: number\n readonly sourceProviderChainName: string\n readonly destinationProviderChainName: string\n readonly sourceProviderChainId: number\n readonly destinationProviderChainId: number\n readonly sourceWormholeChainId: number\n readonly destinationWormholeChainId: number\n readonly sourceUsdcDeploymentId: string\n readonly sourceUsdcAddress: string\n readonly sourceUsdcStandard: string\n readonly sourceUsdcDecimals: number\n readonly swiftContract: string\n readonly forwarderAddress: string | null\n readonly forwarderFunctionSelector: string | null\n readonly jupiterProgramAddress: string | null\n readonly builderEndpoint: string\n readonly explorerEndpoint: string\n readonly dependencies: readonly string[]\n readonly status: string\n}\n\nconst ETHEREUM_CHAIN_ID = TOKEN_CHAIN_IDS.ethereumMainnet\nconst SOLANA_CHAIN_ID = TOKEN_CHAIN_IDS.solanaMainnet\nconst ETHEREUM_NAME = 'ethereum'\nconst SOLANA_NAME = 'solana'\nconst ETHEREUM_PROVIDER_CHAIN_ID = 1\nconst SOLANA_PROVIDER_CHAIN_ID = 0\nconst ETHEREUM_WORMHOLE_CHAIN_ID = 2\nconst SOLANA_WORMHOLE_CHAIN_ID = 1\nconst ETHEREUM_EURC_DEPLOYMENT_ID = 'deployment-0011'\nconst SOLANA_EURC_DEPLOYMENT_ID = 'deployment-0013'\nconst ETHEREUM_USDC_DEPLOYMENT_ID = 'deployment-0008'\nconst SOLANA_USDC_DEPLOYMENT_ID = 'deployment-0010'\nconst ETHEREUM_EURC_ADDRESS =\n '0x1abaea1f7c830bd89acc67ec4af516284b1bc33c'\nconst SOLANA_EURC_ADDRESS =\n 'HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr'\nconst ETHEREUM_USDC_ADDRESS =\n '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'\nconst SOLANA_USDC_ADDRESS =\n 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\nconst ETHEREUM_SWIFT_CONTRACT =\n '0x40ffe85a28dc9993541449464d7529a922142960'\nconst SOLANA_SWIFT_PROGRAM = 'mayan34VedncxdK2XobtvWFDXQASUTBXhUVzt2kKgny'\nconst ETHEREUM_FORWARDER = '0x337685fdab40d39bd02028545a4ffa7d287cc3e2'\nconst SOLANA_JUPITER_V6 = 'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4'\nconst ETHEREUM_FORWARDER_SELECTOR = '0x30dedc57'\nconst DEFAULT_BUILDER_ENDPOINT = 'https://tx-builder.mayan.finance'\nconst DEFAULT_EXPLORER_ENDPOINT = 'https://explorer-api.mayan.finance/v3'\nconst DEFAULT_TIMEOUT_MS = 30_000\nconst MAX_RESPONSE_BYTES = 1024 * 1024\nconst MAX_RAW_QUOTE_BYTES = 256 * 1024\nconst MAX_JSON_DEPTH = 32\nconst MAX_QUOTES = 16\nconst UINT64_MAX = (1n << 64n) - 1n\nconst CANONICAL_UINT64 = /^(0|[1-9][0-9]*)$/u\nconst POSITIVE_UINT64 = /^[1-9][0-9]*$/u\nconst EVM_ADDRESS = /^0x[0-9a-fA-F]{40}$/u\nconst EVM_HASH = /^0x[0-9a-fA-F]{64}$/u\nconst EVM_SIGNATURE = /^0x[0-9a-fA-F]{130}$/u\nconst HEX_BYTES = /^0x[0-9a-fA-F]*$/u\nconst BASE64 = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u\nconst BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\nconst DEPENDENCIES = Object.freeze([\n 'mayan-hosted-quote-api',\n 'mayan-hosted-transaction-builder',\n 'mayan-hosted-source-swap-builder',\n 'swift-auction-solvers',\n 'relayers',\n 'wormhole-guardian-messaging',\n 'mayan-explorer-indexer',\n])\n\nconst isRecord = (value: unknown): value is JsonRecord =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst deepFreeze = <T>(value: T): T => {\n if (value && typeof value === 'object' && !Object.isFrozen(value)) {\n Object.freeze(value)\n for (const child of Object.values(value as JsonRecord)) deepFreeze(child)\n }\n return value\n}\n\nconst parsedCapabilities = JSON.parse(BRIDGE_CAPABILITIES_JSON) as unknown\nconst BRIDGE_CAPABILITIES: readonly BridgeCapability[] = deepFreeze(\n (Array.isArray(parsedCapabilities)\n ? parsedCapabilities\n : isRecord(parsedCapabilities) && Array.isArray(parsedCapabilities.capabilities)\n ? parsedCapabilities.capabilities\n : []) as BridgeCapability[],\n)\n\nconst fail = (code: BridgeErrorCode, status?: number): never => {\n throw new BridgeError(code, status)\n}\n\nconst requireRecord = (value: unknown, code: BridgeErrorCode): JsonRecord => {\n if (!isRecord(value)) fail(code)\n return value as JsonRecord\n}\n\nconst requireString = (\n value: unknown,\n code: BridgeErrorCode,\n nonempty = true,\n): string => {\n if (typeof value !== 'string' || (nonempty && value.length === 0)) fail(code)\n return value as string\n}\n\nconst normalizeEvmAddress = (value: unknown, code: BridgeErrorCode): string => {\n const address = requireString(value, code)\n if (!EVM_ADDRESS.test(address) || /^0x0{40}$/iu.test(address)) fail(code)\n return address.toLowerCase()\n}\n\nconst normalizePositiveUint64 = (\n value: unknown,\n code: BridgeErrorCode,\n): { readonly source: string; readonly value: bigint } => {\n const source = requireString(value, code)\n if (!POSITIVE_UINT64.test(source) || source.length > 20) fail(code)\n let parsed: bigint\n try {\n parsed = BigInt(source)\n } catch {\n return fail(code)\n }\n const valueParsed = parsed as bigint\n if (valueParsed <= 0n || valueParsed > UINT64_MAX) fail(code)\n return { source, value: valueParsed }\n}\n\nconst normalizeCanonicalUint64 = (\n value: unknown,\n code: BridgeErrorCode,\n): { readonly source: string; readonly value: bigint } => {\n const source = requireString(value, code)\n if (!CANONICAL_UINT64.test(source) || source.length > 20) fail(code)\n let parsed: bigint\n try {\n parsed = BigInt(source)\n } catch {\n return fail(code)\n }\n const valueParsed = parsed as bigint\n if (valueParsed > UINT64_MAX) fail(code)\n return { source, value: valueParsed }\n}\n\nconst normalizeSlippage = (value: unknown, code: BridgeErrorCode): number => {\n if (\n typeof value !== 'number' ||\n !Number.isSafeInteger(value) ||\n value < 0 ||\n value > 500\n ) {\n fail(code)\n }\n return value as number\n}\n\nconst providerAddressEquals = (value: unknown, expected: string): boolean =>\n typeof value === 'string' &&\n (EVM_ADDRESS.test(value) ? value.toLowerCase() === expected.toLowerCase() : value === expected)\n\nconst catalogTokenMatches = (\n token: TokenDeployment | undefined,\n expected: {\n readonly deploymentId: string\n readonly chainId: string\n readonly address: string\n readonly standard: string\n readonly decimals: number\n },\n): boolean =>\n token?.deploymentId === expected.deploymentId &&\n token.chainId === expected.chainId &&\n token.address !== null &&\n (expected.chainId === ETHEREUM_CHAIN_ID\n ? token.address.toLowerCase() === expected.address.toLowerCase()\n : token.address === expected.address) &&\n token.standard === expected.standard &&\n token.decimals === expected.decimals &&\n token.status === 'active'\n\ninterface DirectionFacts {\n readonly bridgeCapabilityId: string\n readonly sourceChainId: string\n readonly destinationChainId: string\n readonly sourceTokenDeploymentId: string\n readonly destinationTokenDeploymentId: string\n readonly sourceTokenAddress: string\n readonly destinationTokenAddress: string\n readonly sourceTokenStandard: string\n readonly destinationTokenStandard: string\n readonly sourceProviderChainId: number\n readonly destinationProviderChainId: number\n readonly sourceWormholeChainId: number\n readonly destinationWormholeChainId: number\n readonly sourceName: string\n readonly destinationName: string\n readonly sourceEurcMint: string\n readonly destinationEurcMint: string\n readonly sourceUsdcDeploymentId: string\n readonly sourceUsdcAddress: string\n readonly sourceUsdcStandard: string\n readonly swiftContract: string\n}\n\nconst directionFacts = (\n sourceChainId: string,\n destinationChainId: string,\n): DirectionFacts => {\n if (sourceChainId === ETHEREUM_CHAIN_ID && destinationChainId === SOLANA_CHAIN_ID) {\n return {\n sourceChainId,\n destinationChainId,\n bridgeCapabilityId: 'bridge-mayan-swift-v2-eurc-eth-sol',\n sourceTokenDeploymentId: ETHEREUM_EURC_DEPLOYMENT_ID,\n destinationTokenDeploymentId: SOLANA_EURC_DEPLOYMENT_ID,\n sourceTokenAddress: ETHEREUM_EURC_ADDRESS,\n destinationTokenAddress: SOLANA_EURC_ADDRESS,\n sourceTokenStandard: 'erc20',\n destinationTokenStandard: 'spl-token',\n sourceProviderChainId: ETHEREUM_PROVIDER_CHAIN_ID,\n destinationProviderChainId: SOLANA_PROVIDER_CHAIN_ID,\n sourceWormholeChainId: ETHEREUM_WORMHOLE_CHAIN_ID,\n destinationWormholeChainId: SOLANA_WORMHOLE_CHAIN_ID,\n sourceName: ETHEREUM_NAME,\n destinationName: SOLANA_NAME,\n sourceEurcMint: '',\n destinationEurcMint: SOLANA_EURC_ADDRESS,\n sourceUsdcDeploymentId: ETHEREUM_USDC_DEPLOYMENT_ID,\n sourceUsdcAddress: ETHEREUM_USDC_ADDRESS,\n sourceUsdcStandard: 'erc20',\n swiftContract: ETHEREUM_SWIFT_CONTRACT,\n }\n }\n if (sourceChainId === SOLANA_CHAIN_ID && destinationChainId === ETHEREUM_CHAIN_ID) {\n return {\n sourceChainId,\n destinationChainId,\n bridgeCapabilityId: 'bridge-mayan-swift-v2-eurc-sol-eth',\n sourceTokenDeploymentId: SOLANA_EURC_DEPLOYMENT_ID,\n destinationTokenDeploymentId: ETHEREUM_EURC_DEPLOYMENT_ID,\n sourceTokenAddress: SOLANA_EURC_ADDRESS,\n destinationTokenAddress: ETHEREUM_EURC_ADDRESS,\n sourceTokenStandard: 'spl-token',\n destinationTokenStandard: 'erc20',\n sourceProviderChainId: SOLANA_PROVIDER_CHAIN_ID,\n destinationProviderChainId: ETHEREUM_PROVIDER_CHAIN_ID,\n sourceWormholeChainId: SOLANA_WORMHOLE_CHAIN_ID,\n destinationWormholeChainId: ETHEREUM_WORMHOLE_CHAIN_ID,\n sourceName: SOLANA_NAME,\n destinationName: ETHEREUM_NAME,\n sourceEurcMint: SOLANA_EURC_ADDRESS,\n destinationEurcMint: '',\n sourceUsdcDeploymentId: SOLANA_USDC_DEPLOYMENT_ID,\n sourceUsdcAddress: SOLANA_USDC_ADDRESS,\n sourceUsdcStandard: 'spl-token',\n swiftContract: SOLANA_SWIFT_PROGRAM,\n }\n }\n return fail('BRIDGE_UNSUPPORTED_ROUTE')\n}\n\nconst findCapability = (facts: DirectionFacts): BridgeCapability => {\n const capability = BRIDGE_CAPABILITIES.find(\n (entry) =>\n entry.bridgeCapabilityId === facts.bridgeCapabilityId &&\n entry.sourceChainId === facts.sourceChainId &&\n entry.destinationChainId === facts.destinationChainId &&\n entry.sourceTokenDeploymentId === facts.sourceTokenDeploymentId &&\n entry.destinationTokenDeploymentId === facts.destinationTokenDeploymentId,\n )\n if (!capability) fail('BRIDGE_UNSUPPORTED_ROUTE')\n return capability as BridgeCapability\n}\n\nconst validateCatalogDirection = (facts: DirectionFacts): void => {\n const sourceToken = getTokenDeployment(facts.sourceTokenDeploymentId)\n const destinationToken = getTokenDeployment(facts.destinationTokenDeploymentId)\n const sourceUsdc = getTokenDeployment(facts.sourceUsdcDeploymentId)\n if (\n !catalogTokenMatches(sourceToken, {\n deploymentId: facts.sourceTokenDeploymentId,\n chainId: facts.sourceChainId,\n address: facts.sourceTokenAddress,\n standard: facts.sourceTokenStandard,\n decimals: 6,\n }) ||\n !catalogTokenMatches(destinationToken, {\n deploymentId: facts.destinationTokenDeploymentId,\n chainId: facts.destinationChainId,\n address: facts.destinationTokenAddress,\n standard: facts.destinationTokenStandard,\n decimals: 6,\n }) ||\n !catalogTokenMatches(sourceUsdc, {\n deploymentId: facts.sourceUsdcDeploymentId,\n chainId: facts.sourceChainId,\n address: facts.sourceUsdcAddress,\n standard: facts.sourceUsdcStandard,\n decimals: 6,\n })\n ) {\n fail('BRIDGE_UNSUPPORTED_ROUTE')\n }\n}\n\nconst validateCapability = (\n capability: BridgeCapability,\n facts: DirectionFacts,\n): void => {\n const expected: BridgeCapability = {\n bridgeCapabilityId: facts.bridgeCapabilityId,\n providerId: 'mayan-swift-v2',\n capabilityKind: 'external-provider-dynamic',\n sourceChainId: facts.sourceChainId,\n destinationChainId: facts.destinationChainId,\n sourceTokenDeploymentId: facts.sourceTokenDeploymentId,\n destinationTokenDeploymentId: facts.destinationTokenDeploymentId,\n sourceTokenAddress: facts.sourceTokenAddress,\n destinationTokenAddress: facts.destinationTokenAddress,\n sourceTokenStandard: facts.sourceTokenStandard,\n destinationTokenStandard: facts.destinationTokenStandard,\n sourceTokenDecimals: 6,\n destinationTokenDecimals: 6,\n sourceProviderChainName: facts.sourceName,\n destinationProviderChainName: facts.destinationName,\n sourceProviderChainId: facts.sourceProviderChainId,\n destinationProviderChainId: facts.destinationProviderChainId,\n sourceWormholeChainId: facts.sourceWormholeChainId,\n destinationWormholeChainId: facts.destinationWormholeChainId,\n sourceUsdcDeploymentId: facts.sourceUsdcDeploymentId,\n sourceUsdcAddress: facts.sourceUsdcAddress,\n sourceUsdcStandard: facts.sourceUsdcStandard,\n sourceUsdcDecimals: 6,\n swiftContract: facts.swiftContract,\n forwarderAddress: facts.sourceChainId === ETHEREUM_CHAIN_ID ? ETHEREUM_FORWARDER : null,\n forwarderFunctionSelector: facts.sourceChainId === ETHEREUM_CHAIN_ID ? '0x30dedc57' : null,\n jupiterProgramAddress: facts.sourceChainId === SOLANA_CHAIN_ID ? SOLANA_JUPITER_V6 : null,\n builderEndpoint: DEFAULT_BUILDER_ENDPOINT,\n explorerEndpoint: DEFAULT_EXPLORER_ENDPOINT,\n dependencies: facts.sourceChainId === SOLANA_CHAIN_ID\n ? [...DEPENDENCIES, 'jupiter-v6-source-swap']\n : [...DEPENDENCIES],\n status: 'active',\n }\n const actualKeys = Object.keys(capability).sort()\n const expectedKeys = Object.keys(expected).sort()\n if (actualKeys.length !== expectedKeys.length || actualKeys.some((key, index) => key !== expectedKeys[index])) {\n fail('BRIDGE_UNSUPPORTED_ROUTE')\n }\n for (const key of expectedKeys) {\n const actual = capability[key as keyof BridgeCapability]\n const wanted = expected[key as keyof BridgeCapability]\n if (Array.isArray(actual) || Array.isArray(wanted)) {\n if (JSON.stringify(actual) !== JSON.stringify(wanted)) fail('BRIDGE_UNSUPPORTED_ROUTE')\n } else if (actual !== wanted) {\n fail('BRIDGE_UNSUPPORTED_ROUTE')\n }\n }\n}\n\nconst validateBridgeRoute = (\n request: unknown,\n): { readonly request: MayanSwiftV2QuoteRequest; readonly facts: DirectionFacts; readonly capability: BridgeCapability } => {\n const value = requireRecord(request, 'BRIDGE_INVALID_ARGUMENT')\n const keys = new Set([\n 'sourceChainId',\n 'destinationChainId',\n 'sourceTokenDeploymentId',\n 'destinationTokenDeploymentId',\n 'amountIn',\n 'slippageBps',\n ])\n if (Object.keys(value).some((key) => !keys.has(key))) fail('BRIDGE_INVALID_ARGUMENT')\n const sourceChainId = requireString(value.sourceChainId, 'BRIDGE_INVALID_ARGUMENT')\n const destinationChainId = requireString(value.destinationChainId, 'BRIDGE_INVALID_ARGUMENT')\n const sourceTokenDeploymentId = requireString(\n value.sourceTokenDeploymentId,\n 'BRIDGE_INVALID_ARGUMENT',\n )\n const destinationTokenDeploymentId = requireString(\n value.destinationTokenDeploymentId,\n 'BRIDGE_INVALID_ARGUMENT',\n )\n const amountIn = normalizePositiveUint64(value.amountIn, 'BRIDGE_INVALID_ARGUMENT')\n const slippageBps = normalizeSlippage(value.slippageBps, 'BRIDGE_INVALID_ARGUMENT')\n const facts = directionFacts(sourceChainId, destinationChainId)\n if (\n sourceTokenDeploymentId !== facts.sourceTokenDeploymentId ||\n destinationTokenDeploymentId !== facts.destinationTokenDeploymentId\n ) {\n fail('BRIDGE_UNSUPPORTED_ROUTE')\n }\n validateCatalogDirection(facts)\n const capability = findCapability(facts)\n validateCapability(capability, facts)\n return {\n request: {\n sourceChainId,\n destinationChainId,\n sourceTokenDeploymentId,\n destinationTokenDeploymentId,\n amountIn: amountIn.source,\n slippageBps,\n },\n facts,\n capability,\n }\n}\n\nconst isJsonWhitespace = (character: string): boolean =>\n character === ' ' || character === '\\n' || character === '\\r' || character === '\\t'\n\nclass StrictJsonParser {\n readonly #source: string\n #index = 0\n\n constructor(source: string) {\n this.#source = source\n }\n\n parse(): JsonNode {\n this.#skipWhitespace()\n const value = this.#value(0)\n this.#skipWhitespace()\n if (this.#index !== this.#source.length) this.#invalid()\n return value\n }\n\n #value(depth: number): JsonNode {\n if (depth > MAX_JSON_DEPTH) this.#invalid()\n const start = this.#index\n const character = this.#source[this.#index]\n if (character === '{') return this.#object(start, depth)\n if (character === '[') return this.#array(start, depth)\n if (character === '\"') {\n const value = this.#string()\n return { value, start, end: this.#index }\n }\n if (character === 't' && this.#source.startsWith('true', this.#index)) {\n this.#index += 4\n return { value: true, start, end: this.#index }\n }\n if (character === 'f' && this.#source.startsWith('false', this.#index)) {\n this.#index += 5\n return { value: false, start, end: this.#index }\n }\n if (character === 'n' && this.#source.startsWith('null', this.#index)) {\n this.#index += 4\n return { value: null, start, end: this.#index }\n }\n if (character === '-' || (character !== undefined && /[0-9]/u.test(character))) {\n const rawNumber = this.#number()\n const value = Number(rawNumber)\n if (!Number.isFinite(value)) this.#invalid()\n return { value, start, end: this.#index, rawNumber }\n }\n return this.#invalid()\n }\n\n #object(start: number, depth: number): JsonNode {\n this.#index += 1\n this.#skipWhitespace()\n const object: JsonRecord = Object.create(null) as JsonRecord\n const entries = new Map<string, JsonNode>()\n if (this.#source[this.#index] === '}') {\n this.#index += 1\n return { value: object, start, end: this.#index, objectEntries: entries }\n }\n while (true) {\n if (this.#source[this.#index] !== '\"') this.#invalid()\n const key = this.#string()\n if (entries.has(key)) this.#invalid()\n this.#skipWhitespace()\n if (this.#source[this.#index] !== ':') this.#invalid()\n this.#index += 1\n this.#skipWhitespace()\n const child = this.#value(depth + 1)\n Object.defineProperty(object, key, {\n configurable: true,\n enumerable: true,\n value: child.value,\n writable: true,\n })\n entries.set(key, child)\n this.#skipWhitespace()\n const delimiter = this.#source[this.#index]\n if (delimiter === '}') {\n this.#index += 1\n return {\n value: object,\n start,\n end: this.#index,\n objectEntries: entries,\n }\n }\n if (delimiter !== ',') this.#invalid()\n this.#index += 1\n this.#skipWhitespace()\n }\n }\n\n #array(start: number, depth: number): JsonNode {\n this.#index += 1\n this.#skipWhitespace()\n const items: JsonNode[] = []\n if (this.#source[this.#index] === ']') {\n this.#index += 1\n return { value: items, start, end: this.#index, arrayItems: items }\n }\n while (true) {\n items.push(this.#value(depth + 1))\n this.#skipWhitespace()\n const delimiter = this.#source[this.#index]\n if (delimiter === ']') {\n this.#index += 1\n return { value: items, start, end: this.#index, arrayItems: items }\n }\n if (delimiter !== ',') this.#invalid()\n this.#index += 1\n this.#skipWhitespace()\n }\n }\n\n #string(): string {\n const start = this.#index\n this.#index += 1\n while (this.#index < this.#source.length) {\n const character = this.#source[this.#index]\n if (character === '\"') {\n this.#index += 1\n const raw = this.#source.slice(start, this.#index)\n try {\n return JSON.parse(raw) as string\n } catch {\n this.#invalid()\n }\n }\n if (character === '\\\\') {\n this.#index += 1\n const escape = this.#source[this.#index]\n if (escape === 'u') {\n const digits = this.#source.slice(this.#index + 1, this.#index + 5)\n if (!/^[0-9a-fA-F]{4}$/u.test(digits)) this.#invalid()\n this.#index += 5\n continue\n }\n if (escape === undefined || !'\"\\\\/bfnrt'.includes(escape)) this.#invalid()\n this.#index += 1\n continue\n }\n if (character === undefined || character.charCodeAt(0) < 0x20) this.#invalid()\n this.#index += 1\n }\n return this.#invalid()\n }\n\n #number(): string {\n const match = /-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?/uy.exec(\n this.#source.slice(this.#index),\n )\n if (!match) this.#invalid()\n const raw = match?.[0] as string\n this.#index += raw.length\n return raw\n }\n\n #skipWhitespace(): void {\n while (this.#index < this.#source.length && isJsonWhitespace(this.#source[this.#index] ?? '')) {\n this.#index += 1\n }\n }\n\n #invalid(): never {\n return fail('BRIDGE_PROVIDER_INVALID_RESPONSE')\n }\n}\n\nconst parseProviderResponse = (text: string): ProviderResponse => {\n let root: JsonNode\n try {\n root = new StrictJsonParser(text).parse()\n } catch (error) {\n if (error instanceof BridgeError) throw error\n return fail('BRIDGE_PROVIDER_INVALID_RESPONSE')\n }\n return { text, root: root as JsonNode }\n}\n\nconst objectEntry = (node: JsonNode, key: string): JsonNode | undefined =>\n node.objectEntries?.get(key)\n\nconst objectValue = (node: JsonNode, key: string): unknown =>\n objectEntry(node, key)?.value\n\nconst byteLength = (value: string): number =>\n new TextEncoder().encode(value).byteLength\n\nconst requestAbortError = (): DOMException =>\n new DOMException('The bridge provider request was aborted', 'AbortError')\n\nconst throwIfRequestAborted = (\n controlled: RequestSignal,\n external: AbortSignal | undefined,\n): void => {\n if (controlled.timedOut()) fail('BRIDGE_TIMEOUT')\n if (external?.aborted) fail('BRIDGE_ABORTED')\n}\n\nconst readWithSignal = async (\n reader: ReadableStreamDefaultReader<Uint8Array>,\n signal: AbortSignal,\n): Promise<ReadableStreamReadResult<Uint8Array>> => {\n if (signal.aborted) throw signal.reason ?? requestAbortError()\n return new Promise<ReadableStreamReadResult<Uint8Array>>((resolve, reject) => {\n let settled = false\n const cleanup = (): void => {\n signal.removeEventListener('abort', onAbort)\n }\n const onAbort = (): void => {\n if (settled) return\n settled = true\n cleanup()\n reject(signal.reason ?? requestAbortError())\n }\n signal.addEventListener('abort', onAbort, { once: true })\n let read: Promise<ReadableStreamReadResult<Uint8Array>>\n try {\n read = reader.read()\n } catch (error) {\n if (settled) return\n settled = true\n cleanup()\n reject(error)\n return\n }\n void read.then(\n (result) => {\n if (settled) return\n settled = true\n cleanup()\n resolve(result)\n },\n (error: unknown) => {\n if (settled) return\n settled = true\n cleanup()\n reject(error)\n },\n )\n })\n}\n\nconst cancelResponseBody = (response: Response): void => {\n const body = response.body\n if (body === null || response.bodyUsed) return\n try {\n void body.cancel().catch(() => undefined)\n } catch {\n // A body can already be locked or closed by the provider runtime.\n }\n}\n\nconst decodeResponseBody = async (\n response: Response,\n controlled: RequestSignal,\n external: AbortSignal | undefined,\n): Promise<string> => {\n throwIfRequestAborted(controlled, external)\n const contentLength = response.headers.get('content-length')\n if (contentLength !== null && /^\\d+$/u.test(contentLength)) {\n try {\n if (BigInt(contentLength) > BigInt(MAX_RESPONSE_BYTES)) {\n fail('BRIDGE_PROVIDER_INVALID_RESPONSE')\n }\n } catch {\n // An unrepresentable declaration is handled by the streaming byte cap.\n }\n }\n\n const body = response.body\n if (body === null) return ''\n\n let reader: ReadableStreamDefaultReader<Uint8Array>\n try {\n reader = body.getReader()\n } catch {\n return fail('BRIDGE_PROVIDER_TRANSPORT')\n }\n const chunks: Uint8Array[] = []\n let totalBytes = 0\n let bodyComplete = false\n const releaseReader = (): void => {\n try {\n reader.releaseLock()\n } catch {\n // The provider runtime may keep a lock while an aborted read settles.\n }\n }\n try {\n while (true) {\n let result: ReadableStreamReadResult<Uint8Array>\n try {\n result = await readWithSignal(reader, controlled.signal)\n } catch (error) {\n throwIfRequestAborted(controlled, external)\n if (error instanceof BridgeError) throw error\n return fail('BRIDGE_PROVIDER_TRANSPORT')\n }\n throwIfRequestAborted(controlled, external)\n if (result.done) {\n bodyComplete = true\n break\n }\n const chunk = result.value\n if (!(chunk instanceof Uint8Array)) return fail('BRIDGE_PROVIDER_TRANSPORT')\n totalBytes += chunk.byteLength\n if (totalBytes > MAX_RESPONSE_BYTES) {\n fail('BRIDGE_PROVIDER_INVALID_RESPONSE')\n }\n chunks.push(chunk)\n }\n\n throwIfRequestAborted(controlled, external)\n const bytes = new Uint8Array(totalBytes)\n let offset = 0\n for (const chunk of chunks) {\n bytes.set(chunk, offset)\n offset += chunk.byteLength\n }\n try {\n return new TextDecoder('utf-8', { fatal: true }).decode(bytes)\n } catch {\n return fail('BRIDGE_PROVIDER_INVALID_RESPONSE')\n }\n } finally {\n if (!bodyComplete) {\n try {\n const cancellation = reader.cancel()\n void cancellation.then(releaseReader, releaseReader)\n } catch {\n // Cancellation is best-effort when a custom provider stream is stalled.\n }\n }\n releaseReader()\n }\n}\n\nconst CONFIG_KEYS = new Set([\n 'builderEndpoint',\n 'explorerEndpoint',\n 'builderApiKey',\n 'allowUnauthenticatedBuild',\n 'minimumQuoteValiditySeconds',\n 'timeoutMs',\n 'fetch',\n])\n\nconst endpointWithPath = (base: URL, path: string): URL =>\n new URL(path.replace(/^\\/+/, ''), `${base.toString().replace(/\\/+$/u, '')}/`)\n\nconst normalizeProviderEndpoint = (\n value: unknown,\n fallback: string,\n label: string,\n): URL => {\n const sourceValue = value === undefined ? fallback : value\n if (typeof sourceValue !== 'string') return fail('BRIDGE_INVALID_ARGUMENT')\n const source = sourceValue\n if (source.length === 0 || source.trim() !== source) {\n fail('BRIDGE_INVALID_ARGUMENT')\n }\n if (!/^[a-z][a-z\\d+.-]*:\\/\\//iu.test(source) || source.includes('#')) {\n fail('BRIDGE_INVALID_ARGUMENT')\n }\n const authorityStart = source.indexOf('://') + 3\n const authority = source.slice(authorityStart).split(/[/?#]/u, 1)[0] ?? ''\n if (authority.length === 0 || authority.includes('@')) fail('BRIDGE_INVALID_ARGUMENT')\n\n let endpoint: URL\n try {\n endpoint = new URL(source)\n } catch {\n return fail('BRIDGE_INVALID_ARGUMENT')\n }\n if (\n endpoint.protocol !== 'https:' &&\n !(endpoint.protocol === 'http:' &&\n ['localhost', '127.0.0.1', '[::1]', '::1'].includes(endpoint.hostname))\n ) {\n fail('BRIDGE_INVALID_ARGUMENT')\n }\n if (\n !endpoint.hostname ||\n endpoint.username ||\n endpoint.password ||\n source.includes('?') ||\n endpoint.search ||\n endpoint.hash\n ) {\n fail('BRIDGE_INVALID_ARGUMENT')\n }\n // Touching port forces URL's parser to have accepted a valid numeric port;\n // malformed ports fail in the constructor above.\n if (endpoint.port !== '' && (!/^\\d+$/u.test(endpoint.port) || Number(endpoint.port) > 65535)) {\n fail('BRIDGE_INVALID_ARGUMENT')\n }\n endpoint.pathname = endpoint.pathname.replace(/\\/+$/u, '') || '/'\n if (!endpoint.pathname.startsWith('/')) fail('BRIDGE_INVALID_ARGUMENT')\n void label\n return endpoint as URL\n}\n\nconst normalizeBridgeConfig = (\n config: MayanSwiftV2BridgeConfig | undefined,\n): NormalizedBridgeConfig => {\n const value: JsonRecord = config === undefined\n ? {}\n : requireRecord(config, 'BRIDGE_INVALID_ARGUMENT')\n if (Object.keys(value).some((key) => !CONFIG_KEYS.has(key))) {\n fail('BRIDGE_INVALID_ARGUMENT')\n }\n const builderEndpoint = normalizeProviderEndpoint(\n value.builderEndpoint,\n DEFAULT_BUILDER_ENDPOINT,\n 'builderEndpoint',\n )\n const explorerEndpoint = normalizeProviderEndpoint(\n value.explorerEndpoint,\n DEFAULT_EXPLORER_ENDPOINT,\n 'explorerEndpoint',\n )\n let builderApiKey: string | undefined\n if (value.builderApiKey !== undefined) {\n const builderApiKeyValue = value.builderApiKey\n if (\n typeof builderApiKeyValue !== 'string' ||\n /[\\u0000-\\u001f\\u007f]/u.test(builderApiKeyValue)\n ) {\n fail('BRIDGE_INVALID_ARGUMENT')\n }\n const validatedBuilderApiKey = builderApiKeyValue as string\n builderApiKey = validatedBuilderApiKey.length === 0\n ? undefined\n : validatedBuilderApiKey\n }\n const allowUnauthenticatedBuildValue = value.allowUnauthenticatedBuild ?? false\n if (typeof allowUnauthenticatedBuildValue !== 'boolean') {\n fail('BRIDGE_INVALID_ARGUMENT')\n }\n const allowUnauthenticatedBuild = allowUnauthenticatedBuildValue as boolean\n const minimumQuoteValiditySecondsValue = value.minimumQuoteValiditySeconds ?? 60\n if (\n typeof minimumQuoteValiditySecondsValue !== 'number' ||\n !Number.isSafeInteger(minimumQuoteValiditySecondsValue) ||\n minimumQuoteValiditySecondsValue < 0 ||\n minimumQuoteValiditySecondsValue > 300\n ) {\n fail('BRIDGE_INVALID_ARGUMENT')\n }\n const minimumQuoteValiditySeconds = minimumQuoteValiditySecondsValue as number\n const timeoutMsValue = value.timeoutMs ?? DEFAULT_TIMEOUT_MS\n if (typeof timeoutMsValue !== 'number' || !Number.isSafeInteger(timeoutMsValue) || timeoutMsValue <= 0) {\n fail('BRIDGE_INVALID_ARGUMENT')\n }\n const timeoutMs = timeoutMsValue as number\n const implementation = value.fetch ?? globalThis.fetch\n if (typeof implementation !== 'function') fail('BRIDGE_INVALID_ARGUMENT')\n return Object.freeze({\n builderEndpoint,\n explorerEndpoint,\n ...(builderApiKey === undefined ? {} : { builderApiKey }),\n allowUnauthenticatedBuild,\n minimumQuoteValiditySeconds,\n timeoutMs,\n fetch: wrapFetch(implementation as typeof globalThis.fetch),\n })\n}\n\ninterface RequestSignal {\n readonly signal: AbortSignal\n readonly timedOut: () => boolean\n readonly cleanup: () => void\n}\n\ninterface ProviderRequestResult {\n readonly response: Response\n readonly controlled: RequestSignal\n readonly external: AbortSignal | undefined\n}\n\nconst requestSignal = (\n timeoutMs: number,\n external: AbortSignal | undefined,\n): RequestSignal => {\n const controller = new AbortController()\n let timedOut = false\n const timeout = setTimeout(() => {\n timedOut = true\n controller.abort()\n }, timeoutMs)\n const onAbort = (): void => controller.abort()\n if (external?.aborted) controller.abort()\n else external?.addEventListener('abort', onAbort, { once: true })\n return {\n signal: controller.signal,\n timedOut: () => timedOut,\n cleanup: () => {\n clearTimeout(timeout)\n external?.removeEventListener('abort', onAbort)\n },\n }\n}\n\nconst providerRequest = async (\n config: NormalizedBridgeConfig,\n endpoint: URL,\n method: 'GET' | 'POST',\n body: string | undefined,\n includeBuilderKey: boolean,\n options: BridgeRequestOptions | undefined,\n): Promise<ProviderRequestResult> => {\n if (options?.signal?.aborted) fail('BRIDGE_ABORTED')\n const controlled = requestSignal(config.timeoutMs, options?.signal)\n try {\n const headers: Record<string, string> = {}\n headers.accept = 'application/json'\n if (body !== undefined) headers['content-type'] = 'application/json'\n if (includeBuilderKey && config.builderApiKey !== undefined) {\n headers['x-api-key'] = config.builderApiKey\n }\n let response: Response\n try {\n response = await config.fetch(endpoint, {\n method,\n headers,\n ...(body === undefined ? {} : { body }),\n signal: controlled.signal,\n credentials: 'omit',\n redirect: 'manual',\n })\n if (controlled.timedOut()) fail('BRIDGE_TIMEOUT')\n if (options?.signal?.aborted) fail('BRIDGE_ABORTED')\n } catch {\n if (controlled.timedOut()) fail('BRIDGE_TIMEOUT')\n if (options?.signal?.aborted) fail('BRIDGE_ABORTED')\n return fail('BRIDGE_PROVIDER_TRANSPORT')\n }\n return {\n response: response as Response,\n controlled,\n external: options?.signal,\n }\n } catch (error) {\n controlled.cleanup()\n if (error instanceof BridgeError) throw error\n if (controlled.timedOut()) fail('BRIDGE_TIMEOUT')\n if (options?.signal?.aborted) fail('BRIDGE_ABORTED')\n return fail('BRIDGE_PROVIDER_TRANSPORT')\n }\n}\n\nconst providerHttpStatus = (\n response: Response,\n kind: 'quote' | 'build' | 'status',\n): void => {\n if (kind === 'status' && response.status === 404) fail('BRIDGE_STATUS_NOT_FOUND')\n if (response.status >= 300 && response.status < 400) {\n fail('BRIDGE_PROVIDER_TRANSPORT')\n }\n if (kind === 'build' && (response.status === 401 || response.status === 403)) {\n fail('BRIDGE_PROVIDER_AUTH_REQUIRED')\n }\n if (response.status !== 200 && response.status !== 201) {\n fail('BRIDGE_PROVIDER_HTTP', response.status)\n }\n}\n\nconst providerJson = async (\n request: ProviderRequestResult,\n kind: 'quote' | 'build' | 'status',\n): Promise<ProviderResponse> => {\n try {\n providerHttpStatus(request.response, kind)\n const text = await decodeResponseBody(\n request.response,\n request.controlled,\n request.external,\n )\n throwIfRequestAborted(request.controlled, request.external)\n const parsed = parseProviderResponse(text)\n throwIfRequestAborted(request.controlled, request.external)\n return parsed\n } finally {\n cancelResponseBody(request.response)\n request.controlled.cleanup()\n }\n}\n\nconst encodeBase58 = (bytes: Uint8Array): string => {\n let zeroes = 0\n while (zeroes < bytes.length && bytes[zeroes] === 0) zeroes += 1\n if (zeroes === bytes.length) return '1'.repeat(zeroes)\n const digits: number[] = [0]\n for (const byte of bytes) {\n let carry = byte\n for (let index = 0; index < digits.length; index += 1) {\n const value = (digits[index] ?? 0) * 256 + carry\n digits[index] = value % 58\n carry = Math.floor(value / 58)\n }\n while (carry > 0) {\n digits.push(carry % 58)\n carry = Math.floor(carry / 58)\n }\n }\n let result = '1'.repeat(zeroes)\n for (let index = digits.length - 1; index >= 0; index -= 1) {\n result += BASE58_ALPHABET[digits[index] ?? 0] ?? ''\n }\n return result === '' ? '1' : result\n}\n\nconst decodeBase58 = (\n value: unknown,\n expectedBytes: number,\n code: BridgeErrorCode,\n): Uint8Array => {\n const text = requireString(value, code)\n if (text.length > expectedBytes * 2 || [...text].some((char) => !BASE58_ALPHABET.includes(char))) {\n fail(code)\n }\n const bytes: number[] = [0]\n for (const char of text) {\n const digit = BASE58_ALPHABET.indexOf(char)\n let carry = digit\n for (let index = 0; index < bytes.length; index += 1) {\n const current = (bytes[index] ?? 0) * 58 + carry\n bytes[index] = current % 256\n carry = Math.floor(current / 256)\n }\n while (carry > 0) {\n bytes.push(carry % 256)\n carry = Math.floor(carry / 256)\n }\n }\n let zeroes = 0\n while (zeroes < text.length && text[zeroes] === '1') zeroes += 1\n const result = new Uint8Array(zeroes + (bytes.length === 1 && bytes[0] === 0 ? 0 : bytes.length))\n for (let index = 0; index < bytes.length && !(bytes.length === 1 && bytes[0] === 0); index += 1) {\n result[result.length - 1 - index] = bytes[index] ?? 0\n }\n if (result.length !== expectedBytes || encodeBase58(result) !== text) fail(code)\n return result\n}\n\nconst decodeBase64 = (value: unknown, code: BridgeErrorCode): Uint8Array => {\n const text = requireString(value, code)\n if (!BASE64.test(text)) fail(code)\n let binary: string\n try {\n binary = globalThis.atob(text)\n } catch {\n return fail(code)\n }\n const result = Uint8Array.from(binary, (character) => character.charCodeAt(0))\n let canonical: string\n try {\n canonical = globalThis.btoa(binary)\n } catch {\n return fail(code)\n }\n if (canonical !== text) fail(code)\n return result\n}\n\ninterface ByteCursor {\n readonly bytes: Uint8Array\n index: number\n}\n\nconst readBytes = (cursor: ByteCursor, count: number, code: BridgeErrorCode): Uint8Array => {\n if (!Number.isSafeInteger(count) || count < 0 || cursor.index + count > cursor.bytes.length) fail(code)\n const value = cursor.bytes.slice(cursor.index, cursor.index + count)\n cursor.index += count\n return value\n}\n\nconst readShortVec = (cursor: ByteCursor, maximum: number, code: BridgeErrorCode): number => {\n let value = 0\n let shift = 0\n for (let count = 0; count < 5; count += 1) {\n const byte = readBytes(cursor, 1, code)[0] ?? 0\n const payload = byte & 0x7f\n if (shift >= 28 || payload > Math.floor(Number.MAX_SAFE_INTEGER / 2 ** shift)) fail(code)\n value += payload * 2 ** shift\n if ((byte & 0x80) === 0) {\n if (count > 0 && payload === 0) fail(code)\n if (!Number.isSafeInteger(value) || value > maximum) fail(code)\n return value\n }\n shift += 7\n }\n return fail(code)\n}\n\nconst allZero = (bytes: Uint8Array): boolean => bytes.every((byte) => byte === 0)\n\nconst validateSolanaTransaction = (\n encoded: unknown,\n feePayer: string,\n): string => {\n const bytes = decodeBase64(encoded, 'BRIDGE_BUILD_INVALID')\n if (bytes.byteLength === 0 || bytes.byteLength > 1232) fail('BRIDGE_BUILD_INVALID')\n const cursor: ByteCursor = { bytes, index: 0 }\n const signatureCount = readShortVec(cursor, 1, 'BRIDGE_BUILD_INVALID')\n if (signatureCount !== 1 || !allZero(readBytes(cursor, 64, 'BRIDGE_BUILD_INVALID'))) {\n fail('BRIDGE_BUILD_INVALID')\n }\n const version = readBytes(cursor, 1, 'BRIDGE_BUILD_INVALID')[0]\n if (version !== 0x80) fail('BRIDGE_BUILD_INVALID')\n const requiredSignatures = readBytes(cursor, 1, 'BRIDGE_BUILD_INVALID')[0] ?? 0\n const readonlySigned = readBytes(cursor, 1, 'BRIDGE_BUILD_INVALID')[0] ?? 0\n const readonlyUnsigned = readBytes(cursor, 1, 'BRIDGE_BUILD_INVALID')[0] ?? 0\n if (requiredSignatures !== 1 || readonlySigned !== 0) fail('BRIDGE_BUILD_INVALID')\n const staticKeyCount = readShortVec(cursor, 64, 'BRIDGE_BUILD_INVALID')\n if (staticKeyCount === 0 || readonlyUnsigned >= staticKeyCount) fail('BRIDGE_BUILD_INVALID')\n const staticKeys = readBytes(cursor, staticKeyCount * 32, 'BRIDGE_BUILD_INVALID')\n const payerBytes = decodeBase58(feePayer, 32, 'BRIDGE_BUILD_INVALID')\n if (!staticKeys.slice(0, 32).every((byte, index) => byte === payerBytes[index])) fail('BRIDGE_BUILD_INVALID')\n readBytes(cursor, 32, 'BRIDGE_BUILD_INVALID')\n const instructionCount = readShortVec(cursor, 64, 'BRIDGE_BUILD_INVALID')\n let largestAccountIndex = -1\n for (let instruction = 0; instruction < instructionCount; instruction += 1) {\n largestAccountIndex = Math.max(\n largestAccountIndex,\n readBytes(cursor, 1, 'BRIDGE_BUILD_INVALID')[0] ?? 0,\n )\n const accountCount = readShortVec(cursor, 64, 'BRIDGE_BUILD_INVALID')\n const accountIndices = readBytes(cursor, accountCount, 'BRIDGE_BUILD_INVALID')\n for (const index of accountIndices) largestAccountIndex = Math.max(largestAccountIndex, index)\n const dataLength = readShortVec(cursor, 1024, 'BRIDGE_BUILD_INVALID')\n readBytes(cursor, dataLength, 'BRIDGE_BUILD_INVALID')\n }\n const lookupCount = readShortVec(cursor, 32, 'BRIDGE_BUILD_INVALID')\n let loadedAddressCount = 0\n for (let lookup = 0; lookup < lookupCount; lookup += 1) {\n readBytes(cursor, 32, 'BRIDGE_BUILD_INVALID')\n const writableCount = readShortVec(cursor, 64, 'BRIDGE_BUILD_INVALID')\n readBytes(cursor, writableCount, 'BRIDGE_BUILD_INVALID')\n const readonlyCount = readShortVec(cursor, 64, 'BRIDGE_BUILD_INVALID')\n readBytes(cursor, readonlyCount, 'BRIDGE_BUILD_INVALID')\n loadedAddressCount += writableCount + readonlyCount\n if (loadedAddressCount > 256) fail('BRIDGE_BUILD_INVALID')\n }\n if (largestAccountIndex >= staticKeyCount + loadedAddressCount || cursor.index !== bytes.length) {\n fail('BRIDGE_BUILD_INVALID')\n }\n return requireString(encoded, 'BRIDGE_BUILD_INVALID')\n}\n\nconst providerInvalid = (): never => fail('BRIDGE_PROVIDER_INVALID_RESPONSE')\n\nconst requiredNode = (node: JsonNode, key: string): JsonNode => {\n const child = objectEntry(node, key)\n if (!child) providerInvalid()\n return child as JsonNode\n}\n\nconst providerString = (\n node: JsonNode,\n key: string,\n allowEmpty = false,\n): string => {\n const value = requiredNode(node, key).value\n if (typeof value !== 'string' || (!allowEmpty && value.length === 0)) {\n providerInvalid()\n }\n return value as string\n}\n\nconst providerBoolean = (node: JsonNode, key: string): boolean => {\n const value = requiredNode(node, key).value\n if (typeof value !== 'boolean') providerInvalid()\n return value as boolean\n}\n\nconst providerNumber = (node: JsonNode, key: string): number => {\n const value = requiredNode(node, key).value\n if (typeof value !== 'number' || !Number.isFinite(value)) providerInvalid()\n return value as number\n}\n\nconst providerInteger = (node: JsonNode, key: string): number => {\n const value = providerNumber(node, key)\n if (!Number.isSafeInteger(value)) providerInvalid()\n return value\n}\n\nconst providerAddress = (\n node: JsonNode,\n key: string,\n expected: string,\n): string => {\n const value = providerString(node, key)\n if (!providerAddressEquals(value, expected)) providerInvalid()\n return EVM_ADDRESS.test(value) ? value.toLowerCase() : value\n}\n\nconst providerUint64 = (\n node: JsonNode,\n key: string,\n positive: boolean,\n): { readonly source: string; readonly value: bigint } => {\n const value = providerString(node, key)\n try {\n return positive\n ? normalizePositiveUint64(value, 'BRIDGE_PROVIDER_INVALID_RESPONSE')\n : normalizeCanonicalUint64(value, 'BRIDGE_PROVIDER_INVALID_RESPONSE')\n } catch (error) {\n if (error instanceof BridgeError) throw error\n return providerInvalid()\n }\n}\n\nconst providerToken = (\n node: JsonNode,\n expected: {\n readonly address: string\n readonly standard: 'erc20' | 'spl'\n readonly chainId: number\n readonly wormholeChainId: number\n readonly mint: string\n },\n): void => {\n if (!isRecord(node.value)) providerInvalid()\n const contract = providerString(node, 'contract')\n if (!providerAddressEquals(contract, expected.address)) providerInvalid()\n const mint = providerString(node, 'mint', true)\n if (mint !== expected.mint) providerInvalid()\n const realOrigin = providerString(node, 'realOriginContractAddress')\n if (!providerAddressEquals(realOrigin, expected.address)) providerInvalid()\n if (providerString(node, 'name') !== 'EuroC') providerInvalid()\n if (providerString(node, 'standard') !== expected.standard) providerInvalid()\n if (providerInteger(node, 'chainId') !== expected.chainId) providerInvalid()\n if (providerInteger(node, 'wChainId') !== expected.wormholeChainId) providerInvalid()\n if (providerInteger(node, 'realOriginChainId') !== expected.wormholeChainId) providerInvalid()\n if (providerInteger(node, 'decimals') !== 6) providerInvalid()\n}\n\nconst quoteProviderStandard = (facts: DirectionFacts): 'erc20' | 'spl' =>\n facts.sourceChainId === ETHEREUM_CHAIN_ID ? 'erc20' : 'spl'\n\ninterface ValidatedProviderQuote {\n readonly quote: MayanSwiftV2Quote\n readonly rawNode: JsonNode\n readonly deadlineValue: bigint\n}\n\nconst ensureQuoteDeadline = (\n deadlineValue: bigint,\n margin: number,\n): void => {\n const now = BigInt(Math.floor(Date.now() / 1000))\n if (!Number.isSafeInteger(Number(now)) || deadlineValue < now + BigInt(margin)) {\n fail('BRIDGE_QUOTE_EXPIRED')\n }\n}\n\nconst validateProviderQuote = (\n node: JsonNode,\n text: string,\n request: MayanSwiftV2QuoteRequest,\n facts: DirectionFacts,\n config: NormalizedBridgeConfig,\n): ValidatedProviderQuote => {\n if (!isRecord(node.value)) providerInvalid()\n const raw = text.slice(node.start, node.end)\n if (byteLength(raw) > MAX_RAW_QUOTE_BYTES) providerInvalid()\n if (providerString(node, 'type') !== 'SWIFT') providerInvalid()\n if (providerString(node, 'swiftVersion') !== 'V2') providerInvalid()\n if (providerBoolean(node, 'gasless')) providerInvalid()\n if (providerString(node, 'fromChain') !== facts.sourceName) providerInvalid()\n if (providerString(node, 'toChain') !== facts.destinationName) providerInvalid()\n if (providerInteger(node, 'slippageBps') !== request.slippageBps) providerInvalid()\n if (providerBoolean(node, 'onlyBridging')) providerInvalid()\n\n const effectiveAmount = providerUint64(node, 'effectiveAmountIn64', true)\n if (effectiveAmount.source !== request.amountIn) providerInvalid()\n const expectedAmountOut = providerUint64(node, 'expectedAmountOutBaseUnits', true)\n const minimumAmountOut = providerUint64(node, 'minAmountOutBaseUnits', true)\n const minimumReceived = providerUint64(node, 'minReceivedBaseUnits', true)\n if (minimumAmountOut.value > expectedAmountOut.value || minimumReceived.value > minimumAmountOut.value) {\n providerInvalid()\n }\n const deadline = providerUint64(node, 'deadline64', true)\n ensureQuoteDeadline(deadline.value, config.minimumQuoteValiditySeconds)\n\n const sourceToken = requiredNode(node, 'fromToken')\n const destinationToken = requiredNode(node, 'toToken')\n providerToken(sourceToken, {\n address: facts.sourceTokenAddress,\n standard: facts.sourceChainId === ETHEREUM_CHAIN_ID ? 'erc20' : 'spl',\n chainId: facts.sourceProviderChainId,\n wormholeChainId: facts.sourceWormholeChainId,\n mint: facts.sourceEurcMint,\n })\n providerToken(destinationToken, {\n address: facts.destinationTokenAddress,\n standard: facts.destinationChainId === ETHEREUM_CHAIN_ID ? 'erc20' : 'spl',\n chainId: facts.destinationProviderChainId,\n wormholeChainId: facts.destinationWormholeChainId,\n mint: facts.destinationEurcMint,\n })\n\n const sourceUsdcStandard = quoteProviderStandard(facts)\n if (providerAddress(node, 'swiftInputContract', facts.sourceUsdcAddress) !== facts.sourceUsdcAddress) {\n providerInvalid()\n }\n if (providerString(node, 'swiftInputContractStandard') !== sourceUsdcStandard) providerInvalid()\n if (providerInteger(node, 'swiftInputDecimals') !== 6) providerInvalid()\n if (providerAddress(node, 'swiftMayanContract', facts.swiftContract) !== facts.swiftContract) {\n providerInvalid()\n }\n\n const middleNode = requiredNode(node, 'minMiddleAmount')\n if (\n middleNode.rawNumber === undefined ||\n typeof middleNode.value !== 'number' ||\n !Number.isFinite(middleNode.value) ||\n middleNode.value <= 0\n ) {\n providerInvalid()\n }\n\n let routerAddress: string\n let routerKind: 'provider-selected-evm' | 'jupiter-v6'\n if (facts.sourceChainId === ETHEREUM_CHAIN_ID) {\n routerAddress = normalizeEvmAddress(\n providerString(node, 'evmSwapRouterAddress'),\n 'BRIDGE_PROVIDER_INVALID_RESPONSE',\n )\n routerKind = 'provider-selected-evm'\n } else {\n routerAddress = SOLANA_JUPITER_V6\n routerKind = 'jupiter-v6'\n const evmRouter = objectValue(node, 'evmSwapRouterAddress')\n if (evmRouter !== undefined && evmRouter !== null) providerInvalid()\n }\n\n const quoteId = providerString(node, 'quoteId')\n if (!/^0x[0-9a-fA-F]{32}$/u.test(quoteId)) providerInvalid()\n const signature = providerString(node, 'signature')\n if (!EVM_SIGNATURE.test(signature)) providerInvalid()\n\n const dependencies = facts.sourceChainId === SOLANA_CHAIN_ID\n ? [...DEPENDENCIES, 'jupiter-v6-source-swap']\n : [...DEPENDENCIES]\n const quote: MayanSwiftV2Quote = {\n quoteKind: 'mayan-swift-v2',\n providerId: 'mayan-swift-v2',\n sourceChainId: request.sourceChainId,\n destinationChainId: request.destinationChainId,\n sourceTokenDeploymentId: request.sourceTokenDeploymentId,\n destinationTokenDeploymentId: request.destinationTokenDeploymentId,\n amountIn: effectiveAmount.source,\n expectedAmountOut: expectedAmountOut.source,\n minimumAmountOut: minimumAmountOut.source,\n minimumReceived: minimumReceived.source,\n deadline: deadline.source,\n slippageBps: request.slippageBps,\n quoteId: quoteId.toLowerCase(),\n providerSignature: signature.toLowerCase(),\n sourceSwap: {\n required: true,\n inputTokenDeploymentId: facts.sourceTokenDeploymentId,\n intermediateTokenDeploymentId: facts.sourceUsdcDeploymentId,\n intermediateTokenAddress: facts.sourceUsdcAddress,\n intermediateTokenStandard: sourceUsdcStandard,\n intermediateTokenDecimals: 6,\n providerMinimumAmount: middleNode.rawNumber as string,\n routerKind,\n routerAddress,\n },\n dependencies,\n quoteVerification: 'provider-signed-not-locally-verified',\n rawSignedQuoteJson: raw,\n }\n return {\n quote: deepFreeze(quote),\n rawNode: node,\n deadlineValue: deadline.value,\n }\n}\n\nconst QUOTE_KEYS = [\n 'quoteKind',\n 'providerId',\n 'sourceChainId',\n 'destinationChainId',\n 'sourceTokenDeploymentId',\n 'destinationTokenDeploymentId',\n 'amountIn',\n 'expectedAmountOut',\n 'minimumAmountOut',\n 'minimumReceived',\n 'deadline',\n 'slippageBps',\n 'quoteId',\n 'providerSignature',\n 'sourceSwap',\n 'dependencies',\n 'quoteVerification',\n 'rawSignedQuoteJson',\n] as const\nconst SOURCE_SWAP_KEYS = [\n 'required',\n 'inputTokenDeploymentId',\n 'intermediateTokenDeploymentId',\n 'intermediateTokenAddress',\n 'intermediateTokenStandard',\n 'intermediateTokenDecimals',\n 'providerMinimumAmount',\n 'routerKind',\n 'routerAddress',\n] as const\n\nconst exactObjectKeys = (\n value: JsonRecord,\n expected: readonly string[],\n code: BridgeErrorCode,\n): void => {\n const actual = Object.keys(value).sort()\n const wanted = [...expected].sort()\n if (actual.length !== wanted.length || actual.some((key, index) => key !== wanted[index])) {\n fail(code)\n }\n}\n\nconst stableJson = (value: unknown): string => {\n if (Array.isArray(value)) return `[${value.map(stableJson).join(',')}]`\n if (isRecord(value)) {\n return `{${Object.keys(value).sort().map((key) => `${JSON.stringify(key)}:${stableJson(value[key])}`).join(',')}}`\n }\n return JSON.stringify(value)\n}\n\nconst cloneQuote = (quote: MayanSwiftV2Quote): MayanSwiftV2Quote => {\n try {\n return JSON.parse(JSON.stringify(quote)) as MayanSwiftV2Quote\n } catch {\n return fail('BRIDGE_INVALID_ARGUMENT')\n }\n}\n\nconst validateNormalizedQuoteShape = (\n quote: unknown,\n code: BridgeErrorCode,\n): MayanSwiftV2Quote => {\n const value = requireRecord(quote, code)\n exactObjectKeys(value, QUOTE_KEYS, code)\n if (value.quoteKind !== 'mayan-swift-v2' || value.providerId !== 'mayan-swift-v2') fail(code)\n const sourceChainId = requireString(value.sourceChainId, code)\n const destinationChainId = requireString(value.destinationChainId, code)\n const facts = directionFacts(sourceChainId, destinationChainId)\n if (\n value.sourceTokenDeploymentId !== facts.sourceTokenDeploymentId ||\n value.destinationTokenDeploymentId !== facts.destinationTokenDeploymentId\n ) fail(code)\n const amountIn = normalizePositiveUint64(value.amountIn, code)\n const expectedAmountOut = normalizePositiveUint64(value.expectedAmountOut, code)\n const minimumAmountOut = normalizePositiveUint64(value.minimumAmountOut, code)\n const minimumReceived = normalizePositiveUint64(value.minimumReceived, code)\n if (minimumAmountOut.value > expectedAmountOut.value || minimumReceived.value > minimumAmountOut.value) fail(code)\n const deadline = normalizePositiveUint64(value.deadline, code)\n const slippageBps = normalizeSlippage(value.slippageBps, code)\n if (value.quoteVerification !== 'provider-signed-not-locally-verified') fail(code)\n const quoteId = requireString(value.quoteId, code)\n if (!/^0x[0-9a-fA-F]{32}$/u.test(quoteId)) fail(code)\n const signature = requireString(value.providerSignature, code)\n if (!EVM_SIGNATURE.test(signature)) fail(code)\n const sourceSwap = requireRecord(value.sourceSwap, code)\n exactObjectKeys(sourceSwap, SOURCE_SWAP_KEYS, code)\n if (sourceSwap.required !== true) fail(code)\n if (sourceSwap.inputTokenDeploymentId !== facts.sourceTokenDeploymentId || sourceSwap.intermediateTokenDeploymentId !== facts.sourceUsdcDeploymentId) fail(code)\n if (sourceSwap.intermediateTokenAddress !== facts.sourceUsdcAddress) fail(code)\n const providerStandard = quoteProviderStandard(facts)\n if (sourceSwap.intermediateTokenStandard !== providerStandard || sourceSwap.intermediateTokenDecimals !== 6) fail(code)\n const providerMinimumAmount = sourceSwap.providerMinimumAmount\n if (typeof providerMinimumAmount !== 'string' || providerMinimumAmount.length === 0) fail(code)\n let normalizedRouterAddress: string\n let normalizedRouterKind: 'provider-selected-evm' | 'jupiter-v6'\n if (facts.sourceChainId === ETHEREUM_CHAIN_ID) {\n const routerAddress = sourceSwap.routerAddress\n if (sourceSwap.routerKind !== 'provider-selected-evm' || typeof routerAddress !== 'string' || !EVM_ADDRESS.test(routerAddress) || /^0x0{40}$/iu.test(routerAddress)) return fail(code)\n normalizedRouterAddress = (routerAddress as string).toLowerCase()\n normalizedRouterKind = 'provider-selected-evm'\n } else if (sourceSwap.routerKind !== 'jupiter-v6' || sourceSwap.routerAddress !== SOLANA_JUPITER_V6) {\n return fail(code)\n } else {\n normalizedRouterAddress = SOLANA_JUPITER_V6\n normalizedRouterKind = 'jupiter-v6'\n }\n if (!Array.isArray(value.dependencies)) fail(code)\n const wantedDependencies = facts.sourceChainId === SOLANA_CHAIN_ID\n ? [...DEPENDENCIES, 'jupiter-v6-source-swap']\n : [...DEPENDENCIES]\n if (stableJson(value.dependencies) !== stableJson(wantedDependencies)) fail(code)\n const rawSignedQuoteJson = requireString(value.rawSignedQuoteJson, code)\n if (byteLength(rawSignedQuoteJson) > MAX_RAW_QUOTE_BYTES) fail(code)\n return {\n quoteKind: 'mayan-swift-v2',\n providerId: 'mayan-swift-v2',\n sourceChainId,\n destinationChainId,\n sourceTokenDeploymentId: facts.sourceTokenDeploymentId,\n destinationTokenDeploymentId: facts.destinationTokenDeploymentId,\n amountIn: amountIn.source,\n expectedAmountOut: expectedAmountOut.source,\n minimumAmountOut: minimumAmountOut.source,\n minimumReceived: minimumReceived.source,\n deadline: deadline.source,\n slippageBps,\n quoteId: quoteId.toLowerCase(),\n providerSignature: signature.toLowerCase(),\n sourceSwap: {\n required: true,\n inputTokenDeploymentId: facts.sourceTokenDeploymentId,\n intermediateTokenDeploymentId: facts.sourceUsdcDeploymentId,\n intermediateTokenAddress: facts.sourceUsdcAddress,\n intermediateTokenStandard: providerStandard,\n intermediateTokenDecimals: 6,\n providerMinimumAmount: providerMinimumAmount as string,\n routerKind: normalizedRouterKind,\n routerAddress: normalizedRouterAddress,\n },\n dependencies: wantedDependencies,\n quoteVerification: 'provider-signed-not-locally-verified',\n rawSignedQuoteJson,\n }\n}\n\nconst quoteRequestBody = (route: ReturnType<typeof validateBridgeRoute>): string =>\n JSON.stringify({\n fromToken: route.facts.sourceTokenAddress,\n fromChain: route.facts.sourceName,\n toToken: route.facts.destinationTokenAddress,\n toChain: route.facts.destinationName,\n amountIn64: route.request.amountIn,\n slippageBps: route.request.slippageBps,\n swift: true,\n mctp: false,\n fastMctp: false,\n wormhole: false,\n monoChain: false,\n gasless: false,\n fullList: true,\n guaranteedOutput: true,\n gasDrop: 0,\n })\n\nconst quoteFromResponse = (\n response: ProviderResponse,\n request: MayanSwiftV2QuoteRequest,\n facts: DirectionFacts,\n config: NormalizedBridgeConfig,\n): readonly MayanSwiftV2Quote[] => {\n if (!isRecord(response.root.value) || response.root.objectEntries === undefined) {\n providerInvalid()\n }\n if (objectValue(response.root, 'success') !== true) providerInvalid()\n const quotesNode = requiredNode(response.root, 'quotes')\n const quoteNodes = quotesNode.arrayItems\n if (!quoteNodes || quoteNodes.length > MAX_QUOTES) return providerInvalid()\n const selected: MayanSwiftV2Quote[] = []\n for (const quoteNode of quoteNodes) {\n if (!isRecord(quoteNode.value)) continue\n if (\n quoteNode.value.type !== 'SWIFT' ||\n quoteNode.value.swiftVersion !== 'V2' ||\n quoteNode.value.gasless !== false\n ) continue\n const validated = validateProviderQuote(\n quoteNode,\n response.text,\n request,\n facts,\n config,\n )\n selected.push(validated.quote)\n }\n if (selected.length === 0) fail('BRIDGE_QUOTE_UNAVAILABLE')\n for (const quote of selected) {\n ensureQuoteDeadline(\n normalizePositiveUint64(quote.deadline, 'BRIDGE_PROVIDER_INVALID_RESPONSE').value,\n config.minimumQuoteValiditySeconds,\n )\n }\n return deepFreeze(selected)\n}\n\nconst buildRequestSnapshot = (\n value: unknown,\n): { readonly quote: MayanSwiftV2Quote; readonly swapperAddress: unknown; readonly destinationAddress: unknown; readonly refundAddress: unknown } => {\n const request = requireRecord(value, 'BRIDGE_INVALID_ARGUMENT')\n const allowed = new Set(['quote', 'swapperAddress', 'destinationAddress', 'refundAddress'])\n if (Object.keys(request).some((key) => !allowed.has(key))) fail('BRIDGE_INVALID_ARGUMENT')\n if (!Object.hasOwn(request, 'quote') || !Object.hasOwn(request, 'swapperAddress') || !Object.hasOwn(request, 'destinationAddress')) {\n fail('BRIDGE_INVALID_ARGUMENT')\n }\n const rawQuote = request.quote\n if (!isRecord(rawQuote)) fail('BRIDGE_INVALID_ARGUMENT')\n let quote: MayanSwiftV2Quote\n try {\n quote = cloneQuote(rawQuote as MayanSwiftV2Quote)\n } catch {\n return fail('BRIDGE_INVALID_ARGUMENT')\n }\n return {\n quote,\n swapperAddress: request.swapperAddress,\n destinationAddress: request.destinationAddress,\n refundAddress: request.refundAddress,\n }\n}\n\nconst normalizeChainAddress = (\n value: unknown,\n chainId: string,\n code: BridgeErrorCode,\n): string => {\n if (chainId === ETHEREUM_CHAIN_ID) return normalizeEvmAddress(value, code)\n const address = requireString(value, code)\n decodeBase58(address, 32, code)\n return address\n}\n\nconst isCanonicalSolanaAddress = (value: unknown): boolean => {\n if (typeof value !== 'string') return false\n try {\n decodeBase58(value, 32, 'BRIDGE_INVALID_ARGUMENT')\n return true\n } catch {\n return false\n }\n}\n\nconst rejectAddressFromOtherChain = (\n value: unknown,\n expectedChainId: string,\n): void => {\n const isEvm =\n typeof value === 'string' &&\n EVM_ADDRESS.test(value) &&\n !/^0x0{40}$/iu.test(value)\n const isSolana = isCanonicalSolanaAddress(value)\n if (\n (expectedChainId === ETHEREUM_CHAIN_ID && isSolana) ||\n (expectedChainId === SOLANA_CHAIN_ID && isEvm)\n ) {\n fail('BRIDGE_QUOTE_MISMATCH')\n }\n}\n\nconst normalizeDestinationAddress = (\n value: unknown,\n destinationChainId: string,\n): string => {\n return normalizeChainAddress(value, destinationChainId, 'BRIDGE_INVALID_ARGUMENT')\n}\n\nconst buildRouteFromQuote = (\n quote: MayanSwiftV2Quote,\n): { readonly route: ReturnType<typeof validateBridgeRoute>; readonly normalizedQuote: MayanSwiftV2Quote } => {\n let normalizedQuote: MayanSwiftV2Quote\n try {\n normalizedQuote = validateNormalizedQuoteShape(quote, 'BRIDGE_QUOTE_MISMATCH')\n } catch (error) {\n if (error instanceof BridgeError) throw error\n return fail('BRIDGE_QUOTE_MISMATCH')\n }\n if (stableJson(quote) !== stableJson(normalizedQuote)) fail('BRIDGE_QUOTE_MISMATCH')\n const route = validateBridgeRoute({\n sourceChainId: normalizedQuote.sourceChainId,\n destinationChainId: normalizedQuote.destinationChainId,\n sourceTokenDeploymentId: normalizedQuote.sourceTokenDeploymentId,\n destinationTokenDeploymentId: normalizedQuote.destinationTokenDeploymentId,\n amountIn: normalizedQuote.amountIn,\n slippageBps: normalizedQuote.slippageBps,\n })\n return { route, normalizedQuote }\n}\n\nconst validateRawQuoteForBuild = (\n quote: MayanSwiftV2Quote,\n route: ReturnType<typeof validateBridgeRoute>,\n config: NormalizedBridgeConfig,\n): MayanSwiftV2Quote => {\n let response: ProviderResponse\n try {\n response = parseProviderResponse(quote.rawSignedQuoteJson)\n } catch (error) {\n if (error instanceof BridgeError && error.code === 'BRIDGE_QUOTE_EXPIRED') throw error\n return fail('BRIDGE_QUOTE_MISMATCH')\n }\n if (\n !isRecord(response.root.value) ||\n response.root.start !== 0 ||\n response.root.end !== response.text.length\n ) {\n fail('BRIDGE_QUOTE_MISMATCH')\n }\n let rebuilt: ValidatedProviderQuote\n try {\n rebuilt = validateProviderQuote(\n response.root,\n response.text,\n route.request,\n route.facts,\n config,\n )\n } catch (error) {\n if (error instanceof BridgeError && error.code === 'BRIDGE_QUOTE_EXPIRED') throw error\n return fail('BRIDGE_QUOTE_MISMATCH')\n }\n if (stableJson(rebuilt.quote) !== stableJson(quote)) fail('BRIDGE_QUOTE_MISMATCH')\n return deepFreeze(quote)\n}\n\nconst numericZero = (value: unknown): boolean => {\n if (typeof value === 'number') return Number.isFinite(value) && value === 0\n if (typeof value !== 'string') return false\n if (value === '0') return true\n return /^0x0+$/iu.test(value)\n}\n\nconst validateEvmBuildResult = (\n wrapper: JsonNode,\n swapperAddress: string,\n): MayanEvmUnsignedTransaction => {\n if (providerString(wrapper, 'chainCategory') !== 'evm') providerInvalid()\n if (providerString(wrapper, 'quoteType') !== 'SWIFT') providerInvalid()\n if (providerBoolean(wrapper, 'gasless')) providerInvalid()\n const transaction = requiredNode(wrapper, 'transaction')\n if (!isRecord(transaction.value)) providerInvalid()\n const to = providerString(transaction, 'to')\n if (!providerAddressEquals(to, ETHEREUM_FORWARDER)) providerInvalid()\n const chainId = providerInteger(transaction, 'chainId')\n if (chainId !== ETHEREUM_PROVIDER_CHAIN_ID) providerInvalid()\n if (!numericZero(objectValue(transaction, 'value'))) providerInvalid()\n const data = providerString(transaction, 'data').toLowerCase()\n if (\n !HEX_BYTES.test(data) ||\n data.length % 2 !== 0 ||\n !data.startsWith(ETHEREUM_FORWARDER_SELECTOR) ||\n data.length < 2 + 8 + 13 * 64\n ) {\n providerInvalid()\n }\n return {\n kind: 'evm-unsigned-transaction',\n chainId: 'eip155:1',\n from: swapperAddress,\n to: ETHEREUM_FORWARDER,\n data,\n value: '0',\n }\n}\n\nconst validateSolanaBuildResult = (\n wrapper: JsonNode,\n swapperAddress: string,\n): MayanSolanaUnsignedTransaction => {\n if (providerString(wrapper, 'chainCategory') !== 'svm') providerInvalid()\n if (providerString(wrapper, 'quoteType') !== 'SWIFT') providerInvalid()\n const gaslessNode = objectEntry(wrapper, 'gasless')\n if (gaslessNode !== undefined && gaslessNode.value !== false) providerInvalid()\n const transaction = requiredNode(wrapper, 'transaction')\n const encoded = validateSolanaTransaction(transaction.value, swapperAddress)\n return {\n kind: 'solana-v0-unsigned-transaction',\n chainId: SOLANA_CHAIN_ID,\n feePayer: swapperAddress,\n transactionBase64: encoded,\n }\n}\n\nconst validateBuildResponse = (\n response: ProviderResponse,\n quote: MayanSwiftV2Quote,\n facts: DirectionFacts,\n swapperAddress: string,\n): MayanSwiftV2Build => {\n if (!isRecord(response.root.value) || objectValue(response.root, 'success') !== true) {\n fail('BRIDGE_BUILD_INVALID')\n }\n const wrapper = requiredNode(response.root, 'transaction')\n if (!isRecord(wrapper.value)) fail('BRIDGE_BUILD_INVALID')\n const signers = objectValue(wrapper, 'signers')\n if (signers !== undefined && signers !== null && (!Array.isArray(signers) || signers.length !== 0)) {\n fail('BRIDGE_BUILD_INVALID')\n }\n const swapMessageV0Params = objectValue(wrapper, 'swapMessageV0Params')\n if (swapMessageV0Params !== undefined && swapMessageV0Params !== null) {\n fail('BRIDGE_BUILD_INVALID')\n }\n\n let transaction: MayanSwiftV2UnsignedTransaction\n try {\n transaction = facts.sourceChainId === ETHEREUM_CHAIN_ID\n ? validateEvmBuildResult(wrapper, swapperAddress)\n : validateSolanaBuildResult(wrapper, swapperAddress)\n } catch (error) {\n if (error instanceof BridgeError) {\n if (error.code === 'BRIDGE_BUILD_INVALID') throw error\n return fail('BRIDGE_BUILD_INVALID')\n }\n return fail('BRIDGE_BUILD_INVALID')\n }\n return deepFreeze({\n buildKind: 'mayan-swift-v2-unsigned' as const,\n providerId: 'mayan-swift-v2' as const,\n quote,\n sourceChainId: quote.sourceChainId,\n destinationChainId: quote.destinationChainId,\n transaction,\n allowance: facts.sourceChainId === ETHEREUM_CHAIN_ID\n ? {\n tokenDeploymentId: 'deployment-0011' as const,\n tokenAddress: ETHEREUM_EURC_ADDRESS,\n owner: swapperAddress,\n spender: ETHEREUM_FORWARDER,\n requiredAmount: quote.amountIn,\n }\n : null,\n validation: {\n level: 'structural' as const,\n quoteSignatureLocallyVerified: false as const,\n transactionSemanticsLocallyVerified: false as const,\n settlementLocallyVerified: false as const,\n },\n rawProviderBuildJson: response.text,\n })\n}\n\nconst boundedProviderString = (\n value: unknown,\n code: BridgeErrorCode,\n maximum = 1024,\n): string => {\n if (typeof value !== 'string' || value.length === 0 || value.length > maximum) fail(code)\n return value as string\n}\n\nconst statusRequestSnapshot = (\n value: unknown,\n): { readonly sourceChainId: string; readonly sourceTransactionHash: string } => {\n const request = requireRecord(value, 'BRIDGE_INVALID_ARGUMENT')\n exactObjectKeys(request, ['sourceChainId', 'sourceTransactionHash'], 'BRIDGE_INVALID_ARGUMENT')\n return {\n sourceChainId: requireString(request.sourceChainId, 'BRIDGE_INVALID_ARGUMENT'),\n sourceTransactionHash: requireString(request.sourceTransactionHash, 'BRIDGE_INVALID_ARGUMENT'),\n }\n}\n\nconst normalizeStatusRequest = (\n value: unknown,\n): { readonly sourceChainId: string; readonly sourceTransactionHash: string } => {\n const request = statusRequestSnapshot(value)\n if (request.sourceChainId === ETHEREUM_CHAIN_ID) {\n if (!EVM_HASH.test(request.sourceTransactionHash)) fail('BRIDGE_INVALID_ARGUMENT')\n return {\n sourceChainId: request.sourceChainId,\n sourceTransactionHash: request.sourceTransactionHash.toLowerCase(),\n }\n }\n if (request.sourceChainId === SOLANA_CHAIN_ID) {\n decodeBase58(request.sourceTransactionHash, 64, 'BRIDGE_INVALID_ARGUMENT')\n return request\n }\n return fail('BRIDGE_UNSUPPORTED_ROUTE')\n}\n\nconst statusFromResponse = (\n response: ProviderResponse,\n request: { readonly sourceChainId: string; readonly sourceTransactionHash: string },\n): MayanSwiftV2Status => {\n if (!isRecord(response.root.value)) fail('BRIDGE_PROVIDER_INVALID_RESPONSE')\n const providerClientStatus = boundedProviderString(\n objectValue(response.root, 'clientStatus'),\n 'BRIDGE_PROVIDER_INVALID_RESPONSE',\n 128,\n )\n const providerStatusValue = objectValue(response.root, 'status')\n if (\n providerStatusValue !== null &&\n providerStatusValue !== undefined &&\n (typeof providerStatusValue !== 'string' || providerStatusValue.length > 1024)\n ) {\n fail('BRIDGE_PROVIDER_INVALID_RESPONSE')\n }\n const providerStatus =\n providerStatusValue === undefined ? null : providerStatusValue as string | null\n const state = providerClientStatus === 'INPROGRESS'\n ? 'in-progress'\n : providerClientStatus === 'COMPLETED'\n ? 'completed'\n : providerClientStatus === 'REFUNDED'\n ? 'refunded'\n : 'unknown'\n return deepFreeze({\n statusKind: 'mayan-explorer-index' as const,\n providerId: 'mayan-swift-v2' as const,\n sourceChainId: request.sourceChainId,\n sourceTransactionHash: request.sourceTransactionHash,\n state: state as 'in-progress' | 'completed' | 'refunded' | 'unknown',\n providerClientStatus,\n providerStatus,\n statusVerification: 'provider-indexed-not-locally-verified' as const,\n rawProviderStatusJson: response.text,\n })\n}\n\nconst buildBody = (\n quote: MayanSwiftV2Quote,\n sourceChainId: string,\n swapperAddress: string,\n destinationAddress: string,\n refundAddress: string | undefined,\n): string => {\n const params: JsonRecord = {\n swapperAddress,\n destinationAddress,\n }\n if (sourceChainId === ETHEREUM_CHAIN_ID) params.signerChainId = 1\n if (refundAddress !== undefined) params.swiftRefundAddress = refundAddress\n return `{\"quote\":${quote.rawSignedQuoteJson},\"params\":${JSON.stringify(params)}}`\n}\n\nconst quoteRequestBodyForRoute = (\n route: ReturnType<typeof validateBridgeRoute>,\n): string => quoteRequestBody(route)\n\nexport class MayanSwiftV2BridgeClient implements MayanSwiftV2BridgeClient {\n readonly #config: NormalizedBridgeConfig\n\n constructor(config?: MayanSwiftV2BridgeConfig) {\n this.#config = normalizeBridgeConfig(config)\n }\n\n async quoteExactInput(\n request: MayanSwiftV2QuoteRequest,\n options?: BridgeRequestOptions,\n ): Promise<readonly MayanSwiftV2Quote[]> {\n const route = validateBridgeRoute(request)\n const response = await providerRequest(\n this.#config,\n endpointWithPath(this.#config.builderEndpoint, '/quote'),\n 'POST',\n quoteRequestBodyForRoute(route),\n false,\n options,\n )\n const parsed = await providerJson(response, 'quote')\n const quotes = quoteFromResponse(parsed, route.request, route.facts, this.#config)\n return deepFreeze([...quotes])\n }\n\n async buildUnsigned(\n request: MayanSwiftV2BuildRequest,\n options?: BridgeRequestOptions,\n ): Promise<MayanSwiftV2Build> {\n const snapshot = buildRequestSnapshot(request)\n const { route, normalizedQuote } = buildRouteFromQuote(snapshot.quote)\n rejectAddressFromOtherChain(snapshot.swapperAddress, route.facts.sourceChainId)\n const sourceAddress = normalizeChainAddress(\n snapshot.swapperAddress,\n route.facts.sourceChainId,\n 'BRIDGE_INVALID_ARGUMENT',\n )\n const destinationAddress = normalizeDestinationAddress(\n snapshot.destinationAddress,\n route.facts.destinationChainId,\n )\n let refundAddress: string | undefined\n if (snapshot.refundAddress !== undefined) {\n refundAddress = normalizeChainAddress(\n snapshot.refundAddress,\n route.facts.sourceChainId,\n 'BRIDGE_INVALID_ARGUMENT',\n )\n }\n if (\n this.#config.builderApiKey === undefined &&\n !this.#config.allowUnauthenticatedBuild\n ) {\n fail('BRIDGE_PROVIDER_AUTH_REQUIRED')\n }\n const quote = validateRawQuoteForBuild(normalizedQuote, route, this.#config)\n const response = await providerRequest(\n this.#config,\n endpointWithPath(this.#config.builderEndpoint, '/build'),\n 'POST',\n buildBody(quote, route.facts.sourceChainId, sourceAddress, destinationAddress, refundAddress),\n true,\n options,\n )\n const parsed = await providerJson(response, 'build')\n ensureQuoteDeadline(\n normalizePositiveUint64(quote.deadline, 'BRIDGE_QUOTE_EXPIRED').value,\n this.#config.minimumQuoteValiditySeconds,\n )\n return validateBuildResponse(parsed, quote, route.facts, sourceAddress)\n }\n\n async getStatus(\n request: MayanSwiftV2StatusRequest,\n options?: BridgeRequestOptions,\n ): Promise<MayanSwiftV2Status> {\n const normalized = normalizeStatusRequest(request)\n const response = await providerRequest(\n this.#config,\n endpointWithPath(\n this.#config.explorerEndpoint,\n `/swap/trx/${encodeURIComponent(normalized.sourceTransactionHash)}`,\n ),\n 'GET',\n undefined,\n false,\n options,\n )\n const parsed = await providerJson(response, 'status')\n return statusFromResponse(parsed, normalized)\n }\n\n close(): void {\n // This client owns no external sockets or HTTP agent; close is intentionally\n // idempotent and leaves an injected fetch implementation untouched.\n }\n}\n\nexport const createMayanSwiftV2BridgeClient = (\n config?: MayanSwiftV2BridgeConfig,\n): MayanSwiftV2BridgeClient => new MayanSwiftV2BridgeClient(config)\n\nexport {\n BRIDGE_CAPABILITIES_AS_OF_DATE,\n BRIDGE_CAPABILITIES_CONTENT_DIGEST,\n}\n"]}