uvd-x402-sdk 2.5.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +380 -3
  2. package/dist/adapters/index.d.mts +1 -1
  3. package/dist/adapters/index.d.ts +1 -1
  4. package/dist/adapters/index.js +82 -1
  5. package/dist/adapters/index.js.map +1 -1
  6. package/dist/adapters/index.mjs +82 -1
  7. package/dist/adapters/index.mjs.map +1 -1
  8. package/dist/backend/index.d.mts +1036 -0
  9. package/dist/backend/index.d.ts +1036 -0
  10. package/dist/backend/index.js +1722 -0
  11. package/dist/backend/index.js.map +1 -0
  12. package/dist/backend/index.mjs +1704 -0
  13. package/dist/backend/index.mjs.map +1 -0
  14. package/dist/{index-BrFeSWKm.d.mts → index-C60c_e5z.d.mts} +13 -4
  15. package/dist/{index-DR2vXt-c.d.mts → index-D-dO_FoP.d.mts} +70 -4
  16. package/dist/{index-DR2vXt-c.d.ts → index-D-dO_FoP.d.ts} +70 -4
  17. package/dist/{index-BYX9BU79.d.ts → index-VIOUicmO.d.ts} +13 -4
  18. package/dist/index.d.mts +3 -3
  19. package/dist/index.d.ts +3 -3
  20. package/dist/index.js +115 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.mjs +110 -2
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/providers/algorand/index.d.mts +86 -0
  25. package/dist/providers/algorand/index.d.ts +86 -0
  26. package/dist/providers/algorand/index.js +903 -0
  27. package/dist/providers/algorand/index.js.map +1 -0
  28. package/dist/providers/algorand/index.mjs +898 -0
  29. package/dist/providers/algorand/index.mjs.map +1 -0
  30. package/dist/providers/evm/index.d.mts +1 -1
  31. package/dist/providers/evm/index.d.ts +1 -1
  32. package/dist/providers/evm/index.js +78 -1
  33. package/dist/providers/evm/index.js.map +1 -1
  34. package/dist/providers/evm/index.mjs +78 -1
  35. package/dist/providers/evm/index.mjs.map +1 -1
  36. package/dist/providers/near/index.d.mts +1 -1
  37. package/dist/providers/near/index.d.ts +1 -1
  38. package/dist/providers/near/index.js +78 -1
  39. package/dist/providers/near/index.js.map +1 -1
  40. package/dist/providers/near/index.mjs +78 -1
  41. package/dist/providers/near/index.mjs.map +1 -1
  42. package/dist/providers/solana/index.d.mts +1 -1
  43. package/dist/providers/solana/index.d.ts +1 -1
  44. package/dist/providers/solana/index.js +78 -1
  45. package/dist/providers/solana/index.js.map +1 -1
  46. package/dist/providers/solana/index.mjs +78 -1
  47. package/dist/providers/solana/index.mjs.map +1 -1
  48. package/dist/providers/stellar/index.d.mts +1 -1
  49. package/dist/providers/stellar/index.d.ts +1 -1
  50. package/dist/providers/stellar/index.js +78 -1
  51. package/dist/providers/stellar/index.js.map +1 -1
  52. package/dist/providers/stellar/index.mjs +78 -1
  53. package/dist/providers/stellar/index.mjs.map +1 -1
  54. package/dist/react/index.d.mts +3 -3
  55. package/dist/react/index.d.ts +3 -3
  56. package/dist/react/index.js +82 -1
  57. package/dist/react/index.js.map +1 -1
  58. package/dist/react/index.mjs +82 -1
  59. package/dist/react/index.mjs.map +1 -1
  60. package/dist/utils/index.d.mts +57 -5
  61. package/dist/utils/index.d.ts +57 -5
  62. package/dist/utils/index.js +96 -1
  63. package/dist/utils/index.js.map +1 -1
  64. package/dist/utils/index.mjs +93 -2
  65. package/dist/utils/index.mjs.map +1 -1
  66. package/package.json +24 -3
  67. package/src/adapters/wagmi.ts +4 -0
  68. package/src/backend/index.ts +2131 -0
  69. package/src/chains/index.ts +94 -2
  70. package/src/client/X402Client.ts +4 -0
  71. package/src/index.ts +26 -1
  72. package/src/providers/algorand/index.ts +356 -0
  73. package/src/types/index.ts +78 -3
  74. package/src/utils/index.ts +4 -0
  75. package/src/utils/validation.ts +76 -3
