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
@@ -1,4 +1,4 @@
1
- import { X as X402Version, k as X402Header, o as X402PayloadData, l as X402HeaderV1, n as X402PaymentOption, m as X402HeaderV2, C as ChainConfig } from '../index-DR2vXt-c.mjs';
1
+ import { l as X402Version, m as X402Header, q as X402PayloadData, n as X402HeaderV1, p as X402PaymentOption, o as X402HeaderV2, C as ChainConfig, g as PaymentHeaders, X as X402HeaderName } from '../index-D-dO_FoP.mjs';
2
2
 
3
3
  /**
4
4
  * uvd-x402-sdk - x402 Protocol Utilities
@@ -101,11 +101,12 @@ declare function isCAIP2Format(network: string): boolean;
101
101
  declare function convertX402Header(header: X402Header, targetVersion: X402Version): X402Header;
102
102
 
103
103
  /**
104
- * uvd-x402-sdk - Validation Utilities
104
+ * uvd-x402-sdk - Validation and Payment Header Utilities
105
105
  *
106
- * Functions for validating payment parameters to prevent
107
- * invalid or empty values from being processed.
106
+ * Functions for validating payment parameters and creating
107
+ * payment headers for HTTP requests.
108
108
  */
109
+
109
110
  /**
110
111
  * Validate that a recipient address is present and valid
111
112
  *
@@ -128,5 +129,56 @@ declare function validateRecipient(recipient: string | undefined | null, network
128
129
  * @throws X402Error with code 'INVALID_AMOUNT' if validation fails
129
130
  */
130
131
  declare function validateAmount(amount: string | undefined | null): asserts amount is string;
132
+ /**
133
+ * Create payment headers object from a base64-encoded payload
134
+ *
135
+ * Returns an object with both X-PAYMENT and PAYMENT-SIGNATURE headers,
136
+ * making it easy to use either header format.
137
+ *
138
+ * @param paymentHeader - Base64-encoded payment payload
139
+ * @returns PaymentHeaders object with both header formats
140
+ *
141
+ * @example
142
+ * ```ts
143
+ * const headers = createPaymentHeaders(paymentHeader);
144
+ *
145
+ * // Use v1 header (most compatible)
146
+ * fetch(url, { headers: { 'X-PAYMENT': headers['X-PAYMENT'] } });
147
+ *
148
+ * // Use v2 header
149
+ * fetch(url, { headers: { 'PAYMENT-SIGNATURE': headers['PAYMENT-SIGNATURE'] } });
150
+ * ```
151
+ */
152
+ declare function createPaymentHeaders(paymentHeader: string): PaymentHeaders;
153
+ /**
154
+ * Get a single payment header by name
155
+ *
156
+ * @param paymentHeader - Base64-encoded payment payload
157
+ * @param headerName - Header name to use ('X-PAYMENT' or 'PAYMENT-SIGNATURE')
158
+ * @returns Object with a single header entry
159
+ *
160
+ * @example
161
+ * ```ts
162
+ * // Use with fetch spread operator
163
+ * fetch(url, {
164
+ * headers: {
165
+ * 'Content-Type': 'application/json',
166
+ * ...getPaymentHeader(result.paymentHeader, 'X-PAYMENT'),
167
+ * },
168
+ * });
169
+ * ```
170
+ */
171
+ declare function getPaymentHeader(paymentHeader: string, headerName?: X402HeaderName): Record<X402HeaderName, string>;
172
+ /**
173
+ * Default x402 payment header name
174
+ *
175
+ * Use 'X-PAYMENT' for maximum compatibility with all facilitators.
176
+ * Use 'PAYMENT-SIGNATURE' for x402 v2 compliance.
177
+ */
178
+ declare const DEFAULT_PAYMENT_HEADER: X402HeaderName;
179
+ /**
180
+ * All supported x402 payment header names
181
+ */
182
+ declare const PAYMENT_HEADER_NAMES: readonly X402HeaderName[];
131
183
 
132
- export { caip2ToChain, chainToCAIP2, convertX402Header, createX402Header, createX402V1Header, createX402V2Header, decodeX402Header, detectX402Version, encodeX402Header, generatePaymentOptions, isCAIP2Format, parseNetworkIdentifier, validateAmount, validateRecipient };
184
+ export { DEFAULT_PAYMENT_HEADER, PAYMENT_HEADER_NAMES, caip2ToChain, chainToCAIP2, convertX402Header, createPaymentHeaders, createX402Header, createX402V1Header, createX402V2Header, decodeX402Header, detectX402Version, encodeX402Header, generatePaymentOptions, getPaymentHeader, isCAIP2Format, parseNetworkIdentifier, validateAmount, validateRecipient };
@@ -1,4 +1,4 @@
1
- import { X as X402Version, k as X402Header, o as X402PayloadData, l as X402HeaderV1, n as X402PaymentOption, m as X402HeaderV2, C as ChainConfig } from '../index-DR2vXt-c.js';
1
+ import { l as X402Version, m as X402Header, q as X402PayloadData, n as X402HeaderV1, p as X402PaymentOption, o as X402HeaderV2, C as ChainConfig, g as PaymentHeaders, X as X402HeaderName } from '../index-D-dO_FoP.js';
2
2
 
