@piprail/sdk 1.3.1 → 1.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.
@@ -8,7 +8,7 @@ var _chunkCQREG5LEcjs = require('./chunk-CQREG5LE.cjs');
8
8
 
9
9
 
10
10
 
11
- var _chunkYJPWIK5Lcjs = require('./chunk-YJPWIK5L.cjs');
11
+ var _chunkIQGT65WScjs = require('./chunk-IQGT65WS.cjs');
12
12
 
13
13
  // src/drivers/ton/index.ts
14
14
  var _core = require('@ton/core');
@@ -74,7 +74,7 @@ async function waitForSeqno(opened, from, { tries = 30, intervalMs = 2e3 } = {})
74
74
  }
75
75
  if (current > from) return;
76
76
  }
77
- throw new (0, _chunkYJPWIK5Lcjs.ConfirmationTimeoutError)(
77
+ throw new (0, _chunkIQGT65WScjs.ConfirmationTimeoutError)(
78
78
  `TON wallet seqno did not advance past ${from} \u2014 the payment may not have been accepted.`
79
79
  );
80
80
  }
@@ -202,17 +202,17 @@ var _crypto = require('@ton/crypto');
202
202
 
203
203
  function assertTonWallet(wallet, network) {
204
204
  if (typeof wallet !== "object" || wallet === null) {
205
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
205
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
206
206
  `chain ${network} is TON; wallet must be { mnemonic } (24 words) or { keyPair }.`
207
207
  );
208
208
  }
209
209
  if ("privateKey" in wallet || "walletClient" in wallet) {
210
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
210
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
211
211
  `chain ${network} is TON; an EVM wallet can't be used \u2014 pass { mnemonic } (24 words) or { keyPair }.`
212
212
  );
213
213
  }
214
214
  if (!("mnemonic" in wallet) && !("keyPair" in wallet)) {
215
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
215
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
216
216
  `chain ${network} is TON; wallet must be { mnemonic } (24 words) or { keyPair }.`
217
217
  );
218
218
  }
@@ -227,7 +227,7 @@ async function resolveTonWallet(config) {
227
227
  } else if (config.keyPair) {
228
228
  keyPair = config.keyPair;
229
229
  } else {
230
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)("TON wallet needs { mnemonic } (24 words) or { keyPair }.");
230
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)("TON wallet needs { mnemonic } (24 words) or { keyPair }.");
231
231
  }
232
232
  const contract = version === "v5r1" ? _ton.WalletContractV5R1.create({ workchain: 0, publicKey: keyPair.publicKey }) : _ton.WalletContractV4.create({ workchain: 0, publicKey: keyPair.publicKey });
233
233
  return { keyPair, contract };
@@ -270,15 +270,15 @@ function makeTonNetwork(preset, rpcUrl) {
270
270
  const info = preset.tokens[token.toUpperCase()];
271
271
  if (!info) {
272
272
  const known = Object.keys(preset.tokens).join(", ") || "(none built in)";
273
- throw new (0, _chunkYJPWIK5Lcjs.UnknownTokenError)(
273
+ throw new (0, _chunkIQGT65WScjs.UnknownTokenError)(
274
274
  `token "${token}" isn't built in for TON (known: ${known}). Note: native USDC doesn't exist on TON. Pass { master, decimals } for a custom jetton, or use 'native'.`
275
275
  );
276
276
  }
277
277
  return { asset: info.master, decimals: info.decimals, symbol: info.symbol };
278
278
  }
279
- _chunkYJPWIK5Lcjs.rejectForeignToken.call(void 0, token, "ton", network);
279
+ _chunkIQGT65WScjs.rejectForeignToken.call(void 0, token, "ton", network);
280
280
  if (!("master" in token)) {
281
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
281
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
282
282
  `chain ${network} is TON; a custom token must be { master, decimals }.`
283
283
  );
284
284
  }
@@ -297,14 +297,14 @@ function makeTonNetwork(preset, rpcUrl) {
297
297
  },
298
298
  assertValidPayTo(payTo) {
299
299
  if (payTo.startsWith("0x")) {
300
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
300
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
301
301
  `chain ${network} is TON, but payTo "${payTo}" looks like an EVM address.`
302
302
  );
303
303
  }
