uvd-x402-sdk 2.1.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +280 -15
  2. package/dist/adapters/index.d.mts +1 -1
  3. package/dist/adapters/index.d.ts +1 -1
  4. package/dist/adapters/index.js +138 -0
  5. package/dist/adapters/index.js.map +1 -1
  6. package/dist/adapters/index.mjs +138 -0
  7. package/dist/adapters/index.mjs.map +1 -1
  8. package/dist/{index-MTBgC_SL.d.mts → index-BG738nMY.d.mts} +43 -4
  9. package/dist/{index-MTBgC_SL.d.ts → index-BG738nMY.d.ts} +43 -4
  10. package/dist/{index-Db8dWNam.d.ts → index-I60aHxwu.d.mts} +33 -2
  11. package/dist/{index-D0N_SYpK.d.mts → index-OZTSi1rJ.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 +180 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/index.mjs +177 -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 +198 -12
  21. package/dist/providers/evm/index.js.map +1 -1
  22. package/dist/providers/evm/index.mjs +198 -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 +138 -0
  31. package/dist/providers/solana/index.js.map +1 -1
  32. package/dist/providers/solana/index.mjs +138 -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 +138 -0
  41. package/dist/react/index.js.map +1 -1
  42. package/dist/react/index.mjs +138 -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 +138 -0
  47. package/dist/utils/index.js.map +1 -1
  48. package/dist/utils/index.mjs +138 -0
  49. package/dist/utils/index.mjs.map +1 -1
  50. package/package.json +5 -2
  51. package/src/chains/index.ts +225 -1
  52. package/src/index.ts +9 -0
  53. package/src/providers/evm/index.ts +64 -16
  54. package/src/types/index.ts +44 -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":"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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 * 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 */\nexport type TokenType = 'usdc' | 'eurc' | 'ausd' | 'pyusd';\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 all supported stablecoins) */\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-BG738nMY.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-BG738nMY.js';
2
2
 
