{"version":3,"sources":["../../src/defaultAssets.ts"],"sourcesContent":["import type {\n  DefaultAsset,\n  DefaultAssetTable,\n  FindDefaultAsset,\n  GetDefaultAsset,\n  Network,\n} from \"@bankofai/x402-core/types\";\nimport { EVM_NETWORK_CHAIN_ID_MAP } from \"./constants\";\n\n/**\n * Base stablecoin asset configuration shared across all EVM payment schemes.\n * Contains the core fields needed to identify and convert tokens.\n */\nexport type DefaultAssetInfo = DefaultAsset & {\n  /** EIP-712 domain name (must match the token's domain separator) */\n  name: string;\n  /** EIP-712 domain version (must match the token's domain separator) */\n  version: string;\n};\n\n/**\n * Extended asset configuration for the exact scheme.\n * Includes transfer method hints that control client-side behaviour.\n */\nexport type ExactDefaultAssetInfo = DefaultAssetInfo & {\n  /**\n   * Transfer method override: `\"permit2\"` for tokens that don't support EIP-3009.\n   * Omit for EIP-3009 tokens (default behaviour).\n   */\n  assetTransferMethod?: string;\n  /**\n   * Set to `true` for permit2 tokens that implement EIP-2612 `permit()`.\n   * Controls whether name/version are included in `extra` so the client can\n   * sign a gasless EIP-2612 permit for Permit2 approval.\n   */\n  supportsEip2612?: boolean;\n};\n\n/** Default USD-pegged assets by CAIP-2 network; index 0 is the `\"$0.10\"` default. */\nexport const DEFAULT_ASSETS: DefaultAssetTable<ExactDefaultAssetInfo> = {\n  \"eip155:8453\": [\n    {\n      asset: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n      name: \"USD Coin\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC\",\n    },\n  ], // Base mainnet USDC\n  \"eip155:84532\": [\n    {\n      asset: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n      name: \"USDC\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC\",\n    },\n  ], // Base Sepolia USDC\n  \"eip155:97\": [\n    {\n      asset: \"0x64544969ed7EBf5f083679233325356EbE738930\",\n      name: \"USD Coin\",\n      version: \"1\",\n      decimals: 18,\n      symbol: \"USDC\",\n      assetTransferMethod: \"permit2\",\n    },\n  ], // BSC testnet USDC (plain BEP-20, no EIP-3009)\n  \"eip155:56\": [\n    {\n      asset: \"0x55d398326f99059fF775485246999027B3197955\",\n      name: \"Tether USD\",\n      version: \"1\",\n      decimals: 18,\n      symbol: \"USDT\",\n      assetTransferMethod: \"permit2\",\n    },\n  ], // BSC mainnet USDT (plain BEP-20, no EIP-3009)\n  \"eip155:4326\": [\n    {\n      asset: \"0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7\",\n      name: \"MegaUSD\",\n      version: \"1\",\n      decimals: 18,\n      symbol: \"MegaUSD\",\n      assetTransferMethod: \"permit2\",\n      supportsEip2612: true,\n    },\n  ], // MegaETH mainnet MegaUSD (no EIP-3009, supports EIP-2612)\n  \"eip155:143\": [\n    {\n      asset: \"0x754704Bc059F8C67012fEd69BC8A327a5aafb603\",\n      name: \"USDC\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC\",\n    },\n  ], // Monad mainnet USDC\n  \"eip155:988\": [\n    {\n      asset: \"0x779Ded0c9e1022225f8E0630b35a9b54bE713736\",\n      name: \"USDT0\",\n      version: \"1\",\n      decimals: 6,\n      symbol: \"USDT0\",\n    },\n  ], // Stable mainnet USDT0\n  \"eip155:2201\": [\n    {\n      asset: \"0x78Cf24370174180738C5B8E352B6D14c83a6c9A9\",\n      name: \"USDT0\",\n      version: \"1\",\n      decimals: 6,\n      symbol: \"USDT0\",\n    },\n  ], // Stable testnet USDT0\n  \"eip155:137\": [\n    {\n      asset: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n      name: \"USD Coin\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC\",\n    },\n  ], // Polygon mainnet USDC\n  \"eip155:42161\": [\n    {\n      asset: \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n      name: \"USD Coin\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC\",\n    },\n  ], // Arbitrum One USDC\n  \"eip155:421614\": [\n    {\n      asset: \"0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d\",\n      name: \"USD Coin\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC\",\n    },\n  ], // Arbitrum Sepolia USDC\n  \"eip155:31612\": [\n    {\n      asset: \"0xdD468A1DDc392dcdbEf6db6e34E89AA338F9F186\",\n      name: \"Mezo USD\",\n      version: \"1\",\n      decimals: 18,\n      symbol: \"mUSD\",\n      assetTransferMethod: \"permit2\",\n      supportsEip2612: true,\n    },\n  ], // Mezo mainnet mUSD (no EIP-3009, supports EIP-2612)\n  \"eip155:31611\": [\n    {\n      asset: \"0x118917a40FAF1CD7a13dB0Ef56C86De7973Ac503\",\n      name: \"Mezo USD\",\n      version: \"1\",\n      decimals: 18,\n      symbol: \"mUSD\",\n      assetTransferMethod: \"permit2\",\n      supportsEip2612: true,\n    },\n  ], // Mezo Testnet mUSD (no EIP-3009, supports EIP-2612)\n  \"eip155:723487\": [\n    {\n      asset: \"0x33ad9e4BD16B69B5BFdED37D8B5D9fF9aba014Fb\",\n      name: \"Stable Coin\",\n      version: \"1\",\n      decimals: 6,\n      symbol: \"SBC\",\n      assetTransferMethod: \"permit2\",\n      supportsEip2612: true,\n    },\n  ], // Radius Network SBC (no EIP-3009, supports EIP-2612)\n  \"eip155:72344\": [\n    {\n      asset: \"0x33ad9e4BD16B69B5BFdED37D8B5D9fF9aba014Fb\",\n      name: \"Stable Coin\",\n      version: \"1\",\n      decimals: 6,\n      symbol: \"SBC\",\n      assetTransferMethod: \"permit2\",\n      supportsEip2612: true,\n    },\n  ], // Radius Testnet SBC (no EIP-3009, supports EIP-2612)\n  \"eip155:36900\": [\n    {\n      asset: \"0x9cb8142aEBBcdc60AF7c97Af897A67A8f3CA71C2\",\n      name: \"USDC.e\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC.e\",\n    },\n  ], // ADI Chain USDC.e (EIP-3009 supported)\n  \"eip155:190415\": [\n    {\n      asset: \"0x401eCb1D350407f13ba348573E5630B83638E30D\",\n      name: \"Bridged USDC\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC.e\",\n    },\n  ], // HPP mainnet USDC.e\n  \"eip155:181228\": [\n    {\n      asset: \"0x401eCb1D350407f13ba348573E5630B83638E30D\",\n      name: \"Bridged USDC\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC.e\",\n    },\n  ], // HPP Sepolia USDC.e\n  \"eip155:50\": [\n    {\n      asset: \"0xfA2958CB79b0491CC627c1557F441eF849Ca8eb1\",\n      name: \"USDC\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC\",\n    },\n  ], // XDC Network mainnet USDC (Bridged USDC Standard, EIP-3009 supported)\n  \"eip155:51\": [\n    {\n      asset: \"0xb5AB69F7bBada22B28e79C8FFAECe55eF1c771D4\",\n      name: \"USDC\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC\",\n    },\n  ], // XDC Apothem testnet USDC (Bridged USDC Standard, EIP-3009 supported)\n  \"eip155:38833\": [\n    {\n      asset: \"0xA5b8BF902b2844dA17d4506cc827F7F1681735E7\",\n      name: \"USDC\",\n      version: \"1\",\n      decimals: 6,\n      symbol: \"USDC\",\n      assetTransferMethod: \"permit2\",\n    },\n  ], // Igra mainnet USDC (no EIP-3009, no EIP-2612)\n  \"eip155:14\": [\n    {\n      asset: \"0xe7cd86e13AC4309349F30B3435a9d337750fC82D\",\n      name: \"USD\\u20AE0\",\n      version: \"1\",\n      decimals: 6,\n      symbol: \"USDT0\",\n    },\n  ], // Flare mainnet USD₮0 (EIP-3009 supported)\n  \"eip155:42220\": [\n    {\n      asset: \"0xcebA9300f2b948710d2653dD7B07f33A8B32118C\",\n      name: \"USDC\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC\",\n    },\n  ], // Celo mainnet USDC (EIP-3009 supported)\n  \"eip155:11142220\": [\n    {\n      asset: \"0x01C5C0122039549AD1493B8220cABEdD739BC44E\",\n      name: \"USDC\",\n      version: \"2\",\n      decimals: 6,\n      symbol: \"USDC\",\n    },\n  ], // Celo Sepolia testnet USDC (EIP-3009 supported)\n};\n\n/**\n * Map CAIP-2 or v1 legacy name to a {@link DEFAULT_ASSETS} key.\n *\n * @param network - CAIP-2 or legacy EVM network id\n * @returns Normalized CAIP-2 network key\n */\nfunction resolveNetworkKey(network: Network): string {\n  if (network in DEFAULT_ASSETS) {\n    return network;\n  }\n  const chainId = EVM_NETWORK_CHAIN_ID_MAP[network as keyof typeof EVM_NETWORK_CHAIN_ID_MAP];\n  if (chainId !== undefined) {\n    return `eip155:${chainId}`;\n  }\n  return network;\n}\n\n/**\n * Look up a default asset by network and optional ticker.\n *\n * @param network - CAIP-2 or v1 network\n * @param symbol - Ticker; omit for the network default\n * @returns Matching entry\n * @throws If network or ticker is unknown\n */\nexport const getDefaultAsset: GetDefaultAsset<ExactDefaultAssetInfo> = (network, symbol?) => {\n  const key = resolveNetworkKey(network);\n  const assets = DEFAULT_ASSETS[key];\n  if (!assets || assets.length === 0) {\n    throw new Error(`No default asset configured for network ${network}`);\n  }\n  if (!symbol) {\n    return assets[0];\n  }\n  const normalized = symbol.toUpperCase();\n  const match = assets.find(entry => entry.symbol.toUpperCase() === normalized);\n  if (!match) {\n    throw new Error(`No ${symbol} default asset configured for network ${network}`);\n  }\n  return match;\n};\n\n/**\n * Reverse lookup by asset id (case-insensitive) and network.\n *\n * @param asset - Asset address from payment requirements\n * @param network - CAIP-2 or v1 network\n * @returns Matching entry, or undefined\n */\nexport const findDefaultAsset: FindDefaultAsset<ExactDefaultAssetInfo> = (asset, network) => {\n  const key = resolveNetworkKey(network);\n  const assets = DEFAULT_ASSETS[key];\n  if (!assets) {\n    return undefined;\n  }\n  const normalized = asset.toLowerCase();\n  return assets.find(entry => entry.asset.toLowerCase() === normalized);\n};\n"],"mappings":"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","names":[]}