{"version":3,"sources":["../../src/constants.ts","../../src/utils.ts","../../src/contractUtils.ts"],"sourcesContent":["// EIP-3009 TransferWithAuthorization types for EIP-712 signing\nexport const authorizationTypes = {\n  TransferWithAuthorization: [\n    { name: \"from\", type: \"address\" },\n    { name: \"to\", type: \"address\" },\n    { name: \"value\", type: \"uint256\" },\n    { name: \"validAfter\", type: \"uint256\" },\n    { name: \"validBefore\", type: \"uint256\" },\n    { name: \"nonce\", type: \"bytes32\" },\n  ],\n} as const;\nexport const aeonAuthorizationTypes = {\n  tokenTransferWithAuthorization: [\n    { name: \"token\", type: \"address\" },\n    { name: \"from\", type: \"address\" },\n    { name: \"to\", type: \"address\" },\n    { name: \"value\", type: \"uint256\" },\n    { name: \"validAfter\", type: \"uint256\" },\n    { name: \"validBefore\", type: \"uint256\" },\n    { name: \"nonce\", type: \"bytes32\" },\n    { name: \"needApprove\", type: \"bool\" },\n  ],\n};\n\n\nexport const ERC20_ABI = [\n  {\n    type: \"function\",\n    name: \"approve\",\n    inputs: [\n      { name: \"spender\", type: \"address\" },\n      { name: \"amount\", type: \"uint256\" },\n    ],\n    outputs: [{ name: \"success\", type: \"bool\" }],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"allowance\",\n    inputs: [\n      { name: \"owner\", type: \"address\" },\n      { name: \"spender\", type: \"address\" },\n    ],\n    outputs: [{ name: \"remaining\", type: \"uint256\" }],\n    stateMutability: \"view\",\n  },\n] as const;\n\nexport const aeonAuthorizationPrimaryType = \"tokenTransferWithAuthorization\";\n\n\nexport const eip3009ABI = [\n  {\n    inputs: [\n      { name: \"from\", type: \"address\" },\n      { name: \"to\", type: \"address\" },\n      { name: \"value\", type: \"uint256\" },\n      { name: \"validAfter\", type: \"uint256\" },\n      { name: \"validBefore\", type: \"uint256\" },\n      { name: \"nonce\", type: \"bytes32\" },\n      { name: \"v\", type: \"uint8\" },\n      { name: \"r\", type: \"bytes32\" },\n      { name: \"s\", type: \"bytes32\" },\n    ],\n    name: \"transferWithAuthorization\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      { name: \"from\", type: \"address\" },\n      { name: \"to\", type: \"address\" },\n      { name: \"value\", type: \"uint256\" },\n      { name: \"validAfter\", type: \"uint256\" },\n      { name: \"validBefore\", type: \"uint256\" },\n      { name: \"nonce\", type: \"bytes32\" },\n      { name: \"signature\", type: \"bytes\" },\n    ],\n    name: \"transferWithAuthorization\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [{ name: \"account\", type: \"address\" }],\n    name: \"balanceOf\",\n    outputs: [{ name: \"\", type: \"uint256\" }],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"version\",\n    outputs: [{ name: \"\", type: \"string\" }],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n] as const;\n","import {Hex, toHex} from \"viem\";\nimport { Network } from \"@aeon-ai-pay/core/types\";\n\n/**\n * Extract chain ID from network string (e.g., \"base-sepolia\" -> 84532)\n * Used by v1 implementations\n *\n * @param network - The network identifier\n * @returns The numeric chain ID\n */\nexport function getEvmChainId(network: Network): number {\n  const raw = String(network);\n\n  // 1) CAIP-2 (V2 style): \"eip155:<chainId>\"\n  // Also tolerate any \"<namespace>:<number>\" format here.\n  if (raw.includes(\":\")) {\n    const parts = raw.split(\":\");\n    if (parts.length === 2) {\n      const n = Number(parts[1]);\n      if (Number.isFinite(n) && n > 0) return n;\n    }\n  }\n\n  // 2) V1 style (requested): \"<chainId>\"\n  if (/^\\d+$/.test(raw)) {\n    const n = parseInt(raw, 10);\n    if (Number.isFinite(n) && n > 0) return n;\n  }\n\n  const networkMap: Record<string, number> = {\n    base: 8453,\n    xLayer: 196,\n    bsc: 56,\n    kite: 2366,\n    bscTest: 97,\n    \"base-sepolia\": 84532,\n    ethereum: 1,\n    sepolia: 11155111,\n    polygon: 137,\n    \"polygon-amoy\": 80002,\n  };\n  return networkMap[raw] || 1;\n}\n\n// /**\n//  * Create a random 32-byte nonce for authorization\n//  *\n//  * @returns A hex-encoded 32-byte nonce\n//  */\n// export function createNonce(): `0x${string}` {\n//   // Use dynamic import to avoid require() in ESM context\n//   const cryptoObj =\n//     typeof globalThis.crypto !== \"undefined\"\n//       ? globalThis.crypto\n//       : (globalThis as { crypto?: Crypto }).crypto;\n//\n//   if (!cryptoObj) {\n//     throw new Error(\"Crypto API not available\");\n//   }\n//\n//   return toHex(cryptoObj.getRandomValues(new Uint8Array(32)));\n// }\n\n\n/**\n * Create a random 32-byte nonce for authorization\n *\n * @returns A hex-encoded 32-byte nonce\n */\nexport function createNonce(): `0x${string}` {\n  try {\n    const NONCE_BYTES = 32;\n    const randomBytes = crypto.getRandomValues(new Uint8Array(NONCE_BYTES));\n    // Use browser-compatible approach to convert Uint8Array to hex string\n    let hexString = '';\n    for (let i = 0; i < randomBytes.length; i++) {\n      const hex = randomBytes[i].toString(16).padStart(2, '0');\n      hexString += hex;\n    }\n    console.log(\"[DEBUG] Generated nonce using browser-compatible approach\");\n    return `0x${hexString}` as Hex;\n  } catch (error) {\n    throw new Error(\n        `Failed to generate nonce: ${\n            error instanceof Error ? error.message : String(error)\n        }`\n    );\n  }\n}\n","import { createPublicClient, Hex, http, PublicClient } from \"viem\";\nimport { base, bsc, xLayer } from \"viem/chains\";\nimport { ClientEvmSigner, FacilitatorEvmSigner } from \"./signer\";\n\n/**\n * Minimal shape required to probe contract support via `readContract`.\n * Compatible with viem `PublicClient`, `WalletClient.extend(publicActions)`, etc.\n */\nexport type ReadContractClient = {\n  readContract(args: {\n    address: `0x${string}`;\n    abi: readonly unknown[];\n    functionName: string;\n    args?: readonly unknown[];\n  }): Promise<unknown>;\n};\n\n// TransferWithAuthorization function ABI for verification (ERC-3009)\nconst TRANSFER_WITH_AUTHORIZATION_ABI = [\n  {\n    name: \"transferWithAuthorization\",\n    type: \"function\",\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"value\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"validAfter\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"validBefore\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"nonce\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"bytes\",\n        name: \"signature\",\n        type: \"bytes\",\n      },\n    ],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n] as const;\n\n/**\n * 检查代币合约是否支持TransferWithAuthorization函数\n * 使用readContract方法来检测函数是否存在（ERC-3009）\n * @param client - viem客户端实例\n * @param tokenAddress - 代币合约地址\n * @returns Promise<boolean> - 如果合约支持该函数返回true，否则返回false\n */\nasync function hasTransferWithAuthorization(\n  client: ClientEvmSigner | FacilitatorEvmSigner,\n  tokenAddress: string,\n): Promise<boolean> {\n  try {\n    console.log(\n      `[DEBUG] hasTransferWithAuthorization Checking if contract ${tokenAddress} supports TransferWithAuthorization using readContract...`,\n    );\n\n    // 尝试读取合约函数来检测是否存在\n    // 这里我们不需要实际调用函数，只需要检查函数是否存在\n    // 使用readContract会在函数不存在时抛出错误\n    await client.readContract({\n      address: tokenAddress as Hex,\n      abi: TRANSFER_WITH_AUTHORIZATION_ABI,\n      functionName: \"transferWithAuthorization\",\n      args: [\n        \"0x0000000000000000000000000000000000000000\", // from\n        \"0x0000000000000000000000000000000000000000\", // to\n        BigInt(0), // value\n        BigInt(0), // validAfter\n        BigInt(0), // validBefore\n        \"0x0000000000000000000000000000000000000000000000000000000000000000\", // nonce\n        \"0x\", // signature (empty bytes)\n      ],\n    });\n\n    console.log(\n      `[DEBUG] hasTransferWithAuthorization readContract succeeded for ${tokenAddress} - function exists`,\n    );\n    return true;\n  } catch (error) {\n    const errorMessage = error instanceof Error ? error.message : String(error);\n    console.log(\n      `[DEBUG] hasTransferWithAuthorization readContract failed for ${tokenAddress}:`,\n      errorMessage,\n    );\n\n    // 检查是否是函数不存在的错误\n    if (\n      errorMessage.toLowerCase().includes(\"function does not exist\") ||\n      errorMessage.toLowerCase().includes(\"method not found\") ||\n      errorMessage.toLowerCase().includes(\"unknown method\") ||\n      errorMessage.toLowerCase().includes(\"function selector not found\") ||\n      errorMessage.toLowerCase().includes(\"no matching function\") ||\n      errorMessage.toLowerCase().includes(\"invalid function selector\") ||\n      errorMessage.toLowerCase().includes(\"function not found\") ||\n      (errorMessage.toLowerCase().includes(\"contract function\") &&\n        errorMessage.toLowerCase().includes(\"not found\"))\n    ) {\n      console.log(\n        `[DEBUG] hasTransferWithAuthorization Function does not exist on contract ${tokenAddress}`,\n      );\n      return false;\n    }\n\n    // 检查是否是业务逻辑错误（说明函数存在但参数无效）\n    if (\n      errorMessage.toLowerCase().includes(\"authorization is expired\") ||\n      errorMessage.toLowerCase().includes(\"invalid signature\") ||\n      errorMessage.toLowerCase().includes(\"authorization is used\") ||\n      errorMessage.toLowerCase().includes(\"authorization is not yet valid\") ||\n      errorMessage.toLowerCase().includes(\"invalid authorization\") ||\n      errorMessage.toLowerCase().includes(\"invalid signature length\")\n    ) {\n      console.log(\n        `[DEBUG] hasTransferWithAuthorization Function exists on ${tokenAddress} but failed due to invalid parameters (expected)`,\n      );\n      return true;\n    }\n\n    // 检查是否是一般的执行回滚错误 - 这通常意味着函数不存在\n    if (\n      errorMessage.toLowerCase().includes(\"execution reverted: 0x\") ||\n      (errorMessage.toLowerCase().includes(\"execution reverted\") &&\n        !errorMessage.toLowerCase().includes(\":\"))\n    ) {\n      console.log(\n        `[DEBUG] hasTransferWithAuthorization Function call reverted for ${tokenAddress} - likely function does not exist`,\n      );\n      return false;\n    }\n\n    // 对于其他类型的错误，保守地返回false\n    console.log(\n      `[DEBUG] hasTransferWithAuthorization Unknown error for ${tokenAddress}, assuming function does not exist`,\n    );\n    return false;\n  }\n}\n\n/**\n * 验证代币合约是否支持TransferWithAuthorization函数并记录结果\n * @param client - viem客户端实例\n * @param tokenAddress - 代币合约地址\n * @param enableLogging - 是否启用日志输出，默认为true\n * @returns Promise<boolean> - 验证结果\n */\nasync function verifyTransferWithAuthorizationSupport(\n  client: ClientEvmSigner | FacilitatorEvmSigner,\n  tokenAddress: string,\n  enableLogging: boolean = true,\n): Promise<boolean> {\n  // TS safety: if no client was constructed (shouldn't happen), fall back.\n  if (!client) return true;\n\n  const supportsTransferWithAuthorization = await hasTransferWithAuthorization(\n    client,\n    tokenAddress,\n  );\n\n  if (enableLogging) {\n    console.log(\n      `[DEBUG] Token contract ${tokenAddress} supports TransferWithAuthorization: ${supportsTransferWithAuthorization}`,\n    );\n  }\n\n  return supportsTransferWithAuthorization;\n}\n\nexport {\n  hasTransferWithAuthorization,\n  verifyTransferWithAuthorizationSupport,\n  TRANSFER_WITH_AUTHORIZATION_ABI,\n};\n"],"mappings":"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","names":[]}