@wazabiai/x402 0.1.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.
- package/LICENSE +21 -0
- package/README.md +356 -0
- package/dist/bnb-BhqGnGQ1.d.cts +98 -0
- package/dist/bnb-SixQcDqs.d.ts +98 -0
- package/dist/chains/index.cjs +147 -0
- package/dist/chains/index.cjs.map +1 -0
- package/dist/chains/index.d.cts +23 -0
- package/dist/chains/index.d.ts +23 -0
- package/dist/chains/index.js +121 -0
- package/dist/chains/index.js.map +1 -0
- package/dist/client/index.cjs +429 -0
- package/dist/client/index.cjs.map +1 -0
- package/dist/client/index.d.cts +69 -0
- package/dist/client/index.d.ts +69 -0
- package/dist/client/index.js +412 -0
- package/dist/client/index.js.map +1 -0
- package/dist/index.cjs +803 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +9 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +750 -0
- package/dist/index.js.map +1 -0
- package/dist/server/index.cjs +474 -0
- package/dist/server/index.cjs.map +1 -0
- package/dist/server/index.d.cts +58 -0
- package/dist/server/index.d.ts +58 -0
- package/dist/server/index.js +455 -0
- package/dist/server/index.js.map +1 -0
- package/dist/types/index.cjs +158 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +408 -0
- package/dist/types/index.d.ts +408 -0
- package/dist/types/index.js +141 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +121 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/index.ts","../src/chains/bnb.ts","../src/chains/index.ts","../src/client/index.ts","../src/server/index.ts"],"names":["z","axios","privateKeyToAccount","createWalletClient","bsc","http","verifyTypedData"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\n/**\n * x402 Protocol Version\n */\nexport const X402_VERSION = '2.0.0' as const;\n\n/**\n * EIP-712 Domain name for x402 protocol\n */\nexport const X402_DOMAIN_NAME = 'x402' as const;\n\n/**\n * HTTP Header names used in x402 protocol\n */\nexport const X402_HEADERS = {\n PAYMENT_REQUIRED: 'x-payment-required',\n PAYMENT_SIGNATURE: 'x-payment-signature',\n PAYMENT_PAYLOAD: 'x-payment-payload',\n} as const;\n\n// ============================================================================\n// Network Configuration Types\n// ============================================================================\n\n/**\n * Supported token symbol types\n */\nexport type TokenSymbol = 'USDT' | 'USDC' | 'BNB' | 'BUSD';\n\n/**\n * Token configuration for a specific blockchain\n */\nexport interface TokenConfig {\n /** Token contract address (0x...) */\n address: `0x${string}`;\n /** Token symbol */\n symbol: TokenSymbol;\n /** Token decimals (typically 18 for most tokens) */\n decimals: number;\n /** Human-readable token name */\n name: string;\n}\n\n/**\n * Network configuration for a specific blockchain\n */\nexport interface NetworkConfig {\n /** CAIP-2 chain identifier (e.g., 'eip155:56' for BSC) */\n caipId: string;\n /** Numeric chain ID */\n chainId: number;\n /** Human-readable network name */\n name: string;\n /** Default RPC URL */\n rpcUrl: string;\n /** Native currency symbol */\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n };\n /** Block explorer URL */\n blockExplorer: string;\n /** Supported tokens on this network */\n tokens: Record<string, TokenConfig>;\n}\n\n// ============================================================================\n// Payment Requirement Types\n// ============================================================================\n\n/**\n * Zod schema for PaymentRequirement validation\n */\nexport const PaymentRequirementSchema = z.object({\n /** Payment amount in smallest token unit (wei/satoshi) as string */\n amount: z.string().regex(/^\\d+$/, 'Amount must be a numeric string'),\n /** Token contract address */\n token: z.string().regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid token address'),\n /** CAIP-2 network identifier */\n network_id: z.string().regex(/^eip155:\\d+$/, 'Invalid CAIP-2 network ID'),\n /** Recipient address for payment */\n pay_to: z.string().regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid recipient address'),\n /** Optional: Payment description */\n description: z.string().optional(),\n /** Optional: Resource identifier being accessed */\n resource: z.string().optional(),\n /** Optional: Expiration timestamp (Unix epoch seconds) */\n expires_at: z.number().int().positive().optional(),\n /** Optional: Unique nonce to prevent replay attacks */\n nonce: z.string().optional(),\n /** Protocol version */\n version: z.string().optional(),\n});\n\n/**\n * Payment requirement structure returned in 402 response header\n */\nexport type PaymentRequirement = z.infer<typeof PaymentRequirementSchema>;\n\n// ============================================================================\n// EIP-712 Payment Payload Types\n// ============================================================================\n\n/**\n * EIP-712 Domain structure for x402 protocol\n */\nexport interface X402Domain {\n name: typeof X402_DOMAIN_NAME;\n version: string;\n chainId: number;\n verifyingContract?: `0x${string}`;\n}\n\n/**\n * Zod schema for PaymentPayload validation\n */\nexport const PaymentPayloadSchema = z.object({\n /** Payment amount in smallest token unit */\n amount: z.string().regex(/^\\d+$/, 'Amount must be a numeric string'),\n /** Token contract address */\n token: z.string().regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid token address'),\n /** Chain ID (numeric) */\n chainId: z.number().int().positive(),\n /** Recipient address */\n payTo: z.string().regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid recipient address'),\n /** Payer address (signer) */\n payer: z.string().regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid payer address'),\n /** Unix timestamp when payment expires */\n deadline: z.number().int().positive(),\n /** Unique nonce to prevent replay attacks */\n nonce: z.string(),\n /** Optional: Resource being accessed */\n resource: z.string().optional(),\n});\n\n/**\n * EIP-712 typed data payload for signing\n */\nexport type PaymentPayload = z.infer<typeof PaymentPayloadSchema>;\n\n/**\n * EIP-712 type definitions for Payment message\n */\nexport const PAYMENT_TYPES = {\n Payment: [\n { name: 'amount', type: 'uint256' },\n { name: 'token', type: 'address' },\n { name: 'chainId', type: 'uint256' },\n { name: 'payTo', type: 'address' },\n { name: 'payer', type: 'address' },\n { name: 'deadline', type: 'uint256' },\n { name: 'nonce', type: 'string' },\n { name: 'resource', type: 'string' },\n ],\n} as const;\n\n// ============================================================================\n// Signed Payment Types\n// ============================================================================\n\n/**\n * Complete signed payment ready to be sent as header\n */\nexport interface SignedPayment {\n /** The payment payload that was signed */\n payload: PaymentPayload;\n /** EIP-712 signature (0x prefixed) */\n signature: `0x${string}`;\n /** Address of the signer */\n signer: `0x${string}`;\n}\n\n/**\n * Zod schema for SignedPayment validation\n */\nexport const SignedPaymentSchema = z.object({\n payload: PaymentPayloadSchema,\n signature: z.string().regex(/^0x[a-fA-F0-9]+$/, 'Invalid signature format'),\n signer: z.string().regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid signer address'),\n});\n\n// ============================================================================\n// Client Configuration Types\n// ============================================================================\n\n/**\n * Configuration options for X402Client\n */\nexport interface X402ClientConfig {\n /** Private key for signing (hex string with or without 0x prefix) */\n privateKey?: string;\n /** Custom RPC URL to use instead of default */\n rpcUrl?: string;\n /** Supported network IDs (defaults to ['eip155:56']) */\n supportedNetworks?: string[];\n /** Default deadline duration in seconds (default: 300 = 5 minutes) */\n defaultDeadline?: number;\n /** Auto-retry on 402 response (default: true) */\n autoRetry?: boolean;\n /** Maximum retries for payment (default: 1) */\n maxRetries?: number;\n /** Custom axios instance configuration */\n axiosConfig?: Record<string, unknown>;\n /** Callback when payment is required */\n onPaymentRequired?: (requirement: PaymentRequirement) => void | Promise<void>;\n /** Callback when payment is signed */\n onPaymentSigned?: (payment: SignedPayment) => void | Promise<void>;\n}\n\n// ============================================================================\n// Server/Middleware Configuration Types\n// ============================================================================\n\n/**\n * Payment verification result\n */\nexport interface PaymentVerificationResult {\n /** Whether the payment signature is valid */\n valid: boolean;\n /** Recovered signer address if valid */\n signer?: `0x${string}`;\n /** Error message if invalid */\n error?: string;\n /** The verified payment payload */\n payload?: PaymentPayload;\n}\n\n/**\n * Facilitator verification request\n */\nexport interface FacilitatorVerifyRequest {\n signature: string;\n payload: PaymentPayload;\n networkId: string;\n}\n\n/**\n * Facilitator verification response\n */\nexport interface FacilitatorVerifyResponse {\n valid: boolean;\n signer?: string;\n error?: string;\n balanceSufficient?: boolean;\n allowanceSufficient?: boolean;\n}\n\n/**\n * Configuration options for x402 server middleware\n */\nexport interface X402MiddlewareConfig {\n /** Recipient address for payments */\n recipientAddress: `0x${string}`;\n /** Payment amount in smallest token unit */\n amount: string;\n /** Token contract address (defaults to BSC-USDT) */\n tokenAddress?: `0x${string}`;\n /** Optional facilitator URL for offloading verification */\n facilitatorUrl?: string;\n /** Custom payment description */\n description?: string;\n /** Network ID (defaults to 'eip155:56') */\n networkId?: string;\n /** Deadline duration in seconds (default: 300) */\n deadlineDuration?: number;\n /** Custom nonce generator */\n nonceGenerator?: () => string;\n /** Callback to verify payment against custom logic (e.g., database) */\n verifyPayment?: (payment: SignedPayment, req: unknown) => Promise<boolean>;\n /** Routes to exclude from payment requirement */\n excludeRoutes?: string[];\n /** Custom error handler */\n onError?: (error: Error, req: unknown, res: unknown) => void;\n}\n\n// ============================================================================\n// Error Types\n// ============================================================================\n\n/**\n * Base error class for x402 protocol errors\n */\nexport class X402Error extends Error {\n constructor(\n message: string,\n public code: string,\n public details?: Record<string, unknown>\n ) {\n super(message);\n this.name = 'X402Error';\n Object.setPrototypeOf(this, X402Error.prototype);\n }\n}\n\n/**\n * Error thrown when payment is required but not provided\n */\nexport class PaymentRequiredError extends X402Error {\n constructor(\n public requirement: PaymentRequirement,\n message = 'Payment required'\n ) {\n super(message, 'PAYMENT_REQUIRED', { requirement });\n this.name = 'PaymentRequiredError';\n Object.setPrototypeOf(this, PaymentRequiredError.prototype);\n }\n}\n\n/**\n * Error thrown when payment signature verification fails\n */\nexport class PaymentVerificationError extends X402Error {\n constructor(\n message: string,\n public details?: Record<string, unknown>\n ) {\n super(message, 'PAYMENT_VERIFICATION_FAILED', details);\n this.name = 'PaymentVerificationError';\n Object.setPrototypeOf(this, PaymentVerificationError.prototype);\n }\n}\n\n/**\n * Error thrown when network is not supported\n */\nexport class UnsupportedNetworkError extends X402Error {\n constructor(\n networkId: string,\n supportedNetworks: string[]\n ) {\n super(\n `Network ${networkId} is not supported. Supported networks: ${supportedNetworks.join(', ')}`,\n 'UNSUPPORTED_NETWORK',\n { networkId, supportedNetworks }\n );\n this.name = 'UnsupportedNetworkError';\n Object.setPrototypeOf(this, UnsupportedNetworkError.prototype);\n }\n}\n\n/**\n * Error thrown when payment has expired\n */\nexport class PaymentExpiredError extends X402Error {\n constructor(deadline: number) {\n super(\n `Payment has expired. Deadline: ${new Date(deadline * 1000).toISOString()}`,\n 'PAYMENT_EXPIRED',\n { deadline }\n );\n this.name = 'PaymentExpiredError';\n Object.setPrototypeOf(this, PaymentExpiredError.prototype);\n }\n}\n\n// ============================================================================\n// Utility Types\n// ============================================================================\n\n/**\n * Hex string type (0x prefixed)\n */\nexport type HexString = `0x${string}`;\n\n/**\n * Address type (0x prefixed, 40 hex chars)\n */\nexport type Address = `0x${string}`;\n\n/**\n * Extract chain ID from CAIP-2 identifier\n */\nexport function extractChainId(caipId: string): number {\n const match = caipId.match(/^eip155:(\\d+)$/);\n if (!match?.[1]) {\n throw new X402Error(`Invalid CAIP-2 identifier: ${caipId}`, 'INVALID_CAIP_ID');\n }\n return parseInt(match[1], 10);\n}\n\n/**\n * Create CAIP-2 identifier from chain ID\n */\nexport function createCaipId(chainId: number): string {\n return `eip155:${chainId}`;\n}\n\n/**\n * Generate a random nonce\n */\nexport function generateNonce(): string {\n const bytes = new Uint8Array(16);\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(bytes);\n } else {\n // Fallback for Node.js without Web Crypto\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = Math.floor(Math.random() * 256);\n }\n }\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\n/**\n * Calculate deadline from duration\n */\nexport function calculateDeadline(durationSeconds: number = 300): number {\n return Math.floor(Date.now() / 1000) + durationSeconds;\n}\n","import type { NetworkConfig, TokenConfig } from '../types/index.js';\n\n// ============================================================================\n// BNB Smart Chain Configuration\n// ============================================================================\n\n/**\n * BNB Smart Chain (BSC) Mainnet Chain ID\n */\nexport const BSC_CHAIN_ID = 56 as const;\n\n/**\n * BNB Smart Chain CAIP-2 Identifier\n */\nexport const BSC_CAIP_ID = 'eip155:56' as const;\n\n/**\n * BNB Smart Chain public RPC endpoints\n * Using multiple for fallback support\n */\nexport const BSC_RPC_URLS = [\n 'https://bsc-dataseed.binance.org',\n 'https://bsc-dataseed1.binance.org',\n 'https://bsc-dataseed2.binance.org',\n 'https://bsc-dataseed3.binance.org',\n 'https://bsc-dataseed4.binance.org',\n 'https://bsc-dataseed1.defibit.io',\n 'https://bsc-dataseed1.ninicoin.io',\n] as const;\n\n/**\n * Default BSC RPC URL\n */\nexport const BSC_DEFAULT_RPC = BSC_RPC_URLS[0];\n\n/**\n * BscScan block explorer URL\n */\nexport const BSC_BLOCK_EXPLORER = 'https://bscscan.com' as const;\n\n// ============================================================================\n// Token Configurations\n// ============================================================================\n\n/**\n * BSC-USDT (Tether USD) Token Configuration\n * @see https://bscscan.com/token/0x55d398326f99059fF775485246999027B3197955\n */\nexport const BSC_USDT: TokenConfig = {\n address: '0x55d398326f99059fF775485246999027B3197955',\n symbol: 'USDT',\n decimals: 18,\n name: 'Tether USD',\n} as const;\n\n/**\n * BSC-USDC (USD Coin) Token Configuration\n * @see https://bscscan.com/token/0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\n */\nexport const BSC_USDC: TokenConfig = {\n address: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d',\n symbol: 'USDC',\n decimals: 18,\n name: 'USD Coin',\n} as const;\n\n/**\n * BSC-BUSD (Binance USD) Token Configuration\n * @see https://bscscan.com/token/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56\n */\nexport const BSC_BUSD: TokenConfig = {\n address: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',\n symbol: 'BUSD',\n decimals: 18,\n name: 'Binance USD',\n} as const;\n\n/**\n * Wrapped BNB (WBNB) Token Configuration\n * @see https://bscscan.com/token/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\n */\nexport const BSC_WBNB: TokenConfig = {\n address: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n symbol: 'BNB',\n decimals: 18,\n name: 'Wrapped BNB',\n} as const;\n\n/**\n * Default token for payments (BSC-USDT)\n */\nexport const BSC_DEFAULT_TOKEN = BSC_USDT;\n\n/**\n * All supported tokens on BSC\n */\nexport const BSC_TOKENS = {\n USDT: BSC_USDT,\n USDC: BSC_USDC,\n BUSD: BSC_BUSD,\n WBNB: BSC_WBNB,\n} as const;\n\n/**\n * Token address to config mapping for quick lookup\n */\nexport const BSC_TOKEN_BY_ADDRESS: Record<string, TokenConfig> = {\n [BSC_USDT.address.toLowerCase()]: BSC_USDT,\n [BSC_USDC.address.toLowerCase()]: BSC_USDC,\n [BSC_BUSD.address.toLowerCase()]: BSC_BUSD,\n [BSC_WBNB.address.toLowerCase()]: BSC_WBNB,\n};\n\n// ============================================================================\n// Network Configuration\n// ============================================================================\n\n/**\n * Complete BNB Smart Chain network configuration\n */\nexport const BSC_NETWORK_CONFIG: NetworkConfig = {\n caipId: BSC_CAIP_ID,\n chainId: BSC_CHAIN_ID,\n name: 'BNB Smart Chain',\n rpcUrl: BSC_DEFAULT_RPC,\n nativeCurrency: {\n name: 'BNB',\n symbol: 'BNB',\n decimals: 18,\n },\n blockExplorer: BSC_BLOCK_EXPLORER,\n tokens: BSC_TOKENS,\n} as const;\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Get token configuration by address\n */\nexport function getTokenByAddress(address: string): TokenConfig | undefined {\n return BSC_TOKEN_BY_ADDRESS[address.toLowerCase()];\n}\n\n/**\n * Get token configuration by symbol\n */\nexport function getTokenBySymbol(symbol: string): TokenConfig | undefined {\n const upperSymbol = symbol.toUpperCase();\n return BSC_TOKENS[upperSymbol as keyof typeof BSC_TOKENS];\n}\n\n/**\n * Check if a token address is supported on BSC\n */\nexport function isTokenSupported(address: string): boolean {\n return address.toLowerCase() in BSC_TOKEN_BY_ADDRESS;\n}\n\n/**\n * Format token amount from wei to human-readable string\n */\nexport function formatTokenAmount(\n amount: bigint | string,\n tokenAddress: string\n): string {\n const token = getTokenByAddress(tokenAddress);\n const decimals = token?.decimals ?? 18;\n const amountBigInt = typeof amount === 'string' ? BigInt(amount) : amount;\n \n const divisor = BigInt(10 ** decimals);\n const wholePart = amountBigInt / divisor;\n const fractionalPart = amountBigInt % divisor;\n \n const fractionalStr = fractionalPart.toString().padStart(decimals, '0');\n // Trim trailing zeros but keep at least 2 decimal places\n const trimmedFractional = fractionalStr.replace(/0+$/, '').padEnd(2, '0');\n \n return `${wholePart}.${trimmedFractional}`;\n}\n\n/**\n * Parse human-readable amount to wei\n */\nexport function parseTokenAmount(\n amount: string,\n tokenAddress: string\n): bigint {\n const token = getTokenByAddress(tokenAddress);\n const decimals = token?.decimals ?? 18;\n \n const [whole, fractional = ''] = amount.split('.');\n const paddedFractional = fractional.padEnd(decimals, '0').slice(0, decimals);\n \n return BigInt(whole + paddedFractional);\n}\n\n/**\n * Get BscScan URL for a transaction\n */\nexport function getTxUrl(txHash: string): string {\n return `${BSC_BLOCK_EXPLORER}/tx/${txHash}`;\n}\n\n/**\n * Get BscScan URL for an address\n */\nexport function getAddressUrl(address: string): string {\n return `${BSC_BLOCK_EXPLORER}/address/${address}`;\n}\n\n/**\n * Get BscScan URL for a token\n */\nexport function getTokenUrl(tokenAddress: string): string {\n return `${BSC_BLOCK_EXPLORER}/token/${tokenAddress}`;\n}\n","// Re-export all BNB chain configurations\nexport * from './bnb.js';\n\n// Export a registry of all supported networks for future expansion\nimport { BSC_NETWORK_CONFIG, BSC_CAIP_ID } from './bnb.js';\nimport type { NetworkConfig } from '../types/index.js';\n\n/**\n * Registry of all supported networks\n * Currently only BSC, but structured for future expansion\n */\nexport const SUPPORTED_NETWORKS: Record<string, NetworkConfig> = {\n [BSC_CAIP_ID]: BSC_NETWORK_CONFIG,\n} as const;\n\n/**\n * Get network configuration by CAIP-2 ID\n */\nexport function getNetworkConfig(caipId: string): NetworkConfig | undefined {\n return SUPPORTED_NETWORKS[caipId];\n}\n\n/**\n * Check if a network is supported\n */\nexport function isNetworkSupported(caipId: string): boolean {\n return caipId in SUPPORTED_NETWORKS;\n}\n\n/**\n * Get all supported network IDs\n */\nexport function getSupportedNetworkIds(): string[] {\n return Object.keys(SUPPORTED_NETWORKS);\n}\n","import axios, {\n type AxiosInstance,\n type AxiosRequestConfig,\n type AxiosResponse,\n} from 'axios';\nimport {\n createWalletClient,\n http,\n type WalletClient,\n} from 'viem';\nimport { privateKeyToAccount, type PrivateKeyAccount } from 'viem/accounts';\nimport { bsc } from 'viem/chains';\n\nimport {\n type PaymentRequirement,\n type PaymentPayload,\n type SignedPayment,\n type X402ClientConfig,\n PaymentRequirementSchema,\n PaymentRequiredError,\n PaymentVerificationError,\n UnsupportedNetworkError,\n X402_HEADERS,\n X402_DOMAIN_NAME,\n X402_VERSION,\n PAYMENT_TYPES,\n extractChainId,\n generateNonce,\n calculateDeadline,\n} from '../types/index.js';\nimport { BSC_CAIP_ID, BSC_CHAIN_ID, BSC_DEFAULT_RPC, BSC_USDT, BSC_USDC, BSC_TOKENS } from '../chains/bnb.js';\n\n// ============================================================================\n// X402 Client Class\n// ============================================================================\n\n/**\n * X402 Client for making HTTP requests with automatic payment handling\n * \n * @example\n * ```typescript\n * // Server-to-server with private key\n * const client = new X402Client({\n * privateKey: '0x...',\n * });\n * \n * // Make requests - 402 responses are handled automatically\n * const response = await client.fetch('https://api.example.com/paid-resource');\n * ```\n */\nexport class X402Client {\n private readonly axiosInstance: AxiosInstance;\n private readonly walletClient: WalletClient | null = null;\n private readonly account: PrivateKeyAccount | null = null;\n private readonly config: Required<Pick<X402ClientConfig, \n 'supportedNetworks' | 'defaultDeadline' | 'autoRetry' | 'maxRetries'\n >> & X402ClientConfig;\n\n constructor(config: X402ClientConfig = {}) {\n // Set default configuration\n this.config = {\n supportedNetworks: [BSC_CAIP_ID],\n defaultDeadline: 300, // 5 minutes\n autoRetry: true,\n maxRetries: 1,\n ...config,\n };\n\n // Initialize axios instance\n this.axiosInstance = axios.create({\n timeout: 30000,\n validateStatus: (status) => status < 500, // Don't throw on 402\n ...config.axiosConfig,\n });\n\n // Initialize wallet if private key is provided\n if (config.privateKey) {\n const normalizedKey = config.privateKey.startsWith('0x')\n ? config.privateKey as `0x${string}`\n : `0x${config.privateKey}` as `0x${string}`;\n \n this.account = privateKeyToAccount(normalizedKey);\n this.walletClient = createWalletClient({\n account: this.account,\n chain: bsc,\n transport: http(config.rpcUrl ?? BSC_DEFAULT_RPC),\n });\n }\n }\n\n /**\n * Get the signer address if available\n */\n get signerAddress(): `0x${string}` | null {\n return this.account?.address ?? null;\n }\n\n /**\n * Check if the client can sign payments\n */\n get canSign(): boolean {\n return this.account !== null;\n }\n\n /**\n * Make an HTTP request with automatic 402 payment handling\n */\n async fetch<T = unknown>(\n url: string,\n options: AxiosRequestConfig = {}\n ): Promise<AxiosResponse<T>> {\n let lastError: Error | null = null;\n let attempts = 0;\n\n while (attempts <= this.config.maxRetries) {\n try {\n const response = await this.axiosInstance.request<T>({\n url,\n ...options,\n });\n\n // Check for 402 Payment Required\n if (response.status === 402) {\n const requirement = this.parsePaymentRequirement(response);\n \n // Notify callback if configured\n if (this.config.onPaymentRequired) {\n await this.config.onPaymentRequired(requirement);\n }\n\n // If auto-retry is disabled, throw\n if (!this.config.autoRetry || attempts >= this.config.maxRetries) {\n throw new PaymentRequiredError(requirement);\n }\n\n // Check if we can sign\n if (!this.canSign) {\n throw new PaymentRequiredError(\n requirement,\n 'Payment required but no signer configured. Provide a privateKey in client config.'\n );\n }\n\n // Check if network is supported\n if (!this.config.supportedNetworks.includes(requirement.network_id)) {\n throw new UnsupportedNetworkError(\n requirement.network_id,\n this.config.supportedNetworks\n );\n }\n\n // Sign the payment\n const signedPayment = await this.signPayment(requirement);\n\n // Notify callback if configured\n if (this.config.onPaymentSigned) {\n await this.config.onPaymentSigned(signedPayment);\n }\n\n // Retry with payment signature\n const retryOptions = this.addPaymentHeaders(options, signedPayment);\n attempts++;\n \n // Continue to next iteration with payment headers\n options = retryOptions;\n continue;\n }\n\n return response;\n } catch (error) {\n if (error instanceof PaymentRequiredError || \n error instanceof UnsupportedNetworkError) {\n throw error;\n }\n lastError = error as Error;\n attempts++;\n }\n }\n\n throw lastError ?? new Error('Request failed after all retries');\n }\n\n /**\n * Convenience methods for common HTTP verbs\n */\n async get<T = unknown>(url: string, options?: AxiosRequestConfig): Promise<AxiosResponse<T>> {\n return this.fetch<T>(url, { ...options, method: 'GET' });\n }\n\n async post<T = unknown>(\n url: string,\n data?: unknown,\n options?: AxiosRequestConfig\n ): Promise<AxiosResponse<T>> {\n return this.fetch<T>(url, { ...options, method: 'POST', data });\n }\n\n async put<T = unknown>(\n url: string,\n data?: unknown,\n options?: AxiosRequestConfig\n ): Promise<AxiosResponse<T>> {\n return this.fetch<T>(url, { ...options, method: 'PUT', data });\n }\n\n async delete<T = unknown>(url: string, options?: AxiosRequestConfig): Promise<AxiosResponse<T>> {\n return this.fetch<T>(url, { ...options, method: 'DELETE' });\n }\n\n /**\n * Sign a payment requirement and return the signed payment\n */\n async signPayment(requirement: PaymentRequirement): Promise<SignedPayment> {\n if (!this.walletClient || !this.account) {\n throw new PaymentVerificationError(\n 'Cannot sign payment: no wallet configured'\n );\n }\n\n const chainId = extractChainId(requirement.network_id);\n const nonce = requirement.nonce ?? generateNonce();\n const deadline = requirement.expires_at ?? calculateDeadline(this.config.defaultDeadline);\n\n // Build the payment payload\n const payload: PaymentPayload = {\n amount: requirement.amount,\n token: requirement.token,\n chainId,\n payTo: requirement.pay_to,\n payer: this.account.address,\n deadline,\n nonce,\n resource: requirement.resource ?? '',\n };\n\n // Create EIP-712 domain\n const domain = {\n name: X402_DOMAIN_NAME,\n version: X402_VERSION,\n chainId,\n };\n\n // Sign the typed data\n const signature = await this.walletClient.signTypedData({\n account: this.account,\n domain,\n types: PAYMENT_TYPES,\n primaryType: 'Payment',\n message: {\n amount: BigInt(payload.amount),\n token: payload.token as `0x${string}`,\n chainId: BigInt(payload.chainId),\n payTo: payload.payTo as `0x${string}`,\n payer: payload.payer as `0x${string}`,\n deadline: BigInt(payload.deadline),\n nonce: payload.nonce,\n resource: payload.resource ?? '',\n },\n });\n\n return {\n payload,\n signature,\n signer: this.account.address,\n };\n }\n\n /**\n * Parse payment requirement from 402 response\n */\n private parsePaymentRequirement(response: AxiosResponse): PaymentRequirement {\n // Try to get from header first\n const headerValue = response.headers[X402_HEADERS.PAYMENT_REQUIRED] ||\n response.headers[X402_HEADERS.PAYMENT_REQUIRED.toLowerCase()];\n\n let requirementData: unknown;\n\n if (headerValue) {\n try {\n requirementData = JSON.parse(\n typeof headerValue === 'string' ? headerValue : String(headerValue)\n );\n } catch {\n throw new PaymentVerificationError(\n 'Invalid payment requirement header: failed to parse JSON'\n );\n }\n } else if (response.data && typeof response.data === 'object') {\n // Fall back to response body\n requirementData = response.data;\n } else {\n throw new PaymentVerificationError(\n 'No payment requirement found in response headers or body'\n );\n }\n\n // Validate with Zod\n const result = PaymentRequirementSchema.safeParse(requirementData);\n if (!result.success) {\n throw new PaymentVerificationError(\n `Invalid payment requirement: ${result.error.message}`,\n { errors: result.error.errors }\n );\n }\n\n return result.data;\n }\n\n /**\n * Add payment headers to request options\n */\n private addPaymentHeaders(\n options: AxiosRequestConfig,\n payment: SignedPayment\n ): AxiosRequestConfig {\n const headers = {\n ...options.headers,\n [X402_HEADERS.PAYMENT_SIGNATURE]: payment.signature,\n [X402_HEADERS.PAYMENT_PAYLOAD]: JSON.stringify(payment.payload),\n };\n\n return {\n ...options,\n headers,\n };\n }\n}\n\n// ============================================================================\n// Factory Functions\n// ============================================================================\n\n/**\n * Create an X402 client with a private key for server-to-server usage\n */\nexport function createX402Client(config?: X402ClientConfig): X402Client {\n return new X402Client(config);\n}\n\n/**\n * Create an X402 client from environment variables\n * Looks for X402_PRIVATE_KEY in process.env\n */\nexport function createX402ClientFromEnv(\n config?: Omit<X402ClientConfig, 'privateKey'>\n): X402Client {\n const privateKey = process.env['X402_PRIVATE_KEY'];\n \n if (!privateKey) {\n console.warn('X402_PRIVATE_KEY not found in environment. Client will be read-only.');\n }\n\n return new X402Client({\n ...config,\n privateKey,\n });\n}\n\n// ============================================================================\n// Re-exports for convenience\n// ============================================================================\n\nexport {\n type X402ClientConfig,\n type PaymentRequirement,\n type PaymentPayload,\n type SignedPayment,\n PaymentRequiredError,\n PaymentVerificationError,\n UnsupportedNetworkError,\n} from '../types/index.js';\n\n// Re-export error types\nexport { PaymentExpiredError } from '../types/index.js';\n\nexport {\n BSC_CAIP_ID,\n BSC_CHAIN_ID,\n BSC_USDT,\n BSC_USDC,\n BSC_TOKENS,\n};\n","import type { Request, Response, NextFunction, RequestHandler } from 'express';\nimport axios from 'axios';\nimport {\n verifyTypedData,\n type Address,\n} from 'viem';\n\nimport {\n type PaymentRequirement,\n type PaymentPayload,\n type SignedPayment,\n type X402MiddlewareConfig,\n type PaymentVerificationResult,\n type FacilitatorVerifyRequest,\n type FacilitatorVerifyResponse,\n SignedPaymentSchema,\n PaymentPayloadSchema,\n X402_HEADERS,\n X402_DOMAIN_NAME,\n X402_VERSION,\n PAYMENT_TYPES,\n generateNonce,\n calculateDeadline,\n extractChainId,\n} from '../types/index.js';\nimport {\n BSC_CAIP_ID,\n BSC_USDT,\n} from '../chains/bnb.js';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Extended Express Request with payment information\n */\nexport interface X402Request extends Request {\n x402?: {\n payment: SignedPayment;\n verified: boolean;\n signer: Address;\n };\n}\n\n// ============================================================================\n// Payment Verification\n// ============================================================================\n\n/**\n * Verify an EIP-712 payment signature locally using viem\n */\nasync function verifyPaymentSignatureLocal(\n payment: SignedPayment,\n expectedRecipient: Address,\n chainId: number\n): Promise<PaymentVerificationResult> {\n try {\n const { payload, signature, signer } = payment;\n\n // Check deadline\n const now = Math.floor(Date.now() / 1000);\n if (payload.deadline < now) {\n return {\n valid: false,\n error: `Payment expired at ${new Date(payload.deadline * 1000).toISOString()}`,\n };\n }\n\n // Check chain ID matches\n if (payload.chainId !== chainId) {\n return {\n valid: false,\n error: `Chain ID mismatch: expected ${chainId}, got ${payload.chainId}`,\n };\n }\n\n // Check recipient matches\n if (payload.payTo.toLowerCase() !== expectedRecipient.toLowerCase()) {\n return {\n valid: false,\n error: `Recipient mismatch: expected ${expectedRecipient}, got ${payload.payTo}`,\n };\n }\n\n // Create domain for verification\n const domain = {\n name: X402_DOMAIN_NAME,\n version: X402_VERSION,\n chainId,\n };\n\n // Verify the typed data signature\n const isValid = await verifyTypedData({\n address: signer as Address,\n domain,\n types: PAYMENT_TYPES,\n primaryType: 'Payment',\n message: {\n amount: BigInt(payload.amount),\n token: payload.token as Address,\n chainId: BigInt(payload.chainId),\n payTo: payload.payTo as Address,\n payer: payload.payer as Address,\n deadline: BigInt(payload.deadline),\n nonce: payload.nonce,\n resource: payload.resource ?? '',\n },\n signature: signature as `0x${string}`,\n });\n\n if (!isValid) {\n return {\n valid: false,\n error: 'Signature verification failed',\n };\n }\n\n return {\n valid: true,\n signer: signer as Address,\n payload,\n };\n } catch (error) {\n return {\n valid: false,\n error: error instanceof Error ? error.message : 'Unknown verification error',\n };\n }\n}\n\n/**\n * Verify payment through external facilitator service\n */\nasync function verifyPaymentWithFacilitator(\n payment: SignedPayment,\n facilitatorUrl: string,\n networkId: string\n): Promise<PaymentVerificationResult> {\n try {\n const request: FacilitatorVerifyRequest = {\n signature: payment.signature,\n payload: payment.payload,\n networkId,\n };\n\n const response = await axios.post<FacilitatorVerifyResponse>(\n `${facilitatorUrl}/verify`,\n request,\n {\n timeout: 10000,\n headers: { 'Content-Type': 'application/json' },\n }\n );\n\n if (response.data.valid) {\n return {\n valid: true,\n signer: response.data.signer as Address,\n payload: payment.payload,\n };\n }\n\n return {\n valid: false,\n error: response.data.error ?? 'Facilitator rejected payment',\n };\n } catch (error) {\n return {\n valid: false,\n error: error instanceof Error \n ? `Facilitator error: ${error.message}` \n : 'Facilitator verification failed',\n };\n }\n}\n\n// ============================================================================\n// Middleware Factory\n// ============================================================================\n\n/**\n * Create x402 payment middleware for Express\n * \n * @example\n * ```typescript\n * import express from 'express';\n * import { x402Middleware } from '@wazabiai/x402/server';\n * \n * const app = express();\n * \n * // Protect routes with payment requirement\n * app.use('/api/paid', x402Middleware({\n * recipientAddress: '0x...',\n * amount: '1000000000000000000', // 1 token\n * }));\n * \n * app.get('/api/paid/resource', (req, res) => {\n * // Payment verified, serve resource\n * res.json({ data: 'premium content' });\n * });\n * ```\n */\nexport function x402Middleware(config: X402MiddlewareConfig): RequestHandler {\n const {\n recipientAddress,\n amount,\n tokenAddress = BSC_USDT.address,\n facilitatorUrl,\n description,\n networkId = BSC_CAIP_ID,\n deadlineDuration = 300,\n nonceGenerator = generateNonce,\n verifyPayment: customVerify,\n excludeRoutes = [],\n onError,\n } = config;\n\n const chainId = extractChainId(networkId);\n\n return async (req: X402Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n // Check if route is excluded\n const path = req.path;\n if (excludeRoutes.some(route => path.startsWith(route))) {\n next();\n return;\n }\n\n // Get payment signature header\n const signatureHeader = req.headers[X402_HEADERS.PAYMENT_SIGNATURE] ||\n req.headers[X402_HEADERS.PAYMENT_SIGNATURE.toLowerCase()];\n const payloadHeader = req.headers[X402_HEADERS.PAYMENT_PAYLOAD] ||\n req.headers[X402_HEADERS.PAYMENT_PAYLOAD.toLowerCase()];\n\n // If no payment signature, return 402\n if (!signatureHeader) {\n const requirement: PaymentRequirement = {\n amount,\n token: tokenAddress,\n network_id: networkId,\n pay_to: recipientAddress,\n description,\n resource: req.originalUrl,\n expires_at: calculateDeadline(deadlineDuration),\n nonce: nonceGenerator(),\n version: X402_VERSION,\n };\n\n res.status(402);\n res.setHeader(X402_HEADERS.PAYMENT_REQUIRED, JSON.stringify(requirement));\n res.json({\n error: 'Payment Required',\n requirement,\n });\n return;\n }\n\n // Parse the payment payload\n let payload: PaymentPayload;\n try {\n if (!payloadHeader) {\n throw new Error('Missing payment payload header');\n }\n const parsedPayload = JSON.parse(\n typeof payloadHeader === 'string' ? payloadHeader : String(payloadHeader)\n );\n const result = PaymentPayloadSchema.safeParse(parsedPayload);\n if (!result.success) {\n throw new Error(`Invalid payload: ${result.error.message}`);\n }\n payload = result.data;\n } catch (error) {\n res.status(400).json({\n error: 'Invalid Payment',\n message: error instanceof Error ? error.message : 'Failed to parse payment payload',\n });\n return;\n }\n\n // Construct signed payment\n const signedPayment: SignedPayment = {\n payload,\n signature: (typeof signatureHeader === 'string' \n ? signatureHeader \n : String(signatureHeader)) as `0x${string}`,\n signer: payload.payer as `0x${string}`,\n };\n\n // Verify the payment\n let verificationResult: PaymentVerificationResult;\n\n if (facilitatorUrl) {\n // Use external facilitator\n verificationResult = await verifyPaymentWithFacilitator(\n signedPayment,\n facilitatorUrl,\n networkId\n );\n } else {\n // Local verification\n verificationResult = await verifyPaymentSignatureLocal(\n signedPayment,\n recipientAddress,\n chainId\n );\n }\n\n if (!verificationResult.valid) {\n res.status(402).json({\n error: 'Payment Verification Failed',\n message: verificationResult.error,\n });\n return;\n }\n\n // Run custom verification if provided\n if (customVerify) {\n const customValid = await customVerify(signedPayment, req);\n if (!customValid) {\n res.status(402).json({\n error: 'Payment Rejected',\n message: 'Custom verification failed',\n });\n return;\n }\n }\n\n // Check amount matches\n if (BigInt(payload.amount) < BigInt(amount)) {\n res.status(402).json({\n error: 'Insufficient Payment',\n message: `Expected ${amount}, received ${payload.amount}`,\n });\n return;\n }\n\n // Attach payment info to request\n req.x402 = {\n payment: signedPayment,\n verified: true,\n signer: verificationResult.signer!,\n };\n\n next();\n } catch (error) {\n if (onError && error instanceof Error) {\n onError(error, req, res);\n return;\n }\n\n console.error('[x402] Middleware error:', error);\n res.status(500).json({\n error: 'Internal Server Error',\n message: 'Payment processing failed',\n });\n }\n };\n}\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Create a payment requirement object for manual 402 responses\n */\nexport function createPaymentRequirement(\n config: Pick<X402MiddlewareConfig, \n 'recipientAddress' | 'amount' | 'tokenAddress' | 'description' | 'networkId'\n > & {\n resource?: string;\n deadline?: number;\n nonce?: string;\n }\n): PaymentRequirement {\n const {\n recipientAddress,\n amount,\n tokenAddress = BSC_USDT.address,\n description,\n networkId = BSC_CAIP_ID,\n resource,\n deadline,\n nonce,\n } = config;\n\n return {\n amount,\n token: tokenAddress,\n network_id: networkId,\n pay_to: recipientAddress,\n description,\n resource,\n expires_at: deadline ?? calculateDeadline(300),\n nonce: nonce ?? generateNonce(),\n version: X402_VERSION,\n };\n}\n\n/**\n * Verify a signed payment independently (not as middleware)\n */\nexport async function verifyPayment(\n payment: SignedPayment,\n recipientAddress: Address,\n networkId: string = BSC_CAIP_ID,\n facilitatorUrl?: string\n): Promise<PaymentVerificationResult> {\n const chainId = extractChainId(networkId);\n\n if (facilitatorUrl) {\n return verifyPaymentWithFacilitator(payment, facilitatorUrl, networkId);\n }\n\n return verifyPaymentSignatureLocal(payment, recipientAddress, chainId);\n}\n\n/**\n * Parse payment from request headers\n */\nexport function parsePaymentFromRequest(req: Request): SignedPayment | null {\n try {\n const signatureHeader = req.headers[X402_HEADERS.PAYMENT_SIGNATURE] ||\n req.headers[X402_HEADERS.PAYMENT_SIGNATURE.toLowerCase()];\n const payloadHeader = req.headers[X402_HEADERS.PAYMENT_PAYLOAD] ||\n req.headers[X402_HEADERS.PAYMENT_PAYLOAD.toLowerCase()];\n\n if (!signatureHeader || !payloadHeader) {\n return null;\n }\n\n const payload = JSON.parse(\n typeof payloadHeader === 'string' ? payloadHeader : String(payloadHeader)\n );\n\n const result = SignedPaymentSchema.safeParse({\n payload,\n signature: typeof signatureHeader === 'string' \n ? signatureHeader \n : String(signatureHeader),\n signer: payload.payer,\n });\n\n return result.success ? result.data as SignedPayment : null;\n } catch {\n return null;\n }\n}\n\n// ============================================================================\n// Re-exports for convenience\n// ============================================================================\n\nexport {\n type X402MiddlewareConfig,\n type PaymentRequirement,\n type PaymentPayload,\n type SignedPayment,\n type PaymentVerificationResult,\n X402_HEADERS,\n} from '../types/index.js';\n\n// Re-export error classes\nexport { PaymentVerificationError, PaymentExpiredError } from '../types/index.js';\n\nexport {\n BSC_CAIP_ID,\n BSC_CHAIN_ID,\n BSC_USDT,\n BSC_USDC,\n BSC_TOKENS,\n formatTokenAmount,\n parseTokenAmount,\n} from '../chains/bnb.js';\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { Address, FacilitatorVerifyRequest, FacilitatorVerifyResponse, HexString, NetworkConfig, PAYMENT_TYPES, PaymentExpiredError, PaymentPayload, PaymentPayloadSchema, PaymentRequiredError, PaymentRequirement, PaymentRequirementSchema, PaymentVerificationError, PaymentVerificationResult, SignedPayment, SignedPaymentSchema, TokenConfig, TokenSymbol, UnsupportedNetworkError, X402ClientConfig, X402Domain, X402Error, X402MiddlewareConfig, X402_DOMAIN_NAME, X402_HEADERS, X402_VERSION, calculateDeadline, createCaipId, extractChainId, generateNonce } from './types/index.cjs';
|
|
2
|
+
export { SUPPORTED_NETWORKS, getNetworkConfig, getSupportedNetworkIds, isNetworkSupported } from './chains/index.cjs';
|
|
3
|
+
export { X402Client, createX402Client, createX402ClientFromEnv } from './client/index.cjs';
|
|
4
|
+
export { X402Request, createPaymentRequirement, parsePaymentFromRequest, verifyPayment, x402Middleware } from './server/index.cjs';
|
|
5
|
+
export { d as BSC_BLOCK_EXPLORER, g as BSC_BUSD, a as BSC_CAIP_ID, B as BSC_CHAIN_ID, c as BSC_DEFAULT_RPC, i as BSC_DEFAULT_TOKEN, l as BSC_NETWORK_CONFIG, b as BSC_RPC_URLS, j as BSC_TOKENS, k as BSC_TOKEN_BY_ADDRESS, f as BSC_USDC, e as BSC_USDT, h as BSC_WBNB, p as formatTokenAmount, s as getAddressUrl, m as getTokenByAddress, n as getTokenBySymbol, t as getTokenUrl, r as getTxUrl, o as isTokenSupported, q as parseTokenAmount } from './bnb-BhqGnGQ1.cjs';
|
|
6
|
+
import 'zod';
|
|
7
|
+
import 'axios';
|
|
8
|
+
import 'express';
|
|
9
|
+
import 'viem';
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { Address, FacilitatorVerifyRequest, FacilitatorVerifyResponse, HexString, NetworkConfig, PAYMENT_TYPES, PaymentExpiredError, PaymentPayload, PaymentPayloadSchema, PaymentRequiredError, PaymentRequirement, PaymentRequirementSchema, PaymentVerificationError, PaymentVerificationResult, SignedPayment, SignedPaymentSchema, TokenConfig, TokenSymbol, UnsupportedNetworkError, X402ClientConfig, X402Domain, X402Error, X402MiddlewareConfig, X402_DOMAIN_NAME, X402_HEADERS, X402_VERSION, calculateDeadline, createCaipId, extractChainId, generateNonce } from './types/index.js';
|
|
2
|
+
export { SUPPORTED_NETWORKS, getNetworkConfig, getSupportedNetworkIds, isNetworkSupported } from './chains/index.js';
|
|
3
|
+
export { X402Client, createX402Client, createX402ClientFromEnv } from './client/index.js';
|
|
4
|
+
export { X402Request, createPaymentRequirement, parsePaymentFromRequest, verifyPayment, x402Middleware } from './server/index.js';
|
|
5
|
+
export { d as BSC_BLOCK_EXPLORER, g as BSC_BUSD, a as BSC_CAIP_ID, B as BSC_CHAIN_ID, c as BSC_DEFAULT_RPC, i as BSC_DEFAULT_TOKEN, l as BSC_NETWORK_CONFIG, b as BSC_RPC_URLS, j as BSC_TOKENS, k as BSC_TOKEN_BY_ADDRESS, f as BSC_USDC, e as BSC_USDT, h as BSC_WBNB, p as formatTokenAmount, s as getAddressUrl, m as getTokenByAddress, n as getTokenBySymbol, t as getTokenUrl, r as getTxUrl, o as isTokenSupported, q as parseTokenAmount } from './bnb-SixQcDqs.js';
|
|
6
|
+
import 'zod';
|
|
7
|
+
import 'axios';
|
|
8
|
+
import 'express';
|
|
9
|
+
import 'viem';
|