@piprail/sdk 1.2.0 → 1.3.1
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/CHANGELOG.md +39 -0
- package/ERRORS.md +1 -1
- package/README.md +3 -2
- package/dist/aptos-DTAONNMM.js +332 -0
- package/dist/aptos-MKZ5MAGL.cjs +332 -0
- package/dist/{chunk-DTIJYDG6.js → chunk-AGKC3C7Y.js} +4 -2
- package/dist/{chunk-NK64H3RM.cjs → chunk-YJPWIK5L.cjs} +4 -2
- package/dist/index.cjs +59 -46
- package/dist/index.d.cts +10 -3
- package/dist/index.d.ts +10 -3
- package/dist/index.js +21 -8
- package/dist/{near-VZ6XGVNJ.cjs → near-DISWUB7Y.cjs} +19 -19
- package/dist/{near-RJUETWY3.js → near-YX3XOASO.js} +1 -1
- package/dist/{solana-USZHRZFN.js → solana-37F2PR5H.js} +1 -1
- package/dist/{solana-CRLWAM7C.cjs → solana-RJPNEFSN.cjs} +14 -14
- package/dist/{stellar-JZBVCLNV.js → stellar-ALOVOMFD.js} +1 -1
- package/dist/{stellar-LIGJKRRK.cjs → stellar-SUGNX52Z.cjs} +20 -20
- package/dist/{sui-JLVWFDOS.cjs → sui-HZWPHVU4.cjs} +17 -17
- package/dist/{sui-UBDATSQV.js → sui-OLC5ID4X.js} +1 -1
- package/dist/{ton-OVSQZ4OM.cjs → ton-C4KTFXDL.cjs} +14 -14
- package/dist/{ton-2N74GKNB.js → ton-NIDWF77T.js} +1 -1
- package/dist/{tron-V3A6L3X3.cjs → tron-DTU7NPEM.cjs} +24 -24
- package/dist/{tron-N3EAAKU7.js → tron-LPMK57H7.js} +1 -1
- package/dist/{xrpl-RTT3UOLX.js → xrpl-6ODQS7JR.js} +1 -1
- package/dist/{xrpl-QECPQCFS.cjs → xrpl-N6ZAJRGC.cjs} +20 -20
- package/package.json +7 -2
package/dist/index.cjs
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
var
|
|
23
|
+
var _chunkYJPWIK5Lcjs = require('./chunk-YJPWIK5L.cjs');
|
|
24
24
|
|
|
25
25
|
// src/drivers/registry.ts
|
|
26
26
|
var byFamily = /* @__PURE__ */ new Map();
|
|
@@ -39,6 +39,7 @@ function familyForChain(chain) {
|
|
|
39
39
|
if (chain.startsWith("tron")) return "tron";
|
|
40
40
|
if (chain.startsWith("sui")) return "sui";
|
|
41
41
|
if (chain.startsWith("near")) return "near";
|
|
42
|
+
if (chain.startsWith("aptos")) return "aptos";
|
|
42
43
|
return "evm";
|
|
43
44
|
}
|
|
44
45
|
return "evm";
|
|
@@ -47,13 +48,13 @@ function resolveNetwork(opts) {
|
|
|
47
48
|
const family = familyForChain(opts.chain);
|
|
48
49
|
const driver = byFamily.get(family);
|
|
49
50
|
if (!driver) {
|
|
50
|
-
throw new (0,
|
|
51
|
+
throw new (0, _chunkYJPWIK5Lcjs.UnsupportedNetworkError)(
|
|
51
52
|
`No driver registered for the "${family}" family \u2014 it may not be mounted yet (use the async resolveNetwork()).`
|
|
52
53
|
);
|
|
53
54
|
}
|
|
54
55
|
const net = driver.resolve(opts);
|
|
55
56
|
if (!net) {
|
|
56
|
-
throw new (0,
|
|
57
|
+
throw new (0, _chunkYJPWIK5Lcjs.UnsupportedNetworkError)(
|
|
57
58
|
`The ${family} driver didn't recognise this chain input.`
|
|
58
59
|
);
|
|
59
60
|
}
|
|
@@ -297,12 +298,12 @@ function createWalletAdapter(config, resolved) {
|
|
|
297
298
|
}
|
|
298
299
|
const wc = config.walletClient;
|
|
299
300
|
if (!wc.account) {
|
|
300
|
-
throw new (0,
|
|
301
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
|
|
301
302
|
"chain is EVM; the provided walletClient has no attached account. Use `createWalletClient({ account, chain, transport })`, or pass { privateKey }."
|
|
302
303
|
);
|
|
303
304
|
}
|
|
304
305
|
if (wc.chain && wc.chain.id !== resolved.chainId) {
|
|
305
|
-
throw new (0,
|
|
306
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongChainError)(
|
|
306
307
|
`PipRailClient: walletClient is on chain ${wc.chain.id} but the SDK was configured with chain ${resolved.chainId}. They must match.`
|
|
307
308
|
);
|
|
308
309
|
}
|
|
@@ -605,15 +606,15 @@ function makeEvmNetwork(resolved) {
|
|
|
605
606
|
const info = resolved.tokens[token.toUpperCase()];
|
|
606
607
|
if (!info) {
|
|
607
608
|
const known = Object.keys(resolved.tokens).join(", ") || "(none built in)";
|
|
608
|
-
throw new (0,
|
|
609
|
+
throw new (0, _chunkYJPWIK5Lcjs.UnknownTokenError)(
|
|
609
610
|
`token "${token}" isn't built in for ${resolved.chain.name} (known: ${known}). Pass { address, decimals } instead, or use 'native'.`
|
|
610
611
|
);
|
|
611
612
|
}
|
|
612
613
|
return { asset: info.address, decimals: info.decimals, symbol: info.symbol };
|
|
613
614
|
}
|
|
614
|
-
|
|
615
|
+
_chunkYJPWIK5Lcjs.rejectForeignToken.call(void 0, token, "evm", network);
|
|
615
616
|
if (!("address" in token)) {
|
|
616
|
-
throw new (0,
|
|
617
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
|
|
617
618
|
`chain ${network} is EVM; a custom token must be { address, decimals }.`
|
|
618
619
|
);
|
|
619
620
|
}
|
|
@@ -645,14 +646,14 @@ function makeEvmNetwork(resolved) {
|
|
|
645
646
|
},
|
|
646
647
|
assertValidPayTo(payTo) {
|
|
647
648
|
if (!_viem.isAddress.call(void 0, payTo)) {
|
|
648
|
-
throw new (0,
|
|
649
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
|
|
649
650
|
`chain ${network} is EVM, but payTo "${payTo}" is not a valid 0x address.`
|
|
650
651
|
);
|
|
651
652
|
}
|
|
652
653
|
},
|
|
653
654
|
bindWallet(wallet) {
|
|
654
655
|
if (typeof wallet !== "object" || wallet === null || !("privateKey" in wallet) && !("walletClient" in wallet)) {
|
|
655
|
-
throw new (0,
|
|
656
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
|
|
656
657
|
`chain ${network} is EVM; wallet must be { privateKey } or { walletClient }.`
|
|
657
658
|
);
|
|
658
659
|
}
|
|
@@ -669,12 +670,12 @@ function makeEvmNetwork(resolved) {
|
|
|
669
670
|
});
|
|
670
671
|
} catch (err) {
|
|
671
672
|
if (isViemInsufficientFunds(err)) {
|
|
672
|
-
throw new (0,
|
|
673
|
+
throw new (0, _chunkYJPWIK5Lcjs.InsufficientFundsError)(
|
|
673
674
|
err instanceof Error ? err.message : "Insufficient funds for payment.",
|
|
674
675
|
{ cause: err }
|
|
675
676
|
);
|
|
676
677
|
}
|
|
677
|
-
throw _nullishCoalesce(
|
|
678
|
+
throw _nullishCoalesce(_chunkYJPWIK5Lcjs.toInsufficientFundsError.call(void 0, err), () => ( err));
|
|
678
679
|
}
|
|
679
680
|
},
|
|
680
681
|
async confirm(ref, minConfirmations) {
|
|
@@ -685,7 +686,7 @@ function makeEvmNetwork(resolved) {
|
|
|
685
686
|
});
|
|
686
687
|
return { height: receipt.blockNumber.toString() };
|
|
687
688
|
} catch (err) {
|
|
688
|
-
throw new (0,
|
|
689
|
+
throw new (0, _chunkYJPWIK5Lcjs.ConfirmationTimeoutError)(
|
|
689
690
|
`EVM tx ${ref} did not reach ${minConfirmations} confirmation(s) in time.`,
|
|
690
691
|
{ cause: err }
|
|
691
692
|
);
|
|
@@ -696,7 +697,7 @@ function makeEvmNetwork(resolved) {
|
|
|
696
697
|
const gasLimit = accept.asset === "native" ? 21000n : 65000n;
|
|
697
698
|
try {
|
|
698
699
|
const gasPrice = await publicClient.getGasPrice();
|
|
699
|
-
return
|
|
700
|
+
return _chunkYJPWIK5Lcjs.nativeCost.call(void 0, {
|
|
700
701
|
symbol,
|
|
701
702
|
decimals,
|
|
702
703
|
fee: gasPrice * gasLimit,
|
|
@@ -705,7 +706,7 @@ function makeEvmNetwork(resolved) {
|
|
|
705
706
|
});
|
|
706
707
|
} catch (e10) {
|
|
707
708
|
const gasPrice = 5000000000n;
|
|
708
|
-
return
|
|
709
|
+
return _chunkYJPWIK5Lcjs.nativeCost.call(void 0, {
|
|
709
710
|
symbol,
|
|
710
711
|
decimals,
|
|
711
712
|
fee: gasPrice * gasLimit,
|
|
@@ -737,9 +738,9 @@ var loaders = {
|
|
|
737
738
|
solana: async () => {
|
|
738
739
|
let mod;
|
|
739
740
|
try {
|
|
740
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./solana-
|
|
741
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./solana-RJPNEFSN.cjs")));
|
|
741
742
|
} catch (cause) {
|
|
742
|
-
throw new (0,
|
|
743
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
743
744
|
`Solana selected, but its packages aren't installed. Run: npm install @solana/web3.js @solana/spl-token bs58`,
|
|
744
745
|
{ cause }
|
|
745
746
|
);
|
|
@@ -749,9 +750,9 @@ var loaders = {
|
|
|
749
750
|
ton: async () => {
|
|
750
751
|
let mod;
|
|
751
752
|
try {
|
|
752
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./ton-
|
|
753
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./ton-C4KTFXDL.cjs")));
|
|
753
754
|
} catch (cause) {
|
|
754
|
-
throw new (0,
|
|
755
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
755
756
|
`TON selected, but its packages aren't installed. Run: npm install @ton/ton @ton/core @ton/crypto`,
|
|
756
757
|
{ cause }
|
|
757
758
|
);
|
|
@@ -761,9 +762,9 @@ var loaders = {
|
|
|
761
762
|
stellar: async () => {
|
|
762
763
|
let mod;
|
|
763
764
|
try {
|
|
764
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./stellar-
|
|
765
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./stellar-SUGNX52Z.cjs")));
|
|
765
766
|
} catch (cause) {
|
|
766
|
-
throw new (0,
|
|
767
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
767
768
|
`Stellar selected, but its package isn't installed. Run: npm install @stellar/stellar-sdk`,
|
|
768
769
|
{ cause }
|
|
769
770
|
);
|
|
@@ -773,9 +774,9 @@ var loaders = {
|
|
|
773
774
|
xrpl: async () => {
|
|
774
775
|
let mod;
|
|
775
776
|
try {
|
|
776
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./xrpl-
|
|
777
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./xrpl-N6ZAJRGC.cjs")));
|
|
777
778
|
} catch (cause) {
|
|
778
|
-
throw new (0,
|
|
779
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
779
780
|
`XRPL selected, but its package isn't installed. Run: npm install xrpl`,
|
|
780
781
|
{ cause }
|
|
781
782
|
);
|
|
@@ -785,9 +786,9 @@ var loaders = {
|
|
|
785
786
|
tron: async () => {
|
|
786
787
|
let mod;
|
|
787
788
|
try {
|
|
788
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./tron-
|
|
789
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./tron-DTU7NPEM.cjs")));
|
|
789
790
|
} catch (cause) {
|
|
790
|
-
throw new (0,
|
|
791
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
791
792
|
`Tron selected, but its package isn't installed. Run: npm install tronweb`,
|
|
792
793
|
{ cause }
|
|
793
794
|
);
|
|
@@ -797,9 +798,9 @@ var loaders = {
|
|
|
797
798
|
sui: async () => {
|
|
798
799
|
let mod;
|
|
799
800
|
try {
|
|
800
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./sui-
|
|
801
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./sui-HZWPHVU4.cjs")));
|
|
801
802
|
} catch (cause) {
|
|
802
|
-
throw new (0,
|
|
803
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
803
804
|
`Sui selected, but its package isn't installed. Run: npm install @mysten/sui`,
|
|
804
805
|
{ cause }
|
|
805
806
|
);
|
|
@@ -809,14 +810,26 @@ var loaders = {
|
|
|
809
810
|
near: async () => {
|
|
810
811
|
let mod;
|
|
811
812
|
try {
|
|
812
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./near-
|
|
813
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./near-DISWUB7Y.cjs")));
|
|
813
814
|
} catch (cause) {
|
|
814
|
-
throw new (0,
|
|
815
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
815
816
|
`NEAR selected, but its package isn't installed. Run: npm install near-api-js`,
|
|
816
817
|
{ cause }
|
|
817
818
|
);
|
|
818
819
|
}
|
|
819
820
|
registerDriver(mod.nearDriver);
|
|
821
|
+
},
|
|
822
|
+
aptos: async () => {
|
|
823
|
+
let mod;
|
|
824
|
+
try {
|
|
825
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./aptos-MKZ5MAGL.cjs")));
|
|
826
|
+
} catch (cause) {
|
|
827
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
828
|
+
`Aptos selected, but its package isn't installed. Run: npm install @aptos-labs/ts-sdk`,
|
|
829
|
+
{ cause }
|
|
830
|
+
);
|
|
831
|
+
}
|
|
832
|
+
registerDriver(mod.aptosDriver);
|
|
820
833
|
}
|
|
821
834
|
};
|
|
822
835
|
var inFlight = /* @__PURE__ */ new Map();
|
|
@@ -883,7 +896,7 @@ function evaluatePolicy(intent, policy, spentForAssetBase) {
|
|
|
883
896
|
}
|
|
884
897
|
}
|
|
885
898
|
if (policy.maxAmount !== void 0) {
|
|
886
|
-
const cap =
|
|
899
|
+
const cap = _chunkYJPWIK5Lcjs.floorUnits.call(void 0, policy.maxAmount, intent.decimals);
|
|
887
900
|
if (intent.amountBase > cap) {
|
|
888
901
|
return deny(
|
|
889
902
|
`payment of ${intent.amountBase} base units exceeds policy.maxAmount ` + `(${policy.maxAmount} ${_nullishCoalesce(intent.symbol, () => ( ""))}).`.trimEnd()
|
|
@@ -891,7 +904,7 @@ function evaluatePolicy(intent, policy, spentForAssetBase) {
|
|
|
891
904
|
}
|
|
892
905
|
}
|
|
893
906
|
if (policy.maxTotal !== void 0) {
|
|
894
|
-
const cap =
|
|
907
|
+
const cap = _chunkYJPWIK5Lcjs.floorUnits.call(void 0, policy.maxTotal, intent.decimals);
|
|
895
908
|
if (spentForAssetBase + intent.amountBase > cap) {
|
|
896
909
|
return deny(
|
|
897
910
|
`this payment would push spend on ${_nullishCoalesce(intent.symbol, () => ( intent.asset))} past policy.maxTotal (${policy.maxTotal}); already spent ${spentForAssetBase} base units.`
|
|
@@ -941,7 +954,7 @@ var SpendLedger = (_class = class {constructor() { _class.prototype.__init.call(
|
|
|
941
954
|
symbol: b.symbol,
|
|
942
955
|
decimals: b.decimals,
|
|
943
956
|
totalBase: b.total.toString(),
|
|
944
|
-
totalFormatted:
|
|
957
|
+
totalFormatted: _chunkYJPWIK5Lcjs.formatUnits.call(void 0, b.total, b.decimals),
|
|
945
958
|
count: b.count
|
|
946
959
|
})),
|
|
947
960
|
records: [...this.records]
|
|
@@ -1068,7 +1081,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1068
1081
|
async fetch(url, init) {
|
|
1069
1082
|
const body = _optionalChain([init, 'optionalAccess', _9 => _9.body]);
|
|
1070
1083
|
if (body !== void 0 && body !== null && !isReplayableBodyInit(body)) {
|
|
1071
|
-
throw new (0,
|
|
1084
|
+
throw new (0, _chunkYJPWIK5Lcjs.NonReplayableBodyError)(
|
|
1072
1085
|
"fetch(): init.body is not replayable. Pass a string, FormData, URLSearchParams, ArrayBuffer, or Blob \u2014 not a ReadableStream."
|
|
1073
1086
|
);
|
|
1074
1087
|
}
|
|
@@ -1094,7 +1107,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1094
1107
|
async resolveChallenge(url, response) {
|
|
1095
1108
|
const challenge = await parseChallenge(response);
|
|
1096
1109
|
if (!challenge) {
|
|
1097
|
-
throw new (0,
|
|
1110
|
+
throw new (0, _chunkYJPWIK5Lcjs.InvalidEnvelopeError)(
|
|
1098
1111
|
"402 response did not include a parseable x402 challenge."
|
|
1099
1112
|
);
|
|
1100
1113
|
}
|
|
@@ -1104,7 +1117,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1104
1117
|
);
|
|
1105
1118
|
if (candidates.length === 0) {
|
|
1106
1119
|
const networks = challenge.accepts.map((a) => a.network).join(", ");
|
|
1107
|
-
throw new (0,
|
|
1120
|
+
throw new (0, _chunkYJPWIK5Lcjs.NoCompatibleAcceptError)(
|
|
1108
1121
|
`No accepts[] entry for ${net.network} (challenge offered: ${networks || "none"}).`
|
|
1109
1122
|
);
|
|
1110
1123
|
}
|
|
@@ -1119,7 +1132,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1119
1132
|
* driver's describeAsset) + the policy verdict + a symbol-mismatch flag. */
|
|
1120
1133
|
buildQuote(net, accept, url, description) {
|
|
1121
1134
|
if (!/^\d+$/.test(accept.amount)) {
|
|
1122
|
-
throw new (0,
|
|
1135
|
+
throw new (0, _chunkYJPWIK5Lcjs.InvalidEnvelopeError)(
|
|
1123
1136
|
`challenge amount "${accept.amount}" is not a base-unit integer.`
|
|
1124
1137
|
);
|
|
1125
1138
|
}
|
|
@@ -1127,7 +1140,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1127
1140
|
const described = net.describeAsset(accept.asset);
|
|
1128
1141
|
const decimals = _nullishCoalesce(_optionalChain([described, 'optionalAccess', _10 => _10.decimals]), () => ( accept.extra.decimals));
|
|
1129
1142
|
const symbol = _nullishCoalesce(_optionalChain([described, 'optionalAccess', _11 => _11.symbol]), () => ( accept.extra.symbol));
|
|
1130
|
-
const amountFormatted =
|
|
1143
|
+
const amountFormatted = _chunkYJPWIK5Lcjs.formatUnits.call(void 0, amountBase, decimals);
|
|
1131
1144
|
const intent = {
|
|
1132
1145
|
host: hostOf(url),
|
|
1133
1146
|
chain: this.opts.chain,
|
|
@@ -1167,7 +1180,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1167
1180
|
* throwing PaymentDeclinedError, before any funds move. */
|
|
1168
1181
|
async authorize(quote) {
|
|
1169
1182
|
if (!quote.withinPolicy) {
|
|
1170
|
-
throw new (0,
|
|
1183
|
+
throw new (0, _chunkYJPWIK5Lcjs.PaymentDeclinedError)(
|
|
1171
1184
|
`Payment refused by policy: ${_nullishCoalesce(quote.policyReason, () => ( "not allowed"))}`
|
|
1172
1185
|
);
|
|
1173
1186
|
}
|
|
@@ -1177,12 +1190,12 @@ var PipRailClient = (_class2 = class {
|
|
|
1177
1190
|
try {
|
|
1178
1191
|
approved = await hook(quote);
|
|
1179
1192
|
} catch (err) {
|
|
1180
|
-
throw new (0,
|
|
1193
|
+
throw new (0, _chunkYJPWIK5Lcjs.PaymentDeclinedError)("onBeforePay threw \u2014 refusing to pay.", {
|
|
1181
1194
|
cause: err
|
|
1182
1195
|
});
|
|
1183
1196
|
}
|
|
1184
1197
|
if (!approved) {
|
|
1185
|
-
throw new (0,
|
|
1198
|
+
throw new (0, _chunkYJPWIK5Lcjs.PaymentDeclinedError)(
|
|
1186
1199
|
`onBeforePay declined ${quote.amountFormatted} ${_nullishCoalesce(quote.symbol, () => ( ""))}`.trimEnd() + ` on ${quote.network}.`
|
|
1187
1200
|
);
|
|
1188
1201
|
}
|
|
@@ -1206,7 +1219,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1206
1219
|
}
|
|
1207
1220
|
async payAndConfirm(net, wallet, accept) {
|
|
1208
1221
|
if (!net.supports(accept.network)) {
|
|
1209
|
-
throw new (0,
|
|
1222
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongChainError)(
|
|
1210
1223
|
`Challenge expects ${accept.network} but client is on ${net.network}.`
|
|
1211
1224
|
);
|
|
1212
1225
|
}
|
|
@@ -1259,7 +1272,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1259
1272
|
});
|
|
1260
1273
|
} catch (err) {
|
|
1261
1274
|
if (timeoutController.signal.aborted) {
|
|
1262
|
-
throw new (0,
|
|
1275
|
+
throw new (0, _chunkYJPWIK5Lcjs.PaymentTimeoutError)(
|
|
1263
1276
|
`Server did not respond within ${this.retryTimeoutMs}ms after broadcasting payment ${ref}. Re-verify or re-submit ref=${ref} \u2014 do NOT re-pay.`,
|
|
1264
1277
|
{ cause: err, ref }
|
|
1265
1278
|
);
|
|
@@ -1281,7 +1294,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1281
1294
|
kind: "payment-failed",
|
|
1282
1295
|
reason: `server returned 402 after broadcasting payment ${ref}${unconfirmedNote} (${why})`
|
|
1283
1296
|
});
|
|
1284
|
-
throw new (0,
|
|
1297
|
+
throw new (0, _chunkYJPWIK5Lcjs.MaxRetriesExceededError)(
|
|
1285
1298
|
`Server still returned 402 after ${attempts} attempt(s) with on-chain proof ref=${ref}${unconfirmedNote}. Last server rejection: ${why}. Re-verify or re-submit ref=${ref} before retrying \u2014 never re-pay (it would double-spend).`,
|
|
1286
1299
|
{ ref }
|
|
1287
1300
|
);
|
|
@@ -1389,7 +1402,7 @@ function paymentTools(client) {
|
|
|
1389
1402
|
receipt: parseReceipt(res)
|
|
1390
1403
|
};
|
|
1391
1404
|
} catch (err) {
|
|
1392
|
-
if (err instanceof
|
|
1405
|
+
if (err instanceof _chunkYJPWIK5Lcjs.PaymentDeclinedError) {
|
|
1393
1406
|
return { declined: true, reason: err.message };
|
|
1394
1407
|
}
|
|
1395
1408
|
throw err;
|
|
@@ -1438,7 +1451,7 @@ function createPaymentGate(options) {
|
|
|
1438
1451
|
}
|
|
1439
1452
|
net.assertValidPayTo(payTo);
|
|
1440
1453
|
const { asset, decimals, symbol } = net.resolveToken(a.token);
|
|
1441
|
-
const amountBase =
|
|
1454
|
+
const amountBase = _chunkYJPWIK5Lcjs.parseUnits.call(void 0, a.amount, decimals);
|
|
1442
1455
|
return { net, asset, decimals, symbol, amountBase, amountFormatted: a.amount, payTo };
|
|
1443
1456
|
})
|
|
1444
1457
|
);
|
|
@@ -1717,4 +1730,4 @@ function encodeXPaymentHeader(input) {
|
|
|
1717
1730
|
|
|
1718
1731
|
|
|
1719
1732
|
|
|
1720
|
-
exports.CHAINS = CHAINS; exports.ConfirmationTimeoutError =
|
|
1733
|
+
exports.CHAINS = CHAINS; exports.ConfirmationTimeoutError = _chunkYJPWIK5Lcjs.ConfirmationTimeoutError; exports.EIP3009_TYPES = EIP3009_TYPES; exports.EXACT_NETWORK_SLUGS = EXACT_NETWORK_SLUGS; exports.InsufficientFundsError = _chunkYJPWIK5Lcjs.InsufficientFundsError; exports.InvalidEnvelopeError = _chunkYJPWIK5Lcjs.InvalidEnvelopeError; exports.MaxRetriesExceededError = _chunkYJPWIK5Lcjs.MaxRetriesExceededError; exports.MissingDriverError = _chunkYJPWIK5Lcjs.MissingDriverError; exports.NoCompatibleAcceptError = _chunkYJPWIK5Lcjs.NoCompatibleAcceptError; exports.NonReplayableBodyError = _chunkYJPWIK5Lcjs.NonReplayableBodyError; exports.PaymentDeclinedError = _chunkYJPWIK5Lcjs.PaymentDeclinedError; exports.PaymentTimeoutError = _chunkYJPWIK5Lcjs.PaymentTimeoutError; exports.PipRailClient = PipRailClient; exports.PipRailError = _chunkYJPWIK5Lcjs.PipRailError; exports.RecipientNotReadyError = _chunkYJPWIK5Lcjs.RecipientNotReadyError; exports.UnknownTokenError = _chunkYJPWIK5Lcjs.UnknownTokenError; exports.UnsupportedNetworkError = _chunkYJPWIK5Lcjs.UnsupportedNetworkError; exports.WrongChainError = _chunkYJPWIK5Lcjs.WrongChainError; exports.WrongFamilyError = _chunkYJPWIK5Lcjs.WrongFamilyError; exports.buildChallengeHeader = buildChallengeHeader; exports.buildExactAuthorization = buildExactAuthorization; exports.buildReceiptHeader = buildReceiptHeader; exports.buildSignatureHeader = buildSignatureHeader; exports.chainIdForExactNetwork = chainIdForExactNetwork; exports.createPaymentGate = createPaymentGate; exports.encodeXPaymentHeader = encodeXPaymentHeader; exports.evaluatePolicy = evaluatePolicy; exports.parseChallenge = parseChallenge; exports.parseExactRequirements = parseExactRequirements; exports.parseReceipt = parseReceipt; exports.parseSignatureHeader = parseSignatureHeader; exports.paymentTools = paymentTools; exports.pickAccept = pickAccept; exports.registerDriver = registerDriver; exports.requirePayment = requirePayment; exports.resolveChain = resolveChain; exports.toInsufficientFundsError = _chunkYJPWIK5Lcjs.toInsufficientFundsError; exports.toInvalidBody = toInvalidBody;
|
package/dist/index.d.cts
CHANGED
|
@@ -3777,9 +3777,9 @@ declare function resolveChain(input: ChainInput, rpcUrlOverride?: string): Resol
|
|
|
3777
3777
|
*/
|
|
3778
3778
|
|
|
3779
3779
|
/** The chain families the SDK knows about. */
|
|
3780
|
-
type ChainFamily = 'evm' | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near';
|
|
3780
|
+
type ChainFamily = 'evm' | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near' | 'aptos';
|
|
3781
3781
|
/** What chain to use: an EVM name/Chain/{id,rpcUrl}, or a non-EVM family name. */
|
|
3782
|
-
type ChainSelector = ChainInput | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near';
|
|
3782
|
+
type ChainSelector = ChainInput | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near' | 'aptos';
|
|
3783
3783
|
/** An EVM ERC-20 token, by contract address. */
|
|
3784
3784
|
interface EvmToken {
|
|
3785
3785
|
address: `0x${string}`;
|
|
@@ -3831,6 +3831,12 @@ interface NearToken {
|
|
|
3831
3831
|
decimals: number;
|
|
3832
3832
|
symbol?: string;
|
|
3833
3833
|
}
|
|
3834
|
+
/** An Aptos Fungible Asset, by its metadata object address. */
|
|
3835
|
+
interface AptosToken {
|
|
3836
|
+
metadata: string;
|
|
3837
|
+
decimals: number;
|
|
3838
|
+
symbol?: string;
|
|
3839
|
+
}
|
|
3834
3840
|
/**
|
|
3835
3841
|
* What to be paid in. Each driver validates the forms it accepts:
|
|
3836
3842
|
* - 'native' the chain's native coin (ETH, BNB, SOL, TON, XLM, XRP)
|
|
@@ -3843,8 +3849,9 @@ interface NearToken {
|
|
|
3843
3849
|
* - TronToken any TRC-20 (Tron)
|
|
3844
3850
|
* - SuiToken any coin (Sui)
|
|
3845
3851
|
* - NearToken any NEP-141 (NEAR)
|
|
3852
|
+
* - AptosToken any Fungible Asset (Aptos)
|
|
3846
3853
|
*/
|
|
3847
|
-
type TokenInput = 'native' | (string & {}) | EvmToken | SolanaToken | TonToken | StellarToken | XrplToken | TronToken | SuiToken | NearToken;
|
|
3854
|
+
type TokenInput = 'native' | (string & {}) | EvmToken | SolanaToken | TonToken | StellarToken | XrplToken | TronToken | SuiToken | NearToken | AptosToken;
|
|
3848
3855
|
/** What a driver resolves a TokenInput into. `asset`: 0x | base58 mint | 'native'. */
|
|
3849
3856
|
interface ResolvedToken {
|
|
3850
3857
|
asset: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -3777,9 +3777,9 @@ declare function resolveChain(input: ChainInput, rpcUrlOverride?: string): Resol
|
|
|
3777
3777
|
*/
|
|
3778
3778
|
|
|
3779
3779
|
/** The chain families the SDK knows about. */
|
|
3780
|
-
type ChainFamily = 'evm' | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near';
|
|
3780
|
+
type ChainFamily = 'evm' | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near' | 'aptos';
|
|
3781
3781
|
/** What chain to use: an EVM name/Chain/{id,rpcUrl}, or a non-EVM family name. */
|
|
3782
|
-
type ChainSelector = ChainInput | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near';
|
|
3782
|
+
type ChainSelector = ChainInput | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near' | 'aptos';
|
|
3783
3783
|
/** An EVM ERC-20 token, by contract address. */
|
|
3784
3784
|
interface EvmToken {
|
|
3785
3785
|
address: `0x${string}`;
|
|
@@ -3831,6 +3831,12 @@ interface NearToken {
|
|
|
3831
3831
|
decimals: number;
|
|
3832
3832
|
symbol?: string;
|
|
3833
3833
|
}
|
|
3834
|
+
/** An Aptos Fungible Asset, by its metadata object address. */
|
|
3835
|
+
interface AptosToken {
|
|
3836
|
+
metadata: string;
|
|
3837
|
+
decimals: number;
|
|
3838
|
+
symbol?: string;
|
|
3839
|
+
}
|
|
3834
3840
|
/**
|
|
3835
3841
|
* What to be paid in. Each driver validates the forms it accepts:
|
|
3836
3842
|
* - 'native' the chain's native coin (ETH, BNB, SOL, TON, XLM, XRP)
|
|
@@ -3843,8 +3849,9 @@ interface NearToken {
|
|
|
3843
3849
|
* - TronToken any TRC-20 (Tron)
|
|
3844
3850
|
* - SuiToken any coin (Sui)
|
|
3845
3851
|
* - NearToken any NEP-141 (NEAR)
|
|
3852
|
+
* - AptosToken any Fungible Asset (Aptos)
|
|
3846
3853
|
*/
|
|
3847
|
-
type TokenInput = 'native' | (string & {}) | EvmToken | SolanaToken | TonToken | StellarToken | XrplToken | TronToken | SuiToken | NearToken;
|
|
3854
|
+
type TokenInput = 'native' | (string & {}) | EvmToken | SolanaToken | TonToken | StellarToken | XrplToken | TronToken | SuiToken | NearToken | AptosToken;
|
|
3848
3855
|
/** What a driver resolves a TokenInput into. `asset`: 0x | base58 mint | 'native'. */
|
|
3849
3856
|
interface ResolvedToken {
|
|
3850
3857
|
asset: string;
|
package/dist/index.js
CHANGED
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
parseUnits,
|
|
21
21
|
rejectForeignToken,
|
|
22
22
|
toInsufficientFundsError
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-AGKC3C7Y.js";
|
|
24
24
|
|
|
25
25
|
// src/drivers/registry.ts
|
|
26
26
|
var byFamily = /* @__PURE__ */ new Map();
|
|
@@ -39,6 +39,7 @@ function familyForChain(chain) {
|
|
|
39
39
|
if (chain.startsWith("tron")) return "tron";
|
|
40
40
|
if (chain.startsWith("sui")) return "sui";
|
|
41
41
|
if (chain.startsWith("near")) return "near";
|
|
42
|
+
if (chain.startsWith("aptos")) return "aptos";
|
|
42
43
|
return "evm";
|
|
43
44
|
}
|
|
44
45
|
return "evm";
|
|
@@ -737,7 +738,7 @@ var loaders = {
|
|
|
737
738
|
solana: async () => {
|
|
738
739
|
let mod;
|
|
739
740
|
try {
|
|
740
|
-
mod = await import("./solana-
|
|
741
|
+
mod = await import("./solana-37F2PR5H.js");
|
|
741
742
|
} catch (cause) {
|
|
742
743
|
throw new MissingDriverError(
|
|
743
744
|
`Solana selected, but its packages aren't installed. Run: npm install @solana/web3.js @solana/spl-token bs58`,
|
|
@@ -749,7 +750,7 @@ var loaders = {
|
|
|
749
750
|
ton: async () => {
|
|
750
751
|
let mod;
|
|
751
752
|
try {
|
|
752
|
-
mod = await import("./ton-
|
|
753
|
+
mod = await import("./ton-NIDWF77T.js");
|
|
753
754
|
} catch (cause) {
|
|
754
755
|
throw new MissingDriverError(
|
|
755
756
|
`TON selected, but its packages aren't installed. Run: npm install @ton/ton @ton/core @ton/crypto`,
|
|
@@ -761,7 +762,7 @@ var loaders = {
|
|
|
761
762
|
stellar: async () => {
|
|
762
763
|
let mod;
|
|
763
764
|
try {
|
|
764
|
-
mod = await import("./stellar-
|
|
765
|
+
mod = await import("./stellar-ALOVOMFD.js");
|
|
765
766
|
} catch (cause) {
|
|
766
767
|
throw new MissingDriverError(
|
|
767
768
|
`Stellar selected, but its package isn't installed. Run: npm install @stellar/stellar-sdk`,
|
|
@@ -773,7 +774,7 @@ var loaders = {
|
|
|
773
774
|
xrpl: async () => {
|
|
774
775
|
let mod;
|
|
775
776
|
try {
|
|
776
|
-
mod = await import("./xrpl-
|
|
777
|
+
mod = await import("./xrpl-6ODQS7JR.js");
|
|
777
778
|
} catch (cause) {
|
|
778
779
|
throw new MissingDriverError(
|
|
779
780
|
`XRPL selected, but its package isn't installed. Run: npm install xrpl`,
|
|
@@ -785,7 +786,7 @@ var loaders = {
|
|
|
785
786
|
tron: async () => {
|
|
786
787
|
let mod;
|
|
787
788
|
try {
|
|
788
|
-
mod = await import("./tron-
|
|
789
|
+
mod = await import("./tron-LPMK57H7.js");
|
|
789
790
|
} catch (cause) {
|
|
790
791
|
throw new MissingDriverError(
|
|
791
792
|
`Tron selected, but its package isn't installed. Run: npm install tronweb`,
|
|
@@ -797,7 +798,7 @@ var loaders = {
|
|
|
797
798
|
sui: async () => {
|
|
798
799
|
let mod;
|
|
799
800
|
try {
|
|
800
|
-
mod = await import("./sui-
|
|
801
|
+
mod = await import("./sui-OLC5ID4X.js");
|
|
801
802
|
} catch (cause) {
|
|
802
803
|
throw new MissingDriverError(
|
|
803
804
|
`Sui selected, but its package isn't installed. Run: npm install @mysten/sui`,
|
|
@@ -809,7 +810,7 @@ var loaders = {
|
|
|
809
810
|
near: async () => {
|
|
810
811
|
let mod;
|
|
811
812
|
try {
|
|
812
|
-
mod = await import("./near-
|
|
813
|
+
mod = await import("./near-YX3XOASO.js");
|
|
813
814
|
} catch (cause) {
|
|
814
815
|
throw new MissingDriverError(
|
|
815
816
|
`NEAR selected, but its package isn't installed. Run: npm install near-api-js`,
|
|
@@ -817,6 +818,18 @@ var loaders = {
|
|
|
817
818
|
);
|
|
818
819
|
}
|
|
819
820
|
registerDriver(mod.nearDriver);
|
|
821
|
+
},
|
|
822
|
+
aptos: async () => {
|
|
823
|
+
let mod;
|
|
824
|
+
try {
|
|
825
|
+
mod = await import("./aptos-DTAONNMM.js");
|
|
826
|
+
} catch (cause) {
|
|
827
|
+
throw new MissingDriverError(
|
|
828
|
+
`Aptos selected, but its package isn't installed. Run: npm install @aptos-labs/ts-sdk`,
|
|
829
|
+
{ cause }
|
|
830
|
+
);
|
|
831
|
+
}
|
|
832
|
+
registerDriver(mod.aptosDriver);
|
|
820
833
|
}
|
|
821
834
|
};
|
|
822
835
|
var inFlight = /* @__PURE__ */ new Map();
|