@@ -10,10 +10,11 @@
10
10
  * - 'svm': Solana Virtual Machine chains (Solana, Fogo) (use SPL tokens)
11
11
  * - 'stellar': Stellar network (use Soroban)
12
12
  * - 'near': NEAR Protocol (use NEP-366)
13
+ * - 'algorand': Algorand network (use ASA transfers with atomic transactions)
13
14
  *
14
15
  * @deprecated 'solana' type is deprecated, use 'svm' instead
15
16
  */
16
- type NetworkType = 'evm' | 'svm' | 'solana' | 'stellar' | 'near';
17
+ type NetworkType = 'evm' | 'svm' | 'solana' | 'stellar' | 'near' | 'algorand';
17
18
  /**
18
19
  * Supported stablecoin token types
19
20
  * - usdc: USD Coin (Circle) - 6 decimals
@@ -172,6 +173,7 @@ interface PaymentInfo {
172
173
  solana?: string;
173
174
  near?: string;
174
175
  stellar?: string;
176
+ algorand?: string;
175
177
  };
176
178
  /** Facilitator address (for Solana fee payer) */
177
179
  facilitator?: string;
@@ -200,6 +202,25 @@ interface PaymentRequest {
200
202
  /** Application-specific metadata */
201
203
  metadata?: Record<string, unknown>;
202
204
  }
205
+ /**
206
+ * x402 payment header names
207
+ *
208
+ * - 'X-PAYMENT': v1 header name (default, most compatible)
209
+ * - 'PAYMENT-SIGNATURE': v2 header name (newer standard)
210
+ *
211
+ * Both headers use the same base64-encoded JSON payload format.
212
+ * The facilitator accepts both headers.
213
+ */
214
+ type X402HeaderName = 'X-PAYMENT' | 'PAYMENT-SIGNATURE';
215
+ /**
216
+ * Payment headers object containing both v1 and v2 header formats
217
+ */
218
+ interface PaymentHeaders {
219
+ /** v1 header: X-PAYMENT */
220
+ 'X-PAYMENT': string;
221
+ /** v2 header: PAYMENT-SIGNATURE (same value, different header name) */
222
+ 'PAYMENT-SIGNATURE': string;
223
+ }
203
224
  /**
204
225
  * Result of a payment operation
205
226
  */
