uvd-x402-sdk 2.0.3 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +282 -15
  2. package/dist/adapters/index.d.mts +139 -0
  3. package/dist/adapters/index.d.ts +139 -0
  4. package/dist/adapters/index.js +724 -0
  5. package/dist/adapters/index.js.map +1 -0
  6. package/dist/adapters/index.mjs +720 -0
  7. package/dist/adapters/index.mjs.map +1 -0
  8. package/dist/{index-MTBgC_SL.d.mts → index-BHwtdJrt.d.mts} +45 -4
  9. package/dist/{index-MTBgC_SL.d.ts → index-BHwtdJrt.d.ts} +45 -4
  10. package/dist/{index-Db8dWNam.d.ts → index-CkDdnSNx.d.mts} +33 -2
  11. package/dist/{index-D0N_SYpK.d.mts → index-UTj85ZDJ.d.ts} +33 -2
  12. package/dist/index.d.mts +2 -2
  13. package/dist/index.d.ts +2 -2
  14. package/dist/index.js +210 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/index.mjs +207 -1
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/providers/evm/index.d.mts +19 -3
  19. package/dist/providers/evm/index.d.ts +19 -3
  20. package/dist/providers/evm/index.js +228 -12
  21. package/dist/providers/evm/index.js.map +1 -1
  22. package/dist/providers/evm/index.mjs +228 -12
  23. package/dist/providers/evm/index.mjs.map +1 -1
  24. package/dist/providers/near/index.d.mts +1 -1
  25. package/dist/providers/near/index.d.ts +1 -1
  26. package/dist/providers/near/index.js.map +1 -1
  27. package/dist/providers/near/index.mjs.map +1 -1
  28. package/dist/providers/solana/index.d.mts +1 -1
  29. package/dist/providers/solana/index.d.ts +1 -1
  30. package/dist/providers/solana/index.js +168 -0
  31. package/dist/providers/solana/index.js.map +1 -1
  32. package/dist/providers/solana/index.mjs +168 -0
  33. package/dist/providers/solana/index.mjs.map +1 -1
  34. package/dist/providers/stellar/index.d.mts +1 -1
  35. package/dist/providers/stellar/index.d.ts +1 -1
  36. package/dist/providers/stellar/index.js.map +1 -1
  37. package/dist/providers/stellar/index.mjs.map +1 -1
  38. package/dist/react/index.d.mts +3 -3
  39. package/dist/react/index.d.ts +3 -3
  40. package/dist/react/index.js +168 -0
  41. package/dist/react/index.js.map +1 -1
  42. package/dist/react/index.mjs +168 -0
  43. package/dist/react/index.mjs.map +1 -1
  44. package/dist/utils/index.d.mts +1 -1
  45. package/dist/utils/index.d.ts +1 -1
  46. package/dist/utils/index.js +168 -0
  47. package/dist/utils/index.js.map +1 -1
  48. package/dist/utils/index.mjs +168 -0
  49. package/dist/utils/index.mjs.map +1 -1
  50. package/package.json +10 -2
  51. package/src/adapters/index.ts +13 -0
  52. package/src/adapters/wagmi.ts +294 -0
  53. package/src/chains/index.ts +255 -1
  54. package/src/index.ts +9 -0
  55. package/src/providers/evm/index.ts +64 -16
  56. package/src/types/index.ts +46 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/index.ts","../../../src/providers/near/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * uvd-x402-sdk - Type Definitions\n *\n * Core TypeScript interfaces for the x402 payment SDK.\n * These types define the contract between the SDK and consuming applications.\n */\n\n// ============================================================================\n// CHAIN CONFIGURATION TYPES\n// ============================================================================\n\n/**\n * Network type categorization\n * - 'evm': Ethereum Virtual Machine compatible chains (use EIP-712)\n * - 'svm': Solana Virtual Machine chains (Solana, Fogo) (use SPL tokens)\n * - 'stellar': Stellar network (use Soroban)\n * - 'near': NEAR Protocol (use NEP-366)\n *\n * @deprecated 'solana' type is deprecated, use 'svm' instead\n */\nexport type NetworkType = 'evm' | 'svm' | 'solana' | 'stellar' | 'near';\n\n/**\n * USDC token configuration for a specific chain\n */\nexport interface USDCConfig {\n /** Contract/mint address */\n address: string;\n /** Token decimals (6 for most chains, 7 for Stellar) */\n decimals: number;\n /** Token name for EIP-712 domain (e.g., \"USD Coin\" or \"USDC\") */\n name: string;\n /** Token version for EIP-712 domain */\n version: string;\n}\n\n/**\n * Native currency configuration\n */\nexport interface NativeCurrency {\n name: string;\n symbol: string;\n decimals: number;\n}\n\n/**\n * Complete chain configuration\n */\nexport interface ChainConfig {\n /** Numeric chain ID (0 for non-EVM chains) */\n chainId: number;\n /** Hex-encoded chain ID for wallet_switchEthereumChain */\n chainIdHex: string;\n /** Internal chain identifier (e.g., 'base', 'solana') */\n name: string;\n /** Human-readable display name */\n displayName: string;\n /** Network type for routing */\n networkType: NetworkType;\n /** Primary RPC endpoint URL */\n rpcUrl: string;\n /** Block explorer base URL */\n explorerUrl: string;\n /** Native currency info */\n nativeCurrency: NativeCurrency;\n /** USDC token configuration */\n usdc: USDCConfig;\n /** x402 facilitator configuration */\n x402: {\n facilitatorUrl: string;\n enabled: boolean;\n };\n}\n\n// ============================================================================\n// WALLET TYPES\n// ============================================================================\n\n/**\n * Current wallet connection state\n */\nexport interface WalletState {\n /** Whether a wallet is currently connected */\n connected: boolean;\n /** Connected wallet address (null if not connected) */\n address: string | null;\n /** Current chain ID (null for non-EVM or disconnected) */\n chainId: number | null;\n /** Current network name */\n network: string | null;\n /** Network type of connected wallet */\n networkType: NetworkType | null;\n /** USDC balance on current chain (null if unknown) */\n balance: string | null;\n}\n\n/**\n * Wallet adapter interface for different wallet types\n */\nexport interface WalletAdapter {\n /** Unique identifier for this wallet type */\n readonly id: string;\n /** Display name */\n readonly name: string;\n /** Network type this adapter supports */\n readonly networkType: NetworkType;\n\n /** Check if this wallet is available/installed */\n isAvailable(): boolean;\n\n /** Connect to the wallet */\n connect(chainName?: string): Promise<string>;\n\n /** Disconnect from the wallet */\n disconnect(): Promise<void>;\n\n /** Switch to a different chain (EVM only) */\n switchChain?(chainName: string): Promise<void>;\n\n /** Sign a payment payload */\n signPayment(paymentInfo: PaymentInfo, chainConfig: ChainConfig): Promise<string>;\n\n /** Check USDC balance */\n getBalance(chainConfig: ChainConfig): Promise<string>;\n\n /** Get current address */\n getAddress(): string | null;\n\n /** Get current chain ID (EVM only) */\n getChainId?(): number | null;\n}\n\n/**\n * EIP-712 domain for typed data signing\n */\nexport interface EIP712Domain {\n name: string;\n version: string;\n chainId: number;\n verifyingContract: string;\n}\n\n/**\n * EIP-712 type definitions\n */\nexport interface EIP712Types {\n [typeName: string]: Array<{ name: string; type: string }>;\n}\n\n// ============================================================================\n// PAYMENT TYPES\n// ============================================================================\n\n/**\n * Payment information returned by backend on 402 response\n */\nexport interface PaymentInfo {\n /** Default recipient address */\n recipient: string;\n /** Network-specific recipient addresses */\n recipients?: {\n evm?: string;\n solana?: string;\n near?: string;\n stellar?: string;\n };\n /** Facilitator address (for Solana fee payer) */\n facilitator?: string;\n /** Amount in USD (e.g., \"10.00\") */\n amount: string;\n /** Token symbol (usually \"USDC\") */\n token?: string;\n /** Network hint from backend */\n network?: string;\n /** Supported chain IDs */\n supportedChains?: number[];\n}\n\n/**\n * Simple payment request from application\n */\nexport interface PaymentRequest {\n /** Amount in USDC (e.g., \"10.00\") */\n amount: string;\n /** Override recipient address (optional) */\n recipient?: string;\n /** Application-specific metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Result of a payment operation\n */\nexport interface PaymentResult {\n /** Whether payment was successful */\n success: boolean;\n /** Base64-encoded X-PAYMENT header value */\n paymentHeader: string;\n /** Transaction hash (if available) */\n transactionHash?: string;\n /** Network where payment was made */\n network: string;\n /** Payer address */\n payer?: string;\n /** Error message (if success is false) */\n error?: string;\n}\n\n// ============================================================================\n// PAYLOAD TYPES (Internal)\n// ============================================================================\n\n/**\n * EVM payment payload (ERC-3009 TransferWithAuthorization)\n */\nexport interface EVMPaymentPayload {\n from: string;\n to: string;\n value: string;\n validAfter: number;\n validBefore: number;\n nonce: string;\n v: number;\n r: string;\n s: string;\n chainId: number;\n token: string;\n}\n\n/**\n * Solana payment payload (partially-signed transaction)\n */\nexport interface SolanaPaymentPayload {\n /** Base64-encoded serialized transaction */\n transaction: string;\n}\n\n/**\n * Stellar payment payload (Soroban authorization)\n */\nexport interface StellarPaymentPayload {\n /** Sender G... public key */\n from: string;\n /** Recipient G... public key */\n to: string;\n /** Amount in stroops (7 decimals) */\n amount: string;\n /** USDC SAC contract address */\n tokenContract: string;\n /** Base64 XDR-encoded SorobanAuthorizationEntry */\n authorizationEntryXdr: string;\n /** Random 64-bit nonce */\n nonce: number;\n /** Ledger when authorization expires */\n signatureExpirationLedger: number;\n}\n\n/**\n * NEAR payment payload (NEP-366 meta-transaction)\n */\nexport interface NEARPaymentPayload {\n /** Base64 Borsh-encoded SignedDelegateAction */\n signedDelegateAction: string;\n network: 'near';\n}\n\n/**\n * Union type for all payment payloads\n */\nexport type PaymentPayload =\n | EVMPaymentPayload\n | SolanaPaymentPayload\n | StellarPaymentPayload\n | NEARPaymentPayload;\n\n// ============================================================================\n// X402 HEADER TYPES (v1 and v2)\n// ============================================================================\n\n/**\n * x402 protocol version\n */\nexport type X402Version = 1 | 2;\n\n/**\n * CAIP-2 chain identifiers for x402 v2\n * @see https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-2.md\n */\nexport const CAIP2_IDENTIFIERS: Record<string, string> = {\n // EVM chains\n base: 'eip155:8453',\n ethereum: 'eip155:1',\n polygon: 'eip155:137',\n arbitrum: 'eip155:42161',\n optimism: 'eip155:10',\n avalanche: 'eip155:43114',\n celo: 'eip155:42220',\n hyperevm: 'eip155:999',\n unichain: 'eip155:130',\n monad: 'eip155:143',\n // SVM chains\n solana: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n fogo: 'svm:fogo',\n // Stellar\n stellar: 'stellar:pubnet',\n // NEAR\n near: 'near:mainnet',\n};\n\n/**\n * Reverse mapping from CAIP-2 to chain name\n */\nexport const CAIP2_TO_CHAIN: Record<string, string> = Object.fromEntries(\n Object.entries(CAIP2_IDENTIFIERS).map(([k, v]) => [v, k])\n);\n\n/**\n * x402 v1 header structure (network as string)\n */\nexport interface X402HeaderV1 {\n x402Version: 1;\n scheme: 'exact';\n network: string;\n payload: X402PayloadData;\n}\n\n/**\n * x402 v2 payment option\n */\nexport interface X402PaymentOption {\n network: string; // CAIP-2 format\n asset: string;\n amount: string;\n facilitator?: string;\n}\n\n/**\n * x402 v2 header structure (CAIP-2 network, accepts array)\n */\nexport interface X402HeaderV2 {\n x402Version: 2;\n scheme: 'exact';\n network: string; // CAIP-2 format\n payload: X402PayloadData;\n accepts?: X402PaymentOption[];\n}\n\n/**\n * Union type for both v1 and v2 headers\n */\nexport type X402Header = X402HeaderV1 | X402HeaderV2;\n\n/**\n * EVM-specific payload in x402 header\n */\nexport interface X402EVMPayload {\n signature: string;\n authorization: {\n from: string;\n to: string;\n value: string;\n validAfter: string;\n validBefore: string;\n nonce: string;\n };\n}\n\n/**\n * Solana-specific payload in x402 header\n */\nexport interface X402SolanaPayload {\n transaction: string;\n}\n\n/**\n * Stellar-specific payload in x402 header\n */\nexport interface X402StellarPayload {\n from: string;\n to: string;\n amount: string;\n tokenContract: string;\n authorizationEntryXdr: string;\n nonce: number;\n signatureExpirationLedger: number;\n}\n\n/**\n * NEAR-specific payload in x402 header\n */\nexport interface X402NEARPayload {\n signedDelegateAction: string;\n}\n\n/**\n * Union of all x402 payload types\n */\nexport type X402PayloadData =\n | X402EVMPayload\n | X402SolanaPayload\n | X402StellarPayload\n | X402NEARPayload;\n\n// ============================================================================\n// CLIENT CONFIGURATION\n// ============================================================================\n\n/**\n * Multi-payment configuration for supporting multiple networks\n */\nexport interface MultiPaymentConfig {\n /** Networks to support (e.g., ['base', 'solana', 'stellar', 'near']) */\n networks: string[];\n /** Default network if user hasn't selected one */\n defaultNetwork?: string;\n /** Whether to auto-detect user's preferred network based on wallet */\n autoDetect?: boolean;\n}\n\n/**\n * SDK client configuration options\n */\nexport interface X402ClientConfig {\n /** Facilitator URL (default: https://facilitator.ultravioletadao.xyz) */\n facilitatorUrl?: string;\n /** Default chain to connect to */\n defaultChain?: string;\n /** Auto-connect on initialization */\n autoConnect?: boolean;\n /** Enable debug logging */\n debug?: boolean;\n /** Custom chain configurations (override defaults) */\n customChains?: Record<string, Partial<ChainConfig>>;\n /** Wallet preference order */\n walletPreference?: string[];\n /** Custom RPC URLs (override defaults) */\n rpcOverrides?: Record<string, string>;\n /**\n * x402 protocol version to use\n * - 1: Classic format with network as string (e.g., \"base\")\n * - 2: CAIP-2 format with accepts array (e.g., \"eip155:8453\")\n * - 'auto': Auto-detect from 402 response (default)\n */\n x402Version?: X402Version | 'auto';\n /** Multi-payment configuration for supporting multiple networks */\n multiPayment?: MultiPaymentConfig;\n}\n\n/**\n * Default configuration values\n */\nexport const DEFAULT_CONFIG: Required<Pick<X402ClientConfig, 'facilitatorUrl' | 'defaultChain' | 'autoConnect' | 'debug' | 'x402Version'>> = {\n facilitatorUrl: 'https://facilitator.ultravioletadao.xyz',\n defaultChain: 'base',\n autoConnect: false,\n debug: false,\n x402Version: 'auto',\n};\n\n// ============================================================================\n// BALANCE TYPES\n// ============================================================================\n\n/**\n * Balance information for a single network\n */\nexport interface NetworkBalance {\n /** Chain name */\n chainName: string;\n /** Human-readable display name */\n displayName: string;\n /** Formatted balance (e.g., \"15.50\") or null if loading/error */\n balance: string | null;\n /** Whether balance is currently being fetched */\n isLoading: boolean;\n /** Error message if fetch failed */\n error: string | null;\n}\n\n// ============================================================================\n// EVENT TYPES\n// ============================================================================\n\n/**\n * Events emitted by the SDK client\n */\nexport type X402Event =\n | 'connect'\n | 'disconnect'\n | 'chainChanged'\n | 'accountChanged'\n | 'balanceChanged'\n | 'paymentStarted'\n | 'paymentSigned'\n | 'paymentCompleted'\n | 'paymentFailed';\n\n/**\n * Event data types\n */\nexport interface X402EventData {\n connect: WalletState;\n disconnect: void;\n chainChanged: { chainId: number; chainName: string };\n accountChanged: { address: string };\n balanceChanged: { balance: string };\n paymentStarted: { amount: string; network: string };\n paymentSigned: { paymentHeader: string };\n paymentCompleted: PaymentResult;\n paymentFailed: { error: string; code: X402ErrorCode };\n}\n\n/**\n * Event handler type\n */\nexport type X402EventHandler<E extends X402Event> = (data: X402EventData[E]) => void;\n\n// ============================================================================\n// ERROR TYPES\n// ============================================================================\n\n/**\n * Error codes for categorizing errors\n */\nexport type X402ErrorCode =\n | 'WALLET_NOT_FOUND'\n | 'WALLET_NOT_CONNECTED'\n | 'WALLET_CONNECTION_REJECTED'\n | 'WALLET_CONNECTION_TIMEOUT'\n | 'CHAIN_NOT_SUPPORTED'\n | 'CHAIN_SWITCH_REJECTED'\n | 'INSUFFICIENT_BALANCE'\n | 'SIGNATURE_REJECTED'\n | 'PAYMENT_FAILED'\n | 'PAYMENT_TIMEOUT'\n | 'NETWORK_ERROR'\n | 'INVALID_CONFIG'\n | 'INVALID_AMOUNT'\n | 'INVALID_RECIPIENT'\n | 'UNKNOWN_ERROR';\n\n/**\n * SDK-specific error class\n */\nexport class X402Error extends Error {\n public readonly code: X402ErrorCode;\n public readonly details?: unknown;\n\n constructor(message: string, code: X402ErrorCode, details?: unknown) {\n super(message);\n this.name = 'X402Error';\n this.code = code;\n this.details = details;\n\n // Maintains proper stack trace for where error was thrown (V8 engines)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, X402Error);\n }\n }\n}\n","/**\n * uvd-x402-sdk - NEAR Provider\n *\n * Provides NEAR wallet connection and payment creation via MyNearWallet or Meteor.\n * Uses NEP-366 meta-transactions where the facilitator pays all gas fees.\n *\n * NEP-366 Flow:\n * 1. User creates a DelegateAction (ft_transfer on USDC contract)\n * 2. User signs the DelegateAction with their ED25519 key\n * 3. SignedDelegateAction is sent to facilitator\n * 4. Facilitator wraps it and submits to NEAR, paying all gas\n *\n * @example\n * ```ts\n * import { NEARProvider } from 'uvd-x402-sdk/near';\n * import { getChainByName } from 'uvd-x402-sdk';\n *\n * const near = new NEARProvider();\n *\n * // Connect\n * const accountId = await near.connect();\n *\n * // Create payment\n * const chainConfig = getChainByName('near')!;\n * const paymentPayload = await near.signPayment(paymentInfo, chainConfig);\n * const header = near.encodePaymentHeader(paymentPayload);\n * ```\n */\n\nimport type {\n ChainConfig,\n PaymentInfo,\n NEARPaymentPayload,\n WalletAdapter,\n} from '../../types';\nimport { X402Error } from '../../types';\n\n// NEAR configuration\nconst NEAR_CONFIG = {\n networkId: 'mainnet',\n nodeUrl: 'https://rpc.mainnet.near.org',\n walletUrl: 'https://wallet.mainnet.near.org',\n helperUrl: 'https://helper.mainnet.near.org',\n};\n\n// NEP-366 prefix: (2^30 + 366) as u32 little-endian\nconst NEP366_PREFIX = new Uint8Array([0x6e, 0x01, 0x00, 0x40]);\n\n/**\n * Simple Borsh serializer for NEAR transactions\n */\nclass BorshSerializer {\n private buffer: number[] = [];\n\n writeU8(value: number): void {\n this.buffer.push(value & 0xff);\n }\n\n writeU32(value: number): void {\n this.buffer.push(value & 0xff);\n this.buffer.push((value >> 8) & 0xff);\n this.buffer.push((value >> 16) & 0xff);\n this.buffer.push((value >> 24) & 0xff);\n }\n\n writeU64(value: bigint | number): void {\n const val = BigInt(value);\n for (let i = 0; i < 8; i++) {\n this.buffer.push(Number((val >> BigInt(i * 8)) & BigInt(0xff)));\n }\n }\n\n writeU128(value: bigint | number): void {\n const val = BigInt(value);\n for (let i = 0; i < 16; i++) {\n this.buffer.push(Number((val >> BigInt(i * 8)) & BigInt(0xff)));\n }\n }\n\n writeString(value: string): void {\n const encoded = new TextEncoder().encode(value);\n this.writeU32(encoded.length);\n this.buffer.push(...encoded);\n }\n\n writeFixedBytes(data: Uint8Array): void {\n this.buffer.push(...data);\n }\n\n writeBytes(data: Uint8Array): void {\n this.writeU32(data.length);\n this.buffer.push(...data);\n }\n\n getBytes(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n}\n\n/**\n * Serialize a NonDelegateAction for ft_transfer (NEP-366)\n */\nfunction serializeNonDelegateAction(\n receiverId: string,\n amount: bigint,\n memo?: string\n): Uint8Array {\n const args: Record<string, string> = {\n receiver_id: receiverId,\n amount: amount.toString(),\n };\n if (memo) {\n args.memo = memo;\n }\n const argsJson = new TextEncoder().encode(JSON.stringify(args));\n\n const ser = new BorshSerializer();\n ser.writeU8(2); // FunctionCall action type\n ser.writeString('ft_transfer');\n ser.writeBytes(argsJson);\n ser.writeU64(BigInt(30_000_000_000_000)); // 30 TGas\n ser.writeU128(BigInt(1)); // 1 yoctoNEAR deposit (required for ft_transfer)\n return ser.getBytes();\n}\n\n/**\n * Serialize a DelegateAction for NEP-366 meta-transactions\n */\nfunction serializeDelegateAction(\n senderId: string,\n receiverId: string,\n actionsBytes: Uint8Array,\n nonce: bigint,\n maxBlockHeight: bigint,\n publicKeyBytes: Uint8Array\n): Uint8Array {\n const ser = new BorshSerializer();\n ser.writeString(senderId);\n ser.writeString(receiverId);\n ser.writeU32(1); // 1 action\n ser.writeFixedBytes(actionsBytes);\n ser.writeU64(nonce);\n ser.writeU64(maxBlockHeight);\n ser.writeU8(0); // ED25519 key type\n ser.writeFixedBytes(publicKeyBytes);\n return ser.getBytes();\n}\n\n/**\n * Serialize a SignedDelegateAction for NEP-366\n */\nfunction serializeSignedDelegateAction(\n delegateActionBytes: Uint8Array,\n signatureBytes: Uint8Array\n): Uint8Array {\n const ser = new BorshSerializer();\n ser.writeFixedBytes(delegateActionBytes);\n ser.writeU8(0); // ED25519 signature type\n ser.writeFixedBytes(signatureBytes);\n return ser.getBytes();\n}\n\n/**\n * SHA-256 hash function\n */\nasync function sha256(data: Uint8Array): Promise<Uint8Array> {\n const hashBuffer = await crypto.subtle.digest('SHA-256', data as BufferSource);\n return new Uint8Array(hashBuffer);\n}\n\n/**\n * NEAR RPC call\n */\nasync function nearRpcCall<T>(\n rpcUrl: string,\n method: string,\n params: Record<string, unknown>\n): Promise<T> {\n const response = await fetch(rpcUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 'dontcare',\n method,\n params,\n }),\n });\n\n const data = await response.json();\n if (data.error) {\n throw new Error(`NEAR RPC error: ${JSON.stringify(data.error)}`);\n }\n return data.result as T;\n}\n\n/**\n * NEAR wallet selector interface\n */\ninterface NEARWalletSelector {\n isSignedIn(): boolean;\n getAccountId(): string | null;\n signIn(options?: { contractId?: string }): Promise<void>;\n signOut(): Promise<void>;\n}\n\n/**\n * MyNearWallet interface\n */\ninterface MyNearWallet {\n isInstalled?: () => boolean;\n signIn?: (options?: { contractId?: string }) => Promise<{ accountId: string }>;\n signOut?: () => Promise<void>;\n getAccountId?: () => string | null;\n signMessage?: (params: {\n message: Uint8Array;\n recipient: string;\n nonce: Uint8Array;\n }) => Promise<{ signature: Uint8Array; publicKey: string }>;\n}\n\n/**\n * NEARProvider - Wallet adapter for NEAR Protocol via MyNearWallet/Meteor\n */\nexport class NEARProvider implements WalletAdapter {\n readonly id = 'near-wallet';\n readonly name = 'NEAR Wallet';\n readonly networkType = 'near' as const;\n\n private accountId: string | null = null;\n private publicKey: Uint8Array | null = null;\n private rpcUrl: string = NEAR_CONFIG.nodeUrl;\n\n /**\n * Check if NEAR wallet is available\n */\n isAvailable(): boolean {\n if (typeof window === 'undefined') return false;\n // Check for NEAR wallet selector or injected wallet\n const win = window as Window & {\n nearWalletSelector?: NEARWalletSelector;\n myNearWallet?: MyNearWallet;\n near?: { wallet?: NEARWalletSelector };\n };\n return !!(\n win.nearWalletSelector ||\n win.myNearWallet?.isInstalled?.() ||\n win.near?.wallet\n );\n }\n\n /**\n * Connect to NEAR wallet\n */\n async connect(): Promise<string> {\n // Try to get wallet from window\n const win = window as Window & {\n nearWalletSelector?: NEARWalletSelector;\n myNearWallet?: MyNearWallet;\n near?: { wallet?: NEARWalletSelector };\n };\n\n try {\n // Try NEAR wallet selector first\n if (win.nearWalletSelector) {\n if (!win.nearWalletSelector.isSignedIn()) {\n await win.nearWalletSelector.signIn();\n }\n const accountId = win.nearWalletSelector.getAccountId();\n if (!accountId) {\n throw new X402Error('Failed to get NEAR account ID', 'WALLET_CONNECTION_REJECTED');\n }\n this.accountId = accountId;\n await this.fetchPublicKey();\n return accountId;\n }\n\n // Try MyNearWallet\n if (win.myNearWallet?.signIn) {\n const result = await win.myNearWallet.signIn();\n this.accountId = result.accountId;\n await this.fetchPublicKey();\n return result.accountId;\n }\n\n // Try legacy near.wallet\n if (win.near?.wallet) {\n if (!win.near.wallet.isSignedIn()) {\n await win.near.wallet.signIn();\n }\n const accountId = win.near.wallet.getAccountId();\n if (!accountId) {\n throw new X402Error('Failed to get NEAR account ID', 'WALLET_CONNECTION_REJECTED');\n }\n this.accountId = accountId;\n await this.fetchPublicKey();\n return accountId;\n }\n\n throw new X402Error(\n 'No NEAR wallet found. Please install MyNearWallet or Meteor.',\n 'WALLET_NOT_FOUND'\n );\n } catch (error: unknown) {\n if (error instanceof X402Error) throw error;\n\n if (error instanceof Error) {\n if (error.message.includes('User rejected') || error.message.includes('cancelled')) {\n throw new X402Error('Connection rejected by user', 'WALLET_CONNECTION_REJECTED');\n }\n }\n\n throw new X402Error(\n `Failed to connect NEAR wallet: ${error instanceof Error ? error.message : 'Unknown error'}`,\n 'UNKNOWN_ERROR',\n error\n );\n }\n }\n\n /**\n * Disconnect from NEAR wallet\n */\n async disconnect(): Promise<void> {\n const win = window as Window & {\n nearWalletSelector?: NEARWalletSelector;\n myNearWallet?: MyNearWallet;\n near?: { wallet?: NEARWalletSelector };\n };\n\n try {\n if (win.nearWalletSelector) {\n await win.nearWalletSelector.signOut();\n } else if (win.myNearWallet?.signOut) {\n await win.myNearWallet.signOut();\n } else if (win.near?.wallet) {\n await win.near.wallet.signOut();\n }\n } catch {\n // Ignore disconnect errors\n }\n\n this.accountId = null;\n this.publicKey = null;\n }\n\n /**\n * Get current account ID\n */\n getAddress(): string | null {\n return this.accountId;\n }\n\n /**\n * Get USDC balance on NEAR\n */\n async getBalance(chainConfig: ChainConfig): Promise<string> {\n if (!this.accountId) {\n throw new X402Error('Wallet not connected', 'WALLET_NOT_CONNECTED');\n }\n\n try {\n const args = JSON.stringify({ account_id: this.accountId });\n const argsBase64 = btoa(args);\n\n const result = await nearRpcCall<{ result: number[] }>(\n chainConfig.rpcUrl || this.rpcUrl,\n 'query',\n {\n request_type: 'call_function',\n finality: 'final',\n account_id: chainConfig.usdc.address,\n method_name: 'ft_balance_of',\n args_base64: argsBase64,\n }\n );\n\n const resultBytes = new Uint8Array(result.result);\n const balanceStr = new TextDecoder().decode(resultBytes).replace(/\"/g, '');\n const balance = Number(balanceStr) / Math.pow(10, chainConfig.usdc.decimals);\n\n return balance.toFixed(2);\n } catch {\n return '0.00';\n }\n }\n\n /**\n * Create NEAR payment (NEP-366 SignedDelegateAction)\n *\n * User signs a DelegateAction that authorizes ft_transfer.\n * Facilitator wraps this and submits to NEAR, paying all gas fees.\n */\n async signPayment(paymentInfo: PaymentInfo, chainConfig: ChainConfig): Promise<string> {\n if (!this.accountId || !this.publicKey) {\n throw new X402Error('Wallet not connected', 'WALLET_NOT_CONNECTED');\n }\n\n // Get recipient\n const recipient = paymentInfo.recipients?.near || paymentInfo.recipient;\n\n // Parse amount (6 decimals for USDC)\n const amount = BigInt(Math.floor(parseFloat(paymentInfo.amount) * 1_000_000));\n\n try {\n // Get access key nonce\n const accessKey = await this.getAccessKeyNonce();\n const nonce = BigInt(accessKey.nonce) + BigInt(1);\n\n // Get current block height\n const block = await this.getLatestBlock();\n const maxBlockHeight = BigInt(block.header.height) + BigInt(1000);\n\n // Serialize ft_transfer action\n const actionBytes = serializeNonDelegateAction(\n recipient,\n amount,\n 'x402 payment via uvd-x402-sdk'\n );\n\n // Serialize DelegateAction\n const delegateActionBytes = serializeDelegateAction(\n this.accountId,\n chainConfig.usdc.address, // USDC contract\n actionBytes,\n nonce,\n maxBlockHeight,\n this.publicKey\n );\n\n // Create hash for signing (NEP-366 prefix + delegateAction)\n const hashInput = new Uint8Array(NEP366_PREFIX.length + delegateActionBytes.length);\n hashInput.set(NEP366_PREFIX, 0);\n hashInput.set(delegateActionBytes, NEP366_PREFIX.length);\n const delegateHash = await sha256(hashInput);\n\n // Sign the hash\n const signature = await this.signMessage(delegateHash);\n\n // Serialize SignedDelegateAction\n const signedDelegateActionBytes = serializeSignedDelegateAction(\n delegateActionBytes,\n signature\n );\n\n // Base64 encode\n const signedDelegateB64 = btoa(\n String.fromCharCode(...signedDelegateActionBytes)\n );\n\n const payload: NEARPaymentPayload = {\n signedDelegateAction: signedDelegateB64,\n network: 'near',\n };\n\n return JSON.stringify(payload);\n } catch (error: unknown) {\n if (error instanceof X402Error) throw error;\n\n if (error instanceof Error) {\n if (error.message.includes('User rejected') || error.message.includes('cancelled')) {\n throw new X402Error('Signature rejected by user', 'SIGNATURE_REJECTED');\n }\n }\n\n throw new X402Error(\n `Failed to create NEAR payment: ${error instanceof Error ? error.message : 'Unknown error'}`,\n 'PAYMENT_FAILED',\n error\n );\n }\n }\n\n /**\n * Encode NEAR payment as X-PAYMENT header\n */\n encodePaymentHeader(paymentPayload: string): string {\n const payload = JSON.parse(paymentPayload) as NEARPaymentPayload;\n\n const x402Payload = {\n x402Version: 1,\n scheme: 'exact',\n network: 'near',\n payload: {\n signedDelegateAction: payload.signedDelegateAction,\n },\n };\n\n return btoa(JSON.stringify(x402Payload));\n }\n\n // Private helpers\n\n /**\n * Fetch public key from NEAR RPC\n */\n private async fetchPublicKey(): Promise<void> {\n if (!this.accountId) return;\n\n try {\n const result = await nearRpcCall<{ keys: Array<{ public_key: string }> }>(\n this.rpcUrl,\n 'query',\n {\n request_type: 'view_access_key_list',\n finality: 'final',\n account_id: this.accountId,\n }\n );\n\n if (result.keys && result.keys.length > 0) {\n // Get first full access key\n const keyStr = result.keys[0].public_key;\n // Remove ed25519: prefix and decode base58\n const keyB58 = keyStr.replace('ed25519:', '');\n this.publicKey = this.base58Decode(keyB58);\n }\n } catch {\n // Will be set during signing if not available\n }\n }\n\n /**\n * Get access key nonce from NEAR RPC\n */\n private async getAccessKeyNonce(): Promise<{ nonce: number }> {\n if (!this.accountId || !this.publicKey) {\n throw new Error('Account not connected');\n }\n\n const publicKeyB58 = this.base58Encode(this.publicKey);\n\n const result = await nearRpcCall<{ nonce: number }>(\n this.rpcUrl,\n 'query',\n {\n request_type: 'view_access_key',\n finality: 'final',\n account_id: this.accountId,\n public_key: `ed25519:${publicKeyB58}`,\n }\n );\n\n return result;\n }\n\n /**\n * Get latest block from NEAR RPC\n */\n private async getLatestBlock(): Promise<{ header: { height: number } }> {\n return nearRpcCall(this.rpcUrl, 'block', { finality: 'final' });\n }\n\n /**\n * Sign a message using the connected wallet\n */\n private async signMessage(message: Uint8Array): Promise<Uint8Array> {\n const win = window as Window & {\n nearWalletSelector?: NEARWalletSelector;\n myNearWallet?: MyNearWallet;\n };\n\n // Try MyNearWallet signMessage\n if (win.myNearWallet?.signMessage) {\n const result = await win.myNearWallet.signMessage({\n message,\n recipient: 'uvd-x402-sdk',\n nonce: crypto.getRandomValues(new Uint8Array(32)),\n });\n return result.signature;\n }\n\n // For other wallets, we need to use the @near-js/crypto library\n // This will be handled by the wallet selector\n throw new X402Error(\n 'Signing not supported. Please use MyNearWallet or install @near-wallet-selector/core',\n 'PAYMENT_FAILED'\n );\n }\n\n /**\n * Base58 decode (NEAR style)\n */\n private base58Decode(str: string): Uint8Array {\n const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n const ALPHABET_MAP: Record<string, number> = {};\n for (let i = 0; i < ALPHABET.length; i++) {\n ALPHABET_MAP[ALPHABET[i]] = i;\n }\n\n let bytes: number[] = [0];\n for (let i = 0; i < str.length; i++) {\n const value = ALPHABET_MAP[str[i]];\n if (value === undefined) {\n throw new Error(`Invalid base58 character: ${str[i]}`);\n }\n\n for (let j = 0; j < bytes.length; j++) {\n bytes[j] *= 58;\n }\n bytes[0] += value;\n\n let carry = 0;\n for (let j = 0; j < bytes.length; j++) {\n bytes[j] += carry;\n carry = bytes[j] >> 8;\n bytes[j] &= 0xff;\n }\n\n while (carry) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // Handle leading zeros\n for (let i = 0; i < str.length && str[i] === '1'; i++) {\n bytes.push(0);\n }\n\n return new Uint8Array(bytes.reverse());\n }\n\n /**\n * Base58 encode (NEAR style)\n */\n private base58Encode(bytes: Uint8Array): string {\n const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\n let digits = [0];\n for (let i = 0; i < bytes.length; i++) {\n for (let j = 0; j < digits.length; j++) {\n digits[j] <<= 8;\n }\n digits[0] += bytes[i];\n\n let carry = 0;\n for (let j = 0; j < digits.length; j++) {\n digits[j] += carry;\n carry = (digits[j] / 58) | 0;\n digits[j] %= 58;\n }\n\n while (carry) {\n digits.push(carry % 58);\n carry = (carry / 58) | 0;\n }\n }\n\n // Handle leading zeros\n let str = '';\n for (let i = 0; i < bytes.length && bytes[i] === 0; i++) {\n str += '1';\n }\n\n for (let i = digits.length - 1; i >= 0; i--) {\n str += ALPHABET[digits[i]];\n }\n\n return str;\n }\n}\n\nexport default NEARProvider;\n"]}