3
3
  /**
4
4
  * uvd-x402-sdk - x402 Protocol Utilities
@@ -101,11 +101,12 @@ declare function isCAIP2Format(network: string): boolean;
101
101
  declare function convertX402Header(header: X402Header, targetVersion: X402Version): X402Header;
102
102
 
103
103
  /**
104
- * uvd-x402-sdk - Validation Utilities
104
+ * uvd-x402-sdk - Validation and Payment Header Utilities
105
105
  *
106
- * Functions for validating payment parameters to prevent
107
- * invalid or empty values from being processed.
106
+ * Functions for validating payment parameters and creating
107
+ * payment headers for HTTP requests.
108
108
  */
109
+
109
110
  /**
110
111
  * Validate that a recipient address is present and valid
111
112
  *
@@ -128,5 +129,56 @@ declare function validateRecipient(recipient: string | undefined | null, network
128
129
  * @throws X402Error with code 'INVALID_AMOUNT' if validation fails
129
130
  */
130
131
  declare function validateAmount(amount: string | undefined | null): asserts amount is string;
132
+ /**
133
+ * Create payment headers object from a base64-encoded payload
134
+ *
135
+ * Returns an object with both X-PAYMENT and PAYMENT-SIGNATURE headers,
136
+ * making it easy to use either header format.
137
+ *
138
+ * @param paymentHeader - Base64-encoded payment payload
139
+ * @returns PaymentHeaders object with both header formats
140
+ *
141
+ * @example
142
+ * ```ts
143
+ * const headers = createPaymentHeaders(paymentHeader);
144
+ *
145
+ * // Use v1 header (most compatible)
146
+ * fetch(url, { headers: { 'X-PAYMENT': headers['X-PAYMENT'] } });
147
+ *
148
+ * // Use v2 header
149
+ * fetch(url, { headers: { 'PAYMENT-SIGNATURE': headers['PAYMENT-SIGNATURE'] } });
150
+ * ```
151
+ */
152
+ declare function createPaymentHeaders(paymentHeader: string): PaymentHeaders;
153
+ /**
154
+ * Get a single payment header by name
155
+ *
156
+ * @param paymentHeader - Base64-encoded payment payload
157
+ * @param headerName - Header name to use ('X-PAYMENT' or 'PAYMENT-SIGNATURE')
158
+ * @returns Object with a single header entry
159
+ *
160
+ * @example
161
+ * ```ts
162
+ * // Use with fetch spread operator
163
+ * fetch(url, {
164
+ * headers: {
165
+ * 'Content-Type': 'application/json',
166
+ * ...getPaymentHeader(result.paymentHeader, 'X-PAYMENT'),
167
+ * },
168
+ * });
169
+ * ```
170
+ */
171
+ declare function getPaymentHeader(paymentHeader: string, headerName?: X402HeaderName): Record<X402HeaderName, string>;
172
+ /**
173
+ * Default x402 payment header name
174
+ *
175
+ * Use 'X-PAYMENT' for maximum compatibility with all facilitators.
176
+ * Use 'PAYMENT-SIGNATURE' for x402 v2 compliance.
177
+ */
178
+ declare const DEFAULT_PAYMENT_HEADER: X402HeaderName;
179
+ /**
180
+ * All supported x402 payment header names
181
+ */
182
+ declare const PAYMENT_HEADER_NAMES: readonly X402HeaderName[];
131
183
 
132
- export { caip2ToChain, chainToCAIP2, convertX402Header, createX402Header, createX402V1Header, createX402V2Header, decodeX402Header, detectX402Version, encodeX402Header, generatePaymentOptions, isCAIP2Format, parseNetworkIdentifier, validateAmount, validateRecipient };
184
+ export { DEFAULT_PAYMENT_HEADER, PAYMENT_HEADER_NAMES, caip2ToChain, chainToCAIP2, convertX402Header, createPaymentHeaders, createX402Header, createX402V1Header, createX402V2Header, decodeX402Header, detectX402Version, encodeX402Header, generatePaymentOptions, getPaymentHeader, isCAIP2Format, parseNetworkIdentifier, validateAmount, validateRecipient };
@@ -19,7 +19,10 @@ var CAIP2_IDENTIFIERS = {
19
19
  // Stellar
20
20
  stellar: "stellar:pubnet",
21
21
  // NEAR
22
- near: "near:mainnet"
22
+ near: "near:mainnet",
23
+ // Algorand
24
+ algorand: "algorand:mainnet",
25
+ "algorand-testnet": "algorand:testnet"
23
26
  };
