@piprail/sdk 1.1.1 → 1.3.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/CHANGELOG.md +44 -0
- package/ERRORS.md +1 -1
- package/README.md +5 -2
- package/dist/aptos-MQY7KOOJ.js +329 -0
- package/dist/aptos-T3MNKUPB.cjs +329 -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 +83 -46
- package/dist/index.d.cts +132 -7
- package/dist/index.d.ts +132 -7
- package/dist/index.js +45 -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
|
}
|
|
@@ -82,6 +83,8 @@ var _viem = require('viem');
|
|
|
82
83
|
|
|
83
84
|
|
|
84
85
|
|
|
86
|
+
|
|
87
|
+
|
|
85
88
|
|
|
86
89
|
var _chains = require('viem/chains');
|
|
87
90
|
var CHAINS = {
|
|
@@ -210,6 +213,28 @@ var CHAINS = {
|
|
|
210
213
|
USDC: { address: "0xa00C59fF5a080D2b954d0c75e46E22a0c371235a", decimals: 6, symbol: "USDC" },
|
|
211
214
|
USDT: { address: "0x88f7F2b685F9692caf8c478f5BADF09eE9B1Cc13", decimals: 6, symbol: "USDT" }
|
|
212
215
|
}
|
|
216
|
+
},
|
|
217
|
+
// HyperEVM (Hyperliquid, chainId 999) — native Circle USDC, verified on-chain
|
|
218
|
+
// 2026-06-04 (eth_chainId 0x3e7; USDC symbol "USDC", decimals 6). HyperEVM's
|
|
219
|
+
// "USDT" is USDT0 (LayerZero/omnichain), not Circle/Tether-native, so it's
|
|
220
|
+
// intentionally omitted; pass it as a custom { address, decimals } if needed.
|
|
221
|
+
// The highest-activity EVM venue of 2025–26 (perps DEX + on-chain agent vaults).
|
|
222
|
+
hyperevm: {
|
|
223
|
+
chain: _chains.hyperEvm,
|
|
224
|
+
tokens: {
|
|
225
|
+
USDC: { address: "0xb88339CB7199b77E23DB6E890353E22632Ba630f", decimals: 6, symbol: "USDC" }
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
// Monad (chainId 143) — native Circle USDC, verified on-chain 2026-06-04
|
|
229
|
+
// (eth_chainId 0x8f; USDC symbol "USDC", decimals 6; CCTP V2). Monad's "USDT"
|
|
230
|
+
// is USDT0 (LayerZero/omnichain), not Circle/Tether-native, so it's
|
|
231
|
+
// intentionally omitted; pass it as a custom { address, decimals } if needed.
|
|
232
|
+
// The biggest new EVM L1 of 2025 (parallel EVM, ~10k TPS).
|
|
233
|
+
monad: {
|
|
234
|
+
chain: _chains.monad,
|
|
235
|
+
tokens: {
|
|
236
|
+
USDC: { address: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603", decimals: 6, symbol: "USDC" }
|
|
237
|
+
}
|
|
213
238
|
}
|
|
214
239
|
};
|
|
215
240
|
function isViemChain(input) {
|
|
@@ -273,12 +298,12 @@ function createWalletAdapter(config, resolved) {
|
|
|
273
298
|
}
|
|
274
299
|
const wc = config.walletClient;
|
|
275
300
|
if (!wc.account) {
|
|
276
|
-
throw new (0,
|
|
301
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
|
|
277
302
|
"chain is EVM; the provided walletClient has no attached account. Use `createWalletClient({ account, chain, transport })`, or pass { privateKey }."
|
|
278
303
|
);
|
|
279
304
|
}
|
|
280
305
|
if (wc.chain && wc.chain.id !== resolved.chainId) {
|
|
281
|
-
throw new (0,
|
|
306
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongChainError)(
|
|
282
307
|
`PipRailClient: walletClient is on chain ${wc.chain.id} but the SDK was configured with chain ${resolved.chainId}. They must match.`
|
|
283
308
|
);
|
|
284
309
|
}
|
|
@@ -581,15 +606,15 @@ function makeEvmNetwork(resolved) {
|
|
|
581
606
|
const info = resolved.tokens[token.toUpperCase()];
|
|
582
607
|
if (!info) {
|
|
583
608
|
const known = Object.keys(resolved.tokens).join(", ") || "(none built in)";
|
|
584
|
-
throw new (0,
|
|
609
|
+
throw new (0, _chunkYJPWIK5Lcjs.UnknownTokenError)(
|
|
585
610
|
`token "${token}" isn't built in for ${resolved.chain.name} (known: ${known}). Pass { address, decimals } instead, or use 'native'.`
|
|
586
611
|
);
|
|
587
612
|
}
|
|
588
613
|
return { asset: info.address, decimals: info.decimals, symbol: info.symbol };
|
|
589
614
|
}
|
|
590
|
-
|
|
615
|
+
_chunkYJPWIK5Lcjs.rejectForeignToken.call(void 0, token, "evm", network);
|
|
591
616
|
if (!("address" in token)) {
|
|
592
|
-
throw new (0,
|
|
617
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
|
|
593
618
|
`chain ${network} is EVM; a custom token must be { address, decimals }.`
|
|
594
619
|
);
|
|
595
620
|
}
|
|
@@ -621,14 +646,14 @@ function makeEvmNetwork(resolved) {
|
|
|
621
646
|
},
|
|
622
647
|
assertValidPayTo(payTo) {
|
|
623
648
|
if (!_viem.isAddress.call(void 0, payTo)) {
|
|
624
|
-
throw new (0,
|
|
649
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
|
|
625
650
|
`chain ${network} is EVM, but payTo "${payTo}" is not a valid 0x address.`
|
|
626
651
|
);
|
|
627
652
|
}
|
|
628
653
|
},
|
|
629
654
|
bindWallet(wallet) {
|
|
630
655
|
if (typeof wallet !== "object" || wallet === null || !("privateKey" in wallet) && !("walletClient" in wallet)) {
|
|
631
|
-
throw new (0,
|
|
656
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
|
|
632
657
|
`chain ${network} is EVM; wallet must be { privateKey } or { walletClient }.`
|
|
633
658
|
);
|
|
634
659
|
}
|
|
@@ -645,12 +670,12 @@ function makeEvmNetwork(resolved) {
|
|
|
645
670
|
});
|
|
646
671
|
} catch (err) {
|
|
647
672
|
if (isViemInsufficientFunds(err)) {
|
|
648
|
-
throw new (0,
|
|
673
|
+
throw new (0, _chunkYJPWIK5Lcjs.InsufficientFundsError)(
|
|
649
674
|
err instanceof Error ? err.message : "Insufficient funds for payment.",
|
|
650
675
|
{ cause: err }
|
|
651
676
|
);
|
|
652
677
|
}
|
|
653
|
-
throw _nullishCoalesce(
|
|
678
|
+
throw _nullishCoalesce(_chunkYJPWIK5Lcjs.toInsufficientFundsError.call(void 0, err), () => ( err));
|
|
654
679
|
}
|
|
655
680
|
},
|
|
656
681
|
async confirm(ref, minConfirmations) {
|
|
@@ -661,7 +686,7 @@ function makeEvmNetwork(resolved) {
|
|
|
661
686
|
});
|
|
662
687
|
return { height: receipt.blockNumber.toString() };
|
|
663
688
|
} catch (err) {
|
|
664
|
-
throw new (0,
|
|
689
|
+
throw new (0, _chunkYJPWIK5Lcjs.ConfirmationTimeoutError)(
|
|
665
690
|
`EVM tx ${ref} did not reach ${minConfirmations} confirmation(s) in time.`,
|
|
666
691
|
{ cause: err }
|
|
667
692
|
);
|
|
@@ -672,7 +697,7 @@ function makeEvmNetwork(resolved) {
|
|
|
672
697
|
const gasLimit = accept.asset === "native" ? 21000n : 65000n;
|
|
673
698
|
try {
|
|
674
699
|
const gasPrice = await publicClient.getGasPrice();
|
|
675
|
-
return
|
|
700
|
+
return _chunkYJPWIK5Lcjs.nativeCost.call(void 0, {
|
|
676
701
|
symbol,
|
|
677
702
|
decimals,
|
|
678
703
|
fee: gasPrice * gasLimit,
|
|
@@ -681,7 +706,7 @@ function makeEvmNetwork(resolved) {
|
|
|
681
706
|
});
|
|
682
707
|
} catch (e10) {
|
|
683
708
|
const gasPrice = 5000000000n;
|
|
684
|
-
return
|
|
709
|
+
return _chunkYJPWIK5Lcjs.nativeCost.call(void 0, {
|
|
685
710
|
symbol,
|
|
686
711
|
decimals,
|
|
687
712
|
fee: gasPrice * gasLimit,
|
|
@@ -713,9 +738,9 @@ var loaders = {
|
|
|
713
738
|
solana: async () => {
|
|
714
739
|
let mod;
|
|
715
740
|
try {
|
|
716
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./solana-
|
|
741
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./solana-RJPNEFSN.cjs")));
|
|
717
742
|
} catch (cause) {
|
|
718
|
-
throw new (0,
|
|
743
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
719
744
|
`Solana selected, but its packages aren't installed. Run: npm install @solana/web3.js @solana/spl-token bs58`,
|
|
720
745
|
{ cause }
|
|
721
746
|
);
|
|
@@ -725,9 +750,9 @@ var loaders = {
|
|
|
725
750
|
ton: async () => {
|
|
726
751
|
let mod;
|
|
727
752
|
try {
|
|
728
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./ton-
|
|
753
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./ton-C4KTFXDL.cjs")));
|
|
729
754
|
} catch (cause) {
|
|
730
|
-
throw new (0,
|
|
755
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
731
756
|
`TON selected, but its packages aren't installed. Run: npm install @ton/ton @ton/core @ton/crypto`,
|
|
732
757
|
{ cause }
|
|
733
758
|
);
|
|
@@ -737,9 +762,9 @@ var loaders = {
|
|
|
737
762
|
stellar: async () => {
|
|
738
763
|
let mod;
|
|
739
764
|
try {
|
|
740
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./stellar-
|
|
765
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./stellar-SUGNX52Z.cjs")));
|
|
741
766
|
} catch (cause) {
|
|
742
|
-
throw new (0,
|
|
767
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
743
768
|
`Stellar selected, but its package isn't installed. Run: npm install @stellar/stellar-sdk`,
|
|
744
769
|
{ cause }
|
|
745
770
|
);
|
|
@@ -749,9 +774,9 @@ var loaders = {
|
|
|
749
774
|
xrpl: async () => {
|
|
750
775
|
let mod;
|
|
751
776
|
try {
|
|
752
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./xrpl-
|
|
777
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./xrpl-N6ZAJRGC.cjs")));
|
|
753
778
|
} catch (cause) {
|
|
754
|
-
throw new (0,
|
|
779
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
755
780
|
`XRPL selected, but its package isn't installed. Run: npm install xrpl`,
|
|
756
781
|
{ cause }
|
|
757
782
|
);
|
|
@@ -761,9 +786,9 @@ var loaders = {
|
|
|
761
786
|
tron: async () => {
|
|
762
787
|
let mod;
|
|
763
788
|
try {
|
|
764
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./tron-
|
|
789
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./tron-DTU7NPEM.cjs")));
|
|
765
790
|
} catch (cause) {
|
|
766
|
-
throw new (0,
|
|
791
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
767
792
|
`Tron selected, but its package isn't installed. Run: npm install tronweb`,
|
|
768
793
|
{ cause }
|
|
769
794
|
);
|
|
@@ -773,9 +798,9 @@ var loaders = {
|
|
|
773
798
|
sui: async () => {
|
|
774
799
|
let mod;
|
|
775
800
|
try {
|
|
776
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./sui-
|
|
801
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./sui-HZWPHVU4.cjs")));
|
|
777
802
|
} catch (cause) {
|
|
778
|
-
throw new (0,
|
|
803
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
779
804
|
`Sui selected, but its package isn't installed. Run: npm install @mysten/sui`,
|
|
780
805
|
{ cause }
|
|
781
806
|
);
|
|
@@ -785,14 +810,26 @@ var loaders = {
|
|
|
785
810
|
near: async () => {
|
|
786
811
|
let mod;
|
|
787
812
|
try {
|
|
788
|
-
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./near-
|
|
813
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./near-DISWUB7Y.cjs")));
|
|
789
814
|
} catch (cause) {
|
|
790
|
-
throw new (0,
|
|
815
|
+
throw new (0, _chunkYJPWIK5Lcjs.MissingDriverError)(
|
|
791
816
|
`NEAR selected, but its package isn't installed. Run: npm install near-api-js`,
|
|
792
817
|
{ cause }
|
|
793
818
|
);
|
|
794
819
|
}
|
|
795
820
|
registerDriver(mod.nearDriver);
|
|
821
|
+
},
|
|
822
|
+
aptos: async () => {
|
|
823
|
+
let mod;
|
|
824
|
+
try {
|
|
825
|
+
mod = await Promise.resolve().then(() => _interopRequireWildcard(require("./aptos-T3MNKUPB.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);
|
|
796
833
|
}
|
|
797
834
|
};
|
|
798
835
|
var inFlight = /* @__PURE__ */ new Map();
|
|
@@ -859,7 +896,7 @@ function evaluatePolicy(intent, policy, spentForAssetBase) {
|
|
|
859
896
|
}
|
|
860
897
|
}
|
|
861
898
|
if (policy.maxAmount !== void 0) {
|
|
862
|
-
const cap =
|
|
899
|
+
const cap = _chunkYJPWIK5Lcjs.floorUnits.call(void 0, policy.maxAmount, intent.decimals);
|
|
863
900
|
if (intent.amountBase > cap) {
|
|
864
901
|
return deny(
|
|
865
902
|
`payment of ${intent.amountBase} base units exceeds policy.maxAmount ` + `(${policy.maxAmount} ${_nullishCoalesce(intent.symbol, () => ( ""))}).`.trimEnd()
|
|
@@ -867,7 +904,7 @@ function evaluatePolicy(intent, policy, spentForAssetBase) {
|
|
|
867
904
|
}
|
|
868
905
|
}
|
|
869
906
|
if (policy.maxTotal !== void 0) {
|
|
870
|
-
const cap =
|
|
907
|
+
const cap = _chunkYJPWIK5Lcjs.floorUnits.call(void 0, policy.maxTotal, intent.decimals);
|
|
871
908
|
if (spentForAssetBase + intent.amountBase > cap) {
|
|
872
909
|
return deny(
|
|
873
910
|
`this payment would push spend on ${_nullishCoalesce(intent.symbol, () => ( intent.asset))} past policy.maxTotal (${policy.maxTotal}); already spent ${spentForAssetBase} base units.`
|
|
@@ -917,7 +954,7 @@ var SpendLedger = (_class = class {constructor() { _class.prototype.__init.call(
|
|
|
917
954
|
symbol: b.symbol,
|
|
918
955
|
decimals: b.decimals,
|
|
919
956
|
totalBase: b.total.toString(),
|
|
920
|
-
totalFormatted:
|
|
957
|
+
totalFormatted: _chunkYJPWIK5Lcjs.formatUnits.call(void 0, b.total, b.decimals),
|
|
921
958
|
count: b.count
|
|
922
959
|
})),
|
|
923
960
|
records: [...this.records]
|
|
@@ -1044,7 +1081,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1044
1081
|
async fetch(url, init) {
|
|
1045
1082
|
const body = _optionalChain([init, 'optionalAccess', _9 => _9.body]);
|
|
1046
1083
|
if (body !== void 0 && body !== null && !isReplayableBodyInit(body)) {
|
|
1047
|
-
throw new (0,
|
|
1084
|
+
throw new (0, _chunkYJPWIK5Lcjs.NonReplayableBodyError)(
|
|
1048
1085
|
"fetch(): init.body is not replayable. Pass a string, FormData, URLSearchParams, ArrayBuffer, or Blob \u2014 not a ReadableStream."
|
|
1049
1086
|
);
|
|
1050
1087
|
}
|
|
@@ -1070,7 +1107,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1070
1107
|
async resolveChallenge(url, response) {
|
|
1071
1108
|
const challenge = await parseChallenge(response);
|
|
1072
1109
|
if (!challenge) {
|
|
1073
|
-
throw new (0,
|
|
1110
|
+
throw new (0, _chunkYJPWIK5Lcjs.InvalidEnvelopeError)(
|
|
1074
1111
|
"402 response did not include a parseable x402 challenge."
|
|
1075
1112
|
);
|
|
1076
1113
|
}
|
|
@@ -1080,7 +1117,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1080
1117
|
);
|
|
1081
1118
|
if (candidates.length === 0) {
|
|
1082
1119
|
const networks = challenge.accepts.map((a) => a.network).join(", ");
|
|
1083
|
-
throw new (0,
|
|
1120
|
+
throw new (0, _chunkYJPWIK5Lcjs.NoCompatibleAcceptError)(
|
|
1084
1121
|
`No accepts[] entry for ${net.network} (challenge offered: ${networks || "none"}).`
|
|
1085
1122
|
);
|
|
1086
1123
|
}
|
|
@@ -1095,7 +1132,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1095
1132
|
* driver's describeAsset) + the policy verdict + a symbol-mismatch flag. */
|
|
1096
1133
|
buildQuote(net, accept, url, description) {
|
|
1097
1134
|
if (!/^\d+$/.test(accept.amount)) {
|
|
1098
|
-
throw new (0,
|
|
1135
|
+
throw new (0, _chunkYJPWIK5Lcjs.InvalidEnvelopeError)(
|
|
1099
1136
|
`challenge amount "${accept.amount}" is not a base-unit integer.`
|
|
1100
1137
|
);
|
|
1101
1138
|
}
|
|
@@ -1103,7 +1140,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1103
1140
|
const described = net.describeAsset(accept.asset);
|
|
1104
1141
|
const decimals = _nullishCoalesce(_optionalChain([described, 'optionalAccess', _10 => _10.decimals]), () => ( accept.extra.decimals));
|
|
1105
1142
|
const symbol = _nullishCoalesce(_optionalChain([described, 'optionalAccess', _11 => _11.symbol]), () => ( accept.extra.symbol));
|
|
1106
|
-
const amountFormatted =
|
|
1143
|
+
const amountFormatted = _chunkYJPWIK5Lcjs.formatUnits.call(void 0, amountBase, decimals);
|
|
1107
1144
|
const intent = {
|
|
1108
1145
|
host: hostOf(url),
|
|
1109
1146
|
chain: this.opts.chain,
|
|
@@ -1143,7 +1180,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1143
1180
|
* throwing PaymentDeclinedError, before any funds move. */
|
|
1144
1181
|
async authorize(quote) {
|
|
1145
1182
|
if (!quote.withinPolicy) {
|
|
1146
|
-
throw new (0,
|
|
1183
|
+
throw new (0, _chunkYJPWIK5Lcjs.PaymentDeclinedError)(
|
|
1147
1184
|
`Payment refused by policy: ${_nullishCoalesce(quote.policyReason, () => ( "not allowed"))}`
|
|
1148
1185
|
);
|
|
1149
1186
|
}
|
|
@@ -1153,12 +1190,12 @@ var PipRailClient = (_class2 = class {
|
|
|
1153
1190
|
try {
|
|
1154
1191
|
approved = await hook(quote);
|
|
1155
1192
|
} catch (err) {
|
|
1156
|
-
throw new (0,
|
|
1193
|
+
throw new (0, _chunkYJPWIK5Lcjs.PaymentDeclinedError)("onBeforePay threw \u2014 refusing to pay.", {
|
|
1157
1194
|
cause: err
|
|
1158
1195
|
});
|
|
1159
1196
|
}
|
|
1160
1197
|
if (!approved) {
|
|
1161
|
-
throw new (0,
|
|
1198
|
+
throw new (0, _chunkYJPWIK5Lcjs.PaymentDeclinedError)(
|
|
1162
1199
|
`onBeforePay declined ${quote.amountFormatted} ${_nullishCoalesce(quote.symbol, () => ( ""))}`.trimEnd() + ` on ${quote.network}.`
|
|
1163
1200
|
);
|
|
1164
1201
|
}
|
|
@@ -1182,7 +1219,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1182
1219
|
}
|
|
1183
1220
|
async payAndConfirm(net, wallet, accept) {
|
|
1184
1221
|
if (!net.supports(accept.network)) {
|
|
1185
|
-
throw new (0,
|
|
1222
|
+
throw new (0, _chunkYJPWIK5Lcjs.WrongChainError)(
|
|
1186
1223
|
`Challenge expects ${accept.network} but client is on ${net.network}.`
|
|
1187
1224
|
);
|
|
1188
1225
|
}
|
|
@@ -1235,7 +1272,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1235
1272
|
});
|
|
1236
1273
|
} catch (err) {
|
|
1237
1274
|
if (timeoutController.signal.aborted) {
|
|
1238
|
-
throw new (0,
|
|
1275
|
+
throw new (0, _chunkYJPWIK5Lcjs.PaymentTimeoutError)(
|
|
1239
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.`,
|
|
1240
1277
|
{ cause: err, ref }
|
|
1241
1278
|
);
|
|
@@ -1257,7 +1294,7 @@ var PipRailClient = (_class2 = class {
|
|
|
1257
1294
|
kind: "payment-failed",
|
|
1258
1295
|
reason: `server returned 402 after broadcasting payment ${ref}${unconfirmedNote} (${why})`
|
|
1259
1296
|
});
|
|
1260
|
-
throw new (0,
|
|
1297
|
+
throw new (0, _chunkYJPWIK5Lcjs.MaxRetriesExceededError)(
|
|
1261
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).`,
|
|
1262
1299
|
{ ref }
|
|
1263
1300
|
);
|
|
@@ -1365,7 +1402,7 @@ function paymentTools(client) {
|
|
|
1365
1402
|
receipt: parseReceipt(res)
|
|
1366
1403
|
};
|
|
1367
1404
|
} catch (err) {
|
|
1368
|
-
if (err instanceof
|
|
1405
|
+
if (err instanceof _chunkYJPWIK5Lcjs.PaymentDeclinedError) {
|
|
1369
1406
|
return { declined: true, reason: err.message };
|
|
1370
1407
|
}
|
|
1371
1408
|
throw err;
|
|
@@ -1414,7 +1451,7 @@ function createPaymentGate(options) {
|
|
|
1414
1451
|
}
|
|
1415
1452
|
net.assertValidPayTo(payTo);
|
|
1416
1453
|
const { asset, decimals, symbol } = net.resolveToken(a.token);
|
|
1417
|
-
const amountBase =
|
|
1454
|
+
const amountBase = _chunkYJPWIK5Lcjs.parseUnits.call(void 0, a.amount, decimals);
|
|
1418
1455
|
return { net, asset, decimals, symbol, amountBase, amountFormatted: a.amount, payTo };
|
|
1419
1456
|
})
|
|
1420
1457
|
);
|
|
@@ -1693,4 +1730,4 @@ function encodeXPaymentHeader(input) {
|
|
|
1693
1730
|
|
|
1694
1731
|
|
|
1695
1732
|
|
|
1696
|
-
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
|
@@ -838,7 +838,7 @@ declare const CHAINS: {
|
|
|
838
838
|
gasPrice: bigint;
|
|
839
839
|
maxFeePerBlobGas?: undefined | undefined;
|
|
840
840
|
maxFeePerGas?: undefined | undefined;
|
|
841
|
-
maxPriorityFeePerGas
|
|
841
|
+
maxPriorityFeePerGas? /** Native coin metadata. Defaults to 18-decimal ETH. */: undefined | undefined;
|
|
842
842
|
isSystemTx?: undefined | undefined;
|
|
843
843
|
mint?: undefined | undefined;
|
|
844
844
|
sourceHash?: undefined | undefined;
|
|
@@ -1580,7 +1580,7 @@ declare const CHAINS: {
|
|
|
1580
1580
|
yParity: number;
|
|
1581
1581
|
accessList: viem.AccessList;
|
|
1582
1582
|
authorizationList?: undefined | undefined;
|
|
1583
|
-
blobVersionedHashes
|
|
1583
|
+
blobVersionedHashes?: undefined | undefined;
|
|
1584
1584
|
chainId: number;
|
|
1585
1585
|
type: "eip1559";
|
|
1586
1586
|
gasPrice?: undefined | undefined;
|
|
@@ -2982,7 +2982,7 @@ declare const CHAINS: {
|
|
|
2982
2982
|
} | {
|
|
2983
2983
|
blockHash: `0x${string}` | null;
|
|
2984
2984
|
blockNumber: bigint | null;
|
|
2985
|
-
blockTimestamp
|
|
2985
|
+
blockTimestamp?: bigint | undefined;
|
|
2986
2986
|
from: abitype.Address;
|
|
2987
2987
|
gas: bigint;
|
|
2988
2988
|
hash: viem.Hash;
|
|
@@ -3340,7 +3340,9 @@ declare const CHAINS: {
|
|
|
3340
3340
|
value: bigint;
|
|
3341
3341
|
yParity: number;
|
|
3342
3342
|
accessList: viem.AccessList;
|
|
3343
|
-
authorizationList
|
|
3343
|
+
authorizationList
|
|
3344
|
+
/** JSON-RPC endpoint. */
|
|
3345
|
+
? /** JSON-RPC endpoint. */: undefined | undefined;
|
|
3344
3346
|
blobVersionedHashes?: undefined | undefined;
|
|
3345
3347
|
chainId: number;
|
|
3346
3348
|
type: "eip2930";
|
|
@@ -3614,6 +3616,122 @@ declare const CHAINS: {
|
|
|
3614
3616
|
};
|
|
3615
3617
|
};
|
|
3616
3618
|
};
|
|
3619
|
+
hyperevm: {
|
|
3620
|
+
chain: {
|
|
3621
|
+
blockExplorers: {
|
|
3622
|
+
readonly default: {
|
|
3623
|
+
readonly name: "HyperEVMScan";
|
|
3624
|
+
readonly url: "https://hyperevmscan.io";
|
|
3625
|
+
};
|
|
3626
|
+
};
|
|
3627
|
+
blockTime?: number | undefined | undefined;
|
|
3628
|
+
contracts: {
|
|
3629
|
+
readonly multicall3: {
|
|
3630
|
+
readonly address: "0xcA11bde05977b3631167028862bE2a173976CA11";
|
|
3631
|
+
readonly blockCreated: 13051;
|
|
3632
|
+
};
|
|
3633
|
+
};
|
|
3634
|
+
ensTlds?: readonly string[] | undefined;
|
|
3635
|
+
id: 999;
|
|
3636
|
+
name: "HyperEVM";
|
|
3637
|
+
nativeCurrency: {
|
|
3638
|
+
readonly name: "HYPE";
|
|
3639
|
+
readonly symbol: "HYPE";
|
|
3640
|
+
readonly decimals: 18;
|
|
3641
|
+
};
|
|
3642
|
+
experimental_preconfirmationTime?: number | undefined | undefined;
|
|
3643
|
+
rpcUrls: {
|
|
3644
|
+
readonly default: {
|
|
3645
|
+
readonly http: readonly ["https://rpc.hyperliquid.xyz/evm"];
|
|
3646
|
+
};
|
|
3647
|
+
};
|
|
3648
|
+
sourceId?: number | undefined | undefined;
|
|
3649
|
+
testnet: false;
|
|
3650
|
+
custom?: Record<string, unknown> | undefined;
|
|
3651
|
+
extendSchema?: Record<string, unknown> | undefined;
|
|
3652
|
+
fees?: viem.ChainFees<undefined> | undefined;
|
|
3653
|
+
formatters?: undefined;
|
|
3654
|
+
prepareTransactionRequest?: ((args: viem.PrepareTransactionRequestParameters, options: {
|
|
3655
|
+
client: viem.Client;
|
|
3656
|
+
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
3657
|
+
}) => Promise<viem.PrepareTransactionRequestParameters>) | [fn: ((args: viem.PrepareTransactionRequestParameters, options: {
|
|
3658
|
+
client: viem.Client;
|
|
3659
|
+
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
3660
|
+
}) => Promise<viem.PrepareTransactionRequestParameters>) | undefined, options: {
|
|
3661
|
+
runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
|
|
3662
|
+
}] | undefined;
|
|
3663
|
+
serializers?: viem.ChainSerializers<undefined, viem.TransactionSerializable> | undefined;
|
|
3664
|
+
verifyHash?: ((client: viem.Client, parameters: viem.VerifyHashActionParameters) => Promise<viem.VerifyHashActionReturnType>) | undefined;
|
|
3665
|
+
};
|
|
3666
|
+
tokens: {
|
|
3667
|
+
USDC: {
|
|
3668
|
+
address: "0xb88339CB7199b77E23DB6E890353E22632Ba630f";
|
|
3669
|
+
decimals: number;
|
|
3670
|
+
symbol: string;
|
|
3671
|
+
};
|
|
3672
|
+
};
|
|
3673
|
+
};
|
|
3674
|
+
monad: {
|
|
3675
|
+
chain: {
|
|
3676
|
+
blockExplorers: {
|
|
3677
|
+
readonly default: {
|
|
3678
|
+
readonly name: "MonadVision";
|
|
3679
|
+
readonly url: "https://monadvision.com";
|
|
3680
|
+
};
|
|
3681
|
+
readonly monadscan: {
|
|
3682
|
+
readonly name: "Monadscan";
|
|
3683
|
+
readonly url: "https://monadscan.com";
|
|
3684
|
+
readonly apiUrl: "https://api.monadscan.com/api";
|
|
3685
|
+
};
|
|
3686
|
+
};
|
|
3687
|
+
blockTime: 400;
|
|
3688
|
+
contracts: {
|
|
3689
|
+
readonly multicall3: {
|
|
3690
|
+
readonly address: "0xcA11bde05977b3631167028862bE2a173976CA11";
|
|
3691
|
+
readonly blockCreated: 9248132;
|
|
3692
|
+
};
|
|
3693
|
+
};
|
|
3694
|
+
ensTlds?: readonly string[] | undefined;
|
|
3695
|
+
id: 143;
|
|
3696
|
+
name: "Monad";
|
|
3697
|
+
nativeCurrency: {
|
|
3698
|
+
readonly name: "Monad";
|
|
3699
|
+
readonly symbol: "MON";
|
|
3700
|
+
readonly decimals: 18;
|
|
3701
|
+
};
|
|
3702
|
+
experimental_preconfirmationTime?: number | undefined | undefined;
|
|
3703
|
+
rpcUrls: {
|
|
3704
|
+
readonly default: {
|
|
3705
|
+
readonly http: readonly ["https://rpc.monad.xyz", "https://rpc1.monad.xyz"];
|
|
3706
|
+
readonly webSocket: readonly ["wss://rpc.monad.xyz", "wss://rpc1.monad.xyz"];
|
|
3707
|
+
};
|
|
3708
|
+
};
|
|
3709
|
+
sourceId?: number | undefined | undefined;
|
|
3710
|
+
testnet: false;
|
|
3711
|
+
custom?: Record<string, unknown> | undefined;
|
|
3712
|
+
extendSchema?: Record<string, unknown> | undefined;
|
|
3713
|
+
fees?: viem.ChainFees<undefined> | undefined;
|
|
3714
|
+
formatters?: undefined;
|
|
3715
|
+
prepareTransactionRequest?: ((args: viem.PrepareTransactionRequestParameters, options: {
|
|
3716
|
+
client: viem.Client;
|
|
3717
|
+
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
3718
|
+
}) => Promise<viem.PrepareTransactionRequestParameters>) | [fn: ((args: viem.PrepareTransactionRequestParameters, options: {
|
|
3719
|
+
client: viem.Client;
|
|
3720
|
+
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
3721
|
+
}) => Promise<viem.PrepareTransactionRequestParameters>) | undefined, options: {
|
|
3722
|
+
runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
|
|
3723
|
+
}] | undefined;
|
|
3724
|
+
serializers?: viem.ChainSerializers<undefined, viem.TransactionSerializable> | undefined;
|
|
3725
|
+
verifyHash?: ((client: viem.Client, parameters: viem.VerifyHashActionParameters) => Promise<viem.VerifyHashActionReturnType>) | undefined;
|
|
3726
|
+
};
|
|
3727
|
+
tokens: {
|
|
3728
|
+
USDC: {
|
|
3729
|
+
address: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603";
|
|
3730
|
+
decimals: number;
|
|
3731
|
+
symbol: string;
|
|
3732
|
+
};
|
|
3733
|
+
};
|
|
3734
|
+
};
|
|
3617
3735
|
};
|
|
3618
3736
|
/** A built-in EVM chain name. */
|
|
3619
3737
|
type ChainName = keyof typeof CHAINS;
|
|
@@ -3659,9 +3777,9 @@ declare function resolveChain(input: ChainInput, rpcUrlOverride?: string): Resol
|
|
|
3659
3777
|
*/
|
|
3660
3778
|
|
|
3661
3779
|
/** The chain families the SDK knows about. */
|
|
3662
|
-
type ChainFamily = 'evm' | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near';
|
|
3780
|
+
type ChainFamily = 'evm' | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near' | 'aptos';
|
|
3663
3781
|
/** What chain to use: an EVM name/Chain/{id,rpcUrl}, or a non-EVM family name. */
|
|
3664
|
-
type ChainSelector = ChainInput | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near';
|
|
3782
|
+
type ChainSelector = ChainInput | 'solana' | 'ton' | 'stellar' | 'xrpl' | 'tron' | 'sui' | 'near' | 'aptos';
|
|
3665
3783
|
/** An EVM ERC-20 token, by contract address. */
|
|
3666
3784
|
interface EvmToken {
|
|
3667
3785
|
address: `0x${string}`;
|
|
@@ -3713,6 +3831,12 @@ interface NearToken {
|
|
|
3713
3831
|
decimals: number;
|
|
3714
3832
|
symbol?: string;
|
|
3715
3833
|
}
|
|
3834
|
+
/** An Aptos Fungible Asset, by its metadata object address. */
|
|
3835
|
+
interface AptosToken {
|
|
3836
|
+
metadata: string;
|
|
3837
|
+
decimals: number;
|
|
3838
|
+
symbol?: string;
|
|
3839
|
+
}
|
|
3716
3840
|
/**
|
|
3717
3841
|
* What to be paid in. Each driver validates the forms it accepts:
|
|
3718
3842
|
* - 'native' the chain's native coin (ETH, BNB, SOL, TON, XLM, XRP)
|
|
@@ -3725,8 +3849,9 @@ interface NearToken {
|
|
|
3725
3849
|
* - TronToken any TRC-20 (Tron)
|
|
3726
3850
|
* - SuiToken any coin (Sui)
|
|
3727
3851
|
* - NearToken any NEP-141 (NEAR)
|
|
3852
|
+
* - AptosToken any Fungible Asset (Aptos)
|
|
3728
3853
|
*/
|
|
3729
|
-
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;
|
|
3730
3855
|
/** What a driver resolves a TokenInput into. `asset`: 0x | base58 mint | 'native'. */
|
|
3731
3856
|
interface ResolvedToken {
|
|
3732
3857
|
asset: string;
|