@@ -208,6 +229,19 @@ interface PaymentResult {
208
229
  success: boolean;
209
230
  /** Base64-encoded X-PAYMENT header value */
210
231
  paymentHeader: string;
232
+ /**
233
+ * Payment headers object for easy use with fetch/axios
234
+ *
235
+ * @example
236
+ * ```ts
237
+ * // Use v1 header
238
+ * fetch(url, { headers: { 'X-PAYMENT': result.headers['X-PAYMENT'] } });
239
+ *
240
+ * // Use v2 header
241
+ * fetch(url, { headers: { 'PAYMENT-SIGNATURE': result.headers['PAYMENT-SIGNATURE'] } });
242
+ * ```
243
+ */
244
+ headers: PaymentHeaders;
211
245
  /** Transaction hash (if available) */
212
246
  transactionHash?: string;
213
247
  /** Network where payment was made */
@@ -267,10 +301,31 @@ interface NEARPaymentPayload {
267
301
  signedDelegateAction: string;
268
302
  network: 'near';
269
303
  }
304
+ /**
305
+ * Algorand payment payload (atomic transaction group)
306
+ *
307
+ * Algorand uses a unique payment model where the facilitator creates and signs
308
+ * an atomic transaction group. The user signs their portion (the ASA transfer)
309
+ * and the facilitator submits the complete group.
310
+ */
311
+ interface AlgorandPaymentPayload {
312
+ /** Sender's Algorand address (58-character base32) */
313
+ from: string;
314
+ /** Recipient's Algorand address */
315
+ to: string;
316
+ /** Amount in base units (microAlgos for ALGO, or base units for ASA) */
317
+ amount: string;
318
+ /** USDC ASA ID (31566704 for mainnet, 10458941 for testnet) */
319
+ assetId: number;
320
+ /** Base64-encoded signed transaction bytes */
321
+ signedTxn: string;
322
+ /** Optional note field */
323
+ note?: string;
324
+ }
270
325
  /**
271
326
  * Union type for all payment payloads
272
327
  */
273
- type PaymentPayload = EVMPaymentPayload | SolanaPaymentPayload | StellarPaymentPayload | NEARPaymentPayload;
328
+ type PaymentPayload = EVMPaymentPayload | SolanaPaymentPayload | StellarPaymentPayload | NEARPaymentPayload | AlgorandPaymentPayload;
274
329
  /**
275
330
  * x402 protocol version
276
331
  */
@@ -354,10 +409,21 @@ interface X402StellarPayload {
354
409
  interface X402NEARPayload {
355
410
  signedDelegateAction: string;
356
411
  }
412
+ /**
413
+ * Algorand-specific payload in x402 header
414
+ */
415
+ interface X402AlgorandPayload {
416
+ from: string;
417
+ to: string;
418
+ amount: string;
419
+ assetId: number;
420
+ signedTxn: string;
421
+ note?: string;
422
+ }
357
423
  /**
358
424
  * Union of all x402 payload types
359
425
  */
360
- type X402PayloadData = X402EVMPayload | X402SolanaPayload | X402StellarPayload | X402NEARPayload;
426
+ type X402PayloadData = X402EVMPayload | X402SolanaPayload | X402StellarPayload | X402NEARPayload | X402AlgorandPayload;
361
427
  /**
362
428
  * Multi-payment configuration for supporting multiple networks
363
429
  */
@@ -466,4 +532,4 @@ declare class X402Error extends Error {
466
532
  constructor(message: string, code: X402ErrorCode, details?: unknown);
467
533
  }
468
534
 
469
- export { CAIP2_IDENTIFIERS as A, CAIP2_TO_CHAIN as B, type ChainConfig as C, DEFAULT_CONFIG as D, type EIP712Domain as E, type MultiPaymentConfig as M, type NativeCurrency as N, type PaymentInfo as P, type SolanaPaymentPayload as S, type TokenType as T, type USDCConfig as U, type WalletState as W, type X402Version as X, type NetworkType as a, type TokenConfig as b, type WalletAdapter as c, type EIP712Types as d, type PaymentRequest as e, type PaymentResult as f, type PaymentPayload as g, type EVMPaymentPayload as h, type StellarPaymentPayload as i, type NEARPaymentPayload as j, type X402Header as k, type X402HeaderV1 as l, type X402HeaderV2 as m, type X402PaymentOption as n, type X402PayloadData as o, type X402EVMPayload as p, type X402SolanaPayload as q, type X402StellarPayload as r, type X402NEARPayload as s, type X402ClientConfig as t, type NetworkBalance as u, type X402Event as v, type X402EventData as w, type X402EventHandler as x, type X402ErrorCode as y, X402Error as z };
535
+ export { type AlgorandPaymentPayload as A, type X402EventHandler as B, type ChainConfig as C, type X402ErrorCode as D, type EIP712Domain as E, X402Error as F, DEFAULT_CONFIG as G, CAIP2_IDENTIFIERS as H, CAIP2_TO_CHAIN as I, type MultiPaymentConfig as M, type NativeCurrency as N, type PaymentInfo as P, type SolanaPaymentPayload as S, type TokenType as T, type USDCConfig as U, type WalletState as W, type X402HeaderName as X, type NetworkType as a, type TokenConfig as b, type WalletAdapter as c, type EIP712Types as d, type PaymentRequest as e, type PaymentResult as f, type PaymentHeaders as g, type PaymentPayload as h, type EVMPaymentPayload as i, type StellarPaymentPayload as j, type NEARPaymentPayload as k, type X402Version as l, type X402Header as m, type X402HeaderV1 as n, type X402HeaderV2 as o, type X402PaymentOption as p, type X402PayloadData as q, type X402EVMPayload as r, type X402SolanaPayload as s, type X402StellarPayload as t, type X402NEARPayload as u, type X402AlgorandPayload as v, type X402ClientConfig as w, type NetworkBalance as x, type X402Event as y, type X402EventData as z };
@@ -1,4 +1,4 @@
1
- import { t as X402ClientConfig, P as PaymentInfo, f as PaymentResult, W as WalletState, C as ChainConfig, v as X402Event, x as X402EventHandler, a as NetworkType, T as TokenType, b as TokenConfig } from './index-DR2vXt-c.js';
1
+ import { w as X402ClientConfig, P as PaymentInfo, f as PaymentResult, W as WalletState, C as ChainConfig, y as X402Event, B as X402EventHandler, a as NetworkType, T as TokenType, b as TokenConfig } from './index-D-dO_FoP.js';
2
2
 
3
3
  /**
4
4
  * uvd-x402-sdk - Main Client
@@ -127,11 +127,12 @@ declare global {
127
127
  /**
128
128
  * uvd-x402-sdk - Chain Registry
129
129
  *
130
- * Complete configuration for all 15 supported blockchain networks.
131
- * EVM chains (11): Use ERC-3009 TransferWithAuthorization
130
+ * Complete configuration for all 16 supported blockchain networks.
131
+ * EVM chains (10): Use ERC-3009 TransferWithAuthorization
132
132
  * SVM chains (2): Solana and Fogo - Use SPL tokens with partially-signed transactions
133
133
  * Stellar (1): Uses Soroban authorization entries
134
134
  * NEAR (1): Uses NEP-366 meta-transactions
135
+ * Algorand (2): Uses ASA transfers with atomic transaction groups
135
136
  */
136
137
 
137
138
  /**
@@ -195,6 +196,14 @@ declare function getExplorerTxUrl(chainName: string, txHash: string): string | n
195
196
  * Format address URL for block explorer
196
197
  */
197
198
  declare function getExplorerAddressUrl(chainName: string, address: string): string | null;
199
+ /**
200
+ * Get list of Algorand chains
201
+ */
202
+ declare function getAlgorandChains(): ChainConfig[];
203
+ /**
204
+ * Check if a chain is Algorand-based
205
+ */
206
+ declare function isAlgorandChain(chainName: string): boolean;
198
207
  /**
199
208
  * Get token configuration for a specific chain and token type
200
209
  * Falls back to USDC config if token not found (for backward compatibility)
@@ -227,4 +236,4 @@ declare function isTokenSupported(chainName: string, tokenType: TokenType): bool
227
236
  */
228
237
  declare function getChainsByToken(tokenType: TokenType): ChainConfig[];
229
238
 
230
- export { DEFAULT_CHAIN as D, SUPPORTED_CHAINS as S, X402Client as X, DEFAULT_FACILITATOR_URL as a, getChainByName as b, getEnabledChains as c, getChainsByNetworkType as d, getEVMChainIds as e, getSVMChains as f, getChainById as g, isSVMChain as h, isChainSupported as i, getNetworkType as j, getExplorerTxUrl as k, getExplorerAddressUrl as l, getTokenConfig as m, getSupportedTokens as n, isTokenSupported as o, getChainsByToken as p };
239
+ export { DEFAULT_CHAIN as D, SUPPORTED_CHAINS as S, X402Client as X, DEFAULT_FACILITATOR_URL as a, getChainByName as b, getEnabledChains as c, getChainsByNetworkType as d, getEVMChainIds as e, getSVMChains as f, getChainById as g, isSVMChain as h, isChainSupported as i, getNetworkType as j, getExplorerTxUrl as k, getExplorerAddressUrl as l, getTokenConfig as m, getSupportedTokens as n, isTokenSupported as o, getChainsByToken as p, getAlgorandChains as q, isAlgorandChain as r };
package/dist/index.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- export { D as DEFAULT_CHAIN, a as DEFAULT_FACILITATOR_URL, S as SUPPORTED_CHAINS, X as X402Client, g as getChainById, b as getChainByName, d as getChainsByNetworkType, p as getChainsByToken, e as getEVMChainIds, c as getEnabledChains, l as getExplorerAddressUrl, k as getExplorerTxUrl, j as getNetworkType, f as getSVMChains, n as getSupportedTokens, m as getTokenConfig, i as isChainSupported, h as isSVMChain, o as isTokenSupported } from './index-BrFeSWKm.mjs';
2
- export { caip2ToChain, chainToCAIP2, convertX402Header, createX402Header, createX402V1Header, createX402V2Header, decodeX402Header, detectX402Version, encodeX402Header, generatePaymentOptions, isCAIP2Format, parseNetworkIdentifier, validateAmount, validateRecipient } from './utils/index.mjs';
3
- export { A as CAIP2_IDENTIFIERS, B as CAIP2_TO_CHAIN, C as ChainConfig, D as DEFAULT_CONFIG, E as EIP712Domain, d as EIP712Types, h as EVMPaymentPayload, M as MultiPaymentConfig, j as NEARPaymentPayload, N as NativeCurrency, u as NetworkBalance, a as NetworkType, P as PaymentInfo, g as PaymentPayload, e as PaymentRequest, f as PaymentResult, S as SolanaPaymentPayload, i as StellarPaymentPayload, b as TokenConfig, T as TokenType, U as USDCConfig, c as WalletAdapter, W as WalletState, t as X402ClientConfig, p as X402EVMPayload, z as X402Error, y as X402ErrorCode, v as X402Event, w as X402EventData, x as X402EventHandler, k as X402Header, l as X402HeaderV1, m as X402HeaderV2, s as X402NEARPayload, o as X402PayloadData, n as X402PaymentOption, q as X402SolanaPayload, r as X402StellarPayload, X as X402Version } from './index-DR2vXt-c.mjs';
1
+ export { D as DEFAULT_CHAIN, a as DEFAULT_FACILITATOR_URL, S as SUPPORTED_CHAINS, X as X402Client, q as getAlgorandChains, g as getChainById, b as getChainByName, d as getChainsByNetworkType, p as getChainsByToken, e as getEVMChainIds, c as getEnabledChains, l as getExplorerAddressUrl, k as getExplorerTxUrl, j as getNetworkType, f as getSVMChains, n as getSupportedTokens, m as getTokenConfig, r as isAlgorandChain, i as isChainSupported, h as isSVMChain, o as isTokenSupported } from './index-C60c_e5z.mjs';
2
+ export { DEFAULT_PAYMENT_HEADER, PAYMENT_HEADER_NAMES, caip2ToChain, chainToCAIP2, convertX402Header, createPaymentHeaders, createX402Header, createX402V1Header, createX402V2Header, decodeX402Header, detectX402Version, encodeX402Header, generatePaymentOptions, getPaymentHeader, isCAIP2Format, parseNetworkIdentifier, validateAmount, validateRecipient } from './utils/index.mjs';
3
+ export { A as AlgorandPaymentPayload, H as CAIP2_IDENTIFIERS, I as CAIP2_TO_CHAIN, C as ChainConfig, G as DEFAULT_CONFIG, E as EIP712Domain, d as EIP712Types, i as EVMPaymentPayload, M as MultiPaymentConfig, k as NEARPaymentPayload, N as NativeCurrency, x as NetworkBalance, a as NetworkType, g as PaymentHeaders, P as PaymentInfo, h as PaymentPayload, e as PaymentRequest, f as PaymentResult, S as SolanaPaymentPayload, j as StellarPaymentPayload, b as TokenConfig, T as TokenType, U as USDCConfig, c as WalletAdapter, W as WalletState, v as X402AlgorandPayload, w as X402ClientConfig, r as X402EVMPayload, F as X402Error, D as X402ErrorCode, y as X402Event, z as X402EventData, B as X402EventHandler, m as X402Header, X as X402HeaderName, n as X402HeaderV1, o as X402HeaderV2, u as X402NEARPayload, q as X402PayloadData, p as X402PaymentOption, s as X402SolanaPayload, t as X402StellarPayload, l as X402Version } from './index-D-dO_FoP.mjs';
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { D as DEFAULT_CHAIN, a as DEFAULT_FACILITATOR_URL, S as SUPPORTED_CHAINS, X as X402Client, g as getChainById, b as getChainByName, d as getChainsByNetworkType, p as getChainsByToken, e as getEVMChainIds, c as getEnabledChains, l as getExplorerAddressUrl, k as getExplorerTxUrl, j as getNetworkType, f as getSVMChains, n as getSupportedTokens, m as getTokenConfig, i as isChainSupported, h as isSVMChain, o as isTokenSupported } from './index-BYX9BU79.js';
2
- export { caip2ToChain, chainToCAIP2, convertX402Header, createX402Header, createX402V1Header, createX402V2Header, decodeX402Header, detectX402Version, encodeX402Header, generatePaymentOptions, isCAIP2Format, parseNetworkIdentifier, validateAmount, validateRecipient } from './utils/index.js';
3
- export { A as CAIP2_IDENTIFIERS, B as CAIP2_TO_CHAIN, C as ChainConfig, D as DEFAULT_CONFIG, E as EIP712Domain, d as EIP712Types, h as EVMPaymentPayload, M as MultiPaymentConfig, j as NEARPaymentPayload, N as NativeCurrency, u as NetworkBalance, a as NetworkType, P as PaymentInfo, g as PaymentPayload, e as PaymentRequest, f as PaymentResult, S as SolanaPaymentPayload, i as StellarPaymentPayload, b as TokenConfig, T as TokenType, U as USDCConfig, c as WalletAdapter, W as WalletState, t as X402ClientConfig, p as X402EVMPayload, z as X402Error, y as X402ErrorCode, v as X402Event, w as X402EventData, x as X402EventHandler, k as X402Header, l as X402HeaderV1, m as X402HeaderV2, s as X402NEARPayload, o as X402PayloadData, n as X402PaymentOption, q as X402SolanaPayload, r as X402StellarPayload, X as X402Version } from './index-DR2vXt-c.js';
1
+ export { D as DEFAULT_CHAIN, a as DEFAULT_FACILITATOR_URL, S as SUPPORTED_CHAINS, X as X402Client, q as getAlgorandChains, g as getChainById, b as getChainByName, d as getChainsByNetworkType, p as getChainsByToken, e as getEVMChainIds, c as getEnabledChains, l as getExplorerAddressUrl, k as getExplorerTxUrl, j as getNetworkType, f as getSVMChains, n as getSupportedTokens, m as getTokenConfig, r as isAlgorandChain, i as isChainSupported, h as isSVMChain, o as isTokenSupported } from './index-VIOUicmO.js';
2
+ export { DEFAULT_PAYMENT_HEADER, PAYMENT_HEADER_NAMES, caip2ToChain, chainToCAIP2, convertX402Header, createPaymentHeaders, createX402Header, createX402V1Header, createX402V2Header, decodeX402Header, detectX402Version, encodeX402Header, generatePaymentOptions, getPaymentHeader, isCAIP2Format, parseNetworkIdentifier, validateAmount, validateRecipient } from './utils/index.js';
3
+ export { A as AlgorandPaymentPayload, H as CAIP2_IDENTIFIERS, I as CAIP2_TO_CHAIN, C as ChainConfig, G as DEFAULT_CONFIG, E as EIP712Domain, d as EIP712Types, i as EVMPaymentPayload, M as MultiPaymentConfig, k as NEARPaymentPayload, N as NativeCurrency, x as NetworkBalance, a as NetworkType, g as PaymentHeaders, P as PaymentInfo, h as PaymentPayload, e as PaymentRequest, f as PaymentResult, S as SolanaPaymentPayload, j as StellarPaymentPayload, b as TokenConfig, T as TokenType, U as USDCConfig, c as WalletAdapter, W as WalletState, v as X402AlgorandPayload, w as X402ClientConfig, r as X402EVMPayload, F as X402Error, D as X402ErrorCode, y as X402Event, z as X402EventData, B as X402EventHandler, m as X402Header, X as X402HeaderName, n as X402HeaderV1, o as X402HeaderV2, u as X402NEARPayload, q as X402PayloadData, p as X402PaymentOption, s as X402SolanaPayload, t as X402StellarPayload, l as X402Version } from './index-D-dO_FoP.js';
package/dist/index.js CHANGED
@@ -23,7 +23,10 @@ var CAIP2_IDENTIFIERS = {
23
23
  // Stellar
24
24
  stellar: "stellar:pubnet",
25
25
  // NEAR
26
- near: "near:mainnet"
26
+ near: "near:mainnet",
27
+ // Algorand
28
+ algorand: "algorand:mainnet",
29
+ "algorand-testnet": "algorand:testnet"
27
30
  };
28
31
  var CAIP2_TO_CHAIN = Object.fromEntries(
29
32
  Object.entries(CAIP2_IDENTIFIERS).map(([k, v]) => [v, k])
@@ -572,6 +575,80 @@ var SUPPORTED_CHAINS = {
572
575
  enabled: true
573
576
  // NEP-366 meta-transactions supported
574
577
  }
578
+ },
579
+ // ============================================================================
580
+ // ALGORAND (2 networks) - Uses ASA transfers with atomic transaction groups
581
+ // ============================================================================
582
+ algorand: {
583
+ chainId: 0,
584
+ // Non-EVM (Algorand uses genesis hash for network identification)
585
+ chainIdHex: "0x0",
586
+ name: "algorand",
587
+ displayName: "Algorand",
588
+ networkType: "algorand",
589
+ rpcUrl: "https://mainnet-api.algonode.cloud",
590
+ explorerUrl: "https://allo.info",
591
+ nativeCurrency: {
592
+ name: "Algo",
593
+ symbol: "ALGO",
594
+ decimals: 6
595
+ // Algorand uses 6 decimals (microAlgos)
596
+ },
597
+ usdc: {
598
+ address: "31566704",
599
+ // USDC ASA ID on Algorand mainnet
600
+ decimals: 6,
601
+ name: "USDC",
602
+ version: "1"
603
+ },
604
+ tokens: {
605
+ usdc: {
606
+ address: "31566704",
607
+ // USDC ASA ID on Algorand mainnet
608
+ decimals: 6,
609
+ name: "USDC",
610
+ version: "1"
611
+ }
612
+ },
613
+ x402: {
614
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
615
+ enabled: true
616
+ }
617
+ },
618
+ "algorand-testnet": {
619
+ chainId: 0,
620
+ // Non-EVM
621
+ chainIdHex: "0x0",
622
+ name: "algorand-testnet",
623
+ displayName: "Algorand Testnet",
624
+ networkType: "algorand",
625
+ rpcUrl: "https://testnet-api.algonode.cloud",
626
+ explorerUrl: "https://testnet.allo.info",
627
+ nativeCurrency: {
628
+ name: "Algo",
629
+ symbol: "ALGO",
630
+ decimals: 6
631
+ },
632
+ usdc: {
633
+ address: "10458941",
634
+ // USDC ASA ID on Algorand testnet
635
+ decimals: 6,
636
+ name: "USDC",
637
+ version: "1"
638
+ },
639
+ tokens: {
640
+ usdc: {
641
+ address: "10458941",
642
+ // USDC ASA ID on Algorand testnet
643
+ decimals: 6,
644
+ name: "USDC",
645
+ version: "1"
646
+ }
647
+ },
648
+ x402: {
649
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
650
+ enabled: true
651
+ }
575
652
  }
576
653
  };
577
654
  var DEFAULT_CHAIN = "base";
@@ -624,6 +701,8 @@ function getExplorerTxUrl(chainName, txHash) {
624
701
  return `${chain.explorerUrl}/tx/${txHash}`;
625
702
  case "near":
626
703
  return `${chain.explorerUrl}/txns/${txHash}`;
704
+ case "algorand":
705
+ return `${chain.explorerUrl}/tx/${txHash}`;
627
706
  default:
628
707
  return null;
629
708
  }
@@ -641,10 +720,21 @@ function getExplorerAddressUrl(chainName, address) {
641
720
  return `${chain.explorerUrl}/account/${address}`;
642
721
  case "near":
643
722
  return `${chain.explorerUrl}/address/${address}`;
723
+ case "algorand":
724
+ return `${chain.explorerUrl}/account/${address}`;
644
725
  default:
645
726
  return null;
646
727
  }
647
728
  }
