@piprail/sdk 1.25.0 → 2.0.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 +50 -0
- package/README.md +4 -4
- package/dist/{algorand-677ILBQS.js → algorand-GSFVZTBF.js} +10 -18
- package/dist/{algorand-ZJ53VCTN.cjs → algorand-HZS43N4P.cjs} +23 -31
- package/dist/{aptos-3TSKTI4D.js → aptos-RIL56C7L.js} +10 -18
- package/dist/{aptos-XIIHPAOO.cjs → aptos-TRCCJRZA.cjs} +22 -30
- package/dist/{chunk-L6WQRHEZ.js → chunk-7XK22JSQ.js} +14 -1
- package/dist/{chunk-U35MG4TF.cjs → chunk-JG6KRAW6.cjs} +15 -2
- package/dist/index.cjs +282 -197
- package/dist/index.d.cts +40 -32
- package/dist/index.d.ts +40 -32
- package/dist/index.js +176 -91
- package/dist/{near-MG256A3E.cjs → near-DI2I3MAV.cjs} +24 -32
- package/dist/{near-TWA4PYOD.js → near-MTYBCUYM.js} +10 -18
- package/dist/{solana-KWNRY5NR.js → solana-E4MD6JJ6.js} +20 -12
- package/dist/{solana-UEMHFQH5.cjs → solana-TLHL2KNY.cjs} +46 -38
- package/dist/{stellar-SCRRPCEA.cjs → stellar-FW6C6FBE.cjs} +28 -38
- package/dist/{stellar-YB7JXKK4.js → stellar-U5NCRIOJ.js} +12 -22
- package/dist/{sui-LFT65OGU.cjs → sui-47C2KEZI.cjs} +23 -31
- package/dist/{sui-IODKU2MA.js → sui-Y53M4GUM.js} +10 -18
- package/dist/{ton-QN5GTOCS.js → ton-5ZPT5PSP.js} +20 -13
- package/dist/{ton-RAYJFKJC.cjs → ton-MMPKWT6N.cjs} +30 -23
- package/dist/{tron-KX4VWS7V.cjs → tron-JOT4STIG.cjs} +33 -38
- package/dist/{tron-QSNCDYRB.js → tron-WYS4X2I5.js} +14 -19
- package/dist/{xrpl-ECHK3GIX.js → xrpl-2MZEOIFY.js} +11 -19
- package/dist/{xrpl-GXUFDXHU.cjs → xrpl-PECT4IMX.cjs} +27 -35
- package/package.json +1 -1
|
@@ -3,10 +3,11 @@ import {
|
|
|
3
3
|
InsufficientFundsError,
|
|
4
4
|
UnknownTokenError,
|
|
5
5
|
WrongFamilyError,
|
|
6
|
+
assertNoLegacyWalletKey,
|
|
6
7
|
nativeCost,
|
|
7
8
|
rejectForeignToken,
|
|
8
9
|
toInsufficientFundsError
|
|
9
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-7XK22JSQ.js";
|
|
10
11
|
|
|
11
12
|
// src/drivers/sui/index.ts
|
|
12
13
|
import { SuiJsonRpcClient } from "@mysten/sui/jsonRpc";
|
|
@@ -152,39 +153,30 @@ import { Ed25519Keypair } from "@mysten/sui/keypairs/ed25519";
|
|
|
152
153
|
function assertSuiWallet(wallet, network) {
|
|
153
154
|
if (typeof wallet !== "object" || wallet === null) {
|
|
154
155
|
throw new WrongFamilyError(
|
|
155
|
-
`chain ${network} is Sui; wallet must be {
|
|
156
|
+
`chain ${network} is Sui; wallet must be { key } (suiprivkey1\u2026 ) or { keypair }.`
|
|
156
157
|
);
|
|
157
158
|
}
|
|
158
|
-
|
|
159
|
+
assertNoLegacyWalletKey(wallet, "Sui");
|
|
160
|
+
if (!("key" in wallet) && !("keypair" in wallet)) {
|
|
159
161
|
throw new WrongFamilyError(
|
|
160
|
-
`chain ${network} is Sui;
|
|
161
|
-
);
|
|
162
|
-
}
|
|
163
|
-
if ("secretKey" in wallet || "signer" in wallet || "mnemonic" in wallet || "keyPair" in wallet || "secret" in wallet || "seed" in wallet || "accountId" in wallet) {
|
|
164
|
-
throw new WrongFamilyError(
|
|
165
|
-
`chain ${network} is Sui; that looks like another family's wallet \u2014 pass { privateKey } (suiprivkey1\u2026) or { keypair }.`
|
|
166
|
-
);
|
|
167
|
-
}
|
|
168
|
-
if (!("privateKey" in wallet) && !("keypair" in wallet)) {
|
|
169
|
-
throw new WrongFamilyError(
|
|
170
|
-
`chain ${network} is Sui; wallet must be { privateKey } (suiprivkey1\u2026) or { keypair }.`
|
|
162
|
+
`chain ${network} is Sui; wallet must be { key } (suiprivkey1\u2026) or { keypair }.`
|
|
171
163
|
);
|
|
172
164
|
}
|
|
173
165
|
return wallet;
|
|
174
166
|
}
|
|
175
167
|
function resolveSuiKeypair(config) {
|
|
176
168
|
if (config.keypair) return config.keypair;
|
|
177
|
-
if (config.
|
|
169
|
+
if (config.key != null) {
|
|
178
170
|
try {
|
|
179
|
-
return Ed25519Keypair.fromSecretKey(config.
|
|
171
|
+
return Ed25519Keypair.fromSecretKey(config.key);
|
|
180
172
|
} catch (cause) {
|
|
181
173
|
throw new WrongFamilyError(
|
|
182
|
-
"Sui wallet {
|
|
174
|
+
"Sui wallet { key } is not a valid suiprivkey1\u2026 secret (or 32-byte key).",
|
|
183
175
|
{ cause }
|
|
184
176
|
);
|
|
185
177
|
}
|
|
186
178
|
}
|
|
187
|
-
throw new WrongFamilyError("Sui wallet needs {
|
|
179
|
+
throw new WrongFamilyError("Sui wallet needs { key } (suiprivkey1\u2026) or { keypair }.");
|
|
188
180
|
}
|
|
189
181
|
|
|
190
182
|
// src/drivers/sui/index.ts
|
|
@@ -5,10 +5,11 @@ import {
|
|
|
5
5
|
ConfirmationTimeoutError,
|
|
6
6
|
UnknownTokenError,
|
|
7
7
|
WrongFamilyError,
|
|
8
|
+
assertNoLegacyWalletKey,
|
|
8
9
|
nativeCost,
|
|
9
10
|
rejectForeignToken,
|
|
10
11
|
toInsufficientFundsError
|
|
11
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-7XK22JSQ.js";
|
|
12
13
|
|
|
13
14
|
// src/drivers/ton/index.ts
|
|
14
15
|
import { Address as Address2 } from "@ton/core";
|
|
@@ -198,22 +199,18 @@ function notFound(nonce) {
|
|
|
198
199
|
}
|
|
199
200
|
|
|
200
201
|
// src/drivers/ton/wallet.ts
|
|
201
|
-
import { mnemonicToWalletKey } from "@ton/crypto";
|
|
202
|
+
import { mnemonicToWalletKey, mnemonicValidate } from "@ton/crypto";
|
|
202
203
|
import { WalletContractV4, WalletContractV5R1 } from "@ton/ton";
|
|
203
204
|
function assertTonWallet(wallet, network) {
|
|
204
205
|
if (typeof wallet !== "object" || wallet === null) {
|
|
205
206
|
throw new WrongFamilyError(
|
|
206
|
-
`chain ${network} is TON; wallet must be {
|
|
207
|
+
`chain ${network} is TON; wallet must be { key } (24-word mnemonic) or { keyPair }.`
|
|
207
208
|
);
|
|
208
209
|
}
|
|
209
|
-
|
|
210
|
+
assertNoLegacyWalletKey(wallet, "TON");
|
|
211
|
+
if (!("key" in wallet) && !("keyPair" in wallet)) {
|
|
210
212
|
throw new WrongFamilyError(
|
|
211
|
-
`chain ${network} is TON;
|
|
212
|
-
);
|
|
213
|
-
}
|
|
214
|
-
if (!("mnemonic" in wallet) && !("keyPair" in wallet)) {
|
|
215
|
-
throw new WrongFamilyError(
|
|
216
|
-
`chain ${network} is TON; wallet must be { mnemonic } (24 words) or { keyPair }.`
|
|
213
|
+
`chain ${network} is TON; wallet must be { key } (24-word mnemonic) or { keyPair }.`
|
|
217
214
|
);
|
|
218
215
|
}
|
|
219
216
|
return wallet;
|
|
@@ -221,13 +218,23 @@ function assertTonWallet(wallet, network) {
|
|
|
221
218
|
async function resolveTonWallet(config) {
|
|
222
219
|
const version = config.version ?? "v4";
|
|
223
220
|
let keyPair;
|
|
224
|
-
if (config.
|
|
225
|
-
|
|
221
|
+
if (config.key) {
|
|
222
|
+
if (typeof config.key !== "string" && !Array.isArray(config.key)) {
|
|
223
|
+
throw new WrongFamilyError(
|
|
224
|
+
"chain is TON; the wallet { key } must be a 24-word mnemonic (a string or string[])."
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
const words = Array.isArray(config.key) ? config.key : config.key.trim().split(/\s+/);
|
|
228
|
+
if (!await mnemonicValidate(words)) {
|
|
229
|
+
throw new WrongFamilyError(
|
|
230
|
+
"chain is TON; the wallet { key } is not a valid TON mnemonic (expected 24 words from the TON/BIP-39 wordlist)."
|
|
231
|
+
);
|
|
232
|
+
}
|
|
226
233
|
keyPair = await mnemonicToWalletKey(words);
|
|
227
234
|
} else if (config.keyPair) {
|
|
228
235
|
keyPair = config.keyPair;
|
|
229
236
|
} else {
|
|
230
|
-
throw new WrongFamilyError("TON wallet needs {
|
|
237
|
+
throw new WrongFamilyError("TON wallet needs { key } (24-word mnemonic) or { keyPair }.");
|
|
231
238
|
}
|
|
232
239
|
const contract = version === "v5r1" ? WalletContractV5R1.create({ workchain: 0, publicKey: keyPair.publicKey }) : WalletContractV4.create({ workchain: 0, publicKey: keyPair.publicKey });
|
|
233
240
|
return { keyPair, contract };
|
|
@@ -8,7 +8,8 @@ var _chunkCQREG5LEcjs = require('./chunk-CQREG5LE.cjs');
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
|
|
12
|
+
var _chunkJG6KRAW6cjs = require('./chunk-JG6KRAW6.cjs');
|
|
12
13
|
|
|
13
14
|
// src/drivers/ton/index.ts
|
|
14
15
|
var _core = require('@ton/core');
|
|
@@ -74,7 +75,7 @@ async function waitForSeqno(opened, from, { tries = 30, intervalMs = 2e3 } = {})
|
|
|
74
75
|
}
|
|
75
76
|
if (current > from) return;
|
|
76
77
|
}
|
|
77
|
-
throw new (0,
|
|
78
|
+
throw new (0, _chunkJG6KRAW6cjs.ConfirmationTimeoutError)(
|
|
78
79
|
`TON wallet seqno did not advance past ${from} \u2014 the payment may not have been accepted.`
|
|
79
80
|
);
|
|
80
81
|
}
|
|
@@ -202,18 +203,14 @@ var _crypto = require('@ton/crypto');
|
|
|
202
203
|
|
|
203
204
|
function assertTonWallet(wallet, network) {
|
|
204
205
|
if (typeof wallet !== "object" || wallet === null) {
|
|
205
|
-
throw new (0,
|
|
206
|
-
`chain ${network} is TON; wallet must be {
|
|
207
|
-
);
|
|
208
|
-
}
|
|
209
|
-
if ("privateKey" in wallet || "walletClient" in wallet) {
|
|
210
|
-
throw new (0, _chunkU35MG4TFcjs.WrongFamilyError)(
|
|
211
|
-
`chain ${network} is TON; an EVM wallet can't be used \u2014 pass { mnemonic } (24 words) or { keyPair }.`
|
|
206
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
207
|
+
`chain ${network} is TON; wallet must be { key } (24-word mnemonic) or { keyPair }.`
|
|
212
208
|
);
|
|
213
209
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
210
|
+
_chunkJG6KRAW6cjs.assertNoLegacyWalletKey.call(void 0, wallet, "TON");
|
|
211
|
+
if (!("key" in wallet) && !("keyPair" in wallet)) {
|
|
212
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
213
|
+
`chain ${network} is TON; wallet must be { key } (24-word mnemonic) or { keyPair }.`
|
|
217
214
|
);
|
|
218
215
|
}
|
|
219
216
|
return wallet;
|
|
@@ -221,13 +218,23 @@ function assertTonWallet(wallet, network) {
|
|
|
221
218
|
async function resolveTonWallet(config) {
|
|
222
219
|
const version = _nullishCoalesce(config.version, () => ( "v4"));
|
|
223
220
|
let keyPair;
|
|
224
|
-
if (config.
|
|
225
|
-
|
|
221
|
+
if (config.key) {
|
|
222
|
+
if (typeof config.key !== "string" && !Array.isArray(config.key)) {
|
|
223
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
224
|
+
"chain is TON; the wallet { key } must be a 24-word mnemonic (a string or string[])."
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
const words = Array.isArray(config.key) ? config.key : config.key.trim().split(/\s+/);
|
|
228
|
+
if (!await _crypto.mnemonicValidate.call(void 0, words)) {
|
|
229
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
230
|
+
"chain is TON; the wallet { key } is not a valid TON mnemonic (expected 24 words from the TON/BIP-39 wordlist)."
|
|
231
|
+
);
|
|
232
|
+
}
|
|
226
233
|
keyPair = await _crypto.mnemonicToWalletKey.call(void 0, words);
|
|
227
234
|
} else if (config.keyPair) {
|
|
228
235
|
keyPair = config.keyPair;
|
|
229
236
|
} else {
|
|
230
|
-
throw new (0,
|
|
237
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)("TON wallet needs { key } (24-word mnemonic) or { keyPair }.");
|
|
231
238
|
}
|
|
232
239
|
const contract = version === "v5r1" ? _ton.WalletContractV5R1.create({ workchain: 0, publicKey: keyPair.publicKey }) : _ton.WalletContractV4.create({ workchain: 0, publicKey: keyPair.publicKey });
|
|
233
240
|
return { keyPair, contract };
|
|
@@ -270,15 +277,15 @@ function makeTonNetwork(preset, rpcUrl) {
|
|
|
270
277
|
const info = preset.tokens[token.toUpperCase()];
|
|
271
278
|
if (!info) {
|
|
272
279
|
const known = Object.keys(preset.tokens).join(", ") || "(none built in)";
|
|
273
|
-
throw new (0,
|
|
280
|
+
throw new (0, _chunkJG6KRAW6cjs.UnknownTokenError)(
|
|
274
281
|
`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
282
|
);
|
|
276
283
|
}
|
|
277
284
|
return { asset: info.master, decimals: info.decimals, symbol: info.symbol };
|
|
278
285
|
}
|
|
279
|
-
|
|
286
|
+
_chunkJG6KRAW6cjs.rejectForeignToken.call(void 0, token, "ton", network);
|
|
280
287
|
if (!("master" in token)) {
|
|
281
|
-
throw new (0,
|
|
288
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
282
289
|
`chain ${network} is TON; a custom token must be { master, decimals }.`
|
|
283
290
|
);
|
|
284
291
|
}
|
|
@@ -297,14 +304,14 @@ function makeTonNetwork(preset, rpcUrl) {
|
|
|
297
304
|
},
|
|
298
305
|
assertValidPayTo(payTo) {
|
|
299
306
|
if (payTo.startsWith("0x")) {
|
|
300
|
-
throw new (0,
|
|
307
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
301
308
|
`chain ${network} is TON, but payTo "${payTo}" looks like an EVM address.`
|
|
302
309
|
);
|
|
303
310
|
}
|
|
304
311
|
try {
|
|
305
312
|
_core.Address.parse(payTo);
|
|
306
313
|
} catch (e6) {
|
|
307
|
-
throw new (0,
|
|
314
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
308
315
|
`chain ${network} is TON, but payTo "${payTo}" is not a valid TON address.`
|
|
309
316
|
);
|
|
310
317
|
}
|
|
@@ -320,7 +327,7 @@ function makeTonNetwork(preset, rpcUrl) {
|
|
|
320
327
|
const watch = await watchAccountFor(accept);
|
|
321
328
|
return encodeRef(watch, accept.extra.nonce);
|
|
322
329
|
} catch (err) {
|
|
323
|
-
throw _nullishCoalesce(
|
|
330
|
+
throw _nullishCoalesce(_chunkJG6KRAW6cjs.toInsufficientFundsError.call(void 0, err), () => ( err));
|
|
324
331
|
}
|
|
325
332
|
},
|
|
326
333
|
async confirm(ref) {
|
|
@@ -339,12 +346,12 @@ function makeTonNetwork(preset, rpcUrl) {
|
|
|
339
346
|
if (inc && inc.comment === nonce) return { height: tx.lt.toString() };
|
|
340
347
|
}
|
|
341
348
|
}
|
|
342
|
-
throw new (0,
|
|
349
|
+
throw new (0, _chunkJG6KRAW6cjs.ConfirmationTimeoutError)(`TON payment for nonce ${nonce} did not settle in time.`);
|
|
343
350
|
},
|
|
344
351
|
async estimateCost(accept) {
|
|
345
352
|
const fee = accept.asset === "native" ? 10000000n : 50000000n;
|
|
346
353
|
const detail = accept.asset === "native" ? "~0.01 TON network fee" : "~0.05 TON attached for the jetton transfer (leftover refunded)";
|
|
347
|
-
return
|
|
354
|
+
return _chunkJG6KRAW6cjs.nativeCost.call(void 0, { symbol: "TON", decimals: TON_DECIMALS, fee, basis: "heuristic", detail });
|
|
348
355
|
},
|
|
349
356
|
async balanceOf(wallet, asset) {
|
|
350
357
|
let owner;
|
|
@@ -9,7 +9,8 @@ var _chunkCQREG5LEcjs = require('./chunk-CQREG5LE.cjs');
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
var _chunkJG6KRAW6cjs = require('./chunk-JG6KRAW6.cjs');
|
|
13
14
|
|
|
14
15
|
// src/drivers/tron/index.ts
|
|
15
16
|
var _tronweb = require('tronweb');
|
|
@@ -61,7 +62,7 @@ async function payTron(params) {
|
|
|
61
62
|
return _nullishCoalesce(_nullishCoalesce(broadcast.txid, () => ( _optionalChain([broadcast, 'access', _7 => _7.transaction, 'optionalAccess', _8 => _8.txID]))), () => ( signed.txID));
|
|
62
63
|
}
|
|
63
64
|
if (isTronAffordability(broadcast.code, broadcast.message)) {
|
|
64
|
-
throw new (0,
|
|
65
|
+
throw new (0, _chunkJG6KRAW6cjs.InsufficientFundsError)(
|
|
65
66
|
`Tron payment rejected (${_nullishCoalesce(broadcast.code, () => ( "broadcast"))}): not enough TRX for energy/bandwidth, or insufficient token balance.`
|
|
66
67
|
);
|
|
67
68
|
}
|
|
@@ -69,8 +70,8 @@ async function payTron(params) {
|
|
|
69
70
|
`Tron broadcast failed: ${_nullishCoalesce(broadcast.code, () => ( ""))} ${decodeMaybeHex(broadcast.message)}`.trim()
|
|
70
71
|
);
|
|
71
72
|
} catch (err) {
|
|
72
|
-
if (err instanceof
|
|
73
|
-
throw _nullishCoalesce(
|
|
73
|
+
if (err instanceof _chunkJG6KRAW6cjs.InsufficientFundsError) throw err;
|
|
74
|
+
throw _nullishCoalesce(_chunkJG6KRAW6cjs.toInsufficientFundsError.call(void 0, err), () => ( err));
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
async function payTronNative(params) {
|
|
@@ -83,7 +84,7 @@ async function payTronNative(params) {
|
|
|
83
84
|
return _nullishCoalesce(_nullishCoalesce(broadcast.txid, () => ( _optionalChain([broadcast, 'access', _11 => _11.transaction, 'optionalAccess', _12 => _12.txID]))), () => ( signed.txID));
|
|
84
85
|
}
|
|
85
86
|
if (isTronAffordability(broadcast.code, broadcast.message)) {
|
|
86
|
-
throw new (0,
|
|
87
|
+
throw new (0, _chunkJG6KRAW6cjs.InsufficientFundsError)(
|
|
87
88
|
`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
89
|
);
|
|
89
90
|
}
|
|
@@ -91,8 +92,8 @@ async function payTronNative(params) {
|
|
|
91
92
|
`Tron TRX broadcast failed: ${_nullishCoalesce(broadcast.code, () => ( ""))} ${decodeMaybeHex(broadcast.message)}`.trim()
|
|
92
93
|
);
|
|
93
94
|
} catch (err) {
|
|
94
|
-
if (err instanceof
|
|
95
|
-
throw _nullishCoalesce(
|
|
95
|
+
if (err instanceof _chunkJG6KRAW6cjs.InsufficientFundsError) throw err;
|
|
96
|
+
throw _nullishCoalesce(_chunkJG6KRAW6cjs.toInsufficientFundsError.call(void 0, err), () => ( err));
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
99
|
function decodeMaybeHex(message) {
|
|
@@ -263,35 +264,29 @@ function txNotFound(txid) {
|
|
|
263
264
|
// src/drivers/tron/wallet.ts
|
|
264
265
|
function assertTronWallet(wallet, network) {
|
|
265
266
|
if (typeof wallet !== "object" || wallet === null) {
|
|
266
|
-
throw new (0,
|
|
267
|
-
`chain ${network} is Tron; wallet must be {
|
|
268
|
-
);
|
|
269
|
-
}
|
|
270
|
-
if ("walletClient" in wallet) {
|
|
271
|
-
throw new (0, _chunkU35MG4TFcjs.WrongFamilyError)(
|
|
272
|
-
`chain ${network} is Tron; a viem { walletClient } can't be used \u2014 pass { privateKey } (32-byte hex).`
|
|
267
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
268
|
+
`chain ${network} is Tron; wallet must be { key } (32-byte hex).`
|
|
273
269
|
);
|
|
274
270
|
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
}
|
|
280
|
-
if (!("privateKey" in wallet)) {
|
|
281
|
-
throw new (0, _chunkU35MG4TFcjs.WrongFamilyError)(
|
|
282
|
-
`chain ${network} is Tron; wallet must be { privateKey } (32-byte hex).`
|
|
271
|
+
_chunkJG6KRAW6cjs.assertNoLegacyWalletKey.call(void 0, wallet, "Tron");
|
|
272
|
+
if (!("key" in wallet)) {
|
|
273
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
274
|
+
`chain ${network} is Tron; wallet must be { key } (32-byte hex).`
|
|
283
275
|
);
|
|
284
276
|
}
|
|
285
277
|
return wallet;
|
|
286
278
|
}
|
|
287
279
|
function resolveTronPrivateKey(config) {
|
|
288
|
-
if (!config.
|
|
289
|
-
throw new (0,
|
|
280
|
+
if (!config.key) {
|
|
281
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)("Tron wallet needs { key } (32-byte hex).");
|
|
282
|
+
}
|
|
283
|
+
if (typeof config.key !== "string") {
|
|
284
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)("Tron wallet { key } must be a 32-byte hex string.");
|
|
290
285
|
}
|
|
291
|
-
const hex = config.
|
|
286
|
+
const hex = config.key.replace(/^0x/i, "").toLowerCase();
|
|
292
287
|
if (!/^[0-9a-f]{64}$/.test(hex)) {
|
|
293
|
-
throw new (0,
|
|
294
|
-
"Tron wallet {
|
|
288
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
289
|
+
"Tron wallet { key } must be a 32-byte hex string (64 hex chars)."
|
|
295
290
|
);
|
|
296
291
|
}
|
|
297
292
|
return hex;
|
|
@@ -340,21 +335,21 @@ function makeTronNetwork(preset, rpcUrl) {
|
|
|
340
335
|
const info = preset.tokens[token.toUpperCase()];
|
|
341
336
|
if (!info) {
|
|
342
337
|
const known = Object.keys(preset.tokens).join(", ") || "(none built in)";
|
|
343
|
-
throw new (0,
|
|
338
|
+
throw new (0, _chunkJG6KRAW6cjs.UnknownTokenError)(
|
|
344
339
|
`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
340
|
);
|
|
346
341
|
}
|
|
347
342
|
return { asset: info.address, decimals: info.decimals, symbol: info.symbol };
|
|
348
343
|
}
|
|
349
|
-
|
|
344
|
+
_chunkJG6KRAW6cjs.rejectForeignToken.call(void 0, token, "tron", network);
|
|
350
345
|
if (!("address" in token)) {
|
|
351
|
-
throw new (0,
|
|
346
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
352
347
|
`chain ${network} is Tron; a custom token must be { address, decimals } (Base58 T\u2026 contract).`
|
|
353
348
|
);
|
|
354
349
|
}
|
|
355
350
|
const t = token;
|
|
356
351
|
if (t.address.startsWith("0x") || !tronWeb.isAddress(t.address)) {
|
|
357
|
-
throw new (0,
|
|
352
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
358
353
|
`chain ${network} is Tron, but token address "${t.address}" is not a valid Tron contract (T\u2026).`
|
|
359
354
|
);
|
|
360
355
|
}
|
|
@@ -373,12 +368,12 @@ function makeTronNetwork(preset, rpcUrl) {
|
|
|
373
368
|
},
|
|
374
369
|
assertValidPayTo(payTo) {
|
|
375
370
|
if (payTo.startsWith("0x")) {
|
|
376
|
-
throw new (0,
|
|
371
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
377
372
|
`chain ${network} is Tron, but payTo "${payTo}" looks like an EVM address.`
|
|
378
373
|
);
|
|
379
374
|
}
|
|
380
375
|
if (!tronWeb.isAddress(payTo)) {
|
|
381
|
-
throw new (0,
|
|
376
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)(
|
|
382
377
|
`chain ${network} is Tron, but payTo "${payTo}" is not a valid Tron address (T\u2026).`
|
|
383
378
|
);
|
|
384
379
|
}
|
|
@@ -390,7 +385,7 @@ function makeTronNetwork(preset, rpcUrl) {
|
|
|
390
385
|
const privateKey = resolveTronPrivateKey(wallet._native);
|
|
391
386
|
const from = tronWeb.address.fromPrivateKey(privateKey);
|
|
392
387
|
if (!from) {
|
|
393
|
-
throw new (0,
|
|
388
|
+
throw new (0, _chunkJG6KRAW6cjs.WrongFamilyError)("Tron wallet { key } could not derive an address.");
|
|
394
389
|
}
|
|
395
390
|
if (accept.asset === "native") {
|
|
396
391
|
return payTronNative({ client: tronWeb, from, privateKey, accept });
|
|
@@ -413,11 +408,11 @@ function makeTronNetwork(preset, rpcUrl) {
|
|
|
413
408
|
}
|
|
414
409
|
await _chunkCQREG5LEcjs.delay.call(void 0, 2500);
|
|
415
410
|
}
|
|
416
|
-
throw new (0,
|
|
411
|
+
throw new (0, _chunkJG6KRAW6cjs.ConfirmationTimeoutError)(`Tron tx ${txid} did not solidify in time.`);
|
|
417
412
|
},
|
|
418
413
|
async estimateCost(accept, opts) {
|
|
419
414
|
if (accept.asset === "native") {
|
|
420
|
-
return
|
|
415
|
+
return _chunkJG6KRAW6cjs.nativeCost.call(void 0, {
|
|
421
416
|
symbol: "TRX",
|
|
422
417
|
decimals: TRX_DECIMALS,
|
|
423
418
|
fee: 1300000n,
|
|
@@ -441,7 +436,7 @@ function makeTronNetwork(preset, rpcUrl) {
|
|
|
441
436
|
);
|
|
442
437
|
const energy = BigInt(_nullishCoalesce(r.energy_used, () => ( 0)));
|
|
443
438
|
if (energy > 0n) {
|
|
444
|
-
return
|
|
439
|
+
return _chunkJG6KRAW6cjs.nativeCost.call(void 0, {
|
|
445
440
|
symbol: "TRX",
|
|
446
441
|
decimals: TRX_DECIMALS,
|
|
447
442
|
fee: energy * ENERGY_PRICE + BANDWIDTH_SUN,
|
|
@@ -452,7 +447,7 @@ function makeTronNetwork(preset, rpcUrl) {
|
|
|
452
447
|
} catch (e8) {
|
|
453
448
|
}
|
|
454
449
|
}
|
|
455
|
-
return
|
|
450
|
+
return _chunkJG6KRAW6cjs.nativeCost.call(void 0, {
|
|
456
451
|
symbol: "TRX",
|
|
457
452
|
decimals: TRX_DECIMALS,
|
|
458
453
|
fee: 30000n * ENERGY_PRICE + BANDWIDTH_SUN,
|
|
@@ -6,10 +6,11 @@ import {
|
|
|
6
6
|
InsufficientFundsError,
|
|
7
7
|
UnknownTokenError,
|
|
8
8
|
WrongFamilyError,
|
|
9
|
+
assertNoLegacyWalletKey,
|
|
9
10
|
nativeCost,
|
|
10
11
|
rejectForeignToken,
|
|
11
12
|
toInsufficientFundsError
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-7XK22JSQ.js";
|
|
13
14
|
|
|
14
15
|
// src/drivers/tron/index.ts
|
|
15
16
|
import { TronWeb } from "tronweb";
|
|
@@ -264,34 +265,28 @@ function txNotFound(txid) {
|
|
|
264
265
|
function assertTronWallet(wallet, network) {
|
|
265
266
|
if (typeof wallet !== "object" || wallet === null) {
|
|
266
267
|
throw new WrongFamilyError(
|
|
267
|
-
`chain ${network} is Tron; wallet must be {
|
|
268
|
+
`chain ${network} is Tron; wallet must be { key } (32-byte hex).`
|
|
268
269
|
);
|
|
269
270
|
}
|
|
270
|
-
|
|
271
|
+
assertNoLegacyWalletKey(wallet, "Tron");
|
|
272
|
+
if (!("key" in wallet)) {
|
|
271
273
|
throw new WrongFamilyError(
|
|
272
|
-
`chain ${network} is Tron;
|
|
273
|
-
);
|
|
274
|
-
}
|
|
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 WrongFamilyError(
|
|
277
|
-
`chain ${network} is Tron; that looks like a Solana/TON/Stellar/XRPL wallet \u2014 pass { privateKey } (32-byte hex).`
|
|
278
|
-
);
|
|
279
|
-
}
|
|
280
|
-
if (!("privateKey" in wallet)) {
|
|
281
|
-
throw new WrongFamilyError(
|
|
282
|
-
`chain ${network} is Tron; wallet must be { privateKey } (32-byte hex).`
|
|
274
|
+
`chain ${network} is Tron; wallet must be { key } (32-byte hex).`
|
|
283
275
|
);
|
|
284
276
|
}
|
|
285
277
|
return wallet;
|
|
286
278
|
}
|
|
287
279
|
function resolveTronPrivateKey(config) {
|
|
288
|
-
if (!config.
|
|
289
|
-
throw new WrongFamilyError("Tron wallet needs {
|
|
280
|
+
if (!config.key) {
|
|
281
|
+
throw new WrongFamilyError("Tron wallet needs { key } (32-byte hex).");
|
|
282
|
+
}
|
|
283
|
+
if (typeof config.key !== "string") {
|
|
284
|
+
throw new WrongFamilyError("Tron wallet { key } must be a 32-byte hex string.");
|
|
290
285
|
}
|
|
291
|
-
const hex = config.
|
|
286
|
+
const hex = config.key.replace(/^0x/i, "").toLowerCase();
|
|
292
287
|
if (!/^[0-9a-f]{64}$/.test(hex)) {
|
|
293
288
|
throw new WrongFamilyError(
|
|
294
|
-
"Tron wallet {
|
|
289
|
+
"Tron wallet { key } must be a 32-byte hex string (64 hex chars)."
|
|
295
290
|
);
|
|
296
291
|
}
|
|
297
292
|
return hex;
|
|
@@ -390,7 +385,7 @@ function makeTronNetwork(preset, rpcUrl) {
|
|
|
390
385
|
const privateKey = resolveTronPrivateKey(wallet._native);
|
|
391
386
|
const from = tronWeb.address.fromPrivateKey(privateKey);
|
|
392
387
|
if (!from) {
|
|
393
|
-
throw new WrongFamilyError("Tron wallet {
|
|
388
|
+
throw new WrongFamilyError("Tron wallet { key } could not derive an address.");
|
|
394
389
|
}
|
|
395
390
|
if (accept.asset === "native") {
|
|
396
391
|
return payTronNative({ client: tronWeb, from, privateKey, accept });
|
|
@@ -7,12 +7,13 @@ import {
|
|
|
7
7
|
RecipientNotReadyError,
|
|
8
8
|
UnknownTokenError,
|
|
9
9
|
WrongFamilyError,
|
|
10
|
+
assertNoLegacyWalletKey,
|
|
10
11
|
floorUnits,
|
|
11
12
|
nativeCost,
|
|
12
13
|
parseUnits,
|
|
13
14
|
rejectForeignToken,
|
|
14
15
|
toInsufficientFundsError
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-7XK22JSQ.js";
|
|
16
17
|
|
|
17
18
|
// src/drivers/xrpl/index.ts
|
|
18
19
|
import { isValidClassicAddress } from "xrpl";
|
|
@@ -254,35 +255,26 @@ import { Wallet, isValidSecret } from "xrpl";
|
|
|
254
255
|
function assertXrplWallet(wallet, network) {
|
|
255
256
|
if (typeof wallet !== "object" || wallet === null) {
|
|
256
257
|
throw new WrongFamilyError(
|
|
257
|
-
`chain ${network} is XRPL; wallet must be {
|
|
258
|
+
`chain ${network} is XRPL; wallet must be { key } (s\u2026 seed) or { wallet }.`
|
|
258
259
|
);
|
|
259
260
|
}
|
|
260
|
-
|
|
261
|
+
assertNoLegacyWalletKey(wallet, "XRPL");
|
|
262
|
+
if (!("key" in wallet) && !("wallet" in wallet)) {
|
|
261
263
|
throw new WrongFamilyError(
|
|
262
|
-
`chain ${network} is XRPL;
|
|
263
|
-
);
|
|
264
|
-
}
|
|
265
|
-
if ("secretKey" in wallet || "signer" in wallet || "mnemonic" in wallet || "keyPair" in wallet || "secret" in wallet || "keypair" in wallet) {
|
|
266
|
-
throw new WrongFamilyError(
|
|
267
|
-
`chain ${network} is XRPL; that looks like a Solana/TON/Stellar wallet \u2014 pass { seed } (s\u2026 seed) or { wallet }.`
|
|
268
|
-
);
|
|
269
|
-
}
|
|
270
|
-
if (!("seed" in wallet) && !("wallet" in wallet)) {
|
|
271
|
-
throw new WrongFamilyError(
|
|
272
|
-
`chain ${network} is XRPL; wallet must be { seed } (s\u2026 seed) or { wallet }.`
|
|
264
|
+
`chain ${network} is XRPL; wallet must be { key } (s\u2026 seed) or { wallet }.`
|
|
273
265
|
);
|
|
274
266
|
}
|
|
275
267
|
return wallet;
|
|
276
268
|
}
|
|
277
269
|
function resolveXrplWallet(config) {
|
|
278
270
|
if (config.wallet) return config.wallet;
|
|
279
|
-
if (config.
|
|
280
|
-
if (!isValidSecret(config.
|
|
281
|
-
throw new WrongFamilyError("XRPL wallet {
|
|
271
|
+
if (config.key) {
|
|
272
|
+
if (!isValidSecret(config.key)) {
|
|
273
|
+
throw new WrongFamilyError("XRPL wallet { key } is not a valid s\u2026 secret seed.");
|
|
282
274
|
}
|
|
283
|
-
return Wallet.fromSeed(config.
|
|
275
|
+
return Wallet.fromSeed(config.key);
|
|
284
276
|
}
|
|
285
|
-
throw new WrongFamilyError("XRPL wallet needs {
|
|
277
|
+
throw new WrongFamilyError("XRPL wallet needs { key } (s\u2026 seed) or { wallet }.");
|
|
286
278
|
}
|
|
287
279
|
|
|
288
280
|
// src/drivers/xrpl/index.ts
|