uvd-x402-sdk 2.3.0 → 2.5.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 +7 -1
- package/dist/adapters/index.d.ts +7 -1
- package/dist/adapters/index.js +87 -3
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/index.mjs +87 -3
- package/dist/adapters/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +244 -146
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +243 -147
- package/dist/index.mjs.map +1 -1
- package/dist/providers/evm/index.d.mts +7 -2
- package/dist/providers/evm/index.d.ts +7 -2
- package/dist/providers/evm/index.js +101 -13
- package/dist/providers/evm/index.js.map +1 -1
- package/dist/providers/evm/index.mjs +101 -13
- package/dist/providers/evm/index.mjs.map +1 -1
- package/dist/providers/near/index.d.mts +6 -2
- package/dist/providers/near/index.d.ts +6 -2
- package/dist/providers/near/index.js +562 -5
- package/dist/providers/near/index.js.map +1 -1
- package/dist/providers/near/index.mjs +562 -5
- package/dist/providers/near/index.mjs.map +1 -1
- package/dist/providers/solana/index.d.mts +6 -4
- package/dist/providers/solana/index.d.ts +6 -4
- package/dist/providers/solana/index.js +33 -7
- package/dist/providers/solana/index.js.map +1 -1
- package/dist/providers/solana/index.mjs +33 -7
- package/dist/providers/solana/index.mjs.map +1 -1
- package/dist/providers/stellar/index.d.mts +6 -2
- package/dist/providers/stellar/index.d.ts +6 -2
- package/dist/providers/stellar/index.js +568 -11
- package/dist/providers/stellar/index.js.map +1 -1
- package/dist/providers/stellar/index.mjs +568 -11
- package/dist/providers/stellar/index.mjs.map +1 -1
- package/dist/react/index.js +96 -12
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +96 -12
- package/dist/react/index.mjs.map +1 -1
- package/dist/utils/index.d.mts +30 -1
- package/dist/utils/index.d.ts +30 -1
- package/dist/utils/index.js +101 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +100 -1
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/adapters/wagmi.ts +20 -5
- package/src/client/X402Client.ts +32 -15
- package/src/index.ts +3 -0
- package/src/providers/evm/index.ts +40 -15
- package/src/providers/near/index.ts +25 -8
- package/src/providers/solana/index.ts +29 -10
- package/src/providers/stellar/index.ts +31 -14
- package/src/utils/index.ts +5 -0
- package/src/utils/validation.ts +151 -0
package/dist/index.mjs
CHANGED
|
@@ -682,6 +682,226 @@ function getChainsByToken(tokenType) {
|
|
|
682
682
|
});
|
|
683
683
|
}
|
|
684
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
|
+
|
|
685
905
|
// src/client/X402Client.ts
|
|
686
906
|
var X402Client = class {
|
|
687
907
|
// Configuration
|
|
@@ -1032,6 +1252,7 @@ var X402Client = class {
|
|
|
1032
1252
|
throw new X402Error("Wallet not connected", "WALLET_NOT_CONNECTED");
|
|
1033
1253
|
}
|
|
1034
1254
|
const recipient = this.getRecipientForNetwork(paymentInfo, "evm");
|
|
1255
|
+
validateRecipient(recipient, "evm");
|
|
1035
1256
|
const nonceBytes = new Uint8Array(32);
|
|
1036
1257
|
if (typeof window !== "undefined" && window.crypto) {
|
|
1037
1258
|
window.crypto.getRandomValues(nonceBytes);
|
|
@@ -1113,21 +1334,30 @@ var X402Client = class {
|
|
|
1113
1334
|
}
|
|
1114
1335
|
encodeEVMPaymentHeader(payload, chain) {
|
|
1115
1336
|
const fullSignature = payload.r + payload.s.slice(2) + payload.v.toString(16).padStart(2, "0");
|
|
1116
|
-
const
|
|
1337
|
+
const version = this.config.x402Version === 2 ? 2 : 1;
|
|
1338
|
+
const payloadData = {
|
|
1339
|
+
signature: fullSignature,
|
|
1340
|
+
authorization: {
|
|
1341
|
+
from: payload.from,
|
|
1342
|
+
to: payload.to,
|
|
1343
|
+
value: payload.value,
|
|
1344
|
+
validAfter: payload.validAfter.toString(),
|
|
1345
|
+
validBefore: payload.validBefore.toString(),
|
|
1346
|
+
nonce: payload.nonce
|
|
1347
|
+
}
|
|
1348
|
+
};
|
|
1349
|
+
const x402Payload = version === 2 ? {
|
|
1350
|
+
x402Version: 2,
|
|
1351
|
+
scheme: "exact",
|
|
1352
|
+
network: chainToCAIP2(chain.name),
|
|
1353
|
+
// CAIP-2 format for v2
|
|
1354
|
+
payload: payloadData
|
|
1355
|
+
} : {
|
|
1117
1356
|
x402Version: 1,
|
|
1118
1357
|
scheme: "exact",
|
|
1119
1358
|
network: chain.name,
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
authorization: {
|
|
1123
|
-
from: payload.from,
|
|
1124
|
-
to: payload.to,
|
|
1125
|
-
value: payload.value,
|
|
1126
|
-
validAfter: payload.validAfter.toString(),
|
|
1127
|
-
validBefore: payload.validBefore.toString(),
|
|
1128
|
-
nonce: payload.nonce
|
|
1129
|
-
}
|
|
1130
|
-
}
|
|
1359
|
+
// Plain chain name for v1
|
|
1360
|
+
payload: payloadData
|
|
1131
1361
|
};
|
|
1132
1362
|
const jsonString = JSON.stringify(x402Payload);
|
|
1133
1363
|
return btoa(jsonString);
|
|
@@ -1174,140 +1404,6 @@ var X402Client = class {
|
|
|
1174
1404
|
}
|
|
1175
1405
|
};
|
|
1176
1406
|
|
|
1177
|
-
|
|
1178
|
-
function detectX402Version(data) {
|
|
1179
|
-
if (typeof data !== "object" || data === null) {
|
|
1180
|
-
return 1;
|
|
1181
|
-
}
|
|
1182
|
-
const obj = data;
|
|
1183
|
-
if (obj.x402Version === 2) {
|
|
1184
|
-
return 2;
|
|
1185
|
-
}
|
|
1186
|
-
if (obj.accepts && Array.isArray(obj.accepts)) {
|
|
1187
|
-
return 2;
|
|
1188
|
-
}
|
|
1189
|
-
if (typeof obj.network === "string") {
|
|
1190
|
-
if (obj.network.includes(":")) {
|
|
1191
|
-
return 2;
|
|
1192
|
-
}
|
|
1193
|
-
}
|
|
1194
|
-
return 1;
|
|
1195
|
-
}
|
|
1196
|
-
function chainToCAIP2(chainName) {
|
|
1197
|
-
const caip2 = CAIP2_IDENTIFIERS[chainName.toLowerCase()];
|
|
1198
|
-
if (caip2) {
|
|
1199
|
-
return caip2;
|
|
1200
|
-
}
|
|
1201
|
-
const chain = getChainByName(chainName);
|
|
1202
|
-
if (chain) {
|
|
1203
|
-
if (chain.networkType === "evm") {
|
|
1204
|
-
return `eip155:${chain.chainId}`;
|
|
1205
|
-
}
|
|
1206
|
-
return `${chain.networkType}:${chainName}`;
|
|
1207
|
-
}
|
|
1208
|
-
return chainName;
|
|
1209
|
-
}
|
|
1210
|
-
function caip2ToChain(caip2) {
|
|
1211
|
-
if (CAIP2_TO_CHAIN[caip2]) {
|
|
1212
|
-
return CAIP2_TO_CHAIN[caip2];
|
|
1213
|
-
}
|
|
1214
|
-
const match = caip2.match(/^eip155:(\d+)$/);
|
|
1215
|
-
if (match) {
|
|
1216
|
-
const chainId = parseInt(match[1], 10);
|
|
1217
|
-
for (const [name, _config] of Object.entries(CAIP2_IDENTIFIERS)) {
|
|
1218
|
-
const chain = getChainByName(name);
|
|
1219
|
-
if (chain?.chainId === chainId) {
|
|
1220
|
-
return name;
|
|
1221
|
-
}
|
|
1222
|
-
}
|
|
1223
|
-
}
|
|
1224
|
-
const parts = caip2.split(":");
|
|
1225
|
-
if (parts.length === 2) {
|
|
1226
|
-
const networkName = parts[1];
|
|
1227
|
-
if (getChainByName(networkName)) {
|
|
1228
|
-
return networkName;
|
|
1229
|
-
}
|
|
1230
|
-
}
|
|
1231
|
-
return null;
|
|
1232
|
-
}
|
|
1233
|
-
function parseNetworkIdentifier(network) {
|
|
1234
|
-
if (network.includes(":")) {
|
|
1235
|
-
return caip2ToChain(network) || network;
|
|
1236
|
-
}
|
|
1237
|
-
return network.toLowerCase();
|
|
1238
|
-
}
|
|
1239
|
-
function encodeX402Header(header) {
|
|
1240
|
-
return btoa(JSON.stringify(header));
|
|
1241
|
-
}
|
|
1242
|
-
function decodeX402Header(encoded) {
|
|
1243
|
-
const json = atob(encoded);
|
|
1244
|
-
return JSON.parse(json);
|
|
1245
|
-
}
|
|
1246
|
-
function createX402V1Header(network, payload) {
|
|
1247
|
-
return {
|
|
1248
|
-
x402Version: 1,
|
|
1249
|
-
scheme: "exact",
|
|
1250
|
-
network,
|
|
1251
|
-
payload
|
|
1252
|
-
};
|
|
1253
|
-
}
|
|
1254
|
-
function createX402V2Header(network, payload, accepts) {
|
|
1255
|
-
const header = {
|
|
1256
|
-
x402Version: 2,
|
|
1257
|
-
scheme: "exact",
|
|
1258
|
-
network: network.includes(":") ? network : chainToCAIP2(network),
|
|
1259
|
-
payload
|
|
1260
|
-
};
|
|
1261
|
-
if (accepts && accepts.length > 0) {
|
|
1262
|
-
header.accepts = accepts;
|
|
1263
|
-
}
|
|
1264
|
-
return header;
|
|
1265
|
-
}
|
|
1266
|
-
function createX402Header(chainConfig, payload, version = "auto") {
|
|
1267
|
-
const effectiveVersion = version === "auto" ? 1 : version;
|
|
1268
|
-
if (effectiveVersion === 2) {
|
|
1269
|
-
return createX402V2Header(chainConfig.name, payload);
|
|
1270
|
-
}
|
|
1271
|
-
return createX402V1Header(chainConfig.name, payload);
|
|
1272
|
-
}
|
|
1273
|
-
function generatePaymentOptions(chainConfigs, amount, facilitator) {
|
|
1274
|
-
return chainConfigs.filter((chain) => chain.x402.enabled).map((chain) => {
|
|
1275
|
-
const atomicAmount = Math.floor(
|
|
1276
|
-
parseFloat(amount) * Math.pow(10, chain.usdc.decimals)
|
|
1277
|
-
).toString();
|
|
1278
|
-
return {
|
|
1279
|
-
network: chainToCAIP2(chain.name),
|
|
1280
|
-
asset: chain.usdc.address,
|
|
1281
|
-
amount: atomicAmount,
|
|
1282
|
-
facilitator: facilitator || chain.x402.facilitatorUrl
|
|
1283
|
-
};
|
|
1284
|
-
});
|
|
1285
|
-
}
|
|
1286
|
-
function isCAIP2Format(network) {
|
|
1287
|
-
return network.includes(":");
|
|
1288
|
-
}
|
|
1289
|
-
function convertX402Header(header, targetVersion) {
|
|
1290
|
-
if (header.x402Version === targetVersion) {
|
|
1291
|
-
return header;
|
|
1292
|
-
}
|
|
1293
|
-
if (targetVersion === 2) {
|
|
1294
|
-
return {
|
|
1295
|
-
x402Version: 2,
|
|
1296
|
-
scheme: "exact",
|
|
1297
|
-
network: chainToCAIP2(header.network),
|
|
1298
|
-
payload: header.payload
|
|
1299
|
-
};
|
|
1300
|
-
} else {
|
|
1301
|
-
const chainName = isCAIP2Format(header.network) ? caip2ToChain(header.network) || header.network : header.network;
|
|
1302
|
-
return {
|
|
1303
|
-
x402Version: 1,
|
|
1304
|
-
scheme: "exact",
|
|
1305
|
-
network: chainName,
|
|
1306
|
-
payload: header.payload
|
|
1307
|
-
};
|
|
1308
|
-
}
|
|
1309
|
-
}
|
|
1310
|
-
|
|
1311
|
-
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 };
|
|
1407
|
+
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 };
|
|
1312
1408
|
//# sourceMappingURL=index.mjs.map
|
|
1313
1409
|
//# sourceMappingURL=index.mjs.map
|