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.
- package/README.md +380 -3
- package/dist/adapters/index.d.mts +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.js +82 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/index.mjs +82 -1
- package/dist/adapters/index.mjs.map +1 -1
- package/dist/backend/index.d.mts +1036 -0
- package/dist/backend/index.d.ts +1036 -0
- package/dist/backend/index.js +1722 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/index.mjs +1704 -0
- package/dist/backend/index.mjs.map +1 -0
- package/dist/{index-BrFeSWKm.d.mts → index-C60c_e5z.d.mts} +13 -4
- package/dist/{index-DR2vXt-c.d.mts → index-D-dO_FoP.d.mts} +70 -4
- package/dist/{index-DR2vXt-c.d.ts → index-D-dO_FoP.d.ts} +70 -4
- package/dist/{index-BYX9BU79.d.ts → index-VIOUicmO.d.ts} +13 -4
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +115 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +110 -2
- package/dist/index.mjs.map +1 -1
- package/dist/providers/algorand/index.d.mts +86 -0
- package/dist/providers/algorand/index.d.ts +86 -0
- package/dist/providers/algorand/index.js +903 -0
- package/dist/providers/algorand/index.js.map +1 -0
- package/dist/providers/algorand/index.mjs +898 -0
- package/dist/providers/algorand/index.mjs.map +1 -0
- package/dist/providers/evm/index.d.mts +1 -1
- package/dist/providers/evm/index.d.ts +1 -1
- package/dist/providers/evm/index.js +78 -1
- package/dist/providers/evm/index.js.map +1 -1
- package/dist/providers/evm/index.mjs +78 -1
- package/dist/providers/evm/index.mjs.map +1 -1
- package/dist/providers/near/index.d.mts +1 -1
- package/dist/providers/near/index.d.ts +1 -1
- package/dist/providers/near/index.js +78 -1
- package/dist/providers/near/index.js.map +1 -1
- package/dist/providers/near/index.mjs +78 -1
- package/dist/providers/near/index.mjs.map +1 -1
- package/dist/providers/solana/index.d.mts +1 -1
- package/dist/providers/solana/index.d.ts +1 -1
- package/dist/providers/solana/index.js +78 -1
- package/dist/providers/solana/index.js.map +1 -1
- package/dist/providers/solana/index.mjs +78 -1
- package/dist/providers/solana/index.mjs.map +1 -1
- package/dist/providers/stellar/index.d.mts +1 -1
- package/dist/providers/stellar/index.d.ts +1 -1
- package/dist/providers/stellar/index.js +78 -1
- package/dist/providers/stellar/index.js.map +1 -1
- package/dist/providers/stellar/index.mjs +78 -1
- package/dist/providers/stellar/index.mjs.map +1 -1
- package/dist/react/index.d.mts +3 -3
- package/dist/react/index.d.ts +3 -3
- package/dist/react/index.js +82 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +82 -1
- package/dist/react/index.mjs.map +1 -1
- package/dist/utils/index.d.mts +57 -5
- package/dist/utils/index.d.ts +57 -5
- package/dist/utils/index.js +96 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +93 -2
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +24 -3
- package/src/adapters/wagmi.ts +4 -0
- package/src/backend/index.ts +2131 -0
- package/src/chains/index.ts +94 -2
- package/src/client/X402Client.ts +4 -0
- package/src/index.ts +26 -1
- package/src/providers/algorand/index.ts +356 -0
- package/src/types/index.ts +78 -3
- package/src/utils/index.ts +4 -0
- 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 {
|
|
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 {
|
|
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
|
|
131
|
-
* EVM chains (
|
|
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-
|
|
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,
|
|
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-
|
|
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,
|
|
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;
|