304
304
  try {
305
305
  _core.Address.parse(payTo);
306
306
  } catch (e6) {
307
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
307
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
308
308
  `chain ${network} is TON, but payTo "${payTo}" is not a valid TON address.`
309
309
  );
310
310
  }
@@ -320,7 +320,7 @@ function makeTonNetwork(preset, rpcUrl) {
320
320
  const watch = await watchAccountFor(accept);
321
321
  return encodeRef(watch, accept.extra.nonce);
322
322
  } catch (err) {
323
- throw _nullishCoalesce(_chunkYJPWIK5Lcjs.toInsufficientFundsError.call(void 0, err), () => ( err));
323
+ throw _nullishCoalesce(_chunkIQGT65WScjs.toInsufficientFundsError.call(void 0, err), () => ( err));
324
324
  }
325
325
  },
326
326
  async confirm(ref) {
@@ -339,12 +339,12 @@ function makeTonNetwork(preset, rpcUrl) {
339
339
  if (inc && inc.comment === nonce) return { height: tx.lt.toString() };
340
340
  }
341
341
  }
342
- throw new (0, _chunkYJPWIK5Lcjs.ConfirmationTimeoutError)(`TON payment for nonce ${nonce} did not settle in time.`);
342
+ throw new (0, _chunkIQGT65WScjs.ConfirmationTimeoutError)(`TON payment for nonce ${nonce} did not settle in time.`);
343
343
  },
344
344
  async estimateCost(accept) {
345
345
  const fee = accept.asset === "native" ? 10000000n : 50000000n;
346
346
  const detail = accept.asset === "native" ? "~0.01 TON network fee" : "~0.05 TON attached for the jetton transfer (leftover refunded)";
347
- return _chunkYJPWIK5Lcjs.nativeCost.call(void 0, { symbol: "TON", decimals: TON_DECIMALS, fee, basis: "heuristic", detail });
347
+ return _chunkIQGT65WScjs.nativeCost.call(void 0, { symbol: "TON", decimals: TON_DECIMALS, fee, basis: "heuristic", detail });
348
348
  },
349
349
  async verify(_ref, accept) {
350
350
  const watch = await watchAccountFor(accept);
@@ -9,7 +9,7 @@ import {
9
9
  nativeCost,
10
10
  rejectForeignToken,
11
11
  toInsufficientFundsError
12
- } from "./chunk-AGKC3C7Y.js";
12
+ } from "./chunk-QDS6FBZP.js";
13
13
 
14
14
  // src/drivers/tron/index.ts
15
15
  import { TronWeb } from "tronweb";
@@ -9,7 +9,7 @@ var _chunkCQREG5LEcjs = require('./chunk-CQREG5LE.cjs');
9
9
 
10
10
 
11
11
 
12
- var _chunkYJPWIK5Lcjs = require('./chunk-YJPWIK5L.cjs');
12
+ var _chunkIQGT65WScjs = require('./chunk-IQGT65WS.cjs');
13
13
 
14
14
  // src/drivers/tron/index.ts
15
15
  var _tronweb = require('tronweb');
@@ -61,7 +61,7 @@ async function payTron(params) {
61
61
  return _nullishCoalesce(_nullishCoalesce(broadcast.txid, () => ( _optionalChain([broadcast, 'access', _7 => _7.transaction, 'optionalAccess', _8 => _8.txID]))), () => ( signed.txID));
62
62
  }