1
+ {"version":3,"sources":["../../../src/types/index.ts","../../../src/providers/near/index.ts"],"names":[],"mappings":";AA2UO,IAAM,iBAAA,GAA4C;AAAA;AAAA,EAEvD,IAAA,EAAM,aAAA;AAAA,EACN,QAAA,EAAU,UAAA;AAAA,EACV,OAAA,EAAS,YAAA;AAAA,EACT,QAAA,EAAU,cAAA;AAAA,EACV,QAAA,EAAU,WAAA;AAAA,EACV,SAAA,EAAW,cAAA;AAAA,EACX,IAAA,EAAM,cAAA;AAAA,EACN,QAAA,EAAU,YAAA;AAAA,EACV,QAAA,EAAU,YAAA;AAAA,EACV,KAAA,EAAO,YAAA;AAAA;AAAA,EAEP,MAAA,EAAQ,yCAAA;AAAA,EACR,IAAA,EAAM,UAAA;AAAA;AAAA,EAEN,OAAA,EAAS,gBAAA;AAAA;AAAA,EAET,IAAA,EAAM;AACR,CAAA;AAKsD,MAAA,CAAO,WAAA;AAAA,EAC3D,MAAA,CAAO,OAAA,CAAQ,iBAAiB,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM,CAAC,CAAA,EAAG,CAAC,CAAC;AAC1D;AAsOO,IAAM,SAAA,GAAN,MAAM,UAAA,SAAkB,KAAA,CAAM;AAAA,EACnB,IAAA;AAAA,EACA,OAAA;AAAA,EAEhB,WAAA,CAAY,OAAA,EAAiB,IAAA,EAAqB,OAAA,EAAmB;AACnE,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AACZ,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAGf,IAAA,IAAI,MAAM,iBAAA,EAAmB;AAC3B,MAAA,KAAA,CAAM,iBAAA,CAAkB,MAAM,UAAS,CAAA;AAAA,IACzC;AAAA,EACF;AACF,CAAA;;;ACpjBA,IAAM,WAAA,GAAc;AAAA,EAElB,OAAA,EAAS,8BAGX,CAAA;AAGA,IAAM,aAAA,GAAgB,IAAI,UAAA,CAAW,CAAC,KAAM,CAAA,EAAM,CAAA,EAAM,EAAI,CAAC,CAAA;AAK7D,IAAM,kBAAN,MAAsB;AAAA,EACZ,SAAmB,EAAC;AAAA,EAE5B,QAAQ,KAAA,EAAqB;AAC3B,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAA,GAAQ,GAAI,CAAA;AAAA,EAC/B;AAAA,EAEA,SAAS,KAAA,EAAqB;AAC5B,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAA,GAAQ,GAAI,CAAA;AAC7B,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAM,KAAA,IAAS,CAAA,GAAK,GAAI,CAAA;AACpC,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAM,KAAA,IAAS,EAAA,GAAM,GAAI,CAAA;AACrC,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAM,KAAA,IAAS,EAAA,GAAM,GAAI,CAAA;AAAA,EACvC;AAAA,EAEA,SAAS,KAAA,EAA8B;AACrC,IAAA,MAAM,GAAA,GAAM,OAAO,KAAK,CAAA;AACxB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,MAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAA,CAAQ,GAAA,IAAO,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,GAAK,MAAA,CAAO,GAAI,CAAC,CAAC,CAAA;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,UAAU,KAAA,EAA8B;AACtC,IAAA,MAAM,GAAA,GAAM,OAAO,KAAK,CAAA;AACxB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,MAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAA,CAAQ,GAAA,IAAO,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,GAAK,MAAA,CAAO,GAAI,CAAC,CAAC,CAAA;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,YAAY,KAAA,EAAqB;AAC/B,IAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY,CAAE,OAAO,KAAK,CAAA;AAC9C,IAAA,IAAA,CAAK,QAAA,CAAS,QAAQ,MAAM,CAAA;AAC5B,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,GAAG,OAAO,CAAA;AAAA,EAC7B;AAAA,EAEA,gBAAgB,IAAA,EAAwB;AACtC,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,GAAG,IAAI,CAAA;AAAA,EAC1B;AAAA,EAEA,WAAW,IAAA,EAAwB;AACjC,IAAA,IAAA,CAAK,QAAA,CAAS,KAAK,MAAM,CAAA;AACzB,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,GAAG,IAAI,CAAA;AAAA,EAC1B;AAAA,EAEA,QAAA,GAAuB;AACrB,IAAA,OAAO,IAAI,UAAA,CAAW,IAAA,CAAK,MAAM,CAAA;AAAA,EACnC;AACF,CAAA;AAKA,SAAS,0BAAA,CACP,UAAA,EACA,MAAA,EACA,IAAA,EACY;AACZ,EAAA,MAAM,IAAA,GAA+B;AAAA,IACnC,WAAA,EAAa,UAAA;AAAA,IACb,MAAA,EAAQ,OAAO,QAAA;AAAS,GAC1B;AACA,EAAU;AACR,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AACA,EAAA,MAAM,QAAA,GAAW,IAAI,WAAA,EAAY,CAAE,OAAO,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA;AAE9D,EAAA,MAAM,GAAA,GAAM,IAAI,eAAA,EAAgB;AAChC,EAAA,GAAA,CAAI,QAAQ,CAAC,CAAA;AACb,EAAA,GAAA,CAAI,YAAY,aAAa,CAAA;AAC7B,EAAA,GAAA,CAAI,WAAW,QAAQ,CAAA;AACvB,EAAA,GAAA,CAAI,QAAA,CAAS,MAAA,CAAO,IAAkB,CAAC,CAAA;AACvC,EAAA,GAAA,CAAI,SAAA,CAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AACvB,EAAA,OAAO,IAAI,QAAA,EAAS;AACtB;AAKA,SAAS,wBACP,QAAA,EACA,UAAA,EACA,YAAA,EACA,KAAA,EACA,gBACA,cAAA,EACY;AACZ,EAAA,MAAM,GAAA,GAAM,IAAI,eAAA,EAAgB;AAChC,EAAA,GAAA,CAAI,YAAY,QAAQ,CAAA;AACxB,EAAA,GAAA,CAAI,YAAY,UAAU,CAAA;AAC1B,EAAA,GAAA,CAAI,SAAS,CAAC,CAAA;AACd,EAAA,GAAA,CAAI,gBAAgB,YAAY,CAAA;AAChC,EAAA,GAAA,CAAI,SAAS,KAAK,CAAA;AAClB,EAAA,GAAA,CAAI,SAAS,cAAc,CAAA;AAC3B,EAAA,GAAA,CAAI,QAAQ,CAAC,CAAA;AACb,EAAA,GAAA,CAAI,gBAAgB,cAAc,CAAA;AAClC,EAAA,OAAO,IAAI,QAAA,EAAS;AACtB;AAKA,SAAS,6BAAA,CACP,qBACA,cAAA,EACY;AACZ,EAAA,MAAM,GAAA,GAAM,IAAI,eAAA,EAAgB;AAChC,EAAA,GAAA,CAAI,gBAAgB,mBAAmB,CAAA;AACvC,EAAA,GAAA,CAAI,QAAQ,CAAC,CAAA;AACb,EAAA,GAAA,CAAI,gBAAgB,cAAc,CAAA;AAClC,EAAA,OAAO,IAAI,QAAA,EAAS;AACtB;AAKA,eAAe,OAAO,IAAA,EAAuC;AAC3D,EAAA,MAAM,aAAa,MAAM,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,WAAW,IAAoB,CAAA;AAC7E,EAAA,OAAO,IAAI,WAAW,UAAU,CAAA;AAClC;AAKA,eAAe,WAAA,CACb,MAAA,EACA,MAAA,EACA,MAAA,EACY;AACZ,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,EAAQ;AAAA,IACnC,MAAA,EAAQ,MAAA;AAAA,IACR,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA,EAAmB;AAAA,IAC9C,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,MACnB,OAAA,EAAS,KAAA;AAAA,MACT,EAAA,EAAI,UAAA;AAAA,MACJ,MAAA;AAAA,MACA;AAAA,KACD;AAAA,GACF,CAAA;AAED,EAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,EAAA,IAAI,KAAK,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,MAAM,CAAA,gBAAA,EAAmB,IAAA,CAAK,UAAU,IAAA,CAAK,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,EACjE;AACA,EAAA,OAAO,IAAA,CAAK,MAAA;AACd;AA8BO,IAAM,eAAN,MAA4C;AAAA,EACxC,EAAA,GAAK,aAAA;AAAA,EACL,IAAA,GAAO,aAAA;AAAA,EACP,WAAA,GAAc,MAAA;AAAA,EAEf,SAAA,GAA2B,IAAA;AAAA,EAC3B,SAAA,GAA+B,IAAA;AAAA,EAC/B,SAAiB,WAAA,CAAY,OAAA;AAAA;AAAA;AAAA;AAAA,EAKrC,WAAA,GAAuB;AACrB,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,KAAA;AAE1C,IAAA,MAAM,GAAA,GAAM,MAAA;AAKZ,IAAA,OAAO,CAAC,EACN,GAAA,CAAI,kBAAA,IACJ,IAAI,YAAA,EAAc,WAAA,IAAc,IAChC,GAAA,CAAI,IAAA,EAAM,MAAA,CAAA;AAAA,EAEd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAA,GAA2B;AAE/B,IAAA,MAAM,GAAA,GAAM,MAAA;AAMZ,IAAA,IAAI;AAEF,MAAA,IAAI,IAAI,kBAAA,EAAoB;AAC1B,QAAA,IAAI,CAAC,GAAA,CAAI,kBAAA,CAAmB,UAAA,EAAW,EAAG;AACxC,UAAA,MAAM,GAAA,CAAI,mBAAmB,MAAA,EAAO;AAAA,QACtC;AACA,QAAA,MAAM,SAAA,GAAY,GAAA,CAAI,kBAAA,CAAmB,YAAA,EAAa;AACtD,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,MAAM,IAAI,SAAA,CAAU,+BAAA,EAAiC,4BAA4B,CAAA;AAAA,QACnF;AACA,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,MAAM,KAAK,cAAA,EAAe;AAC1B,QAAA,OAAO,SAAA;AAAA,MACT;AAGA,MAAA,IAAI,GAAA,CAAI,cAAc,MAAA,EAAQ;AAC5B,QAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,YAAA,CAAa,MAAA,EAAO;AAC7C,QAAA,IAAA,CAAK,YAAY,MAAA,CAAO,SAAA;AACxB,QAAA,MAAM,KAAK,cAAA,EAAe;AAC1B,QAAA,OAAO,MAAA,CAAO,SAAA;AAAA,MAChB;AAGA,MAAA,IAAI,GAAA,CAAI,MAAM,MAAA,EAAQ;AACpB,QAAA,IAAI,CAAC,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,YAAW,EAAG;AACjC,UAAA,MAAM,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,MAAA,EAAO;AAAA,QAC/B;AACA,QAAA,MAAM,SAAA,GAAY,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,YAAA,EAAa;AAC/C,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,MAAM,IAAI,SAAA,CAAU,+BAAA,EAAiC,4BAA4B,CAAA;AAAA,QACnF;AACA,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,MAAM,KAAK,cAAA,EAAe;AAC1B,QAAA,OAAO,SAAA;AAAA,MACT;AAEA,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,8DAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAgB;AACvB,MAAA,IAAI,KAAA,YAAiB,WAAW,MAAM,KAAA;AAEtC,MAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,QAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,CAAS,eAAe,KAAK,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA,EAAG;AAClF,UAAA,MAAM,IAAI,SAAA,CAAU,6BAAA,EAA+B,4BAA4B,CAAA;AAAA,QACjF;AAAA,MACF;AAEA,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,CAAA,+BAAA,EAAkC,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,UAAU,eAAe,CAAA,CAAA;AAAA,QAC1F,eAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAA,GAA4B;AAChC,IAAA,MAAM,GAAA,GAAM,MAAA;AAMZ,IAAA,IAAI;AACF,MAAA,IAAI,IAAI,kBAAA,EAAoB;AAC1B,QAAA,MAAM,GAAA,CAAI,mBAAmB,OAAA,EAAQ;AAAA,MACvC,CAAA,MAAA,IAAW,GAAA,CAAI,YAAA,EAAc,OAAA,EAAS;AACpC,QAAA,MAAM,GAAA,CAAI,aAAa,OAAA,EAAQ;AAAA,MACjC,CAAA,MAAA,IAAW,GAAA,CAAI,IAAA,EAAM,MAAA,EAAQ;AAC3B,QAAA,MAAM,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,OAAA,EAAQ;AAAA,MAChC;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAEA,IAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,IAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAA4B;AAC1B,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,WAAA,EAA2C;AAC1D,IAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACnB,MAAA,MAAM,IAAI,SAAA,CAAU,sBAAA,EAAwB,sBAAsB,CAAA;AAAA,IACpE;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,OAAO,IAAA,CAAK,SAAA,CAAU,EAAE,UAAA,EAAY,IAAA,CAAK,WAAW,CAAA;AAC1D,MAAA,MAAM,UAAA,GAAa,KAAK,IAAI,CAAA;AAE5B,MAAA,MAAM,SAAS,MAAM,WAAA;AAAA,QACnB,WAAA,CAAY,UAAU,IAAA,CAAK,MAAA;AAAA,QAC3B,OAAA;AAAA,QACA;AAAA,UACE,YAAA,EAAc,eAAA;AAAA,UACd,QAAA,EAAU,OAAA;AAAA,UACV,UAAA,EAAY,YAAY,IAAA,CAAK,OAAA;AAAA,UAC7B,WAAA,EAAa,eAAA;AAAA,UACb,WAAA,EAAa;AAAA;AACf,OACF;AAEA,MAAA,MAAM,WAAA,GAAc,IAAI,UAAA,CAAW,MAAA,CAAO,MAAM,CAAA;AAChD,MAAA,MAAM,UAAA,GAAa,IAAI,WAAA,EAAY,CAAE,OAAO,WAAW,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AACzE,MAAA,MAAM,OAAA,GAAU,OAAO,UAAU,CAAA,GAAI,KAAK,GAAA,CAAI,EAAA,EAAI,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA;AAE3E,MAAA,OAAO,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAAA,IAC1B,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,WAAA,CAAY,WAAA,EAA0B,WAAA,EAA2C;AACrF,IAAA,IAAI,CAAC,IAAA,CAAK,SAAA,IAAa,CAAC,KAAK,SAAA,EAAW;AACtC,MAAA,MAAM,IAAI,SAAA,CAAU,sBAAA,EAAwB,sBAAsB,CAAA;AAAA,IACpE;AAGA,IAAA,MAAM,SAAA,GAAY,WAAA,CAAY,UAAA,EAAY,IAAA,IAAQ,WAAA,CAAY,SAAA;AAG9D,IAAA,MAAM,MAAA,GAAS,OAAO,IAAA,CAAK,KAAA,CAAM,WAAW,WAAA,CAAY,MAAM,CAAA,GAAI,GAAS,CAAC,CAAA;AAE5E,IAAA,IAAI;AAEF,MAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,iBAAA,EAAkB;AAC/C,MAAA,MAAM,QAAQ,MAAA,CAAO,SAAA,CAAU,KAAK,CAAA,GAAI,OAAO,CAAC,CAAA;AAGhD,MAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,cAAA,EAAe;AACxC,MAAA,MAAM,iBAAiB,MAAA,CAAO,KAAA,CAAM,OAAO,MAAM,CAAA,GAAI,OAAO,GAAI,CAAA;AAGhE,MAAA,MAAM,WAAA,GAAc,0BAAA;AAAA,QAClB,SAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACF;AAGA,MAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,QAC1B,IAAA,CAAK,SAAA;AAAA,QACL,YAAY,IAAA,CAAK,OAAA;AAAA;AAAA,QACjB,WAAA;AAAA,QACA,KAAA;AAAA,QACA,cAAA;AAAA,QACA,IAAA,CAAK;AAAA,OACP;AAGA,MAAA,MAAM,YAAY,IAAI,UAAA,CAAW,aAAA,CAAc,MAAA,GAAS,oBAAoB,MAAM,CAAA;AAClF,MAAA,SAAA,CAAU,GAAA,CAAI,eAAe,CAAC,CAAA;AAC9B,MAAA,SAAA,CAAU,GAAA,CAAI,mBAAA,EAAqB,aAAA,CAAc,MAAM,CAAA;AACvD,MAAA,MAAM,YAAA,GAAe,MAAM,MAAA,CAAO,SAAS,CAAA;AAG3C,MAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,WAAA,CAAY,YAAY,CAAA;AAGrD,MAAA,MAAM,yBAAA,GAA4B,6BAAA;AAAA,QAChC,mBAAA;AAAA,QACA;AAAA,OACF;AAGA,MAAA,MAAM,iBAAA,GAAoB,IAAA;AAAA,QACxB,MAAA,CAAO,YAAA,CAAa,GAAG,yBAAyB;AAAA,OAClD;AAEA,MAAA,MAAM,OAAA,GAA8B;AAAA,QAClC,oBAAA,EAAsB,iBAAA;AAAA,QACtB,OAAA,EAAS;AAAA,OACX;AAEA,MAAA,OAAO,IAAA,CAAK,UAAU,OAAO,CAAA;AAAA,IAC/B,SAAS,KAAA,EAAgB;AACvB,MAAA,IAAI,KAAA,YAAiB,WAAW,MAAM,KAAA;AAEtC,MAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,QAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,CAAS,eAAe,KAAK,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA,EAAG;AAClF,UAAA,MAAM,IAAI,SAAA,CAAU,4BAAA,EAA8B,oBAAoB,CAAA;AAAA,QACxE;AAAA,MACF;AAEA,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,CAAA,+BAAA,EAAkC,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,UAAU,eAAe,CAAA,CAAA;AAAA,QAC1F,gBAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB,cAAA,EAAgC;AAClD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,cAAc,CAAA;AAEzC,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,WAAA,EAAa,CAAA;AAAA,MACb,MAAA,EAAQ,OAAA;AAAA,MACR,OAAA,EAAS,MAAA;AAAA,MACT,OAAA,EAAS;AAAA,QACP,sBAAsB,OAAA,CAAQ;AAAA;AAChC,KACF;AAEA,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,WAAW,CAAC,CAAA;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,cAAA,GAAgC;AAC5C,IAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AAErB,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,MAAM,WAAA;AAAA,QACnB,IAAA,CAAK,MAAA;AAAA,QACL,OAAA;AAAA,QACA;AAAA,UACE,YAAA,EAAc,sBAAA;AAAA,UACd,QAAA,EAAU,OAAA;AAAA,UACV,YAAY,IAAA,CAAK;AAAA;AACnB,OACF;AAEA,MAAA,IAAI,MAAA,CAAO,IAAA,IAAQ,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA,EAAG;AAEzC,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,CAAE,UAAA;AAE9B,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA;AAC5C,QAAA,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA;AAAA,MAC3C;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,iBAAA,GAAgD;AAC5D,IAAA,IAAI,CAAC,IAAA,CAAK,SAAA,IAAa,CAAC,KAAK,SAAA,EAAW;AACtC,MAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,IACzC;AAEA,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,YAAA,CAAa,IAAA,CAAK,SAAS,CAAA;AAErD,IAAA,MAAM,SAAS,MAAM,WAAA;AAAA,MACnB,IAAA,CAAK,MAAA;AAAA,MACL,OAAA;AAAA,MACA;AAAA,QACE,YAAA,EAAc,iBAAA;AAAA,QACd,QAAA,EAAU,OAAA;AAAA,QACV,YAAY,IAAA,CAAK,SAAA;AAAA,QACjB,UAAA,EAAY,WAAW,YAAY,CAAA;AAAA;AACrC,KACF;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,cAAA,GAA0D;AACtE,IAAA,OAAO,YAAY,IAAA,CAAK,MAAA,EAAQ,SAAS,EAAE,QAAA,EAAU,SAAS,CAAA;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,YAAY,OAAA,EAA0C;AAClE,IAAA,MAAM,GAAA,GAAM,MAAA;AAMZ,IAAA,IAAI,GAAA,CAAI,cAAc,WAAA,EAAa;AACjC,MAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,YAAA,CAAa,WAAA,CAAY;AAAA,QAChD,OAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,OAAO,MAAA,CAAO,eAAA,CAAgB,IAAI,UAAA,CAAW,EAAE,CAAC;AAAA,OACjD,CAAA;AACD,MAAA,OAAO,MAAA,CAAO,SAAA;AAAA,IAChB;AAIA,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,sFAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,aAAa,GAAA,EAAyB;AAC5C,IAAA,MAAM,QAAA,GAAW,4DAAA;AACjB,IAAA,MAAM,eAAuC,EAAC;AAC9C,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,MAAA,YAAA,CAAa,QAAA,CAAS,CAAC,CAAC,CAAA,GAAI,CAAA;AAAA,IAC9B;AAEA,IAAA,IAAI,KAAA,GAAkB,CAAC,CAAC,CAAA;AACxB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,GAAA,CAAI,CAAC,CAAC,CAAA;AACjC,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,GAAA,CAAI,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA,MACvD;AAEA,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,KAAA,CAAM,CAAC,CAAA,IAAK,EAAA;AAAA,MACd;AACA,MAAA,KAAA,CAAM,CAAC,CAAA,IAAK,KAAA;AAEZ,MAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,KAAA,CAAM,CAAC,CAAA,IAAK,KAAA;AACZ,QAAA,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,IAAK,CAAA;AACpB,QAAA,KAAA,CAAM,CAAC,CAAA,IAAK,GAAA;AAAA,MACd;AAEA,MAAA,OAAO,KAAA,EAAO;AACZ,QAAA,KAAA,CAAM,IAAA,CAAK,QAAQ,GAAI,CAAA;AACvB,QAAA,KAAA,KAAU,CAAA;AAAA,MACZ;AAAA,IACF;AAGA,IAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA,CAAI,UAAU,GAAA,CAAI,CAAC,CAAA,KAAM,GAAA,EAAK,CAAA,EAAA,EAAK;AACrD,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,IACd;AAEA,IAAA,OAAO,IAAI,UAAA,CAAW,KAAA,CAAM,OAAA,EAAS,CAAA;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKQ,aAAa,KAAA,EAA2B;AAC9C,IAAA,MAAM,QAAA,GAAW,4DAAA;AAEjB,IAAA,IAAI,MAAA,GAAS,CAAC,CAAC,CAAA;AACf,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,QAAA,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA;AAAA,MAChB;AACA,MAAA,MAAA,CAAO,CAAC,CAAA,IAAK,KAAA,CAAM,CAAC,CAAA;AAEpB,MAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,QAAA,MAAA,CAAO,CAAC,CAAA,IAAK,KAAA;AACb,QAAA,KAAA,GAAS,MAAA,CAAO,CAAC,CAAA,GAAI,EAAA,GAAM,CAAA;AAC3B,QAAA,MAAA,CAAO,CAAC,CAAA,IAAK,EAAA;AAAA,MACf;AAEA,MAAA,OAAO,KAAA,EAAO;AACZ,QAAA,MAAA,CAAO,IAAA,CAAK,QAAQ,EAAE,CAAA;AACtB,QAAA,KAAA,GAAS,QAAQ,EAAA,GAAM,CAAA;AAAA,MACzB;AAAA,IACF;AAGA,IAAA,IAAI,GAAA,GAAM,EAAA;AACV,IAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,KAAA,CAAM,UAAU,KAAA,CAAM,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,EAAA,EAAK;AACvD,MAAA,GAAA,IAAO,GAAA;AAAA,IACT;AAEA,IAAA,KAAA,IAAS,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC3C,MAAA,GAAA,IAAO,QAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,IAC3B;AAEA,IAAA,OAAO,GAAA;AAAA,EACT;AACF;AAEA,IAAO,YAAA,GAAQ","file":"index.mjs","sourcesContent":["/**\n * uvd-x402-sdk - Type Definitions\n *\n * Core TypeScript interfaces for the x402 payment SDK.\n * These types define the contract between the SDK and consuming applications.\n */\n\n// ============================================================================\n// CHAIN CONFIGURATION TYPES\n// ============================================================================\n\n/**\n * Network type categorization\n * - 'evm': Ethereum Virtual Machine compatible chains (use EIP-712)\n * - 'svm': Solana Virtual Machine chains (Solana, Fogo) (use SPL tokens)\n * - 'stellar': Stellar network (use Soroban)\n * - 'near': NEAR Protocol (use NEP-366)\n *\n * @deprecated 'solana' type is deprecated, use 'svm' instead\n */\nexport type NetworkType = 'evm' | 'svm' | 'solana' | 'stellar' | 'near';\n\n/**\n * Supported stablecoin token types\n * - usdc: USD Coin (Circle) - 6 decimals\n * - eurc: Euro Coin (Circle) - 6 decimals\n * - ausd: Agora USD (Agora Finance) - 6 decimals\n * - pyusd: PayPal USD (PayPal/Paxos) - 6 decimals\n * - gho: GHO Stablecoin (Aave) - 18 decimals\n * - crvusd: Curve USD (Curve Finance) - 18 decimals\n */\nexport type TokenType = 'usdc' | 'eurc' | 'ausd' | 'pyusd' | 'gho' | 'crvusd';\n\n/**\n * Token configuration for EIP-712 signing and transfers\n */\nexport interface TokenConfig {\n /** Contract/mint address */\n address: string;\n /** Token decimals (6 for most stablecoins, 18 for GHO/crvUSD) */\n decimals: number;\n /** Token name for EIP-712 domain (e.g., \"USD Coin\" or \"USDC\") */\n name: string;\n /** Token version for EIP-712 domain */\n version: string;\n}\n\n/**\n * USDC token configuration for a specific chain\n * @deprecated Use TokenConfig instead. This is kept for backward compatibility.\n */\nexport interface USDCConfig {\n /** Contract/mint address */\n address: string;\n /** Token decimals (6 for most chains, 7 for Stellar) */\n decimals: number;\n /** Token name for EIP-712 domain (e.g., \"USD Coin\" or \"USDC\") */\n name: string;\n /** Token version for EIP-712 domain */\n version: string;\n}\n\n/**\n * Native currency configuration\n */\nexport interface NativeCurrency {\n name: string;\n symbol: string;\n decimals: number;\n}\n\n/**\n * Complete chain configuration\n */\nexport interface ChainConfig {\n /** Numeric chain ID (0 for non-EVM chains) */\n chainId: number;\n /** Hex-encoded chain ID for wallet_switchEthereumChain */\n chainIdHex: string;\n /** Internal chain identifier (e.g., 'base', 'solana') */\n name: string;\n /** Human-readable display name */\n displayName: string;\n /** Network type for routing */\n networkType: NetworkType;\n /** Primary RPC endpoint URL */\n rpcUrl: string;\n /** Block explorer base URL */\n explorerUrl: string;\n /** Native currency info */\n nativeCurrency: NativeCurrency;\n /** USDC token configuration */\n usdc: USDCConfig;\n /**\n * Multi-token configurations (EVM chains only)\n * Maps token type to its configuration for this chain.\n * Not all tokens are available on all chains.\n */\n tokens?: Partial<Record<TokenType, TokenConfig>>;\n /** x402 facilitator configuration */\n x402: {\n facilitatorUrl: string;\n enabled: boolean;\n };\n}\n\n// ============================================================================\n// WALLET TYPES\n// ============================================================================\n\n/**\n * Current wallet connection state\n */\nexport interface WalletState {\n /** Whether a wallet is currently connected */\n connected: boolean;\n /** Connected wallet address (null if not connected) */\n address: string | null;\n /** Current chain ID (null for non-EVM or disconnected) */\n chainId: number | null;\n /** Current network name */\n network: string | null;\n /** Network type of connected wallet */\n networkType: NetworkType | null;\n /** USDC balance on current chain (null if unknown) */\n balance: string | null;\n}\n\n/**\n * Wallet adapter interface for different wallet types\n */\nexport interface WalletAdapter {\n /** Unique identifier for this wallet type */\n readonly id: string;\n /** Display name */\n readonly name: string;\n /** Network type this adapter supports */\n readonly networkType: NetworkType;\n\n /** Check if this wallet is available/installed */\n isAvailable(): boolean;\n\n /** Connect to the wallet */\n connect(chainName?: string): Promise<string>;\n\n /** Disconnect from the wallet */\n disconnect(): Promise<void>;\n\n /** Switch to a different chain (EVM only) */\n switchChain?(chainName: string): Promise<void>;\n\n /**\n * Sign a payment payload\n * For EVM chains, supports multi-token via paymentInfo.tokenType\n */\n signPayment(paymentInfo: PaymentInfo, chainConfig: ChainConfig): Promise<string>;\n\n /**\n * Check token balance (defaults to USDC for backward compatibility)\n * EVM providers may accept optional tokenType parameter\n */\n getBalance(chainConfig: ChainConfig, tokenType?: TokenType): Promise<string>;\n\n /** Get current address */\n getAddress(): string | null;\n\n /** Get current chain ID (EVM only) */\n getChainId?(): number | null;\n}\n\n/**\n * EIP-712 domain for typed data signing\n */\nexport interface EIP712Domain {\n name: string;\n version: string;\n chainId: number;\n verifyingContract: string;\n}\n\n/**\n * EIP-712 type definitions\n */\nexport interface EIP712Types {\n [typeName: string]: Array<{ name: string; type: string }>;\n}\n\n// ============================================================================\n// PAYMENT TYPES\n// ============================================================================\n\n/**\n * Payment information returned by backend on 402 response\n */\nexport interface PaymentInfo {\n /** Default recipient address */\n recipient: string;\n /** Network-specific recipient addresses */\n recipients?: {\n evm?: string;\n solana?: string;\n near?: string;\n stellar?: string;\n };\n /** Facilitator address (for Solana fee payer) */\n facilitator?: string;\n /** Amount in USD (e.g., \"10.00\") */\n amount: string;\n /** Token symbol (usually \"USDC\") */\n token?: string;\n /**\n * Token type for multi-token support\n * Defaults to 'usdc' if not specified for backward compatibility\n */\n tokenType?: TokenType;\n /** Network hint from backend */\n network?: string;\n /** Supported chain IDs */\n supportedChains?: number[];\n}\n\n/**\n * Simple payment request from application\n */\nexport interface PaymentRequest {\n /** Amount in USDC (e.g., \"10.00\") */\n amount: string;\n /** Override recipient address (optional) */\n recipient?: string;\n /** Application-specific metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Result of a payment operation\n */\nexport interface PaymentResult {\n /** Whether payment was successful */\n success: boolean;\n /** Base64-encoded X-PAYMENT header value */\n paymentHeader: string;\n /** Transaction hash (if available) */\n transactionHash?: string;\n /** Network where payment was made */\n network: string;\n /** Payer address */\n payer?: string;\n /** Error message (if success is false) */\n error?: string;\n}\n\n// ============================================================================\n// PAYLOAD TYPES (Internal)\n// ============================================================================\n\n/**\n * EVM payment payload (ERC-3009 TransferWithAuthorization)\n */\nexport interface EVMPaymentPayload {\n from: string;\n to: string;\n value: string;\n validAfter: number;\n validBefore: number;\n nonce: string;\n v: number;\n r: string;\n s: string;\n chainId: number;\n token: string;\n}\n\n/**\n * Solana payment payload (partially-signed transaction)\n */\nexport interface SolanaPaymentPayload {\n /** Base64-encoded serialized transaction */\n transaction: string;\n}\n\n/**\n * Stellar payment payload (Soroban authorization)\n */\nexport interface StellarPaymentPayload {\n /** Sender G... public key */\n from: string;\n /** Recipient G... public key */\n to: string;\n /** Amount in stroops (7 decimals) */\n amount: string;\n /** USDC SAC contract address */\n tokenContract: string;\n /** Base64 XDR-encoded SorobanAuthorizationEntry */\n authorizationEntryXdr: string;\n /** Random 64-bit nonce */\n nonce: number;\n /** Ledger when authorization expires */\n signatureExpirationLedger: number;\n}\n\n/**\n * NEAR payment payload (NEP-366 meta-transaction)\n */\nexport interface NEARPaymentPayload {\n /** Base64 Borsh-encoded SignedDelegateAction */\n signedDelegateAction: string;\n network: 'near';\n}\n\n/**\n * Union type for all payment payloads\n */\nexport type PaymentPayload =\n | EVMPaymentPayload\n | SolanaPaymentPayload\n | StellarPaymentPayload\n | NEARPaymentPayload;\n\n// ============================================================================\n// X402 HEADER TYPES (v1 and v2)\n// ============================================================================\n\n/**\n * x402 protocol version\n */\nexport type X402Version = 1 | 2;\n\n/**\n * CAIP-2 chain identifiers for x402 v2\n * @see https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-2.md\n */\nexport const CAIP2_IDENTIFIERS: Record<string, string> = {\n // EVM chains\n base: 'eip155:8453',\n ethereum: 'eip155:1',\n polygon: 'eip155:137',\n arbitrum: 'eip155:42161',\n optimism: 'eip155:10',\n avalanche: 'eip155:43114',\n celo: 'eip155:42220',\n hyperevm: 'eip155:999',\n unichain: 'eip155:130',\n monad: 'eip155:143',\n // SVM chains\n solana: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n fogo: 'svm:fogo',\n // Stellar\n stellar: 'stellar:pubnet',\n // NEAR\n near: 'near:mainnet',\n};\n\n/**\n * Reverse mapping from CAIP-2 to chain name\n */\nexport const CAIP2_TO_CHAIN: Record<string, string> = Object.fromEntries(\n Object.entries(CAIP2_IDENTIFIERS).map(([k, v]) => [v, k])\n);\n\n/**\n * x402 v1 header structure (network as string)\n */\nexport interface X402HeaderV1 {\n x402Version: 1;\n scheme: 'exact';\n network: string;\n payload: X402PayloadData;\n}\n\n/**\n * x402 v2 payment option\n */\nexport interface X402PaymentOption {\n network: string; // CAIP-2 format\n asset: string;\n amount: string;\n facilitator?: string;\n}\n\n/**\n * x402 v2 header structure (CAIP-2 network, accepts array)\n */\nexport interface X402HeaderV2 {\n x402Version: 2;\n scheme: 'exact';\n network: string; // CAIP-2 format\n payload: X402PayloadData;\n accepts?: X402PaymentOption[];\n}\n\n/**\n * Union type for both v1 and v2 headers\n */\nexport type X402Header = X402HeaderV1 | X402HeaderV2;\n\n/**\n * EVM-specific payload in x402 header\n */\nexport interface X402EVMPayload {\n signature: string;\n authorization: {\n from: string;\n to: string;\n value: string;\n validAfter: string;\n validBefore: string;\n nonce: string;\n };\n}\n\n/**\n * Solana-specific payload in x402 header\n */\nexport interface X402SolanaPayload {\n transaction: string;\n}\n\n/**\n * Stellar-specific payload in x402 header\n */\nexport interface X402StellarPayload {\n from: string;\n to: string;\n amount: string;\n tokenContract: string;\n authorizationEntryXdr: string;\n nonce: number;\n signatureExpirationLedger: number;\n}\n\n/**\n * NEAR-specific payload in x402 header\n */\nexport interface X402NEARPayload {\n signedDelegateAction: string;\n}\n\n/**\n * Union of all x402 payload types\n */\nexport type X402PayloadData =\n | X402EVMPayload\n | X402SolanaPayload\n | X402StellarPayload\n | X402NEARPayload;\n\n// ============================================================================\n// CLIENT CONFIGURATION\n// ============================================================================\n\n/**\n * Multi-payment configuration for supporting multiple networks\n */\nexport interface MultiPaymentConfig {\n /** Networks to support (e.g., ['base', 'solana', 'stellar', 'near']) */\n networks: string[];\n /** Default network if user hasn't selected one */\n defaultNetwork?: string;\n /** Whether to auto-detect user's preferred network based on wallet */\n autoDetect?: boolean;\n}\n\n/**\n * SDK client configuration options\n */\nexport interface X402ClientConfig {\n /** Facilitator URL (default: https://facilitator.ultravioletadao.xyz) */\n facilitatorUrl?: string;\n /** Default chain to connect to */\n defaultChain?: string;\n /** Auto-connect on initialization */\n autoConnect?: boolean;\n /** Enable debug logging */\n debug?: boolean;\n /** Custom chain configurations (override defaults) */\n customChains?: Record<string, Partial<ChainConfig>>;\n /** Wallet preference order */\n walletPreference?: string[];\n /** Custom RPC URLs (override defaults) */\n rpcOverrides?: Record<string, string>;\n /**\n * x402 protocol version to use\n * - 1: Classic format with network as string (e.g., \"base\")\n * - 2: CAIP-2 format with accepts array (e.g., \"eip155:8453\")\n * - 'auto': Auto-detect from 402 response (default)\n */\n x402Version?: X402Version | 'auto';\n /** Multi-payment configuration for supporting multiple networks */\n multiPayment?: MultiPaymentConfig;\n}\n\n/**\n * Default configuration values\n */\nexport const DEFAULT_CONFIG: Required<Pick<X402ClientConfig, 'facilitatorUrl' | 'defaultChain' | 'autoConnect' | 'debug' | 'x402Version'>> = {\n facilitatorUrl: 'https://facilitator.ultravioletadao.xyz',\n defaultChain: 'base',\n autoConnect: false,\n debug: false,\n x402Version: 'auto',\n};\n\n// ============================================================================\n// BALANCE TYPES\n// ============================================================================\n\n/**\n * Balance information for a single network\n */\nexport interface NetworkBalance {\n /** Chain name */\n chainName: string;\n /** Human-readable display name */\n displayName: string;\n /** Formatted balance (e.g., \"15.50\") or null if loading/error */\n balance: string | null;\n /** Whether balance is currently being fetched */\n isLoading: boolean;\n /** Error message if fetch failed */\n error: string | null;\n}\n\n// ============================================================================\n// EVENT TYPES\n// ============================================================================\n\n/**\n * Events emitted by the SDK client\n */\nexport type X402Event =\n | 'connect'\n | 'disconnect'\n | 'chainChanged'\n | 'accountChanged'\n | 'balanceChanged'\n | 'paymentStarted'\n | 'paymentSigned'\n | 'paymentCompleted'\n | 'paymentFailed';\n\n/**\n * Event data types\n */\nexport interface X402EventData {\n connect: WalletState;\n disconnect: void;\n chainChanged: { chainId: number; chainName: string };\n accountChanged: { address: string };\n balanceChanged: { balance: string };\n paymentStarted: { amount: string; network: string };\n paymentSigned: { paymentHeader: string };\n paymentCompleted: PaymentResult;\n paymentFailed: { error: string; code: X402ErrorCode };\n}\n\n/**\n * Event handler type\n */\nexport type X402EventHandler<E extends X402Event> = (data: X402EventData[E]) => void;\n\n// ============================================================================\n// ERROR TYPES\n// ============================================================================\n\n/**\n * Error codes for categorizing errors\n */\nexport type X402ErrorCode =\n | 'WALLET_NOT_FOUND'\n | 'WALLET_NOT_CONNECTED'\n | 'WALLET_CONNECTION_REJECTED'\n | 'WALLET_CONNECTION_TIMEOUT'\n | 'CHAIN_NOT_SUPPORTED'\n | 'CHAIN_SWITCH_REJECTED'\n | 'INSUFFICIENT_BALANCE'\n | 'SIGNATURE_REJECTED'\n | 'PAYMENT_FAILED'\n | 'PAYMENT_TIMEOUT'\n | 'NETWORK_ERROR'\n | 'INVALID_CONFIG'\n | 'INVALID_AMOUNT'\n | 'INVALID_RECIPIENT'\n | 'UNKNOWN_ERROR';\n\n/**\n * SDK-specific error class\n */\nexport class X402Error extends Error {\n public readonly code: X402ErrorCode;\n public readonly details?: unknown;\n\n constructor(message: string, code: X402ErrorCode, details?: unknown) {\n super(message);\n this.name = 'X402Error';\n this.code = code;\n this.details = details;\n\n // Maintains proper stack trace for where error was thrown (V8 engines)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, X402Error);\n }\n }\n}\n","/**\n * uvd-x402-sdk - NEAR Provider\n *\n * Provides NEAR wallet connection and payment creation via MyNearWallet or Meteor.\n * Uses NEP-366 meta-transactions where the facilitator pays all gas fees.\n *\n * NEP-366 Flow:\n * 1. User creates a DelegateAction (ft_transfer on USDC contract)\n * 2. User signs the DelegateAction with their ED25519 key\n * 3. SignedDelegateAction is sent to facilitator\n * 4. Facilitator wraps it and submits to NEAR, paying all gas\n *\n * @example\n * ```ts\n * import { NEARProvider } from 'uvd-x402-sdk/near';\n * import { getChainByName } from 'uvd-x402-sdk';\n *\n * const near = new NEARProvider();\n *\n * // Connect\n * const accountId = await near.connect();\n *\n * // Create payment\n * const chainConfig = getChainByName('near')!;\n * const paymentPayload = await near.signPayment(paymentInfo, chainConfig);\n * const header = near.encodePaymentHeader(paymentPayload);\n * ```\n */\n\nimport type {\n ChainConfig,\n PaymentInfo,\n NEARPaymentPayload,\n WalletAdapter,\n} from '../../types';\nimport { X402Error } from '../../types';\n\n// NEAR configuration\nconst NEAR_CONFIG = {\n networkId: 'mainnet',\n nodeUrl: 'https://rpc.mainnet.near.org',\n walletUrl: 'https://wallet.mainnet.near.org',\n helperUrl: 'https://helper.mainnet.near.org',\n};\n\n// NEP-366 prefix: (2^30 + 366) as u32 little-endian\nconst NEP366_PREFIX = new Uint8Array([0x6e, 0x01, 0x00, 0x40]);\n\n/**\n * Simple Borsh serializer for NEAR transactions\n */\nclass BorshSerializer {\n private buffer: number[] = [];\n\n writeU8(value: number): void {\n this.buffer.push(value & 0xff);\n }\n\n writeU32(value: number): void {\n this.buffer.push(value & 0xff);\n this.buffer.push((value >> 8) & 0xff);\n this.buffer.push((value >> 16) & 0xff);\n this.buffer.push((value >> 24) & 0xff);\n }\n\n writeU64(value: bigint | number): void {\n const val = BigInt(value);\n for (let i = 0; i < 8; i++) {\n this.buffer.push(Number((val >> BigInt(i * 8)) & BigInt(0xff)));\n }\n }\n\n writeU128(value: bigint | number): void {\n const val = BigInt(value);\n for (let i = 0; i < 16; i++) {\n this.buffer.push(Number((val >> BigInt(i * 8)) & BigInt(0xff)));\n }\n }\n\n writeString(value: string): void {\n const encoded = new TextEncoder().encode(value);\n this.writeU32(encoded.length);\n this.buffer.push(...encoded);\n }\n\n writeFixedBytes(data: Uint8Array): void {\n this.buffer.push(...data);\n }\n\n writeBytes(data: Uint8Array): void {\n this.writeU32(data.length);\n this.buffer.push(...data);\n }\n\n getBytes(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n}\n\n/**\n * Serialize a NonDelegateAction for ft_transfer (NEP-366)\n */\nfunction serializeNonDelegateAction(\n receiverId: string,\n amount: bigint,\n memo?: string\n): Uint8Array {\n const args: Record<string, string> = {\n receiver_id: receiverId,\n amount: amount.toString(),\n };\n if (memo) {\n args.memo = memo;\n }\n const argsJson = new TextEncoder().encode(JSON.stringify(args));\n\n const ser = new BorshSerializer();\n ser.writeU8(2); // FunctionCall action type\n ser.writeString('ft_transfer');\n ser.writeBytes(argsJson);\n ser.writeU64(BigInt(30_000_000_000_000)); // 30 TGas\n ser.writeU128(BigInt(1)); // 1 yoctoNEAR deposit (required for ft_transfer)\n return ser.getBytes();\n}\n\n/**\n * Serialize a DelegateAction for NEP-366 meta-transactions\n */\nfunction serializeDelegateAction(\n senderId: string,\n receiverId: string,\n actionsBytes: Uint8Array,\n nonce: bigint,\n maxBlockHeight: bigint,\n publicKeyBytes: Uint8Array\n): Uint8Array {\n const ser = new BorshSerializer();\n ser.writeString(senderId);\n ser.writeString(receiverId);\n ser.writeU32(1); // 1 action\n ser.writeFixedBytes(actionsBytes);\n ser.writeU64(nonce);\n ser.writeU64(maxBlockHeight);\n ser.writeU8(0); // ED25519 key type\n ser.writeFixedBytes(publicKeyBytes);\n return ser.getBytes();\n}\n\n/**\n * Serialize a SignedDelegateAction for NEP-366\n */\nfunction serializeSignedDelegateAction(\n delegateActionBytes: Uint8Array,\n signatureBytes: Uint8Array\n): Uint8Array {\n const ser = new BorshSerializer();\n ser.writeFixedBytes(delegateActionBytes);\n ser.writeU8(0); // ED25519 signature type\n ser.writeFixedBytes(signatureBytes);\n return ser.getBytes();\n}\n\n/**\n * SHA-256 hash function\n */\nasync function sha256(data: Uint8Array): Promise<Uint8Array> {\n const hashBuffer = await crypto.subtle.digest('SHA-256', data as BufferSource);\n return new Uint8Array(hashBuffer);\n}\n\n/**\n * NEAR RPC call\n */\nasync function nearRpcCall<T>(\n rpcUrl: string,\n method: string,\n params: Record<string, unknown>\n): Promise<T> {\n const response = await fetch(rpcUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 'dontcare',\n method,\n params,\n }),\n });\n\n const data = await response.json();\n if (data.error) {\n throw new Error(`NEAR RPC error: ${JSON.stringify(data.error)}`);\n }\n return data.result as T;\n}\n\n/**\n * NEAR wallet selector interface\n */\ninterface NEARWalletSelector {\n isSignedIn(): boolean;\n getAccountId(): string | null;\n signIn(options?: { contractId?: string }): Promise<void>;\n signOut(): Promise<void>;\n}\n\n/**\n * MyNearWallet interface\n */\ninterface MyNearWallet {\n isInstalled?: () => boolean;\n signIn?: (options?: { contractId?: string }) => Promise<{ accountId: string }>;\n signOut?: () => Promise<void>;\n getAccountId?: () => string | null;\n signMessage?: (params: {\n message: Uint8Array;\n recipient: string;\n nonce: Uint8Array;\n }) => Promise<{ signature: Uint8Array; publicKey: string }>;\n}\n\n/**\n * NEARProvider - Wallet adapter for NEAR Protocol via MyNearWallet/Meteor\n */\nexport class NEARProvider implements WalletAdapter {\n readonly id = 'near-wallet';\n readonly name = 'NEAR Wallet';\n readonly networkType = 'near' as const;\n\n private accountId: string | null = null;\n private publicKey: Uint8Array | null = null;\n private rpcUrl: string = NEAR_CONFIG.nodeUrl;\n\n /**\n * Check if NEAR wallet is available\n */\n isAvailable(): boolean {\n if (typeof window === 'undefined') return false;\n // Check for NEAR wallet selector or injected wallet\n const win = window as Window & {\n nearWalletSelector?: NEARWalletSelector;\n myNearWallet?: MyNearWallet;\n near?: { wallet?: NEARWalletSelector };\n };\n return !!(\n win.nearWalletSelector ||\n win.myNearWallet?.isInstalled?.() ||\n win.near?.wallet\n );\n }\n\n /**\n * Connect to NEAR wallet\n */\n async connect(): Promise<string> {\n // Try to get wallet from window\n const win = window as Window & {\n nearWalletSelector?: NEARWalletSelector;\n myNearWallet?: MyNearWallet;\n near?: { wallet?: NEARWalletSelector };\n };\n\n try {\n // Try NEAR wallet selector first\n if (win.nearWalletSelector) {\n if (!win.nearWalletSelector.isSignedIn()) {\n await win.nearWalletSelector.signIn();\n }\n const accountId = win.nearWalletSelector.getAccountId();\n if (!accountId) {\n throw new X402Error('Failed to get NEAR account ID', 'WALLET_CONNECTION_REJECTED');\n }\n this.accountId = accountId;\n await this.fetchPublicKey();\n return accountId;\n }\n\n // Try MyNearWallet\n if (win.myNearWallet?.signIn) {\n const result = await win.myNearWallet.signIn();\n this.accountId = result.accountId;\n await this.fetchPublicKey();\n return result.accountId;\n }\n\n // Try legacy near.wallet\n if (win.near?.wallet) {\n if (!win.near.wallet.isSignedIn()) {\n await win.near.wallet.signIn();\n }\n const accountId = win.near.wallet.getAccountId();\n if (!accountId) {\n throw new X402Error('Failed to get NEAR account ID', 'WALLET_CONNECTION_REJECTED');\n }\n this.accountId = accountId;\n await this.fetchPublicKey();\n return accountId;\n }\n\n throw new X402Error(\n 'No NEAR wallet found. Please install MyNearWallet or Meteor.',\n 'WALLET_NOT_FOUND'\n );\n } catch (error: unknown) {\n if (error instanceof X402Error) throw error;\n\n if (error instanceof Error) {\n if (error.message.includes('User rejected') || error.message.includes('cancelled')) {\n throw new X402Error('Connection rejected by user', 'WALLET_CONNECTION_REJECTED');\n }\n }\n\n throw new X402Error(\n `Failed to connect NEAR wallet: ${error instanceof Error ? error.message : 'Unknown error'}`,\n 'UNKNOWN_ERROR',\n error\n );\n }\n }\n\n /**\n * Disconnect from NEAR wallet\n */\n async disconnect(): Promise<void> {\n const win = window as Window & {\n nearWalletSelector?: NEARWalletSelector;\n myNearWallet?: MyNearWallet;\n near?: { wallet?: NEARWalletSelector };\n };\n\n try {\n if (win.nearWalletSelector) {\n await win.nearWalletSelector.signOut();\n } else if (win.myNearWallet?.signOut) {\n await win.myNearWallet.signOut();\n } else if (win.near?.wallet) {\n await win.near.wallet.signOut();\n }\n } catch {\n // Ignore disconnect errors\n }\n\n this.accountId = null;\n this.publicKey = null;\n }\n\n /**\n * Get current account ID\n */\n getAddress(): string | null {\n return this.accountId;\n }\n\n /**\n * Get USDC balance on NEAR\n */\n async getBalance(chainConfig: ChainConfig): Promise<string> {\n if (!this.accountId) {\n throw new X402Error('Wallet not connected', 'WALLET_NOT_CONNECTED');\n }\n\n try {\n const args = JSON.stringify({ account_id: this.accountId });\n const argsBase64 = btoa(args);\n\n const result = await nearRpcCall<{ result: number[] }>(\n chainConfig.rpcUrl || this.rpcUrl,\n 'query',\n {\n request_type: 'call_function',\n finality: 'final',\n account_id: chainConfig.usdc.address,\n method_name: 'ft_balance_of',\n args_base64: argsBase64,\n }\n );\n\n const resultBytes = new Uint8Array(result.result);\n const balanceStr = new TextDecoder().decode(resultBytes).replace(/\"/g, '');\n const balance = Number(balanceStr) / Math.pow(10, chainConfig.usdc.decimals);\n\n return balance.toFixed(2);\n } catch {\n return '0.00';\n }\n }\n\n /**\n * Create NEAR payment (NEP-366 SignedDelegateAction)\n *\n * User signs a DelegateAction that authorizes ft_transfer.\n * Facilitator wraps this and submits to NEAR, paying all gas fees.\n */\n async signPayment(paymentInfo: PaymentInfo, chainConfig: ChainConfig): Promise<string> {\n if (!this.accountId || !this.publicKey) {\n throw new X402Error('Wallet not connected', 'WALLET_NOT_CONNECTED');\n }\n\n // Get recipient\n const recipient = paymentInfo.recipients?.near || paymentInfo.recipient;\n\n // Parse amount (6 decimals for USDC)\n const amount = BigInt(Math.floor(parseFloat(paymentInfo.amount) * 1_000_000));\n\n try {\n // Get access key nonce\n const accessKey = await this.getAccessKeyNonce();\n const nonce = BigInt(accessKey.nonce) + BigInt(1);\n\n // Get current block height\n const block = await this.getLatestBlock();\n const maxBlockHeight = BigInt(block.header.height) + BigInt(1000);\n\n // Serialize ft_transfer action\n const actionBytes = serializeNonDelegateAction(\n recipient,\n amount,\n 'x402 payment via uvd-x402-sdk'\n );\n\n // Serialize DelegateAction\n const delegateActionBytes = serializeDelegateAction(\n this.accountId,\n chainConfig.usdc.address, // USDC contract\n actionBytes,\n nonce,\n maxBlockHeight,\n this.publicKey\n );\n\n // Create hash for signing (NEP-366 prefix + delegateAction)\n const hashInput = new Uint8Array(NEP366_PREFIX.length + delegateActionBytes.length);\n hashInput.set(NEP366_PREFIX, 0);\n hashInput.set(delegateActionBytes, NEP366_PREFIX.length);\n const delegateHash = await sha256(hashInput);\n\n // Sign the hash\n const signature = await this.signMessage(delegateHash);\n\n // Serialize SignedDelegateAction\n const signedDelegateActionBytes = serializeSignedDelegateAction(\n delegateActionBytes,\n signature\n );\n\n // Base64 encode\n const signedDelegateB64 = btoa(\n String.fromCharCode(...signedDelegateActionBytes)\n );\n\n const payload: NEARPaymentPayload = {\n signedDelegateAction: signedDelegateB64,\n network: 'near',\n };\n\n return JSON.stringify(payload);\n } catch (error: unknown) {\n if (error instanceof X402Error) throw error;\n\n if (error instanceof Error) {\n if (error.message.includes('User rejected') || error.message.includes('cancelled')) {\n throw new X402Error('Signature rejected by user', 'SIGNATURE_REJECTED');\n }\n }\n\n throw new X402Error(\n `Failed to create NEAR payment: ${error instanceof Error ? error.message : 'Unknown error'}`,\n 'PAYMENT_FAILED',\n error\n );\n }\n }\n\n /**\n * Encode NEAR payment as X-PAYMENT header\n */\n encodePaymentHeader(paymentPayload: string): string {\n const payload = JSON.parse(paymentPayload) as NEARPaymentPayload;\n\n const x402Payload = {\n x402Version: 1,\n scheme: 'exact',\n network: 'near',\n payload: {\n signedDelegateAction: payload.signedDelegateAction,\n },\n };\n\n return btoa(JSON.stringify(x402Payload));\n }\n\n // Private helpers\n\n /**\n * Fetch public key from NEAR RPC\n */\n private async fetchPublicKey(): Promise<void> {\n if (!this.accountId) return;\n\n try {\n const result = await nearRpcCall<{ keys: Array<{ public_key: string }> }>(\n this.rpcUrl,\n 'query',\n {\n request_type: 'view_access_key_list',\n finality: 'final',\n account_id: this.accountId,\n }\n );\n\n if (result.keys && result.keys.length > 0) {\n // Get first full access key\n const keyStr = result.keys[0].public_key;\n // Remove ed25519: prefix and decode base58\n const keyB58 = keyStr.replace('ed25519:', '');\n this.publicKey = this.base58Decode(keyB58);\n }\n } catch {\n // Will be set during signing if not available\n }\n }\n\n /**\n * Get access key nonce from NEAR RPC\n */\n private async getAccessKeyNonce(): Promise<{ nonce: number }> {\n if (!this.accountId || !this.publicKey) {\n throw new Error('Account not connected');\n }\n\n const publicKeyB58 = this.base58Encode(this.publicKey);\n\n const result = await nearRpcCall<{ nonce: number }>(\n this.rpcUrl,\n 'query',\n {\n request_type: 'view_access_key',\n finality: 'final',\n account_id: this.accountId,\n public_key: `ed25519:${publicKeyB58}`,\n }\n );\n\n return result;\n }\n\n /**\n * Get latest block from NEAR RPC\n */\n private async getLatestBlock(): Promise<{ header: { height: number } }> {\n return nearRpcCall(this.rpcUrl, 'block', { finality: 'final' });\n }\n\n /**\n * Sign a message using the connected wallet\n */\n private async signMessage(message: Uint8Array): Promise<Uint8Array> {\n const win = window as Window & {\n nearWalletSelector?: NEARWalletSelector;\n myNearWallet?: MyNearWallet;\n };\n\n // Try MyNearWallet signMessage\n if (win.myNearWallet?.signMessage) {\n const result = await win.myNearWallet.signMessage({\n message,\n recipient: 'uvd-x402-sdk',\n nonce: crypto.getRandomValues(new Uint8Array(32)),\n });\n return result.signature;\n }\n\n // For other wallets, we need to use the @near-js/crypto library\n // This will be handled by the wallet selector\n throw new X402Error(\n 'Signing not supported. Please use MyNearWallet or install @near-wallet-selector/core',\n 'PAYMENT_FAILED'\n );\n }\n\n /**\n * Base58 decode (NEAR style)\n */\n private base58Decode(str: string): Uint8Array {\n const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n const ALPHABET_MAP: Record<string, number> = {};\n for (let i = 0; i < ALPHABET.length; i++) {\n ALPHABET_MAP[ALPHABET[i]] = i;\n }\n\n let bytes: number[] = [0];\n for (let i = 0; i < str.length; i++) {\n const value = ALPHABET_MAP[str[i]];\n if (value === undefined) {\n throw new Error(`Invalid base58 character: ${str[i]}`);\n }\n\n for (let j = 0; j < bytes.length; j++) {\n bytes[j] *= 58;\n }\n bytes[0] += value;\n\n let carry = 0;\n for (let j = 0; j < bytes.length; j++) {\n bytes[j] += carry;\n carry = bytes[j] >> 8;\n bytes[j] &= 0xff;\n }\n\n while (carry) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // Handle leading zeros\n for (let i = 0; i < str.length && str[i] === '1'; i++) {\n bytes.push(0);\n }\n\n return new Uint8Array(bytes.reverse());\n }\n\n /**\n * Base58 encode (NEAR style)\n */\n private base58Encode(bytes: Uint8Array): string {\n const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\n let digits = [0];\n for (let i = 0; i < bytes.length; i++) {\n for (let j = 0; j < digits.length; j++) {\n digits[j] <<= 8;\n }\n digits[0] += bytes[i];\n\n let carry = 0;\n for (let j = 0; j < digits.length; j++) {\n digits[j] += carry;\n carry = (digits[j] / 58) | 0;\n digits[j] %= 58;\n }\n\n while (carry) {\n digits.push(carry % 58);\n carry = (carry / 58) | 0;\n }\n }\n\n // Handle leading zeros\n let str = '';\n for (let i = 0; i < bytes.length && bytes[i] === 0; i++) {\n str += '1';\n }\n\n for (let i = digits.length - 1; i >= 0; i--) {\n str += ALPHABET[digits[i]];\n }\n\n return str;\n }\n}\n\nexport default NEARProvider;\n"]}
@@ -1,4 +1,4 @@
1
- import { b as WalletAdapter, C as ChainConfig, P as PaymentInfo } from '../../index-MTBgC_SL.mjs';
1
+ import { c as WalletAdapter, C as ChainConfig, P as PaymentInfo } from '../../index-BHwtdJrt.mjs';
2
2
 
