uvd-x402-sdk 2.2.2 → 2.4.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/dist/adapters/index.d.mts +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.js +83 -5
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/index.mjs +83 -5
- package/dist/adapters/index.mjs.map +1 -1
- package/dist/{index-OZTSi1rJ.d.ts → index-BYX9BU79.d.ts} +1 -1
- package/dist/{index-I60aHxwu.d.mts → index-BrFeSWKm.d.mts} +1 -1
- package/dist/{index-BG738nMY.d.mts → index-DR2vXt-c.d.mts} +2 -1
- package/dist/{index-BG738nMY.d.ts → index-DR2vXt-c.d.ts} +2 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +247 -139
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +246 -140
- package/dist/index.mjs.map +1 -1
- package/dist/providers/evm/index.d.mts +1 -1
- package/dist/providers/evm/index.d.ts +1 -1
- package/dist/providers/evm/index.js +83 -5
- package/dist/providers/evm/index.js.map +1 -1
- package/dist/providers/evm/index.mjs +83 -5
- 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.map +1 -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 +24 -5
- package/dist/providers/solana/index.js.map +1 -1
- package/dist/providers/solana/index.mjs +24 -5
- 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.map +1 -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 +83 -5
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +83 -5
- package/dist/react/index.mjs.map +1 -1
- package/dist/utils/index.d.mts +31 -2
- package/dist/utils/index.d.ts +31 -2
- package/dist/utils/index.js +125 -5
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +124 -6
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/adapters/wagmi.ts +4 -1
- package/src/chains/index.ts +23 -5
- package/src/client/X402Client.ts +4 -0
- package/src/index.ts +3 -0
- package/src/providers/evm/index.ts +4 -0
- package/src/types/index.ts +2 -1
- package/src/utils/index.ts +5 -0
- package/src/utils/validation.ts +151 -0
package/dist/index.mjs
CHANGED
|
@@ -126,7 +126,7 @@ var SUPPORTED_CHAINS = {
|
|
|
126
126
|
ausd: {
|
|
127
127
|
address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
|
|
128
128
|
decimals: 6,
|
|
129
|
-
name: "
|
|
129
|
+
name: "Agora Dollar",
|
|
130
130
|
version: "1"
|
|
131
131
|
}
|
|
132
132
|
},
|
|
@@ -170,7 +170,7 @@ var SUPPORTED_CHAINS = {
|
|
|
170
170
|
ausd: {
|
|
171
171
|
address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
|
|
172
172
|
decimals: 6,
|
|
173
|
-
name: "
|
|
173
|
+
name: "Agora Dollar",
|
|
174
174
|
version: "1"
|
|
175
175
|
},
|
|
176
176
|
pyusd: {
|
|
@@ -214,7 +214,7 @@ var SUPPORTED_CHAINS = {
|
|
|
214
214
|
ausd: {
|
|
215
215
|
address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
|
|
216
216
|
decimals: 6,
|
|
217
|
-
name: "
|
|
217
|
+
name: "Agora Dollar",
|
|
218
218
|
version: "1"
|
|
219
219
|
}
|
|
220
220
|
},
|
|
@@ -252,7 +252,13 @@ var SUPPORTED_CHAINS = {
|
|
|
252
252
|
ausd: {
|
|
253
253
|
address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
|
|
254
254
|
decimals: 6,
|
|
255
|
-
name: "
|
|
255
|
+
name: "Agora Dollar",
|
|
256
|
+
version: "1"
|
|
257
|
+
},
|
|
258
|
+
usdt: {
|
|
259
|
+
address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
|
|
260
|
+
decimals: 6,
|
|
261
|
+
name: "USD\u20AE0",
|
|
256
262
|
version: "1"
|
|
257
263
|
}
|
|
258
264
|
},
|
|
@@ -286,6 +292,12 @@ var SUPPORTED_CHAINS = {
|
|
|
286
292
|
decimals: 6,
|
|
287
293
|
name: "USD Coin",
|
|
288
294
|
version: "2"
|
|
295
|
+
},
|
|
296
|
+
usdt: {
|
|
297
|
+
address: "0x01bff41798a0bcf287b996046ca68b395dbc1071",
|
|
298
|
+
decimals: 6,
|
|
299
|
+
name: "USD\u20AE0",
|
|
300
|
+
version: "1"
|
|
289
301
|
}
|
|
290
302
|
},
|
|
291
303
|
x402: {
|
|
@@ -320,6 +332,13 @@ var SUPPORTED_CHAINS = {
|
|
|
320
332
|
name: "USDC",
|
|
321
333
|
// Celo uses "USDC" not "USD Coin" for EIP-712
|
|
322
334
|
version: "2"
|
|
335
|
+
},
|
|
336
|
+
usdt: {
|
|
337
|
+
address: "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e",
|
|
338
|
+
decimals: 6,
|
|
339
|
+
name: "Tether USD",
|
|
340
|
+
// Celo USDT uses "Tether USD" for EIP-712
|
|
341
|
+
version: "1"
|
|
323
342
|
}
|
|
324
343
|
},
|
|
325
344
|
x402: {
|
|
@@ -426,7 +445,7 @@ var SUPPORTED_CHAINS = {
|
|
|
426
445
|
ausd: {
|
|
427
446
|
address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
|
|
428
447
|
decimals: 6,
|
|
429
|
-
name: "
|
|
448
|
+
name: "Agora Dollar",
|
|
430
449
|
version: "1"
|
|
431
450
|
}
|
|
432
451
|
},
|
|
@@ -663,6 +682,226 @@ function getChainsByToken(tokenType) {
|
|
|
663
682
|
});
|
|
664
683
|
}
|
|
665
684
|
|
|
685
|
+
// src/utils/x402.ts
|
|
686
|
+
function detectX402Version(data) {
|
|
687
|
+
if (typeof data !== "object" || data === null) {
|
|
688
|
+
return 1;
|
|
689
|
+
}
|
|
690
|
+
const obj = data;
|
|
691
|
+
if (obj.x402Version === 2) {
|
|
692
|
+
return 2;
|
|
693
|
+
}
|
|
694
|
+
if (obj.accepts && Array.isArray(obj.accepts)) {
|
|
695
|
+
return 2;
|
|
696
|
+
}
|
|
697
|
+
if (typeof obj.network === "string") {
|
|
698
|
+
if (obj.network.includes(":")) {
|
|
699
|
+
return 2;
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
return 1;
|
|
703
|
+
}
|
|
704
|
+
function chainToCAIP2(chainName) {
|
|
705
|
+
const caip2 = CAIP2_IDENTIFIERS[chainName.toLowerCase()];
|
|
706
|
+
if (caip2) {
|
|
707
|
+
return caip2;
|
|
708
|
+
}
|
|
709
|
+
const chain = getChainByName(chainName);
|
|
710
|
+
if (chain) {
|
|
711
|
+
if (chain.networkType === "evm") {
|
|
712
|
+
return `eip155:${chain.chainId}`;
|
|
713
|
+
}
|
|
714
|
+
return `${chain.networkType}:${chainName}`;
|
|
715
|
+
}
|
|
716
|
+
return chainName;
|
|
717
|
+
}
|
|
718
|
+
function caip2ToChain(caip2) {
|
|
719
|
+
if (CAIP2_TO_CHAIN[caip2]) {
|
|
720
|
+
return CAIP2_TO_CHAIN[caip2];
|
|
721
|
+
}
|
|
722
|
+
const match = caip2.match(/^eip155:(\d+)$/);
|
|
723
|
+
if (match) {
|
|
724
|
+
const chainId = parseInt(match[1], 10);
|
|
725
|
+
for (const [name, _config] of Object.entries(CAIP2_IDENTIFIERS)) {
|
|
726
|
+
const chain = getChainByName(name);
|
|
727
|
+
if (chain?.chainId === chainId) {
|
|
728
|
+
return name;
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
const parts = caip2.split(":");
|
|
733
|
+
if (parts.length === 2) {
|
|
734
|
+
const networkName = parts[1];
|
|
735
|
+
if (getChainByName(networkName)) {
|
|
736
|
+
return networkName;
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
return null;
|
|
740
|
+
}
|
|
741
|
+
function parseNetworkIdentifier(network) {
|
|
742
|
+
if (network.includes(":")) {
|
|
743
|
+
return caip2ToChain(network) || network;
|
|
744
|
+
}
|
|
745
|
+
return network.toLowerCase();
|
|
746
|
+
}
|
|
747
|
+
function encodeX402Header(header) {
|
|
748
|
+
return btoa(JSON.stringify(header));
|
|
749
|
+
}
|
|
750
|
+
function decodeX402Header(encoded) {
|
|
751
|
+
const json = atob(encoded);
|
|
752
|
+
return JSON.parse(json);
|
|
753
|
+
}
|
|
754
|
+
function createX402V1Header(network, payload) {
|
|
755
|
+
return {
|
|
756
|
+
x402Version: 1,
|
|
757
|
+
scheme: "exact",
|
|
758
|
+
network,
|
|
759
|
+
payload
|
|
760
|
+
};
|
|
761
|
+
}
|
|
762
|
+
function createX402V2Header(network, payload, accepts) {
|
|
763
|
+
const header = {
|
|
764
|
+
x402Version: 2,
|
|
765
|
+
scheme: "exact",
|
|
766
|
+
network: network.includes(":") ? network : chainToCAIP2(network),
|
|
767
|
+
payload
|
|
768
|
+
};
|
|
769
|
+
if (accepts && accepts.length > 0) {
|
|
770
|
+
header.accepts = accepts;
|
|
771
|
+
}
|
|
772
|
+
return header;
|
|
773
|
+
}
|
|
774
|
+
function createX402Header(chainConfig, payload, version = "auto") {
|
|
775
|
+
const effectiveVersion = version === "auto" ? 1 : version;
|
|
776
|
+
if (effectiveVersion === 2) {
|
|
777
|
+
return createX402V2Header(chainConfig.name, payload);
|
|
778
|
+
}
|
|
779
|
+
return createX402V1Header(chainConfig.name, payload);
|
|
780
|
+
}
|
|
781
|
+
function generatePaymentOptions(chainConfigs, amount, facilitator) {
|
|
782
|
+
return chainConfigs.filter((chain) => chain.x402.enabled).map((chain) => {
|
|
783
|
+
const atomicAmount = Math.floor(
|
|
784
|
+
parseFloat(amount) * Math.pow(10, chain.usdc.decimals)
|
|
785
|
+
).toString();
|
|
786
|
+
return {
|
|
787
|
+
network: chainToCAIP2(chain.name),
|
|
788
|
+
asset: chain.usdc.address,
|
|
789
|
+
amount: atomicAmount,
|
|
790
|
+
facilitator: facilitator || chain.x402.facilitatorUrl
|
|
791
|
+
};
|
|
792
|
+
});
|
|
793
|
+
}
|
|
794
|
+
function isCAIP2Format(network) {
|
|
795
|
+
return network.includes(":");
|
|
796
|
+
}
|
|
797
|
+
function convertX402Header(header, targetVersion) {
|
|
798
|
+
if (header.x402Version === targetVersion) {
|
|
799
|
+
return header;
|
|
800
|
+
}
|
|
801
|
+
if (targetVersion === 2) {
|
|
802
|
+
return {
|
|
803
|
+
x402Version: 2,
|
|
804
|
+
scheme: "exact",
|
|
805
|
+
network: chainToCAIP2(header.network),
|
|
806
|
+
payload: header.payload
|
|
807
|
+
};
|
|
808
|
+
} else {
|
|
809
|
+
const chainName = isCAIP2Format(header.network) ? caip2ToChain(header.network) || header.network : header.network;
|
|
810
|
+
return {
|
|
811
|
+
x402Version: 1,
|
|
812
|
+
scheme: "exact",
|
|
813
|
+
network: chainName,
|
|
814
|
+
payload: header.payload
|
|
815
|
+
};
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
// src/utils/validation.ts
|
|
820
|
+
var ETH_ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/;
|
|
821
|
+
var SOLANA_ADDRESS_REGEX = /^[1-9A-HJ-NP-Za-km-z]{32,44}$/;
|
|
822
|
+
var STELLAR_ADDRESS_REGEX = /^G[A-Z2-7]{55}$/;
|
|
823
|
+
var NEAR_ADDRESS_REGEX = /^[a-z0-9._-]+$/;
|
|
824
|
+
function validateRecipient(recipient, networkType) {
|
|
825
|
+
if (!recipient) {
|
|
826
|
+
throw new X402Error(
|
|
827
|
+
"Recipient address is required. The payTo/recipient field cannot be empty. Please provide a valid recipient address where payments should be sent.",
|
|
828
|
+
"INVALID_RECIPIENT"
|
|
829
|
+
);
|
|
830
|
+
}
|
|
831
|
+
const trimmed = recipient.trim();
|
|
832
|
+
if (trimmed === "") {
|
|
833
|
+
throw new X402Error(
|
|
834
|
+
"Recipient address cannot be empty or whitespace. Please provide a valid recipient address.",
|
|
835
|
+
"INVALID_RECIPIENT"
|
|
836
|
+
);
|
|
837
|
+
}
|
|
838
|
+
if (networkType) {
|
|
839
|
+
switch (networkType) {
|
|
840
|
+
case "evm":
|
|
841
|
+
if (!ETH_ADDRESS_REGEX.test(trimmed)) {
|
|
842
|
+
throw new X402Error(
|
|
843
|
+
`Invalid EVM recipient address: "${trimmed}". Expected a 40-character hexadecimal address starting with 0x.`,
|
|
844
|
+
"INVALID_RECIPIENT"
|
|
845
|
+
);
|
|
846
|
+
}
|
|
847
|
+
break;
|
|
848
|
+
case "svm":
|
|
849
|
+
case "solana":
|
|
850
|
+
if (!SOLANA_ADDRESS_REGEX.test(trimmed)) {
|
|
851
|
+
throw new X402Error(
|
|
852
|
+
`Invalid Solana recipient address: "${trimmed}". Expected a base58-encoded public key (32-44 characters).`,
|
|
853
|
+
"INVALID_RECIPIENT"
|
|
854
|
+
);
|
|
855
|
+
}
|
|
856
|
+
break;
|
|
857
|
+
case "stellar":
|
|
858
|
+
if (!STELLAR_ADDRESS_REGEX.test(trimmed)) {
|
|
859
|
+
throw new X402Error(
|
|
860
|
+
`Invalid Stellar recipient address: "${trimmed}". Expected a G-prefixed public key (56 characters).`,
|
|
861
|
+
"INVALID_RECIPIENT"
|
|
862
|
+
);
|
|
863
|
+
}
|
|
864
|
+
break;
|
|
865
|
+
case "near":
|
|
866
|
+
if (!NEAR_ADDRESS_REGEX.test(trimmed) || trimmed.length > 64) {
|
|
867
|
+
throw new X402Error(
|
|
868
|
+
`Invalid NEAR recipient address: "${trimmed}". Expected a valid NEAR account ID.`,
|
|
869
|
+
"INVALID_RECIPIENT"
|
|
870
|
+
);
|
|
871
|
+
}
|
|
872
|
+
break;
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
function validateAmount(amount) {
|
|
877
|
+
if (!amount) {
|
|
878
|
+
throw new X402Error(
|
|
879
|
+
"Payment amount is required.",
|
|
880
|
+
"INVALID_AMOUNT"
|
|
881
|
+
);
|
|
882
|
+
}
|
|
883
|
+
const trimmed = amount.trim();
|
|
884
|
+
if (trimmed === "") {
|
|
885
|
+
throw new X402Error(
|
|
886
|
+
"Payment amount cannot be empty.",
|
|
887
|
+
"INVALID_AMOUNT"
|
|
888
|
+
);
|
|
889
|
+
}
|
|
890
|
+
const num = parseFloat(trimmed);
|
|
891
|
+
if (isNaN(num)) {
|
|
892
|
+
throw new X402Error(
|
|
893
|
+
`Invalid payment amount: "${trimmed}". Expected a valid number.`,
|
|
894
|
+
"INVALID_AMOUNT"
|
|
895
|
+
);
|
|
896
|
+
}
|
|
897
|
+
if (num <= 0) {
|
|
898
|
+
throw new X402Error(
|
|
899
|
+
`Payment amount must be positive. Got: ${trimmed}`,
|
|
900
|
+
"INVALID_AMOUNT"
|
|
901
|
+
);
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
|
|
666
905
|
// src/client/X402Client.ts
|
|
667
906
|
var X402Client = class {
|
|
668
907
|
// Configuration
|
|
@@ -1013,6 +1252,7 @@ var X402Client = class {
|
|
|
1013
1252
|
throw new X402Error("Wallet not connected", "WALLET_NOT_CONNECTED");
|
|
1014
1253
|
}
|
|
1015
1254
|
const recipient = this.getRecipientForNetwork(paymentInfo, "evm");
|
|
1255
|
+
validateRecipient(recipient, "evm");
|
|
1016
1256
|
const nonceBytes = new Uint8Array(32);
|
|
1017
1257
|
if (typeof window !== "undefined" && window.crypto) {
|
|
1018
1258
|
window.crypto.getRandomValues(nonceBytes);
|
|
@@ -1155,140 +1395,6 @@ var X402Client = class {
|
|
|
1155
1395
|
}
|
|
1156
1396
|
};
|
|
1157
1397
|
|
|
1158
|
-
|
|
1159
|
-
function detectX402Version(data) {
|
|
1160
|
-
if (typeof data !== "object" || data === null) {
|
|
1161
|
-
return 1;
|
|
1162
|
-
}
|
|
1163
|
-
const obj = data;
|
|
1164
|
-
if (obj.x402Version === 2) {
|
|
1165
|
-
return 2;
|
|
1166
|
-
}
|
|
1167
|
-
if (obj.accepts && Array.isArray(obj.accepts)) {
|
|
1168
|
-
return 2;
|
|
1169
|
-
}
|
|
1170
|
-
if (typeof obj.network === "string") {
|
|
1171
|
-
if (obj.network.includes(":")) {
|
|
1172
|
-
return 2;
|
|
1173
|
-
}
|
|
1174
|
-
}
|
|
1175
|
-
return 1;
|
|
1176
|
-
}
|
|
1177
|
-
function chainToCAIP2(chainName) {
|
|
1178
|
-
const caip2 = CAIP2_IDENTIFIERS[chainName.toLowerCase()];
|
|
1179
|
-
if (caip2) {
|
|
1180
|
-
return caip2;
|
|
1181
|
-
}
|
|
1182
|
-
const chain = getChainByName(chainName);
|
|
1183
|
-
if (chain) {
|
|
1184
|
-
if (chain.networkType === "evm") {
|
|
1185
|
-
return `eip155:${chain.chainId}`;
|
|
1186
|
-
}
|
|
1187
|
-
return `${chain.networkType}:${chainName}`;
|
|
1188
|
-
}
|
|
1189
|
-
return chainName;
|
|
1190
|
-
}
|
|
1191
|
-
function caip2ToChain(caip2) {
|
|
1192
|
-
if (CAIP2_TO_CHAIN[caip2]) {
|
|
1193
|
-
return CAIP2_TO_CHAIN[caip2];
|
|
1194
|
-
}
|
|
1195
|
-
const match = caip2.match(/^eip155:(\d+)$/);
|
|
1196
|
-
if (match) {
|
|
1197
|
-
const chainId = parseInt(match[1], 10);
|
|
1198
|
-
for (const [name, _config] of Object.entries(CAIP2_IDENTIFIERS)) {
|
|
1199
|
-
const chain = getChainByName(name);
|
|
1200
|
-
if (chain?.chainId === chainId) {
|
|
1201
|
-
return name;
|
|
1202
|
-
}
|
|
1203
|
-
}
|
|
1204
|
-
}
|
|
1205
|
-
const parts = caip2.split(":");
|
|
1206
|
-
if (parts.length === 2) {
|
|
1207
|
-
const networkName = parts[1];
|
|
1208
|
-
if (getChainByName(networkName)) {
|
|
1209
|
-
return networkName;
|
|
1210
|
-
}
|
|
1211
|
-
}
|
|
1212
|
-
return null;
|
|
1213
|
-
}
|
|
1214
|
-
function parseNetworkIdentifier(network) {
|
|
1215
|
-
if (network.includes(":")) {
|
|
1216
|
-
return caip2ToChain(network) || network;
|
|
1217
|
-
}
|
|
1218
|
-
return network.toLowerCase();
|
|
1219
|
-
}
|
|
1220
|
-
function encodeX402Header(header) {
|
|
1221
|
-
return btoa(JSON.stringify(header));
|
|
1222
|
-
}
|
|
1223
|
-
function decodeX402Header(encoded) {
|
|
1224
|
-
const json = atob(encoded);
|
|
1225
|
-
return JSON.parse(json);
|
|
1226
|
-
}
|
|
1227
|
-
function createX402V1Header(network, payload) {
|
|
1228
|
-
return {
|
|
1229
|
-
x402Version: 1,
|
|
1230
|
-
scheme: "exact",
|
|
1231
|
-
network,
|
|
1232
|
-
payload
|
|
1233
|
-
};
|
|
1234
|
-
}
|
|
1235
|
-
function createX402V2Header(network, payload, accepts) {
|
|
1236
|
-
const header = {
|
|
1237
|
-
x402Version: 2,
|
|
1238
|
-
scheme: "exact",
|
|
1239
|
-
network: network.includes(":") ? network : chainToCAIP2(network),
|
|
1240
|
-
payload
|
|
1241
|
-
};
|
|
1242
|
-
if (accepts && accepts.length > 0) {
|
|
1243
|
-
header.accepts = accepts;
|
|
1244
|
-
}
|
|
1245
|
-
return header;
|
|
1246
|
-
}
|
|
1247
|
-
function createX402Header(chainConfig, payload, version = "auto") {
|
|
1248
|
-
const effectiveVersion = version === "auto" ? 1 : version;
|
|
1249
|
-
if (effectiveVersion === 2) {
|
|
1250
|
-
return createX402V2Header(chainConfig.name, payload);
|
|
1251
|
-
}
|
|
1252
|
-
return createX402V1Header(chainConfig.name, payload);
|
|
1253
|
-
}
|
|
1254
|
-
function generatePaymentOptions(chainConfigs, amount, facilitator) {
|
|
1255
|
-
return chainConfigs.filter((chain) => chain.x402.enabled).map((chain) => {
|
|
1256
|
-
const atomicAmount = Math.floor(
|
|
1257
|
-
parseFloat(amount) * Math.pow(10, chain.usdc.decimals)
|
|
1258
|
-
).toString();
|
|
1259
|
-
return {
|
|
1260
|
-
network: chainToCAIP2(chain.name),
|
|
1261
|
-
asset: chain.usdc.address,
|
|
1262
|
-
amount: atomicAmount,
|
|
1263
|
-
facilitator: facilitator || chain.x402.facilitatorUrl
|
|
1264
|
-
};
|
|
1265
|
-
});
|
|
1266
|
-
}
|
|
1267
|
-
function isCAIP2Format(network) {
|
|
1268
|
-
return network.includes(":");
|
|
1269
|
-
}
|
|
1270
|
-
function convertX402Header(header, targetVersion) {
|
|
1271
|
-
if (header.x402Version === targetVersion) {
|
|
1272
|
-
return header;
|
|
1273
|
-
}
|
|
1274
|
-
if (targetVersion === 2) {
|
|
1275
|
-
return {
|
|
1276
|
-
x402Version: 2,
|
|
1277
|
-
scheme: "exact",
|
|
1278
|
-
network: chainToCAIP2(header.network),
|
|
1279
|
-
payload: header.payload
|
|
1280
|
-
};
|
|
1281
|
-
} else {
|
|
1282
|
-
const chainName = isCAIP2Format(header.network) ? caip2ToChain(header.network) || header.network : header.network;
|
|
1283
|
-
return {
|
|
1284
|
-
x402Version: 1,
|
|
1285
|
-
scheme: "exact",
|
|
1286
|
-
network: chainName,
|
|
1287
|
-
payload: header.payload
|
|
1288
|
-
};
|
|
1289
|
-
}
|
|
1290
|
-
}
|
|
1291
|
-
|
|
1292
|
-
export { CAIP2_IDENTIFIERS, CAIP2_TO_CHAIN, DEFAULT_CHAIN, DEFAULT_CONFIG, DEFAULT_FACILITATOR_URL, SUPPORTED_CHAINS, X402Client, X402Error, caip2ToChain, chainToCAIP2, convertX402Header, createX402Header, createX402V1Header, createX402V2Header, decodeX402Header, detectX402Version, encodeX402Header, generatePaymentOptions, getChainById, getChainByName, getChainsByNetworkType, getChainsByToken, getEVMChainIds, getEnabledChains, getExplorerAddressUrl, getExplorerTxUrl, getNetworkType, getSVMChains, getSupportedTokens, getTokenConfig, isCAIP2Format, isChainSupported, isSVMChain, isTokenSupported, parseNetworkIdentifier };
|
|
1398
|
+
export { CAIP2_IDENTIFIERS, CAIP2_TO_CHAIN, DEFAULT_CHAIN, DEFAULT_CONFIG, DEFAULT_FACILITATOR_URL, SUPPORTED_CHAINS, X402Client, X402Error, caip2ToChain, chainToCAIP2, convertX402Header, createX402Header, createX402V1Header, createX402V2Header, decodeX402Header, detectX402Version, encodeX402Header, generatePaymentOptions, getChainById, getChainByName, getChainsByNetworkType, getChainsByToken, getEVMChainIds, getEnabledChains, getExplorerAddressUrl, getExplorerTxUrl, getNetworkType, getSVMChains, getSupportedTokens, getTokenConfig, isCAIP2Format, isChainSupported, isSVMChain, isTokenSupported, parseNetworkIdentifier, validateAmount, validateRecipient };
|
|
1293
1399
|
//# sourceMappingURL=index.mjs.map
|
|
1294
1400
|
//# sourceMappingURL=index.mjs.map
|