24
27
  var CAIP2_TO_CHAIN = Object.fromEntries(
25
28
  Object.entries(CAIP2_IDENTIFIERS).map(([k, v]) => [v, k])
@@ -561,6 +564,80 @@ var SUPPORTED_CHAINS = {
561
564
  enabled: true
562
565
  // NEP-366 meta-transactions supported
563
566
  }
567
+ },
568
+ // ============================================================================
569
+ // ALGORAND (2 networks) - Uses ASA transfers with atomic transaction groups
570
+ // ============================================================================
571
+ algorand: {
572
+ chainId: 0,
573
+ // Non-EVM (Algorand uses genesis hash for network identification)
574
+ chainIdHex: "0x0",
575
+ name: "algorand",
576
+ displayName: "Algorand",
577
+ networkType: "algorand",
578
+ rpcUrl: "https://mainnet-api.algonode.cloud",
579
+ explorerUrl: "https://allo.info",
580
+ nativeCurrency: {
581
+ name: "Algo",
582
+ symbol: "ALGO",
583
+ decimals: 6
584
+ // Algorand uses 6 decimals (microAlgos)
585
+ },
586
+ usdc: {
587
+ address: "31566704",
588
+ // USDC ASA ID on Algorand mainnet
589
+ decimals: 6,
590
+ name: "USDC",
591
+ version: "1"
592
+ },
593
+ tokens: {
594
+ usdc: {
595
+ address: "31566704",
596
+ // USDC ASA ID on Algorand mainnet
597
+ decimals: 6,
598
+ name: "USDC",
599
+ version: "1"
600
+ }
601
+ },
602
+ x402: {
603
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
604
+ enabled: true
605
+ }
606
+ },
607
+ "algorand-testnet": {
608
+ chainId: 0,
609
+ // Non-EVM
610
+ chainIdHex: "0x0",
611
+ name: "algorand-testnet",
612
+ displayName: "Algorand Testnet",
613
+ networkType: "algorand",
614
+ rpcUrl: "https://testnet-api.algonode.cloud",
615
+ explorerUrl: "https://testnet.allo.info",
616
+ nativeCurrency: {
617
+ name: "Algo",
618
+ symbol: "ALGO",
619
+ decimals: 6
620
+ },
621
+ usdc: {
622
+ address: "10458941",
623
+ // USDC ASA ID on Algorand testnet
624
+ decimals: 6,
625
+ name: "USDC",
626
+ version: "1"
627
+ },
628
+ tokens: {
629
+ usdc: {
630
+ address: "10458941",
631
+ // USDC ASA ID on Algorand testnet
632
+ decimals: 6,
633
+ name: "USDC",
634
+ version: "1"
635
+ }
636
+ },
637
+ x402: {
638
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
639
+ enabled: true
640
+ }
564
641
  }
565
642
  };
566
643
  function getChainByName(name) {
@@ -786,10 +863,27 @@ function validateAmount(amount) {
786
863
  );
787
864
  }
788
865
  }
866
+ function createPaymentHeaders(paymentHeader) {
867
+ return {
868
+ "X-PAYMENT": paymentHeader,
869
+ "PAYMENT-SIGNATURE": paymentHeader
870
+ };
871
+ }
872
+ function getPaymentHeader(paymentHeader, headerName = "X-PAYMENT") {
873
+ return { [headerName]: paymentHeader };
874
+ }
875
+ var DEFAULT_PAYMENT_HEADER = "X-PAYMENT";
876
+ var PAYMENT_HEADER_NAMES = [
877
+ "X-PAYMENT",
878
+ "PAYMENT-SIGNATURE"
879
+ ];
789
880
 
881
+ exports.DEFAULT_PAYMENT_HEADER = DEFAULT_PAYMENT_HEADER;
882
+ exports.PAYMENT_HEADER_NAMES = PAYMENT_HEADER_NAMES;
790
883
  exports.caip2ToChain = caip2ToChain;
791
884
  exports.chainToCAIP2 = chainToCAIP2;
792
885
  exports.convertX402Header = convertX402Header;
886
+ exports.createPaymentHeaders = createPaymentHeaders;
793
887
  exports.createX402Header = createX402Header;
794
888
  exports.createX402V1Header = createX402V1Header;
795
889
  exports.createX402V2Header = createX402V2Header;
@@ -797,6 +891,7 @@ exports.decodeX402Header = decodeX402Header;
797
891
  exports.detectX402Version = detectX402Version;
798
892
  exports.encodeX402Header = encodeX402Header;
799
893
  exports.generatePaymentOptions = generatePaymentOptions;
894
+ exports.getPaymentHeader = getPaymentHeader;
800
895
  exports.isCAIP2Format = isCAIP2Format;
801
896
  exports.parseNetworkIdentifier = parseNetworkIdentifier;
802
897
  exports.validateAmount = validateAmount;