63
63
  if (isTronAffordability(broadcast.code, broadcast.message)) {
64
- throw new (0, _chunkYJPWIK5Lcjs.InsufficientFundsError)(
64
+ throw new (0, _chunkIQGT65WScjs.InsufficientFundsError)(
65
65
  `Tron payment rejected (${_nullishCoalesce(broadcast.code, () => ( "broadcast"))}): not enough TRX for energy/bandwidth, or insufficient token balance.`
66
66
  );
67
67
  }
@@ -69,8 +69,8 @@ async function payTron(params) {
69
69
  `Tron broadcast failed: ${_nullishCoalesce(broadcast.code, () => ( ""))} ${decodeMaybeHex(broadcast.message)}`.trim()
70
70
  );
71
71
  } catch (err) {
72
- if (err instanceof _chunkYJPWIK5Lcjs.InsufficientFundsError) throw err;
73
- throw _nullishCoalesce(_chunkYJPWIK5Lcjs.toInsufficientFundsError.call(void 0, err), () => ( err));
72
+ if (err instanceof _chunkIQGT65WScjs.InsufficientFundsError) throw err;
73
+ throw _nullishCoalesce(_chunkIQGT65WScjs.toInsufficientFundsError.call(void 0, err), () => ( err));
74
74
  }
75
75
  }
76
76
  async function payTronNative(params) {
@@ -83,7 +83,7 @@ async function payTronNative(params) {
83
83
  return _nullishCoalesce(_nullishCoalesce(broadcast.txid, () => ( _optionalChain([broadcast, 'access', _11 => _11.transaction, 'optionalAccess', _12 => _12.txID]))), () => ( signed.txID));
84
84
  }
85
85
  if (isTronAffordability(broadcast.code, broadcast.message)) {
86
- throw new (0, _chunkYJPWIK5Lcjs.InsufficientFundsError)(
86
+ throw new (0, _chunkIQGT65WScjs.InsufficientFundsError)(
87
87
  `Tron TRX payment rejected (${_nullishCoalesce(broadcast.code, () => ( "broadcast"))}): not enough TRX for the amount plus bandwidth (and the ~1 TRX account-creation fee if the recipient is new).`
88
88
  );
89
89
  }
@@ -91,8 +91,8 @@ async function payTronNative(params) {
91
91
  `Tron TRX broadcast failed: ${_nullishCoalesce(broadcast.code, () => ( ""))} ${decodeMaybeHex(broadcast.message)}`.trim()
92
92
  );
93
93
  } catch (err) {
94
- if (err instanceof _chunkYJPWIK5Lcjs.InsufficientFundsError) throw err;
95
- throw _nullishCoalesce(_chunkYJPWIK5Lcjs.toInsufficientFundsError.call(void 0, err), () => ( err));
94
+ if (err instanceof _chunkIQGT65WScjs.InsufficientFundsError) throw err;
95
+ throw _nullishCoalesce(_chunkIQGT65WScjs.toInsufficientFundsError.call(void 0, err), () => ( err));
96
96
  }
97
97
  }
98
98
  function decodeMaybeHex(message) {
@@ -263,22 +263,22 @@ function txNotFound(txid) {
263
263
  // src/drivers/tron/wallet.ts
264
264
  function assertTronWallet(wallet, network) {
265
265
  if (typeof wallet !== "object" || wallet === null) {
266
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
266
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
267
267
  `chain ${network} is Tron; wallet must be { privateKey } (32-byte hex).`
268
268
  );
269
269
  }
270
270
  if ("walletClient" in wallet) {
271
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
271
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
272
272
  `chain ${network} is Tron; a viem { walletClient } can't be used \u2014 pass { privateKey } (32-byte hex).`
273
273
  );
274
274
  }
275
275
  if ("secretKey" in wallet || "signer" in wallet || "mnemonic" in wallet || "keyPair" in wallet || "secret" in wallet || "keypair" in wallet || "seed" in wallet) {
276
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
276
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
277
277
  `chain ${network} is Tron; that looks like a Solana/TON/Stellar/XRPL wallet \u2014 pass { privateKey } (32-byte hex).`
278
278
  );
279
279
  }
280
280
  if (!("privateKey" in wallet)) {
281
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
281
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
282
282
  `chain ${network} is Tron; wallet must be { privateKey } (32-byte hex).`
283
283
  );
284
284
  }
@@ -286,11 +286,11 @@ function assertTronWallet(wallet, network) {
286
286
  }
287
287
  function resolveTronPrivateKey(config) {
288
288
  if (!config.privateKey) {
289
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)("Tron wallet needs { privateKey } (32-byte hex).");
289
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)("Tron wallet needs { privateKey } (32-byte hex).");
290
290
  }