729
+ function getAlgorandChains() {
730
+ return Object.values(SUPPORTED_CHAINS).filter(
731
+ (chain) => chain.networkType === "algorand" && chain.x402.enabled
732
+ );
733
+ }
734
+ function isAlgorandChain(chainName) {
735
+ const chain = getChainByName(chainName);
736
+ return chain?.networkType === "algorand";
737
+ }
648
738
  function getTokenConfig(chainName, tokenType = "usdc") {
649
739
  const chain = getChainByName(chainName);
650
740
  if (!chain) return void 0;
@@ -903,6 +993,20 @@ function validateAmount(amount) {
903
993
  );
904
994
  }
905
995
  }
996
+ function createPaymentHeaders(paymentHeader) {
997
+ return {
998
+ "X-PAYMENT": paymentHeader,
999
+ "PAYMENT-SIGNATURE": paymentHeader
1000
+ };
1001
+ }
1002
+ function getPaymentHeader(paymentHeader, headerName = "X-PAYMENT") {
1003
+ return { [headerName]: paymentHeader };
1004
+ }
1005
+ var DEFAULT_PAYMENT_HEADER = "X-PAYMENT";
1006
+ var PAYMENT_HEADER_NAMES = [
1007
+ "X-PAYMENT",
1008
+ "PAYMENT-SIGNATURE"
1009
+ ];
906
1010
 