3
3
  /**
4
4
  * uvd-x402-sdk - SVM Provider (Solana Virtual Machine)
@@ -65,6 +65,20 @@ 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
+ },
68
82
  x402: {
69
83
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
70
84
  enabled: true
@@ -89,6 +103,26 @@ var SUPPORTED_CHAINS = {
89
103
  name: "USD Coin",
90
104
  version: "2"
91
105
  },
106
+ tokens: {
107
+ usdc: {
108
+ address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
109
+ decimals: 6,
110
+ name: "USD Coin",
111
+ version: "2"
112
+ },
113
+ eurc: {
114
+ address: "0xC891EB4cbdEFf6e073e859e987815Ed1505c2ACD",
115
+ decimals: 6,
116
+ name: "EURC",
117
+ version: "2"
118
+ },
119
+ ausd: {
120
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
121
+ decimals: 6,
122
+ name: "Agora USD",
123
+ version: "1"
124
+ }
125
+ },
92
126
  x402: {
93
127
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
94
128
  enabled: true
@@ -113,6 +147,32 @@ var SUPPORTED_CHAINS = {
113
147
  name: "USD Coin",
114
148
  version: "2"
115
149
  },
150
+ tokens: {
151
+ usdc: {
152
+ address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
153
+ decimals: 6,
154
+ name: "USD Coin",
155
+ version: "2"
156
+ },
157
+ eurc: {
158
+ address: "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c",
159
+ decimals: 6,
160
+ name: "EURC",
161
+ version: "2"
162
+ },
163
+ ausd: {
164
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
165
+ decimals: 6,
166
+ name: "Agora USD",
167
+ version: "1"
168
+ },
169
+ pyusd: {
170
+ address: "0x6c3ea9036406852006290770BEdFcAbA0e23A0e8",
171
+ decimals: 6,
172
+ name: "PayPal USD",
173
+ version: "1"
174
+ }
175
+ },
116
176
  x402: {
117
177
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
118
178
  enabled: true
@@ -137,6 +197,20 @@ var SUPPORTED_CHAINS = {
137
197
  name: "USD Coin",
138
198
  version: "2"
139
199
  },
200
+ tokens: {
201
+ usdc: {
202
+ address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
203
+ decimals: 6,
204
+ name: "USD Coin",
205
+ version: "2"
206
+ },
207
+ ausd: {
208
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
209
+ decimals: 6,
210
+ name: "Agora USD",
211
+ version: "1"
212
+ }
213
+ },
140
214
  x402: {
141
215
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
142
216
  enabled: true
@@ -161,6 +235,20 @@ var SUPPORTED_CHAINS = {
161
235
  name: "USD Coin",
162
236
  version: "2"
163
237
  },
238
+ tokens: {
239
+ usdc: {
240
+ address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
241
+ decimals: 6,
242
+ name: "USD Coin",
243
+ version: "2"
244
+ },
245
+ ausd: {
246
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
247
+ decimals: 6,
248
+ name: "Agora USD",
249
+ version: "1"
250
+ }
251
+ },
164
252
  x402: {
165
253
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
166
254
  enabled: true
@@ -185,6 +273,14 @@ var SUPPORTED_CHAINS = {
185
273
  name: "USD Coin",
186
274
  version: "2"
187
275
  },
276
+ tokens: {
277
+ usdc: {
278
+ address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
279
+ decimals: 6,
280
+ name: "USD Coin",
281
+ version: "2"
282
+ }
283
+ },
188
284
  x402: {
189
285
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
190
286
  enabled: true
@@ -210,6 +306,15 @@ var SUPPORTED_CHAINS = {
210
306
  // Celo uses "USDC" not "USD Coin" for EIP-712
211
307
  version: "2"
212
308
  },
309
+ tokens: {
310
+ usdc: {
311
+ address: "0xcebA9300f2b948710d2653dD7B07f33A8B32118C",
312
+ decimals: 6,
313
+ name: "USDC",
314
+ // Celo uses "USDC" not "USD Coin" for EIP-712
315
+ version: "2"
316
+ }
317
+ },
213
318
  x402: {
214
319
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
215
320
  enabled: true
@@ -235,6 +340,15 @@ var SUPPORTED_CHAINS = {
235
340
  // HyperEVM uses "USDC" not "USD Coin"
236
341
  version: "2"
237
342
  },
343
+ tokens: {
344
+ usdc: {
345
+ address: "0xb88339CB7199b77E23DB6E890353E22632Ba630f",
346
+ decimals: 6,
347
+ name: "USDC",
348
+ // HyperEVM uses "USDC" not "USD Coin"
349
+ version: "2"
350
+ }
351
+ },
238
352
  x402: {
239
353
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
240
354
  enabled: true
@@ -260,6 +374,15 @@ var SUPPORTED_CHAINS = {
260
374
  // Unichain uses "USDC" not "USD Coin"
261
375
  version: "2"
262
376
  },
377
+ tokens: {
378
+ usdc: {
379
+ address: "0x078d782b760474a361dda0af3839290b0ef57ad6",
380
+ decimals: 6,
381
+ name: "USDC",
382
+ // Unichain uses "USDC" not "USD Coin"
383
+ version: "2"
384
+ }
385
+ },
263
386
  x402: {
264
387
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
265
388
  enabled: true
@@ -285,6 +408,21 @@ var SUPPORTED_CHAINS = {
285
408
  // Monad uses "USDC" not "USD Coin"
286
409
  version: "2"
287
410
  },
411
+ tokens: {
412
+ usdc: {
413
+ address: "0x754704bc059f8c67012fed69bc8a327a5aafb603",
414
+ decimals: 6,
415
+ name: "USDC",
416
+ // Monad uses "USDC" not "USD Coin"
417
+ version: "2"
418
+ },
419
+ ausd: {
420
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
421
+ decimals: 6,
422
+ name: "Agora USD",
423
+ version: "1"
424
+ }
425
+ },
288
426
  x402: {
289
427
  facilitatorUrl: DEFAULT_FACILITATOR_URL,
290
428
  enabled: true