291
291
  const hex = config.privateKey.replace(/^0x/i, "").toLowerCase();
292
292
  if (!/^[0-9a-f]{64}$/.test(hex)) {
293
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
293
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
294
294
  "Tron wallet { privateKey } must be a 32-byte hex string (64 hex chars)."
295
295
  );
296
296
  }
@@ -340,21 +340,21 @@ function makeTronNetwork(preset, rpcUrl) {
340
340
  const info = preset.tokens[token.toUpperCase()];
341
341
  if (!info) {
342
342
  const known = Object.keys(preset.tokens).join(", ") || "(none built in)";
343
- throw new (0, _chunkYJPWIK5Lcjs.UnknownTokenError)(
343
+ throw new (0, _chunkIQGT65WScjs.UnknownTokenError)(
344
344
  `token "${token}" isn't built in for Tron (known: ${known}). Note: native USDC doesn't exist on Tron. Pass { address, decimals } for a custom TRC-20.`
345
345
  );
346
346
  }
347
347
  return { asset: info.address, decimals: info.decimals, symbol: info.symbol };
348
348
  }
349
- _chunkYJPWIK5Lcjs.rejectForeignToken.call(void 0, token, "tron", network);
349
+ _chunkIQGT65WScjs.rejectForeignToken.call(void 0, token, "tron", network);
350
350
  if (!("address" in token)) {
351
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
351
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
352
352
  `chain ${network} is Tron; a custom token must be { address, decimals } (Base58 T\u2026 contract).`
353
353
  );
354
354
  }
355
355
  const t = token;
356
356
  if (t.address.startsWith("0x") || !tronWeb.isAddress(t.address)) {
357
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
357
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
358
358
  `chain ${network} is Tron, but token address "${t.address}" is not a valid Tron contract (T\u2026).`
359
359
  );
360
360
  }
@@ -373,12 +373,12 @@ function makeTronNetwork(preset, rpcUrl) {
373
373
  },
374
374
  assertValidPayTo(payTo) {
375
375
  if (payTo.startsWith("0x")) {
376
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
376
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
377
377
  `chain ${network} is Tron, but payTo "${payTo}" looks like an EVM address.`
378
378
  );
379
379
  }
380
380
  if (!tronWeb.isAddress(payTo)) {
381
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
381
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
382
382
  `chain ${network} is Tron, but payTo "${payTo}" is not a valid Tron address (T\u2026).`
383
383
  );
384
384
  }
@@ -390,7 +390,7 @@ function makeTronNetwork(preset, rpcUrl) {
390
390
  const privateKey = resolveTronPrivateKey(wallet._native);
391
391
  const from = tronWeb.address.fromPrivateKey(privateKey);
392
392
  if (!from) {
393
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)("Tron wallet { privateKey } could not derive an address.");
393
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)("Tron wallet { privateKey } could not derive an address.");
394
394
  }
395
395
  if (accept.asset === "native") {
396
396
  return payTronNative({ client: tronWeb, from, privateKey, accept });
@@ -413,11 +413,11 @@ function makeTronNetwork(preset, rpcUrl) {
413
413
  }
414
414
  await _chunkCQREG5LEcjs.delay.call(void 0, 2500);
415
415
  }
416
- throw new (0, _chunkYJPWIK5Lcjs.ConfirmationTimeoutError)(`Tron tx ${txid} did not solidify in time.`);
416
+ throw new (0, _chunkIQGT65WScjs.ConfirmationTimeoutError)(`Tron tx ${txid} did not solidify in time.`);
417
417
  },