3
3
  /**
4
4
  * uvd-x402-sdk - SVM Provider (Solana Virtual Machine)
@@ -1,4 +1,4 @@
1
- import { b as WalletAdapter, C as ChainConfig, P as PaymentInfo } from '../../index-MTBgC_SL.js';
1
+ import { c as WalletAdapter, C as ChainConfig, P as PaymentInfo } from '../../index-BHwtdJrt.js';
2
2
 
3
3
  /**
4
4
  * uvd-x402-sdk - SVM Provider (Solana Virtual Machine)
@@ -65,6 +65,26 @@ var SUPPORTED_CHAINS = {
65
65
  name: "USD Coin",
66
66
  version: "2"
67
67
  },
68
+ tokens: {
69
+ usdc: {
70
+ address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
71
+ decimals: 6,
72
+ name: "USD Coin",
73
+ version: "2"
74
+ },
75
+ eurc: {
76
+ address: "0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",
77
+ decimals: 6,
78
+ name: "EURC",
79
+ version: "2"
80
+ },
81
+ gho: {
82
+ address: "0x6Bb7a212910682DCFdbd5BCBb3e28FB4E8da10Ee",
83
+ decimals: 18,
84
+ name: "Gho Token",
85
+ version: "1"
86
+ }
87
+ },
68
88
  x402: {
69
89
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
70
90
  enabled: true
@@ -89,6 +109,26 @@ var SUPPORTED_CHAINS = {
89
109
  name: "USD Coin",
90
110
  version: "2"
91
111
  },
112
+ tokens: {
113
+ usdc: {
114
+ address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
115
+ decimals: 6,
116
+ name: "USD Coin",
117
+ version: "2"
118
+ },
119
+ eurc: {
120
+ address: "0xC891EB4cbdEFf6e073e859e987815Ed1505c2ACD",
121
+ decimals: 6,
122
+ name: "EURC",
123
+ version: "2"
124
+ },
125
+ ausd: {
126
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
127
+ decimals: 6,
128
+ name: "Agora USD",
129
+ version: "1"
130
+ }
131
+ },
92
132
  x402: {
93
133
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
94
134
  enabled: true
@@ -113,6 +153,44 @@ var SUPPORTED_CHAINS = {
113
153
  name: "USD Coin",
114
154
  version: "2"
115
155
  },
156
+ tokens: {
157
+ usdc: {
158
+ address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
159
+ decimals: 6,
160
+ name: "USD Coin",
161
+ version: "2"
162
+ },
163
+ eurc: {
164
+ address: "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c",
165
+ decimals: 6,
166
+ name: "EURC",
167
+ version: "2"
168
+ },
169
+ ausd: {
170
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
171
+ decimals: 6,
172
+ name: "Agora USD",
173
+ version: "1"
174
+ },
175
+ pyusd: {
176
+ address: "0x6c3ea9036406852006290770BEdFcAbA0e23A0e8",
177
+ decimals: 6,
178
+ name: "PayPal USD",
179
+ version: "1"
180
+ },
181
+ gho: {
182
+ address: "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f",
183
+ decimals: 18,
184
+ name: "Gho Token",
185
+ version: "1"
186
+ },
187
+ crvusd: {
188
+ address: "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E",
189
+ decimals: 18,
190
+ name: "Curve.Fi USD Stablecoin",
191
+ version: "1"
192
+ }
193
+ },
116
194
  x402: {
117
195
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
118
196
  enabled: true
@@ -137,6 +215,20 @@ var SUPPORTED_CHAINS = {
137
215
  name: "USD Coin",
138
216
  version: "2"
139
217
  },
218
+ tokens: {
219
+ usdc: {
220
+ address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
221
+ decimals: 6,
222
+ name: "USD Coin",
223
+ version: "2"
224
+ },
225
+ ausd: {
226
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
227
+ decimals: 6,
228
+ name: "Agora USD",
229
+ version: "1"
230
+ }
231
+ },
140
232
  x402: {
141
233
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
142
234
  enabled: true
@@ -161,6 +253,32 @@ var SUPPORTED_CHAINS = {
161
253
  name: "USD Coin",
162
254
  version: "2"
163
255
  },
256
+ tokens: {
257
+ usdc: {
258
+ address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
259
+ decimals: 6,
260
+ name: "USD Coin",
261
+ version: "2"
262
+ },
263
+ ausd: {
264
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
265
+ decimals: 6,
266
+ name: "Agora USD",
267
+ version: "1"
268
+ },
269
+ gho: {
270
+ address: "0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33",
271
+ decimals: 18,
272
+ name: "Gho Token",
273
+ version: "1"
274
+ },
275
+ crvusd: {
276
+ address: "0x498Bf2B1e120FeD3ad3D42EA2165E9b73f99C1e5",
277
+ decimals: 18,
278
+ name: "Curve.Fi USD Stablecoin",
279
+ version: "1"
280
+ }
281
+ },
164
282
  x402: {
165
283
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
166
284
  enabled: true
@@ -185,6 +303,14 @@ var SUPPORTED_CHAINS = {
185
303
  name: "USD Coin",
186
304
  version: "2"
187
305
  },
306
+ tokens: {
307
+ usdc: {
308
+ address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
309
+ decimals: 6,
310
+ name: "USD Coin",
311
+ version: "2"
312
+ }
313
+ },
188
314
  x402: {
189
315
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
190
316
  enabled: true
@@ -210,6 +336,15 @@ var SUPPORTED_CHAINS = {
210
336
  // Celo uses "USDC" not "USD Coin" for EIP-712
211
337
  version: "2"
212
338
  },
339
+ tokens: {
340
+ usdc: {
341
+ address: "0xcebA9300f2b948710d2653dD7B07f33A8B32118C",
342
+ decimals: 6,
343
+ name: "USDC",
344
+ // Celo uses "USDC" not "USD Coin" for EIP-712
345
+ version: "2"
346
+ }
347
+ },
213
348
  x402: {
214
349
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
215
350
  enabled: true
@@ -235,6 +370,15 @@ var SUPPORTED_CHAINS = {
235
370
  // HyperEVM uses "USDC" not "USD Coin"
236
371
  version: "2"
237
372
  },
373
+ tokens: {
374
+ usdc: {
375
+ address: "0xb88339CB7199b77E23DB6E890353E22632Ba630f",
376
+ decimals: 6,
377
+ name: "USDC",
378
+ // HyperEVM uses "USDC" not "USD Coin"
379
+ version: "2"
380
+ }
381
+ },
238
382
  x402: {
239
383
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
240
384
  enabled: true
@@ -260,6 +404,15 @@ var SUPPORTED_CHAINS = {
260
404
  // Unichain uses "USDC" not "USD Coin"
261
405
  version: "2"
262
406
  },
407
+ tokens: {
408
+ usdc: {
409
+ address: "0x078d782b760474a361dda0af3839290b0ef57ad6",
410
+ decimals: 6,
411
+ name: "USDC",
412
+ // Unichain uses "USDC" not "USD Coin"
413
+ version: "2"
414
+ }
415
+ },
263
416
  x402: {
264
417
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
265
418
  enabled: true
@@ -285,6 +438,21 @@ var SUPPORTED_CHAINS = {
285
438
  // Monad uses "USDC" not "USD Coin"
286
439
  version: "2"
287
440
  },
441
+ tokens: {
442
+ usdc: {
443
+ address: "0x754704bc059f8c67012fed69bc8a327a5aafb603",
444
+ decimals: 6,
445
+ name: "USDC",
446
+ // Monad uses "USDC" not "USD Coin"
447
+ version: "2"
448
+ },
449
+ ausd: {
450
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
451
+ decimals: 6,
452
+ name: "Agora USD",
453
+ version: "1"
454
+ }
455
+ },
288
456
  x402: {
289
457
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
290
458
  enabled: true