907
1011
  // src/client/X402Client.ts
908
1012
  var X402Client = class {
@@ -1327,6 +1431,10 @@ var X402Client = class {
1327
1431
  const result = {
1328
1432
  success: true,
1329
1433
  paymentHeader,
1434
+ headers: {
1435
+ "X-PAYMENT": paymentHeader,
1436
+ "PAYMENT-SIGNATURE": paymentHeader
1437
+ },
1330
1438
  network: chain.name,
1331
1439
  payer: from
1332
1440
  };
@@ -1411,12 +1519,15 @@ exports.CAIP2_TO_CHAIN = CAIP2_TO_CHAIN;
1411
1519
  exports.DEFAULT_CHAIN = DEFAULT_CHAIN;
1412
1520
  exports.DEFAULT_CONFIG = DEFAULT_CONFIG;
1413
1521
  exports.DEFAULT_FACILITATOR_URL = DEFAULT_FACILITATOR_URL;
1522
+ exports.DEFAULT_PAYMENT_HEADER = DEFAULT_PAYMENT_HEADER;
1523
+ exports.PAYMENT_HEADER_NAMES = PAYMENT_HEADER_NAMES;
1414
1524
  exports.SUPPORTED_CHAINS = SUPPORTED_CHAINS;
1415
1525
  exports.X402Client = X402Client;
1416
1526
  exports.X402Error = X402Error;
1417
1527
  exports.caip2ToChain = caip2ToChain;
1418
1528
  exports.chainToCAIP2 = chainToCAIP2;
1419
1529
  exports.convertX402Header = convertX402Header;
1530
+ exports.createPaymentHeaders = createPaymentHeaders;
1420
1531
  exports.createX402Header = createX402Header;
1421
1532
  exports.createX402V1Header = createX402V1Header;
1422
1533
  exports.createX402V2Header = createX402V2Header;
@@ -1424,6 +1535,7 @@ exports.decodeX402Header = decodeX402Header;
1424
1535
  exports.detectX402Version = detectX402Version;
1425
1536
  exports.encodeX402Header = encodeX402Header;
1426
1537
  exports.generatePaymentOptions = generatePaymentOptions;
1538
+ exports.getAlgorandChains = getAlgorandChains;
1427
1539
  exports.getChainById = getChainById;
1428
1540
  exports.getChainByName = getChainByName;
1429
1541
  exports.getChainsByNetworkType = getChainsByNetworkType;
@@ -1433,9 +1545,11 @@ exports.getEnabledChains = getEnabledChains;
1433
1545
  exports.getExplorerAddressUrl = getExplorerAddressUrl;
1434
1546
  exports.getExplorerTxUrl = getExplorerTxUrl;
1435
1547
  exports.getNetworkType = getNetworkType;
1548
+ exports.getPaymentHeader = getPaymentHeader;
1436
1549
  exports.getSVMChains = getSVMChains;
1437
1550
  exports.getSupportedTokens = getSupportedTokens;
1438
1551
  exports.getTokenConfig = getTokenConfig;
1552
+ exports.isAlgorandChain = isAlgorandChain;
1439
1553
  exports.isCAIP2Format = isCAIP2Format;
1440
1554
  exports.isChainSupported = isChainSupported;
1441
1555
  exports.isSVMChain = isSVMChain;