418
418
  async estimateCost(accept, opts) {
419
419
  if (accept.asset === "native") {
420
- return _chunkYJPWIK5Lcjs.nativeCost.call(void 0, {
420
+ return _chunkIQGT65WScjs.nativeCost.call(void 0, {
421
421
  symbol: "TRX",
422
422
  decimals: TRX_DECIMALS,
423
423
  fee: 1300000n,
@@ -441,7 +441,7 @@ function makeTronNetwork(preset, rpcUrl) {
441
441
  );
442
442
  const energy = BigInt(_nullishCoalesce(r.energy_used, () => ( 0)));
443
443
  if (energy > 0n) {
444
- return _chunkYJPWIK5Lcjs.nativeCost.call(void 0, {
444
+ return _chunkIQGT65WScjs.nativeCost.call(void 0, {
445
445
  symbol: "TRX",
446
446
  decimals: TRX_DECIMALS,
447
447
  fee: energy * ENERGY_PRICE + BANDWIDTH_SUN,
@@ -452,7 +452,7 @@ function makeTronNetwork(preset, rpcUrl) {
452
452
  } catch (e8) {
453
453
  }
454
454
  }
455
- return _chunkYJPWIK5Lcjs.nativeCost.call(void 0, {
455
+ return _chunkIQGT65WScjs.nativeCost.call(void 0, {
456
456
  symbol: "TRX",
457
457
  decimals: TRX_DECIMALS,
458
458
  fee: 30000n * ENERGY_PRICE + BANDWIDTH_SUN,
@@ -11,7 +11,7 @@ var _chunkCQREG5LEcjs = require('./chunk-CQREG5LE.cjs');
11
11
 
12
12
 
13
13
 
14
- var _chunkYJPWIK5Lcjs = require('./chunk-YJPWIK5L.cjs');
14
+ var _chunkIQGT65WScjs = require('./chunk-IQGT65WS.cjs');
15
15
 
16
16
  // src/drivers/xrpl/index.ts
17
17
  var _xrpl = require('xrpl');
@@ -93,17 +93,17 @@ async function payXrpl(params) {
93
93
  const code = res.engine_result;
94
94
  if (code.startsWith("tes")) return _nullishCoalesce(_optionalChain([res, 'access', _ => _.tx_json, 'optionalAccess', _2 => _2.hash]), () => ( signed.hash));
95
95
  const recipientMsg = recipientNotReadyMessage(code);
96
- if (recipientMsg) throw new (0, _chunkYJPWIK5Lcjs.RecipientNotReadyError)(recipientMsg, { cause: makeEngineError(res) });
96
+ if (recipientMsg) throw new (0, _chunkIQGT65WScjs.RecipientNotReadyError)(recipientMsg, { cause: makeEngineError(res) });
97
97
  if (isAffordabilityCode(code)) {
98
- throw new (0, _chunkYJPWIK5Lcjs.InsufficientFundsError)(
98
+ throw new (0, _chunkIQGT65WScjs.InsufficientFundsError)(
99
99
  `XRPL payment rejected: the sender can't cover it \u2014 balance or the 1 XRP base reserve. (XRPL: ${code})`,
100
100
  { cause: makeEngineError(res) }
101
101
  );
102
102
  }
103
103
  throw makeEngineError(res);
104
104
  } catch (err) {
105
- if (err instanceof _chunkYJPWIK5Lcjs.InsufficientFundsError || err instanceof _chunkYJPWIK5Lcjs.RecipientNotReadyError) throw err;
106
- throw _nullishCoalesce(_chunkYJPWIK5Lcjs.toInsufficientFundsError.call(void 0, err), () => ( err));
105
+ if (err instanceof _chunkIQGT65WScjs.InsufficientFundsError || err instanceof _chunkIQGT65WScjs.RecipientNotReadyError) throw err;
106
+ throw _nullishCoalesce(_chunkIQGT65WScjs.toInsufficientFundsError.call(void 0, err), () => ( err));
107
107
  }
108
108
  }
109
109
  function amountForAccept(accept) {
@@ -228,7 +228,7 @@ function deliveredBaseUnits(delivered, want, decimals) {
228
228
  return null;
229
229
  }
230
230
  try {
231
- return _chunkYJPWIK5Lcjs.floorUnits.call(void 0, delivered.value, decimals);
231
+ return _chunkIQGT65WScjs.floorUnits.call(void 0, delivered.value, decimals);
232
232
  } catch (e3) {
233
233
  return null;
234
234
  }
@@ -252,22 +252,22 @@ function rpcFailed(nonce) {
252
252
 
253
253
  function assertXrplWallet(wallet, network) {
254
254
  if (typeof wallet !== "object" || wallet === null) {
255
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
255
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
256
256
  `chain ${network} is XRPL; wallet must be { seed } (s\u2026 seed) or { wallet }.`
257
257
  );
258
258
  }
259
259
  if ("privateKey" in wallet || "walletClient" in wallet) {
260
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
260
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
261
261
  `chain ${network} is XRPL; an EVM wallet can't be used \u2014 pass { seed } (s\u2026 seed) or { wallet }.`
262
262
  );
263
263
  }
264
264
  if ("secretKey" in wallet || "signer" in wallet || "mnemonic" in wallet || "keyPair" in wallet || "secret" in wallet || "keypair" in wallet) {
265
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
265
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
266
266
  `chain ${network} is XRPL; that looks like a Solana/TON/Stellar wallet \u2014 pass { seed } (s\u2026 seed) or { wallet }.`
267
267
  );
268
268
  }
269
269
  if (!("seed" in wallet) && !("wallet" in wallet)) {
270
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
270
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
271
271
  `chain ${network} is XRPL; wallet must be { seed } (s\u2026 seed) or { wallet }.`
272
272
  );
273
273
  }
@@ -277,11 +277,11 @@ function resolveXrplWallet(config) {
277
277
  if (config.wallet) return config.wallet;
278
278
  if (config.seed) {
279
279
  if (!_xrpl.isValidSecret.call(void 0, config.seed)) {
280
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)("XRPL wallet { seed } is not a valid s\u2026 secret seed.");
280
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)("XRPL wallet { seed } is not a valid s\u2026 secret seed.");
281
281
  }
282
282
  return _xrpl.Wallet.fromSeed(config.seed);
283
283
  }
284
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)("XRPL wallet needs { seed } (s\u2026 seed) or { wallet }.");
284
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)("XRPL wallet needs { seed } (s\u2026 seed) or { wallet }.");
285
285
  }
286
286
 
287
287
  // src/drivers/xrpl/index.ts
@@ -353,7 +353,7 @@ function makeXrplNetwork(preset, rpcUrl) {
353
353
  const info = preset.tokens[token.toUpperCase()];
354
354
  if (!info) {
355
355
  const known = Object.keys(preset.tokens).join(", ") || "(none built in)";
356
- throw new (0, _chunkYJPWIK5Lcjs.UnknownTokenError)(
356
+ throw new (0, _chunkIQGT65WScjs.UnknownTokenError)(
357
357
  `token "${token}" isn't built in for XRPL (known: ${known}). Pass { issuer, currencyHex, decimals } for a custom IOU, or use 'native'.`
358
358
  );
359
359
  }
@@ -363,10 +363,10 @@ function makeXrplNetwork(preset, rpcUrl) {
363
363
  symbol: info.symbol
364
364
  };
365
365
  }
366
- _chunkYJPWIK5Lcjs.rejectForeignToken.call(void 0, token, "xrpl", network);
366
+ _chunkIQGT65WScjs.rejectForeignToken.call(void 0, token, "xrpl", network);
367
367
  const t = token;
368
368
  if (!t.issuer || !t.currencyHex || typeof t.decimals !== "number") {
369
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
369
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
370
370
  `chain ${network} is XRPL; a custom token must be { issuer, currencyHex, decimals }.`
371
371
  );
372
372
  }
@@ -387,12 +387,12 @@ function makeXrplNetwork(preset, rpcUrl) {
387
387
  },
388
388
  assertValidPayTo(payTo) {
389
389
  if (payTo.startsWith("0x")) {
390
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
390
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
391
391
  `chain ${network} is XRPL, but payTo "${payTo}" looks like an EVM address.`
392
392
  );
393
393
  }
394
394
  if (!_xrpl.isValidClassicAddress.call(void 0, payTo)) {
395
- throw new (0, _chunkYJPWIK5Lcjs.WrongFamilyError)(
395
+ throw new (0, _chunkIQGT65WScjs.WrongFamilyError)(
396
396
  `chain ${network} is XRPL, but payTo "${payTo}" is not a valid XRPL account (r\u2026).`
397
397
  );
398
398
  }
@@ -415,14 +415,14 @@ function makeXrplNetwork(preset, rpcUrl) {
415
415
  }
416
416
  await _chunkCQREG5LEcjs.delay.call(void 0, 1500);
417
417
  }
418
- throw new (0, _chunkYJPWIK5Lcjs.ConfirmationTimeoutError)(`XRPL tx ${ref} not validated on-ledger in time.`);
418
+ throw new (0, _chunkIQGT65WScjs.ConfirmationTimeoutError)(`XRPL tx ${ref} not validated on-ledger in time.`);
419
419
  },
420
420
  async estimateCost() {
421
421
  try {
422
422
  const drops = await payClient.feeDrops();
423
423
  const n = Number(drops);
424
424
  const fee = BigInt(Number.isFinite(n) && n > 12 ? Math.ceil(n) : 12);
425
- return _chunkYJPWIK5Lcjs.nativeCost.call(void 0, {
425
+ return _chunkIQGT65WScjs.nativeCost.call(void 0, {
426
426
  symbol: XRP_SYMBOL,
427
427
  decimals: XRP_DECIMALS,
428
428
  fee,
@@ -430,7 +430,7 @@ function makeXrplNetwork(preset, rpcUrl) {
430
430
  detail: `network fee ${fee} drops`
431
431
  });
432
432
  } catch (e5) {
433
- return _chunkYJPWIK5Lcjs.nativeCost.call(void 0, {
433
+ return _chunkIQGT65WScjs.nativeCost.call(void 0, {
434
434
  symbol: XRP_SYMBOL,
435
435
  decimals: XRP_DECIMALS,
436
436
  fee: 12n,
@@ -11,7 +11,7 @@ import {
11
11
  nativeCost,
12
12
  rejectForeignToken,
13
13
  toInsufficientFundsError
14
- } from "./chunk-AGKC3C7Y.js";
14
+ } from "./chunk-QDS6FBZP.js";
15
15
 
16
16
  // src/drivers/xrpl/index.ts
17
17
  import { isValidClassicAddress } from "xrpl";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@piprail/sdk",
3
- "version": "1.3.1",
4
- "description": "Accept x402 crypto payments across 27 chains — every major EVM chain plus Solana, TON, Tron, NEAR, Sui, Aptos, Stellar & XRPL — in a couple of lines. No backend, no database, no fee; payments settle straight to your wallet.",
3
+ "version": "1.4.0",
4
+ "description": "Accept x402 crypto payments across 28 chains — every major EVM chain plus Solana, TON, Tron, NEAR, Sui, Aptos, Algorand, Stellar & XRPL — in a couple of lines. No backend, no database, no fee; payments settle straight to your wallet.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
7
7
  "module": "./dist/index.js",
@@ -48,6 +48,8 @@
48
48
  "tron",
49
49
  "near",
50
50
  "sui",
51
+ "aptos",
52
+ "algorand",
51
53
  "stellar",
52
54
  "xrpl",
53
55
  "base",
@@ -80,6 +82,7 @@
80
82
  "peerDependencies": {
81
83
  "@aptos-labs/ts-sdk": ">=2 <8",
82
84
  "@mysten/sui": ">=2 <3",
85
+ "algosdk": ">=3 <4",
83
86
  "@solana/spl-token": "^0.4.0",
84
87
  "@solana/web3.js": "^1.95.0",
85
88
  "@stellar/stellar-sdk": ">=13 <16",
@@ -128,6 +131,9 @@
128
131
  },
129
132
  "near-api-js": {
130
133
  "optional": true
134
+ },
135
+ "algosdk": {
136
+ "optional": true
131
137
  }
132
138
  },
133
139
  "devDependencies": {
@@ -140,6 +146,7 @@
140
146
  "@ton/crypto": "^3.3.0",
141
147
  "@ton/ton": "^16.2.4",
142
148
  "@types/node": "^22.10.0",
149
+ "algosdk": "^3.5.2",
143
150
  "bs58": "^5.0.0",
144
151
  "near-api-js": "^7.2.0",
145
152
  "tronweb": "^6.3.0",