@xchainjs/xchain-tron 2.0.0 → 3.0.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/lib/clientLedger.d.ts +15 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.esm.js +48 -7
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +49 -6
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts +4 -0
- package/package.json +2 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Address } from '@xchainjs/xchain-util';
|
|
2
|
+
import { Client } from './client';
|
|
3
|
+
import { TronTransaction, TronSignedTransaction, TRONClientLedgerParams } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Custom Tron Ledger client extending the base Tron client
|
|
6
|
+
*/
|
|
7
|
+
declare class ClientLedger extends Client {
|
|
8
|
+
private transport;
|
|
9
|
+
private ledgerApp;
|
|
10
|
+
constructor(params: TRONClientLedgerParams);
|
|
11
|
+
getAddress(): string;
|
|
12
|
+
getAddressAsync(index?: number, verify?: boolean): Promise<Address>;
|
|
13
|
+
signTransaction(transaction: TronTransaction, walletIndex?: number): Promise<TronSignedTransaction>;
|
|
14
|
+
}
|
|
15
|
+
export { ClientLedger };
|
package/lib/index.d.ts
CHANGED
package/lib/index.esm.js
CHANGED
|
@@ -3,6 +3,7 @@ import { mnemonicToSeedSync } from '@scure/bip39';
|
|
|
3
3
|
import TW, { TronWeb } from 'tronweb';
|
|
4
4
|
import { ExplorerProvider, Network, TxType, BaseXChainClient, FeeType } from '@xchainjs/xchain-client';
|
|
5
5
|
import { AssetType, baseAmount } from '@xchainjs/xchain-util';
|
|
6
|
+
import TronLedgerApp from '@ledgerhq/hw-app-trx';
|
|
6
7
|
|
|
7
8
|
/******************************************************************************
|
|
8
9
|
Copyright (c) Microsoft Corporation.
|
|
@@ -592,7 +593,7 @@ class Client extends BaseXChainClient {
|
|
|
592
593
|
const { asset, amount: baseValue, recipient, memo, walletIndex } = params;
|
|
593
594
|
if (!asset)
|
|
594
595
|
throw Error('Asset not provided');
|
|
595
|
-
const sender = this.
|
|
596
|
+
const sender = yield this.getAddressAsync(walletIndex);
|
|
596
597
|
const amount = baseValue.amount().toString();
|
|
597
598
|
if (asset.type === AssetType.NATIVE) {
|
|
598
599
|
const transaction = yield this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender);
|
|
@@ -772,7 +773,7 @@ class Client extends BaseXChainClient {
|
|
|
772
773
|
const isNative = (asset === null || asset === void 0 ? void 0 : asset.type) === AssetType.NATIVE;
|
|
773
774
|
let feeAmount;
|
|
774
775
|
// Get sender address
|
|
775
|
-
const senderAddress = this.
|
|
776
|
+
const senderAddress = yield this.getAddressAsync(walletIndex);
|
|
776
777
|
if (!senderAddress) {
|
|
777
778
|
// If no signer, return default fee
|
|
778
779
|
feeAmount = isNative ? baseAmount(0.1 * Math.pow(10, 6), TRX_DECIMAL) : baseAmount(15 * Math.pow(10, 6), TRX_DECIMAL);
|
|
@@ -840,7 +841,7 @@ class Client extends BaseXChainClient {
|
|
|
840
841
|
if (!asset)
|
|
841
842
|
throw Error('Asset not provided');
|
|
842
843
|
const amount = baseValue.amount().toString();
|
|
843
|
-
const sender = this.
|
|
844
|
+
const sender = yield this.getAddressAsync(walletIndex);
|
|
844
845
|
const isNative = asset.type === AssetType.NATIVE;
|
|
845
846
|
if (isNative) {
|
|
846
847
|
const transaction = yield this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender);
|
|
@@ -875,7 +876,7 @@ class Client extends BaseXChainClient {
|
|
|
875
876
|
*/
|
|
876
877
|
isApproved(_a) {
|
|
877
878
|
return __awaiter(this, arguments, void 0, function* ({ contractAddress, spenderAddress, amount, walletIndex }) {
|
|
878
|
-
const from = this.
|
|
879
|
+
const from = yield this.getAddressAsync(walletIndex);
|
|
879
880
|
const allowance = yield this.getApprovedAmount({ contractAddress, from, spenderAddress });
|
|
880
881
|
if (!amount) {
|
|
881
882
|
// If no amount specified, check if there's any approval
|
|
@@ -897,7 +898,7 @@ class Client extends BaseXChainClient {
|
|
|
897
898
|
*/
|
|
898
899
|
approve(_a) {
|
|
899
900
|
return __awaiter(this, arguments, void 0, function* ({ contractAddress, spenderAddress, amount, walletIndex = 0 }) {
|
|
900
|
-
const fromAddress = this.
|
|
901
|
+
const fromAddress = yield this.getAddressAsync(walletIndex);
|
|
901
902
|
const approvalAmount = amount !== undefined ? amount.amount().toString() : MAX_APPROVAL;
|
|
902
903
|
// Build approve transaction using triggerSmartContract
|
|
903
904
|
const functionSelector = 'approve(address,uint256)';
|
|
@@ -927,7 +928,7 @@ class Client extends BaseXChainClient {
|
|
|
927
928
|
}
|
|
928
929
|
getTransactions(params) {
|
|
929
930
|
return __awaiter(this, void 0, void 0, function* () {
|
|
930
|
-
const address = (params === null || params === void 0 ? void 0 : params.address) || this.
|
|
931
|
+
const address = (params === null || params === void 0 ? void 0 : params.address) || (yield this.getAddressAsync());
|
|
931
932
|
const offset = (params === null || params === void 0 ? void 0 : params.offset) || 0;
|
|
932
933
|
const limit = (params === null || params === void 0 ? void 0 : params.limit) || 10;
|
|
933
934
|
return this.tronGrid.getTransactions({ address, limit, offset });
|
|
@@ -1020,5 +1021,45 @@ class ClientKeystore extends Client {
|
|
|
1020
1021
|
}
|
|
1021
1022
|
}
|
|
1022
1023
|
|
|
1023
|
-
|
|
1024
|
+
/**
|
|
1025
|
+
* Custom Tron Ledger client extending the base Tron client
|
|
1026
|
+
*/
|
|
1027
|
+
class ClientLedger extends Client {
|
|
1028
|
+
constructor(params) {
|
|
1029
|
+
const clientParams = Object.assign(Object.assign({}, defaultTRONParams), params);
|
|
1030
|
+
super(clientParams);
|
|
1031
|
+
this.transport = params.transport;
|
|
1032
|
+
this.ledgerApp = new TronLedgerApp(this.transport);
|
|
1033
|
+
}
|
|
1034
|
+
// Get the current address synchronously - not supported for Ledger Client
|
|
1035
|
+
getAddress() {
|
|
1036
|
+
throw Error('Sync method not supported for Ledger');
|
|
1037
|
+
}
|
|
1038
|
+
// Get the current address asynchronously
|
|
1039
|
+
getAddressAsync() {
|
|
1040
|
+
return __awaiter(this, arguments, void 0, function* (index = 0, verify = false) {
|
|
1041
|
+
if (!this.ledgerApp)
|
|
1042
|
+
throw Error('ledger not connected');
|
|
1043
|
+
const derivationPath = this.getFullDerivationPath(index);
|
|
1044
|
+
const result = yield this.ledgerApp.getAddress(derivationPath, verify);
|
|
1045
|
+
return result.address;
|
|
1046
|
+
});
|
|
1047
|
+
}
|
|
1048
|
+
// Sign transaction using Ledger
|
|
1049
|
+
signTransaction(transaction_1) {
|
|
1050
|
+
return __awaiter(this, arguments, void 0, function* (transaction, walletIndex = 0) {
|
|
1051
|
+
if (!this.ledgerApp)
|
|
1052
|
+
throw Error('ledger not connected');
|
|
1053
|
+
const derivationPath = this.getFullDerivationPath(walletIndex);
|
|
1054
|
+
const rawTxHex = transaction.raw_data_hex;
|
|
1055
|
+
const signature = yield this.ledgerApp.signTransaction(derivationPath, rawTxHex, []);
|
|
1056
|
+
if (!signature) {
|
|
1057
|
+
throw new Error('failed signing tx by ledger');
|
|
1058
|
+
}
|
|
1059
|
+
return Object.assign(Object.assign({}, transaction), { signature: [signature] });
|
|
1060
|
+
});
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
export { AssetTRONUSDT, AssetTRX, ClientKeystore as Client, ClientLedger, MAX_APPROVAL, TRC20_TRANSFER_BANDWIDTH, TRC20_TRANSFER_ENERGY, TRONChain, TRON_DEFAULT_RPC, TRON_DERIVATION_PATH, TRON_USDT_CONTRACT, TRX_DECIMAL, TRX_FEE_LIMIT, TRX_TRANSFER_BANDWIDTH, defaultTRONParams, tronExplorerProviders, validateAddress };
|
|
1024
1065
|
//# sourceMappingURL=index.esm.js.map
|
package/lib/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../node_modules/tslib/tslib.es6.js","../src/const.ts","../src/utils/index.ts","../src/utils/trongrid/trongrid.ts","../src/client.ts","../src/clientKeystore.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import { ExplorerProvider, Network } from '@xchainjs/xchain-client'\nimport { Asset, AnyAsset, AssetType } from '@xchainjs/xchain-util'\n\nexport const TRX_DECIMAL = 6\n\nexport const TRON_DERIVATION_PATH = \"m/44'/195'/0'/0/\"\n\n/**\n * Chain identifier for Tron mainnet\n */\nexport const TRONChain = 'TRON' as const\n\nexport const AssetTRX: Asset = {\n chain: TRONChain,\n symbol: 'TRX',\n ticker: 'TRX',\n type: AssetType.NATIVE,\n}\n\nexport const AssetTRONUSDT: AnyAsset = {\n chain: TRONChain,\n symbol: 'USDT-TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t',\n ticker: 'USDT',\n type: AssetType.TOKEN,\n}\n// Explorer providers for Tron\nconst TRON_MAINNET_EXPLORER = new ExplorerProvider(\n 'https://tronscan.org/',\n 'https://tronscan.org/#/address/%%ADDRESS%%',\n 'https://tronscan.org/#/transaction/%%TX_ID%%',\n)\n\nconst TRON_TESTNET_EXPLORER = new ExplorerProvider(\n 'https://nile.tronscan.org/',\n 'https://nile.tronscan.org/accounts/%%ADDRESS%%',\n 'https://nile.tronscan.org/transactions/%%TX_ID%%',\n)\n\nexport const TRON_DEFAULT_RPC = 'https://tron-rpc.publicnode.com'\n\nexport const tronExplorerProviders = {\n [Network.Mainnet]: TRON_MAINNET_EXPLORER,\n [Network.Stagenet]: TRON_MAINNET_EXPLORER,\n [Network.Testnet]: TRON_TESTNET_EXPLORER,\n}\n\nexport const TRX_TRANSFER_BANDWIDTH = 268 // Bandwidth consumed by a TRX transfer\nexport const TRC20_TRANSFER_ENERGY = 13000 // Average energy consumed by TRC20 transfer\nexport const TRC20_TRANSFER_BANDWIDTH = 345 // Bandwidth consumed by TRC20 transfer\n\nexport const TRON_USDT_CONTRACT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'\n\nexport const MAX_APPROVAL = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'\nexport const TRX_FEE_LIMIT = 100_000_000\n","import { AnyAsset } from '@xchainjs/xchain-util'\nimport { TronWeb } from 'tronweb'\n\nexport const validateAddress = (address: string) => {\n return TronWeb.isAddress(address)\n}\n\nexport const getTRC20AssetContractAddress = (asset: AnyAsset): string | null => {\n try {\n return asset.symbol.slice(asset.ticker.length + 1)\n } catch (_err) {\n return null\n }\n}\n","import { Tx, TxType, TxFrom, TxTo, TxsPage } from '@xchainjs/xchain-client'\nimport { AssetType, baseAmount } from '@xchainjs/xchain-util'\nimport TW, { TronWeb } from 'tronweb'\nimport type { TronGridAccountResponse, TronGridTransaction } from './types'\nimport { AssetTRX, TRX_DECIMAL, TRON_DEFAULT_RPC } from '../../const'\n\nconst TRONGRID_API_BASE_URL = 'https://api.trongrid.io'\n\nexport class TronGrid {\n public tronWeb: TronWeb\n\n constructor() {\n this.tronWeb = new TronWeb({ fullHost: TRON_DEFAULT_RPC })\n }\n\n public async getAccount(address: string) {\n try {\n const response = await fetch(`${TRONGRID_API_BASE_URL}/v1/accounts/${address}`)\n\n if (!response.ok) {\n throw new Error(`TronGrid API error: ${response.status} ${response.statusText}`)\n }\n\n const data = (await response.json()) as TronGridAccountResponse\n\n if (!(data.success && data.data) || data.data.length === 0) {\n throw new Error('Invalid response from TronGrid API')\n }\n\n // Convert search address to hex format for comparison\n let searchAddressHex: string\n try {\n // If address is base58, convert to hex\n searchAddressHex = TronWeb.address.toHex(address).toLowerCase()\n } catch {\n // If conversion fails, assume it's already hex\n searchAddressHex = address.toLowerCase()\n }\n\n // Find the account that matches the requested address\n const account = data.data.find((acc) => {\n return acc.address.toLowerCase() === searchAddressHex\n })\n\n if (!account) {\n return\n }\n\n return account\n } catch (error) {\n throw error\n }\n }\n\n public async getTransactions(params: { address: string; limit: number; offset: number }): Promise<TxsPage> {\n const { address, offset, limit } = params\n const url = `https://api.trongrid.io/v1/accounts/${address}/transactions?limit=${limit}&start=${offset}`\n const res = await fetch(url)\n const { data }: { data: TronGridTransaction[] } = await res.json()\n\n const txs: Tx[] = []\n\n for (const tx of data) {\n const contract = tx.raw_data.contract[0]\n\n // Case 1: Native TRX transfer\n if (contract.type === 'TransferContract') {\n const amount = baseAmount(contract.parameter.value.amount, TRX_DECIMAL)\n const from: TxFrom[] = [{ from: TronWeb.address.fromHex(contract.parameter.value.owner_address), amount }]\n const to: TxTo[] = [{ to: TronWeb.address.fromHex(contract.parameter.value.to_address), amount }]\n\n txs.push({\n asset: AssetTRX,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.block_timestamp as number),\n hash: tx.txID,\n })\n continue\n }\n\n // Case 2: TRC20 transfer (TriggerSmartContract)\n if (contract.type === 'TriggerSmartContract') {\n const { contract_address, data: inputData, owner_address } = contract.parameter.value\n\n // `inputData` starts with 4-byte method selector (transfer(address,uint256))\n // and then encoded params\n try {\n const decoded = TW.utils.abi.decodeParams(\n ['_to', '_value'], // parameter names\n ['address', 'uint256'], // parameter types\n inputData, // full input data (with selector)\n true, // ignoreMethodHash - automatically skip selector\n )\n\n const toAddress = decoded._to\n const fromAddress = TronWeb.address.fromHex(owner_address)\n const rawValue = decoded._value.toString()\n\n // Get token contract instance\n const contractHex = TronWeb.address.fromHex(contract_address)\n const tokenContract = await this.tronWeb.contract().at(contractHex)\n\n // Call symbol() and decimals()\n const symbol: string = await tokenContract.symbol().call()\n const decimals: number = await tokenContract.decimals().call()\n\n const amount = baseAmount(rawValue, decimals)\n const from: TxFrom[] = [{ from: fromAddress, amount }]\n const to: TxTo[] = [{ to: toAddress, amount }]\n const asset = {\n chain: 'TRON',\n symbol: `${symbol}-${contract_address}`,\n ticker: symbol,\n type: AssetType.TOKEN,\n }\n\n txs.push({\n asset,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.block_timestamp as number),\n hash: tx.txID,\n })\n } catch (_e) {\n // Not an ERC20 transfer (could be another contract call)\n continue\n }\n }\n }\n\n return {\n total: txs.length,\n txs,\n }\n }\n\n public async getTransactionData(txId: string): Promise<Tx> {\n const url = `${TRONGRID_API_BASE_URL}/walletsolidity/gettransactionbyid`\n const res = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ value: txId }),\n })\n\n const tx: TronGridTransaction = await res.json()\n if (!tx || !tx.raw_data?.contract?.length) {\n throw new Error('Transaction not found')\n }\n\n const contract = tx.raw_data.contract[0]\n\n // Case 1: Native TRX transfer\n if (contract.type === 'TransferContract') {\n const amount = baseAmount(contract.parameter.value.amount, TRX_DECIMAL)\n const from: TxFrom[] = [{ from: TronWeb.address.fromHex(contract.parameter.value.owner_address), amount }]\n const to: TxTo[] = [{ to: TronWeb.address.fromHex(contract.parameter.value.to_address), amount }]\n\n return {\n asset: AssetTRX,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.raw_data.timestamp ?? Date.now()),\n hash: tx.txID,\n }\n }\n\n // Case 2: TRC20 transfer (must decode ABI input manually)\n if (contract.type === 'TriggerSmartContract') {\n const { owner_address, contract_address, data: inputData } = contract.parameter.value\n\n // ERC20 transfer selector = a9059cbb\n if (inputData.startsWith('a9059cbb')) {\n const decoded = TW.utils.abi.decodeParams(\n ['_to', '_value'], // parameter names\n ['address', 'uint256'], // parameter types\n inputData, // full input data (with selector)\n true, // ignoreMethodHash - automatically skip selector\n )\n\n const toAddress = TronWeb.address.fromHex(decoded._to)\n const fromAddress = TronWeb.address.fromHex(owner_address)\n const rawValue = decoded._value.toString()\n\n // should set owner_address\n this.tronWeb.setAddress(fromAddress)\n // Get token contract instance\n const contract = TronWeb.address.fromHex(contract_address)\n const tokenContract = await this.tronWeb.contract().at(contract)\n\n // Call symbol() and decimals()\n const symbol: string = await tokenContract.symbol().call()\n const decimals: number = await tokenContract.decimals().call()\n\n const amount = baseAmount(rawValue, decimals)\n const from: TxFrom[] = [{ from: fromAddress, amount }]\n const to: TxTo[] = [{ to: toAddress, amount }]\n const asset = {\n chain: 'TRON',\n symbol: `${symbol}-${contract_address}`,\n ticker: symbol,\n type: AssetType.TOKEN,\n }\n\n return {\n asset,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.raw_data.timestamp as number),\n hash: tx.txID,\n }\n }\n }\n\n throw new Error(`Unsupported or non-transfer transaction: ${contract.type}`)\n }\n}\n","import {\n AssetInfo,\n FeeType,\n Fees,\n Balance,\n Network,\n TxHash,\n BaseXChainClient,\n ExplorerProviders,\n TxParams,\n PreparedTx,\n TxsPage,\n TxHistoryParams,\n Tx,\n FeesWithRates,\n FeeRate,\n} from '@xchainjs/xchain-client'\nimport { baseAmount, Address, AssetType, BaseAmount } from '@xchainjs/xchain-util'\nimport { TronWeb } from 'tronweb'\n\nimport {\n AssetTRX,\n TRONChain,\n TRON_DERIVATION_PATH,\n TRX_DECIMAL,\n tronExplorerProviders,\n TRON_DEFAULT_RPC,\n TRON_USDT_CONTRACT,\n TRX_TRANSFER_BANDWIDTH,\n TRC20_TRANSFER_ENERGY,\n TRC20_TRANSFER_BANDWIDTH,\n TRX_FEE_LIMIT,\n MAX_APPROVAL,\n} from './const'\nimport { validateAddress, getTRC20AssetContractAddress } from './utils'\nimport trc20ABI from './utils/trc20.json'\nimport {\n TRONClientParams,\n TronTransaction,\n TronSignedTransaction,\n ApproveParams,\n IsApprovedParams,\n TronGetApprovedParams,\n} from './types'\nimport { TronGrid } from './utils/trongrid'\n\n// Default parameters for the Tron client\nexport const defaultTRONParams: TRONClientParams = {\n network: Network.Mainnet,\n phrase: '',\n explorerProviders: tronExplorerProviders,\n rootDerivationPaths: {\n [Network.Mainnet]: TRON_DERIVATION_PATH,\n [Network.Testnet]: TRON_DERIVATION_PATH,\n [Network.Stagenet]: TRON_DERIVATION_PATH,\n },\n}\n\nexport abstract class Client extends BaseXChainClient {\n protected explorerProviders: ExplorerProviders\n protected tronWeb: TronWeb\n protected tronGrid: TronGrid\n\n constructor(params: TRONClientParams = defaultTRONParams) {\n const clientParams = { ...defaultTRONParams, ...params }\n\n super(TRONChain, clientParams)\n this.explorerProviders = clientParams.explorerProviders\n this.tronWeb = new TronWeb({ fullHost: TRON_DEFAULT_RPC })\n this.tronGrid = new TronGrid()\n }\n\n /**\n * Get TRX asset info.\n * @returns {AssetInfo} TRX asset information.\n */\n getAssetInfo(): AssetInfo {\n const assetInfo: AssetInfo = {\n asset: AssetTRX,\n decimal: TRX_DECIMAL,\n }\n return assetInfo\n }\n\n /**\n * Get the explorer URL.\n *\n * @returns {string} The explorer URL.\n */\n public getExplorerUrl(): string {\n return this.explorerProviders[this.getNetwork()].getExplorerUrl()\n }\n\n /**\n * Get the explorer url for the given address.\n *\n * @param {Address} address\n * @returns {string} The explorer url for the given address.\n */\n public getExplorerAddressUrl(address: Address): string {\n return this.explorerProviders[this.getNetwork()].getExplorerAddressUrl(address)\n }\n\n /**\n * Get the explorer url for the given transaction id.\n *\n * @param {string} txID\n * @returns {string} The explorer url for the given transaction id.\n */\n public getExplorerTxUrl(txID: TxHash): string {\n return this.explorerProviders[this.getNetwork()].getExplorerTxUrl(txID)\n }\n\n /**\n * Validate the given Tron address.\n * @param {string} address Tron address to validate.\n * @returns {boolean} `true` if the address is valid, `false` otherwise.\n */\n validateAddress(address: string): boolean {\n return validateAddress(address)\n }\n\n /**\n * Get token balance and info directly from contract\n */\n public fetchTokenMetadata = async ({ contractAddress }: { contractAddress: string }) => {\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n const [symbolRaw, decimalsRaw] = await Promise.all([\n contract\n .symbol()\n .call()\n .catch(() => 'UNKNOWN'),\n contract\n .decimals()\n .call()\n .catch(() => '18'),\n ])\n\n return { decimals: Number(decimalsRaw ?? 18), symbol: symbolRaw ?? 'UNKNOWN' }\n }\n\n /**\n * Get token balance and info directly from contract\n */\n public fetchTokenBalance = async ({ contractAddress, address }: { contractAddress: string; address: string }) => {\n try {\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n if (!contract.methods?.balanceOf) {\n return BigInt(0)\n }\n\n const [balance] = await contract.methods.balanceOf(address).call()\n\n return balance ? (typeof balance === 'bigint' ? balance : BigInt(balance)) : BigInt(0)\n } catch (err) {\n console.warn(`balanceOf() failed for ${contractAddress}:`, err)\n return BigInt(0)\n }\n }\n\n /**\n * Get current chain parameters including resource prices\n */\n getChainParameters = async () => {\n try {\n const parameters = await this.tronWeb.trx.getChainParameters()\n const paramMap: Record<string, number> = {}\n\n for (const param of parameters) {\n paramMap[param.key] = param.value\n }\n\n return {\n bandwidthFee: paramMap.getTransactionFee || 1000, // SUN per bandwidth unit\n createAccountFee: paramMap.getCreateAccountFee || 100000, // 0.1 TRX in SUN\n energyFee: paramMap.getEnergyFee || 420, // SUN per energy unit\n }\n } catch {\n // Return default values if unable to fetch\n return { bandwidthFee: 1000, createAccountFee: 100000, energyFee: 420 }\n }\n }\n\n /**\n * Check if an address exists on the blockchain\n */\n accountExists = async (address: string) => {\n try {\n const account = await this.tronWeb.trx.getAccount(address)\n return account && Object.keys(account).length > 0\n } catch {\n return false\n }\n }\n\n /**\n * Get account resources (bandwidth and energy)\n */\n getAccountResources = async (address: string) => {\n try {\n const resources = await this.tronWeb.trx.getAccountResources(address)\n\n return {\n bandwidth: {\n free: (resources?.freeNetLimit ?? 0) - (resources?.freeNetUsed ?? 0),\n total: resources.NetLimit || 0,\n used: resources.NetUsed || 0,\n },\n energy: { total: resources.EnergyLimit || 0, used: resources.EnergyUsed || 0 },\n }\n } catch {\n // Return default structure if unable to fetch\n return {\n bandwidth: { free: 600, total: 0, used: 0 }, // 600 free bandwidth daily\n energy: { total: 0, used: 0 },\n }\n }\n }\n\n /**\n * Retrieves the balance of a given address.\n * @param {Address} address - The address to retrieve the balance for.\n * @param {TokenAsset[]} assets - Assets to retrieve the balance for (optional).\n * @returns {Promise<Balance[]>} An array containing the balance of the address.\n */\n public async getBalance(address: Address): Promise<Balance[]> {\n const ZeroBalance = [\n {\n asset: AssetTRX,\n amount: baseAmount(0, TRX_DECIMAL),\n },\n ]\n\n // Try get balance from TronGrid\n try {\n const accountData = await this.tronGrid.getAccount(address)\n\n if (!accountData) return ZeroBalance\n const balances: Balance[] = []\n // Add TRX balance\n balances.push({\n asset: AssetTRX,\n amount: baseAmount(accountData.balance, TRX_DECIMAL),\n })\n\n // Add TRC20 balances\n for (const token of accountData.trc20) {\n const entries = Object.entries(token)\n if (entries.length !== 1) continue\n const [contractAddress, balance] = entries[0]\n\n if (!(contractAddress && balance)) continue\n\n const tokenMetaData = await this.fetchTokenMetadata({ contractAddress })\n\n if (!tokenMetaData) continue\n\n balances.push({\n asset: {\n chain: TRONChain,\n symbol: `${tokenMetaData.symbol}-${contractAddress}`,\n ticker: tokenMetaData.symbol,\n type: AssetType.TOKEN,\n },\n amount: baseAmount(balance || 0, tokenMetaData.decimals),\n })\n }\n\n return balances\n } catch (_error) {\n // Fallback: get TRX and USDT Balance from TronWeb\n const balances: Balance[] = []\n\n const trxBalanceInSun = await this.tronWeb.trx.getBalance(address)\n if (trxBalanceInSun && Number(trxBalanceInSun) > 0) {\n balances.push({\n asset: AssetTRX,\n amount: baseAmount(trxBalanceInSun, TRX_DECIMAL),\n })\n }\n\n const usdtBalance = await this.fetchTokenBalance({ address, contractAddress: TRON_USDT_CONTRACT })\n if (usdtBalance) {\n balances.push({\n asset: {\n chain: TRONChain,\n symbol: `USDT-${TRON_USDT_CONTRACT}`,\n ticker: 'USDT',\n type: AssetType.TOKEN,\n },\n amount: baseAmount(usdtBalance.toString(), 6),\n })\n }\n\n return balances\n }\n }\n\n /**\n * Get transaction fees.\n * @param {TxParams} params - Tx param\n * @returns {Fees} The average, fast, and fastest fees.\n */\n public async getFees(params?: TxParams): Promise<Fees> {\n if (!params) throw new Error('Params need to be passed')\n\n const { asset, recipient, walletIndex } = params\n const isNative = asset?.type === AssetType.NATIVE\n let feeAmount: BaseAmount\n\n // Get sender address\n const senderAddress = this.getAddress(walletIndex)\n if (!senderAddress) {\n // If no signer, return default fee\n feeAmount = isNative ? baseAmount(0.1 * 10 ** 6, TRX_DECIMAL) : baseAmount(15 * 10 ** 6, TRX_DECIMAL)\n } else {\n // Get chain parameters for current resource prices\n const chainParams = await this.getChainParameters()\n\n // Check if recipient account exists (new accounts require activation fee)\n const recipientExists = await this.accountExists(recipient)\n const activationFee = recipientExists ? 0 : chainParams.createAccountFee\n\n // Get account resources\n const resources = await this.getAccountResources(senderAddress)\n\n if (isNative) {\n // Calculate bandwidth needed for TRX transfer\n const bandwidthNeeded = TRX_TRANSFER_BANDWIDTH\n const availableBandwidth = resources.bandwidth.free + (resources.bandwidth.total - resources.bandwidth.used)\n\n let bandwidthFee = 0\n if (bandwidthNeeded > availableBandwidth) {\n // Need to burn TRX for bandwidth\n const bandwidthToBuy = bandwidthNeeded - availableBandwidth\n bandwidthFee = bandwidthToBuy * chainParams.bandwidthFee\n }\n\n // Total fee in SUN\n const totalFeeSun = activationFee + bandwidthFee\n\n feeAmount = baseAmount(totalFeeSun, TRX_DECIMAL)\n } else {\n // TRC20 Transfer - needs both bandwidth and energy\n const bandwidthNeeded = TRC20_TRANSFER_BANDWIDTH\n const energyNeeded = TRC20_TRANSFER_ENERGY\n\n const availableBandwidth = resources.bandwidth.free + (resources.bandwidth.total - resources.bandwidth.used)\n const availableEnergy = resources.energy.total - resources.energy.used\n\n let bandwidthFee = 0\n if (bandwidthNeeded > availableBandwidth) {\n const bandwidthToBuy = bandwidthNeeded - availableBandwidth\n bandwidthFee = bandwidthToBuy * chainParams.bandwidthFee\n }\n\n let energyFee = 0\n if (energyNeeded > availableEnergy) {\n const energyToBuy = energyNeeded - availableEnergy\n energyFee = energyToBuy * chainParams.energyFee\n }\n\n // Total fee in SUN\n const totalFeeSun = activationFee + bandwidthFee + energyFee\n feeAmount = baseAmount(totalFeeSun, TRX_DECIMAL)\n }\n }\n\n // Tron has Fixed Fee model, unlike ETH or BTC\n return {\n average: feeAmount,\n fast: feeAmount,\n fastest: feeAmount,\n type: FeeType.FlatFee,\n }\n }\n\n createTransaction = async (params: TxParams) => {\n const { asset, amount: baseValue, recipient, memo, walletIndex } = params\n if (!asset) throw Error('Asset not provided')\n\n const sender = this.getAddress(walletIndex)\n const amount = baseValue.amount().toString()\n\n if (asset.type === AssetType.NATIVE) {\n const transaction = await this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender)\n\n if (memo) {\n return this.tronWeb.transactionBuilder.addUpdateData(transaction, memo, 'utf8')\n }\n\n return transaction\n }\n\n const contractAddress = getTRC20AssetContractAddress(asset)\n if (!contractAddress) {\n throw new Error('TRC20 Asset Contract Address is not valid')\n }\n\n // Build TRC20 transfer transaction\n const functionSelector = 'transfer(address,uint256)'\n const parameter = [\n { type: 'address', value: recipient },\n { type: 'uint256', value: amount },\n ]\n\n const options = { callValue: 0, feeLimit: TRX_FEE_LIMIT }\n const res = await this.tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n options,\n parameter,\n sender,\n )\n\n // Some nodes don’t throw; they return result=false + message\n if (!(res?.result?.result && res?.transaction)) {\n throw new Error(res?.result?.message)\n }\n\n // Attach memo if requested\n const tx = memo\n ? await this.tronWeb.transactionBuilder.addUpdateData(res.transaction, memo, 'utf8')\n : res.transaction\n\n return tx\n }\n\n /**\n * Return signed tx\n * @param transaction TronTransaction\n * @param walletIndex wallet index\n * @returns Transaction signed by phrase\n */\n abstract signTransaction(transaction: TronTransaction, walletIndex?: number): Promise<TronSignedTransaction>\n\n /**\n * Transfer TRON Asset\n * @param {TxParams} params The transfer options.\n * @returns {TxHash} The transaction hash.\n */\n public async transfer(params: TxParams): Promise<string> {\n const { asset, amount: baseValue, recipient, memo, walletIndex } = params\n if (!asset) throw Error('Asset not provided')\n\n const amount = baseValue.amount().toString()\n const sender = this.getAddress(walletIndex)\n\n const isNative = asset.type === AssetType.NATIVE\n\n if (isNative) {\n const transaction = await this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender)\n\n if (memo) {\n const transactionWithMemo = await this.tronWeb.transactionBuilder.addUpdateData(transaction, memo, 'utf8')\n const signedTx = await this.signTransaction(transactionWithMemo, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n // TRC20 Token Transfer - always use createTransaction + sign pattern\n const transaction = await this.createTransaction(params)\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n\n if (!txid) {\n throw new Error('TRON Transfer falied')\n }\n\n return txid\n }\n\n /**\n * Check the current allowance for a spender on a token\n */\n public getApprovedAmount = async ({ contractAddress, spenderAddress, from }: TronGetApprovedParams) => {\n this.tronWeb.setAddress(from)\n\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n if (!contract.methods?.allowance) {\n throw new Error('invalid contract')\n }\n\n const [allowance] = await contract.methods.allowance(from, spenderAddress).call()\n\n return allowance ? (typeof allowance === 'bigint' ? allowance : BigInt(allowance)) : BigInt(0)\n }\n\n /**\n * Check TRC20 allowance.\n * @param {Address} contractAddress The contract address.\n * @param {Address} spenderAddress The spender address.\n * @param {BaseAmount} amount The amount to check if it's allowed to spend or not (optional).\n * @param {number} walletIndex (optional) HD wallet index\n * @param {IsApprovedParams} params - Parameters for checking allowance.\n * @returns {boolean} `true` if the allowance is approved, `false` otherwise.\n */\n async isApproved({ contractAddress, spenderAddress, amount, walletIndex }: IsApprovedParams): Promise<boolean> {\n const from = this.getAddress(walletIndex)\n\n const allowance = await this.getApprovedAmount({ contractAddress, from, spenderAddress })\n\n if (!amount) {\n // If no amount specified, check if there's any approval\n return allowance > BigInt(0)\n }\n\n return allowance >= BigInt(amount.amount().toString())\n }\n\n /**\n * Approves an allowance for spending tokens.\n *\n * @param {ApproveParams} params - Parameters for approving an allowance.\n * @param {Address} contractAddress The contract address.\n * @param {Address} spenderAddress The spender address.\n * @param {BaseAmount} amount The amount of token. By default, it will be unlimited token allowance. (optional)\n * @param {number} walletIndex (optional) HD wallet index\n * @returns {TransactionResponse} The result of the approval transaction.\n * @throws Error If gas estimation fails.\n */\n public async approve({ contractAddress, spenderAddress, amount, walletIndex = 0 }: ApproveParams): Promise<string> {\n const fromAddress = this.getAddress(walletIndex)\n const approvalAmount = amount !== undefined ? amount.amount().toString() : MAX_APPROVAL\n\n // Build approve transaction using triggerSmartContract\n const functionSelector = 'approve(address,uint256)'\n const parameter = [\n { type: 'address', value: spenderAddress },\n { type: 'uint256', value: approvalAmount },\n ]\n\n const feeLimit = TRX_FEE_LIMIT\n const options = { callValue: 0, feeLimit }\n\n const { transaction } = await this.tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n options,\n parameter,\n fromAddress,\n )\n\n if (!transaction) {\n throw new Error('Failed to build approve transaction')\n }\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n\n if (!txid) {\n throw new Error('TRC20 Approve Failed')\n }\n\n return txid\n }\n\n public async broadcastTransaction(signedTx: TronSignedTransaction): Promise<TxHash> {\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n public async getTransactions(params?: TxHistoryParams): Promise<TxsPage> {\n const address = params?.address || this.getAddress()\n const offset = params?.offset || 0\n const limit = params?.limit || 10\n\n return this.tronGrid.getTransactions({ address, limit, offset })\n }\n\n /**\n * Get the transaction details of a given transaction ID.\n *\n * @param {string} txId The transaction ID.\n * @returns {Tx} The transaction details.\n */\n public async getTransactionData(txId: string): Promise<Tx> {\n return this.tronGrid.getTransactionData(txId)\n }\n\n public async broadcastTx(_signedTx: string): Promise<TxHash> {\n throw Error('Error: not supported')\n }\n\n async prepareTx(_: TxParams & { sender: Address }): Promise<PreparedTx> {\n throw new Error('Error: raw tx string not supported')\n }\n\n async getFeesWithRates(): Promise<FeesWithRates> {\n throw Error('Error: not supported')\n }\n\n async getFeeRates(): Promise<FeeRate> {\n throw Error('Error: not supported')\n }\n}\n","import { HDKey } from '@scure/bip32'\nimport { mnemonicToSeedSync } from '@scure/bip39'\nimport { TronWeb } from 'tronweb'\n\nimport { TronTransaction, TronSignedTransaction, TRONClientParams } from './types'\nimport { Client, defaultTRONParams } from './client'\nimport { TRON_DEFAULT_RPC } from './const'\n\nexport class ClientKeystore extends Client {\n constructor(params: TRONClientParams = defaultTRONParams) {\n const clientParams = { ...defaultTRONParams, ...params }\n\n super(clientParams)\n }\n\n public getSigner(walletIndex = 0) {\n if (!this.phrase) throw new Error('Phrase must be provided')\n\n const seed = mnemonicToSeedSync(this.phrase)\n const hdKey = HDKey.fromMasterSeed(seed)\n const derived = hdKey.derive(this.getFullDerivationPath(walletIndex))\n\n if (!derived.privateKey) {\n throw new Error('No Tron Signer')\n }\n\n const privateKeyHex = Buffer.from(derived.privateKey).toString('hex')\n\n const isolatedTronWeb = new TronWeb({\n fullHost: TRON_DEFAULT_RPC,\n privateKey: privateKeyHex,\n })\n\n const address = isolatedTronWeb.address.fromPrivateKey(privateKeyHex)\n\n return {\n getAddress: () => (typeof address === 'string' ? address : ''),\n signTransaction: async (transaction: TronTransaction) => {\n // Use isolated instance - no shared state\n const signedTx = await isolatedTronWeb.trx.sign(transaction)\n return signedTx\n },\n }\n }\n /**\n * Get the current address synchronously.\n */\n public getAddress(walletIndex = 0): string {\n return this.getSigner(walletIndex).getAddress()\n }\n\n /**\n * Get the current address asynchronously.\n *\n * @param {number} index The index of the address. Default 0\n * @returns {Address} The TRON address related to the index provided.\n * @throws {\"Phrase must be provided\"} Thrown if the phrase has not been set before.\n */\n public async getAddressAsync(walletIndex = 0): Promise<string> {\n return this.getAddress(walletIndex)\n }\n\n public async signTransaction(transaction: TronTransaction, walletIndex = 0): Promise<TronSignedTransaction> {\n return this.getSigner(walletIndex).signTransaction(transaction)\n }\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../node_modules/tslib/tslib.es6.js","../src/const.ts","../src/utils/index.ts","../src/utils/trongrid/trongrid.ts","../src/client.ts","../src/clientKeystore.ts","../src/clientLedger.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import { ExplorerProvider, Network } from '@xchainjs/xchain-client'\nimport { Asset, AnyAsset, AssetType } from '@xchainjs/xchain-util'\n\nexport const TRX_DECIMAL = 6\n\nexport const TRON_DERIVATION_PATH = \"m/44'/195'/0'/0/\"\n\n/**\n * Chain identifier for Tron mainnet\n */\nexport const TRONChain = 'TRON' as const\n\nexport const AssetTRX: Asset = {\n chain: TRONChain,\n symbol: 'TRX',\n ticker: 'TRX',\n type: AssetType.NATIVE,\n}\n\nexport const AssetTRONUSDT: AnyAsset = {\n chain: TRONChain,\n symbol: 'USDT-TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t',\n ticker: 'USDT',\n type: AssetType.TOKEN,\n}\n// Explorer providers for Tron\nconst TRON_MAINNET_EXPLORER = new ExplorerProvider(\n 'https://tronscan.org/',\n 'https://tronscan.org/#/address/%%ADDRESS%%',\n 'https://tronscan.org/#/transaction/%%TX_ID%%',\n)\n\nconst TRON_TESTNET_EXPLORER = new ExplorerProvider(\n 'https://nile.tronscan.org/',\n 'https://nile.tronscan.org/accounts/%%ADDRESS%%',\n 'https://nile.tronscan.org/transactions/%%TX_ID%%',\n)\n\nexport const TRON_DEFAULT_RPC = 'https://tron-rpc.publicnode.com'\n\nexport const tronExplorerProviders = {\n [Network.Mainnet]: TRON_MAINNET_EXPLORER,\n [Network.Stagenet]: TRON_MAINNET_EXPLORER,\n [Network.Testnet]: TRON_TESTNET_EXPLORER,\n}\n\nexport const TRX_TRANSFER_BANDWIDTH = 268 // Bandwidth consumed by a TRX transfer\nexport const TRC20_TRANSFER_ENERGY = 13000 // Average energy consumed by TRC20 transfer\nexport const TRC20_TRANSFER_BANDWIDTH = 345 // Bandwidth consumed by TRC20 transfer\n\nexport const TRON_USDT_CONTRACT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'\n\nexport const MAX_APPROVAL = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'\nexport const TRX_FEE_LIMIT = 100_000_000\n","import { AnyAsset } from '@xchainjs/xchain-util'\nimport { TronWeb } from 'tronweb'\n\nexport const validateAddress = (address: string) => {\n return TronWeb.isAddress(address)\n}\n\nexport const getTRC20AssetContractAddress = (asset: AnyAsset): string | null => {\n try {\n return asset.symbol.slice(asset.ticker.length + 1)\n } catch (_err) {\n return null\n }\n}\n","import { Tx, TxType, TxFrom, TxTo, TxsPage } from '@xchainjs/xchain-client'\nimport { AssetType, baseAmount } from '@xchainjs/xchain-util'\nimport TW, { TronWeb } from 'tronweb'\nimport type { TronGridAccountResponse, TronGridTransaction } from './types'\nimport { AssetTRX, TRX_DECIMAL, TRON_DEFAULT_RPC } from '../../const'\n\nconst TRONGRID_API_BASE_URL = 'https://api.trongrid.io'\n\nexport class TronGrid {\n public tronWeb: TronWeb\n\n constructor() {\n this.tronWeb = new TronWeb({ fullHost: TRON_DEFAULT_RPC })\n }\n\n public async getAccount(address: string) {\n try {\n const response = await fetch(`${TRONGRID_API_BASE_URL}/v1/accounts/${address}`)\n\n if (!response.ok) {\n throw new Error(`TronGrid API error: ${response.status} ${response.statusText}`)\n }\n\n const data = (await response.json()) as TronGridAccountResponse\n\n if (!(data.success && data.data) || data.data.length === 0) {\n throw new Error('Invalid response from TronGrid API')\n }\n\n // Convert search address to hex format for comparison\n let searchAddressHex: string\n try {\n // If address is base58, convert to hex\n searchAddressHex = TronWeb.address.toHex(address).toLowerCase()\n } catch {\n // If conversion fails, assume it's already hex\n searchAddressHex = address.toLowerCase()\n }\n\n // Find the account that matches the requested address\n const account = data.data.find((acc) => {\n return acc.address.toLowerCase() === searchAddressHex\n })\n\n if (!account) {\n return\n }\n\n return account\n } catch (error) {\n throw error\n }\n }\n\n public async getTransactions(params: { address: string; limit: number; offset: number }): Promise<TxsPage> {\n const { address, offset, limit } = params\n const url = `https://api.trongrid.io/v1/accounts/${address}/transactions?limit=${limit}&start=${offset}`\n const res = await fetch(url)\n const { data }: { data: TronGridTransaction[] } = await res.json()\n\n const txs: Tx[] = []\n\n for (const tx of data) {\n const contract = tx.raw_data.contract[0]\n\n // Case 1: Native TRX transfer\n if (contract.type === 'TransferContract') {\n const amount = baseAmount(contract.parameter.value.amount, TRX_DECIMAL)\n const from: TxFrom[] = [{ from: TronWeb.address.fromHex(contract.parameter.value.owner_address), amount }]\n const to: TxTo[] = [{ to: TronWeb.address.fromHex(contract.parameter.value.to_address), amount }]\n\n txs.push({\n asset: AssetTRX,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.block_timestamp as number),\n hash: tx.txID,\n })\n continue\n }\n\n // Case 2: TRC20 transfer (TriggerSmartContract)\n if (contract.type === 'TriggerSmartContract') {\n const { contract_address, data: inputData, owner_address } = contract.parameter.value\n\n // `inputData` starts with 4-byte method selector (transfer(address,uint256))\n // and then encoded params\n try {\n const decoded = TW.utils.abi.decodeParams(\n ['_to', '_value'], // parameter names\n ['address', 'uint256'], // parameter types\n inputData, // full input data (with selector)\n true, // ignoreMethodHash - automatically skip selector\n )\n\n const toAddress = decoded._to\n const fromAddress = TronWeb.address.fromHex(owner_address)\n const rawValue = decoded._value.toString()\n\n // Get token contract instance\n const contractHex = TronWeb.address.fromHex(contract_address)\n const tokenContract = await this.tronWeb.contract().at(contractHex)\n\n // Call symbol() and decimals()\n const symbol: string = await tokenContract.symbol().call()\n const decimals: number = await tokenContract.decimals().call()\n\n const amount = baseAmount(rawValue, decimals)\n const from: TxFrom[] = [{ from: fromAddress, amount }]\n const to: TxTo[] = [{ to: toAddress, amount }]\n const asset = {\n chain: 'TRON',\n symbol: `${symbol}-${contract_address}`,\n ticker: symbol,\n type: AssetType.TOKEN,\n }\n\n txs.push({\n asset,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.block_timestamp as number),\n hash: tx.txID,\n })\n } catch (_e) {\n // Not an ERC20 transfer (could be another contract call)\n continue\n }\n }\n }\n\n return {\n total: txs.length,\n txs,\n }\n }\n\n public async getTransactionData(txId: string): Promise<Tx> {\n const url = `${TRONGRID_API_BASE_URL}/walletsolidity/gettransactionbyid`\n const res = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ value: txId }),\n })\n\n const tx: TronGridTransaction = await res.json()\n if (!tx || !tx.raw_data?.contract?.length) {\n throw new Error('Transaction not found')\n }\n\n const contract = tx.raw_data.contract[0]\n\n // Case 1: Native TRX transfer\n if (contract.type === 'TransferContract') {\n const amount = baseAmount(contract.parameter.value.amount, TRX_DECIMAL)\n const from: TxFrom[] = [{ from: TronWeb.address.fromHex(contract.parameter.value.owner_address), amount }]\n const to: TxTo[] = [{ to: TronWeb.address.fromHex(contract.parameter.value.to_address), amount }]\n\n return {\n asset: AssetTRX,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.raw_data.timestamp ?? Date.now()),\n hash: tx.txID,\n }\n }\n\n // Case 2: TRC20 transfer (must decode ABI input manually)\n if (contract.type === 'TriggerSmartContract') {\n const { owner_address, contract_address, data: inputData } = contract.parameter.value\n\n // ERC20 transfer selector = a9059cbb\n if (inputData.startsWith('a9059cbb')) {\n const decoded = TW.utils.abi.decodeParams(\n ['_to', '_value'], // parameter names\n ['address', 'uint256'], // parameter types\n inputData, // full input data (with selector)\n true, // ignoreMethodHash - automatically skip selector\n )\n\n const toAddress = TronWeb.address.fromHex(decoded._to)\n const fromAddress = TronWeb.address.fromHex(owner_address)\n const rawValue = decoded._value.toString()\n\n // should set owner_address\n this.tronWeb.setAddress(fromAddress)\n // Get token contract instance\n const contract = TronWeb.address.fromHex(contract_address)\n const tokenContract = await this.tronWeb.contract().at(contract)\n\n // Call symbol() and decimals()\n const symbol: string = await tokenContract.symbol().call()\n const decimals: number = await tokenContract.decimals().call()\n\n const amount = baseAmount(rawValue, decimals)\n const from: TxFrom[] = [{ from: fromAddress, amount }]\n const to: TxTo[] = [{ to: toAddress, amount }]\n const asset = {\n chain: 'TRON',\n symbol: `${symbol}-${contract_address}`,\n ticker: symbol,\n type: AssetType.TOKEN,\n }\n\n return {\n asset,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.raw_data.timestamp as number),\n hash: tx.txID,\n }\n }\n }\n\n throw new Error(`Unsupported or non-transfer transaction: ${contract.type}`)\n }\n}\n","import {\n AssetInfo,\n FeeType,\n Fees,\n Balance,\n Network,\n TxHash,\n BaseXChainClient,\n ExplorerProviders,\n TxParams,\n PreparedTx,\n TxsPage,\n TxHistoryParams,\n Tx,\n FeesWithRates,\n FeeRate,\n} from '@xchainjs/xchain-client'\nimport { baseAmount, Address, AssetType, BaseAmount } from '@xchainjs/xchain-util'\nimport { TronWeb } from 'tronweb'\n\nimport {\n AssetTRX,\n TRONChain,\n TRON_DERIVATION_PATH,\n TRX_DECIMAL,\n tronExplorerProviders,\n TRON_DEFAULT_RPC,\n TRON_USDT_CONTRACT,\n TRX_TRANSFER_BANDWIDTH,\n TRC20_TRANSFER_ENERGY,\n TRC20_TRANSFER_BANDWIDTH,\n TRX_FEE_LIMIT,\n MAX_APPROVAL,\n} from './const'\nimport { validateAddress, getTRC20AssetContractAddress } from './utils'\nimport trc20ABI from './utils/trc20.json'\nimport {\n TRONClientParams,\n TronTransaction,\n TronSignedTransaction,\n ApproveParams,\n IsApprovedParams,\n TronGetApprovedParams,\n} from './types'\nimport { TronGrid } from './utils/trongrid'\n\n// Default parameters for the Tron client\nexport const defaultTRONParams: TRONClientParams = {\n network: Network.Mainnet,\n phrase: '',\n explorerProviders: tronExplorerProviders,\n rootDerivationPaths: {\n [Network.Mainnet]: TRON_DERIVATION_PATH,\n [Network.Testnet]: TRON_DERIVATION_PATH,\n [Network.Stagenet]: TRON_DERIVATION_PATH,\n },\n}\n\nexport abstract class Client extends BaseXChainClient {\n protected explorerProviders: ExplorerProviders\n protected tronWeb: TronWeb\n protected tronGrid: TronGrid\n\n constructor(params: TRONClientParams = defaultTRONParams) {\n const clientParams = { ...defaultTRONParams, ...params }\n\n super(TRONChain, clientParams)\n this.explorerProviders = clientParams.explorerProviders\n this.tronWeb = new TronWeb({ fullHost: TRON_DEFAULT_RPC })\n this.tronGrid = new TronGrid()\n }\n\n /**\n * Get TRX asset info.\n * @returns {AssetInfo} TRX asset information.\n */\n getAssetInfo(): AssetInfo {\n const assetInfo: AssetInfo = {\n asset: AssetTRX,\n decimal: TRX_DECIMAL,\n }\n return assetInfo\n }\n\n /**\n * Get the explorer URL.\n *\n * @returns {string} The explorer URL.\n */\n public getExplorerUrl(): string {\n return this.explorerProviders[this.getNetwork()].getExplorerUrl()\n }\n\n /**\n * Get the explorer url for the given address.\n *\n * @param {Address} address\n * @returns {string} The explorer url for the given address.\n */\n public getExplorerAddressUrl(address: Address): string {\n return this.explorerProviders[this.getNetwork()].getExplorerAddressUrl(address)\n }\n\n /**\n * Get the explorer url for the given transaction id.\n *\n * @param {string} txID\n * @returns {string} The explorer url for the given transaction id.\n */\n public getExplorerTxUrl(txID: TxHash): string {\n return this.explorerProviders[this.getNetwork()].getExplorerTxUrl(txID)\n }\n\n /**\n * Validate the given Tron address.\n * @param {string} address Tron address to validate.\n * @returns {boolean} `true` if the address is valid, `false` otherwise.\n */\n validateAddress(address: string): boolean {\n return validateAddress(address)\n }\n\n /**\n * Get token balance and info directly from contract\n */\n public fetchTokenMetadata = async ({ contractAddress }: { contractAddress: string }) => {\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n const [symbolRaw, decimalsRaw] = await Promise.all([\n contract\n .symbol()\n .call()\n .catch(() => 'UNKNOWN'),\n contract\n .decimals()\n .call()\n .catch(() => '18'),\n ])\n\n return { decimals: Number(decimalsRaw ?? 18), symbol: symbolRaw ?? 'UNKNOWN' }\n }\n\n /**\n * Get token balance and info directly from contract\n */\n public fetchTokenBalance = async ({ contractAddress, address }: { contractAddress: string; address: string }) => {\n try {\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n if (!contract.methods?.balanceOf) {\n return BigInt(0)\n }\n\n const [balance] = await contract.methods.balanceOf(address).call()\n\n return balance ? (typeof balance === 'bigint' ? balance : BigInt(balance)) : BigInt(0)\n } catch (err) {\n console.warn(`balanceOf() failed for ${contractAddress}:`, err)\n return BigInt(0)\n }\n }\n\n /**\n * Get current chain parameters including resource prices\n */\n getChainParameters = async () => {\n try {\n const parameters = await this.tronWeb.trx.getChainParameters()\n const paramMap: Record<string, number> = {}\n\n for (const param of parameters) {\n paramMap[param.key] = param.value\n }\n\n return {\n bandwidthFee: paramMap.getTransactionFee || 1000, // SUN per bandwidth unit\n createAccountFee: paramMap.getCreateAccountFee || 100000, // 0.1 TRX in SUN\n energyFee: paramMap.getEnergyFee || 420, // SUN per energy unit\n }\n } catch {\n // Return default values if unable to fetch\n return { bandwidthFee: 1000, createAccountFee: 100000, energyFee: 420 }\n }\n }\n\n /**\n * Check if an address exists on the blockchain\n */\n accountExists = async (address: string) => {\n try {\n const account = await this.tronWeb.trx.getAccount(address)\n return account && Object.keys(account).length > 0\n } catch {\n return false\n }\n }\n\n /**\n * Get account resources (bandwidth and energy)\n */\n getAccountResources = async (address: string) => {\n try {\n const resources = await this.tronWeb.trx.getAccountResources(address)\n\n return {\n bandwidth: {\n free: (resources?.freeNetLimit ?? 0) - (resources?.freeNetUsed ?? 0),\n total: resources.NetLimit || 0,\n used: resources.NetUsed || 0,\n },\n energy: { total: resources.EnergyLimit || 0, used: resources.EnergyUsed || 0 },\n }\n } catch {\n // Return default structure if unable to fetch\n return {\n bandwidth: { free: 600, total: 0, used: 0 }, // 600 free bandwidth daily\n energy: { total: 0, used: 0 },\n }\n }\n }\n\n /**\n * Retrieves the balance of a given address.\n * @param {Address} address - The address to retrieve the balance for.\n * @param {TokenAsset[]} assets - Assets to retrieve the balance for (optional).\n * @returns {Promise<Balance[]>} An array containing the balance of the address.\n */\n public async getBalance(address: Address): Promise<Balance[]> {\n const ZeroBalance = [\n {\n asset: AssetTRX,\n amount: baseAmount(0, TRX_DECIMAL),\n },\n ]\n\n // Try get balance from TronGrid\n try {\n const accountData = await this.tronGrid.getAccount(address)\n\n if (!accountData) return ZeroBalance\n const balances: Balance[] = []\n // Add TRX balance\n balances.push({\n asset: AssetTRX,\n amount: baseAmount(accountData.balance, TRX_DECIMAL),\n })\n\n // Add TRC20 balances\n for (const token of accountData.trc20) {\n const entries = Object.entries(token)\n if (entries.length !== 1) continue\n const [contractAddress, balance] = entries[0]\n\n if (!(contractAddress && balance)) continue\n\n const tokenMetaData = await this.fetchTokenMetadata({ contractAddress })\n\n if (!tokenMetaData) continue\n\n balances.push({\n asset: {\n chain: TRONChain,\n symbol: `${tokenMetaData.symbol}-${contractAddress}`,\n ticker: tokenMetaData.symbol,\n type: AssetType.TOKEN,\n },\n amount: baseAmount(balance || 0, tokenMetaData.decimals),\n })\n }\n\n return balances\n } catch (_error) {\n // Fallback: get TRX and USDT Balance from TronWeb\n const balances: Balance[] = []\n\n const trxBalanceInSun = await this.tronWeb.trx.getBalance(address)\n if (trxBalanceInSun && Number(trxBalanceInSun) > 0) {\n balances.push({\n asset: AssetTRX,\n amount: baseAmount(trxBalanceInSun, TRX_DECIMAL),\n })\n }\n\n const usdtBalance = await this.fetchTokenBalance({ address, contractAddress: TRON_USDT_CONTRACT })\n if (usdtBalance) {\n balances.push({\n asset: {\n chain: TRONChain,\n symbol: `USDT-${TRON_USDT_CONTRACT}`,\n ticker: 'USDT',\n type: AssetType.TOKEN,\n },\n amount: baseAmount(usdtBalance.toString(), 6),\n })\n }\n\n return balances\n }\n }\n\n /**\n * Get transaction fees.\n * @param {TxParams} params - Tx param\n * @returns {Fees} The average, fast, and fastest fees.\n */\n public async getFees(params?: TxParams): Promise<Fees> {\n if (!params) throw new Error('Params need to be passed')\n\n const { asset, recipient, walletIndex } = params\n const isNative = asset?.type === AssetType.NATIVE\n let feeAmount: BaseAmount\n\n // Get sender address\n const senderAddress = await this.getAddressAsync(walletIndex)\n if (!senderAddress) {\n // If no signer, return default fee\n feeAmount = isNative ? baseAmount(0.1 * 10 ** 6, TRX_DECIMAL) : baseAmount(15 * 10 ** 6, TRX_DECIMAL)\n } else {\n // Get chain parameters for current resource prices\n const chainParams = await this.getChainParameters()\n\n // Check if recipient account exists (new accounts require activation fee)\n const recipientExists = await this.accountExists(recipient)\n const activationFee = recipientExists ? 0 : chainParams.createAccountFee\n\n // Get account resources\n const resources = await this.getAccountResources(senderAddress)\n\n if (isNative) {\n // Calculate bandwidth needed for TRX transfer\n const bandwidthNeeded = TRX_TRANSFER_BANDWIDTH\n const availableBandwidth = resources.bandwidth.free + (resources.bandwidth.total - resources.bandwidth.used)\n\n let bandwidthFee = 0\n if (bandwidthNeeded > availableBandwidth) {\n // Need to burn TRX for bandwidth\n const bandwidthToBuy = bandwidthNeeded - availableBandwidth\n bandwidthFee = bandwidthToBuy * chainParams.bandwidthFee\n }\n\n // Total fee in SUN\n const totalFeeSun = activationFee + bandwidthFee\n\n feeAmount = baseAmount(totalFeeSun, TRX_DECIMAL)\n } else {\n // TRC20 Transfer - needs both bandwidth and energy\n const bandwidthNeeded = TRC20_TRANSFER_BANDWIDTH\n const energyNeeded = TRC20_TRANSFER_ENERGY\n\n const availableBandwidth = resources.bandwidth.free + (resources.bandwidth.total - resources.bandwidth.used)\n const availableEnergy = resources.energy.total - resources.energy.used\n\n let bandwidthFee = 0\n if (bandwidthNeeded > availableBandwidth) {\n const bandwidthToBuy = bandwidthNeeded - availableBandwidth\n bandwidthFee = bandwidthToBuy * chainParams.bandwidthFee\n }\n\n let energyFee = 0\n if (energyNeeded > availableEnergy) {\n const energyToBuy = energyNeeded - availableEnergy\n energyFee = energyToBuy * chainParams.energyFee\n }\n\n // Total fee in SUN\n const totalFeeSun = activationFee + bandwidthFee + energyFee\n feeAmount = baseAmount(totalFeeSun, TRX_DECIMAL)\n }\n }\n\n // Tron has Fixed Fee model, unlike ETH or BTC\n return {\n average: feeAmount,\n fast: feeAmount,\n fastest: feeAmount,\n type: FeeType.FlatFee,\n }\n }\n\n createTransaction = async (params: TxParams) => {\n const { asset, amount: baseValue, recipient, memo, walletIndex } = params\n if (!asset) throw Error('Asset not provided')\n\n const sender = await this.getAddressAsync(walletIndex)\n const amount = baseValue.amount().toString()\n\n if (asset.type === AssetType.NATIVE) {\n const transaction = await this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender)\n\n if (memo) {\n return this.tronWeb.transactionBuilder.addUpdateData(transaction, memo, 'utf8')\n }\n\n return transaction\n }\n\n const contractAddress = getTRC20AssetContractAddress(asset)\n if (!contractAddress) {\n throw new Error('TRC20 Asset Contract Address is not valid')\n }\n\n // Build TRC20 transfer transaction\n const functionSelector = 'transfer(address,uint256)'\n const parameter = [\n { type: 'address', value: recipient },\n { type: 'uint256', value: amount },\n ]\n\n const options = { callValue: 0, feeLimit: TRX_FEE_LIMIT }\n const res = await this.tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n options,\n parameter,\n sender,\n )\n\n // Some nodes don’t throw; they return result=false + message\n if (!(res?.result?.result && res?.transaction)) {\n throw new Error(res?.result?.message)\n }\n\n // Attach memo if requested\n const tx = memo\n ? await this.tronWeb.transactionBuilder.addUpdateData(res.transaction, memo, 'utf8')\n : res.transaction\n\n return tx\n }\n\n /**\n * Return signed tx\n * @param transaction TronTransaction\n * @param walletIndex wallet index\n * @returns Transaction signed by phrase\n */\n abstract signTransaction(transaction: TronTransaction, walletIndex?: number): Promise<TronSignedTransaction>\n\n /**\n * Transfer TRON Asset\n * @param {TxParams} params The transfer options.\n * @returns {TxHash} The transaction hash.\n */\n public async transfer(params: TxParams): Promise<string> {\n const { asset, amount: baseValue, recipient, memo, walletIndex } = params\n if (!asset) throw Error('Asset not provided')\n\n const amount = baseValue.amount().toString()\n const sender = await this.getAddressAsync(walletIndex)\n\n const isNative = asset.type === AssetType.NATIVE\n\n if (isNative) {\n const transaction = await this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender)\n\n if (memo) {\n const transactionWithMemo = await this.tronWeb.transactionBuilder.addUpdateData(transaction, memo, 'utf8')\n const signedTx = await this.signTransaction(transactionWithMemo, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n // TRC20 Token Transfer - always use createTransaction + sign pattern\n const transaction = await this.createTransaction(params)\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n\n if (!txid) {\n throw new Error('TRON Transfer falied')\n }\n\n return txid\n }\n\n /**\n * Check the current allowance for a spender on a token\n */\n public getApprovedAmount = async ({ contractAddress, spenderAddress, from }: TronGetApprovedParams) => {\n this.tronWeb.setAddress(from)\n\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n if (!contract.methods?.allowance) {\n throw new Error('invalid contract')\n }\n\n const [allowance] = await contract.methods.allowance(from, spenderAddress).call()\n\n return allowance ? (typeof allowance === 'bigint' ? allowance : BigInt(allowance)) : BigInt(0)\n }\n\n /**\n * Check TRC20 allowance.\n * @param {Address} contractAddress The contract address.\n * @param {Address} spenderAddress The spender address.\n * @param {BaseAmount} amount The amount to check if it's allowed to spend or not (optional).\n * @param {number} walletIndex (optional) HD wallet index\n * @param {IsApprovedParams} params - Parameters for checking allowance.\n * @returns {boolean} `true` if the allowance is approved, `false` otherwise.\n */\n async isApproved({ contractAddress, spenderAddress, amount, walletIndex }: IsApprovedParams): Promise<boolean> {\n const from = await this.getAddressAsync(walletIndex)\n\n const allowance = await this.getApprovedAmount({ contractAddress, from, spenderAddress })\n\n if (!amount) {\n // If no amount specified, check if there's any approval\n return allowance > BigInt(0)\n }\n\n return allowance >= BigInt(amount.amount().toString())\n }\n\n /**\n * Approves an allowance for spending tokens.\n *\n * @param {ApproveParams} params - Parameters for approving an allowance.\n * @param {Address} contractAddress The contract address.\n * @param {Address} spenderAddress The spender address.\n * @param {BaseAmount} amount The amount of token. By default, it will be unlimited token allowance. (optional)\n * @param {number} walletIndex (optional) HD wallet index\n * @returns {TransactionResponse} The result of the approval transaction.\n * @throws Error If gas estimation fails.\n */\n public async approve({ contractAddress, spenderAddress, amount, walletIndex = 0 }: ApproveParams): Promise<string> {\n const fromAddress = await this.getAddressAsync(walletIndex)\n const approvalAmount = amount !== undefined ? amount.amount().toString() : MAX_APPROVAL\n\n // Build approve transaction using triggerSmartContract\n const functionSelector = 'approve(address,uint256)'\n const parameter = [\n { type: 'address', value: spenderAddress },\n { type: 'uint256', value: approvalAmount },\n ]\n\n const feeLimit = TRX_FEE_LIMIT\n const options = { callValue: 0, feeLimit }\n\n const { transaction } = await this.tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n options,\n parameter,\n fromAddress,\n )\n\n if (!transaction) {\n throw new Error('Failed to build approve transaction')\n }\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n\n if (!txid) {\n throw new Error('TRC20 Approve Failed')\n }\n\n return txid\n }\n\n public async broadcastTransaction(signedTx: TronSignedTransaction): Promise<TxHash> {\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n public async getTransactions(params?: TxHistoryParams): Promise<TxsPage> {\n const address = params?.address || (await this.getAddressAsync())\n const offset = params?.offset || 0\n const limit = params?.limit || 10\n\n return this.tronGrid.getTransactions({ address, limit, offset })\n }\n\n /**\n * Get the transaction details of a given transaction ID.\n *\n * @param {string} txId The transaction ID.\n * @returns {Tx} The transaction details.\n */\n public async getTransactionData(txId: string): Promise<Tx> {\n return this.tronGrid.getTransactionData(txId)\n }\n\n public async broadcastTx(_signedTx: string): Promise<TxHash> {\n throw Error('Error: not supported')\n }\n\n async prepareTx(_: TxParams & { sender: Address }): Promise<PreparedTx> {\n throw new Error('Error: raw tx string not supported')\n }\n\n async getFeesWithRates(): Promise<FeesWithRates> {\n throw Error('Error: not supported')\n }\n\n async getFeeRates(): Promise<FeeRate> {\n throw Error('Error: not supported')\n }\n}\n","import { HDKey } from '@scure/bip32'\nimport { mnemonicToSeedSync } from '@scure/bip39'\nimport { TronWeb } from 'tronweb'\n\nimport { TronTransaction, TronSignedTransaction, TRONClientParams } from './types'\nimport { Client, defaultTRONParams } from './client'\nimport { TRON_DEFAULT_RPC } from './const'\n\nexport class ClientKeystore extends Client {\n constructor(params: TRONClientParams = defaultTRONParams) {\n const clientParams = { ...defaultTRONParams, ...params }\n\n super(clientParams)\n }\n\n public getSigner(walletIndex = 0) {\n if (!this.phrase) throw new Error('Phrase must be provided')\n\n const seed = mnemonicToSeedSync(this.phrase)\n const hdKey = HDKey.fromMasterSeed(seed)\n const derived = hdKey.derive(this.getFullDerivationPath(walletIndex))\n\n if (!derived.privateKey) {\n throw new Error('No Tron Signer')\n }\n\n const privateKeyHex = Buffer.from(derived.privateKey).toString('hex')\n\n const isolatedTronWeb = new TronWeb({\n fullHost: TRON_DEFAULT_RPC,\n privateKey: privateKeyHex,\n })\n\n const address = isolatedTronWeb.address.fromPrivateKey(privateKeyHex)\n\n return {\n getAddress: () => (typeof address === 'string' ? address : ''),\n signTransaction: async (transaction: TronTransaction) => {\n // Use isolated instance - no shared state\n const signedTx = await isolatedTronWeb.trx.sign(transaction)\n return signedTx\n },\n }\n }\n /**\n * Get the current address synchronously.\n */\n public getAddress(walletIndex = 0): string {\n return this.getSigner(walletIndex).getAddress()\n }\n\n /**\n * Get the current address asynchronously.\n *\n * @param {number} index The index of the address. Default 0\n * @returns {Address} The TRON address related to the index provided.\n * @throws {\"Phrase must be provided\"} Thrown if the phrase has not been set before.\n */\n public async getAddressAsync(walletIndex = 0): Promise<string> {\n return this.getAddress(walletIndex)\n }\n\n public async signTransaction(transaction: TronTransaction, walletIndex = 0): Promise<TronSignedTransaction> {\n return this.getSigner(walletIndex).signTransaction(transaction)\n }\n}\n","import TronLedgerApp from '@ledgerhq/hw-app-trx'\nimport { Address } from '@xchainjs/xchain-util'\n\nimport { Client, defaultTRONParams } from './client'\nimport { TronTransaction, TronSignedTransaction, TRONClientLedgerParams } from './types'\n\n/**\n * Custom Tron Ledger client extending the base Tron client\n */\nclass ClientLedger extends Client {\n // Reference to the Ledger transport object\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private transport: any\n private ledgerApp: TronLedgerApp | undefined\n\n constructor(params: TRONClientLedgerParams) {\n const clientParams = { ...defaultTRONParams, ...params }\n\n super(clientParams)\n\n this.transport = params.transport\n this.ledgerApp = new TronLedgerApp(this.transport)\n }\n\n // Get the current address synchronously - not supported for Ledger Client\n getAddress(): string {\n throw Error('Sync method not supported for Ledger')\n }\n\n // Get the current address asynchronously\n async getAddressAsync(index = 0, verify = false): Promise<Address> {\n if (!this.ledgerApp) throw Error('ledger not connected')\n\n const derivationPath = this.getFullDerivationPath(index)\n const result = await this.ledgerApp.getAddress(derivationPath, verify)\n return result.address\n }\n\n // Sign transaction using Ledger\n async signTransaction(transaction: TronTransaction, walletIndex = 0): Promise<TronSignedTransaction> {\n if (!this.ledgerApp) throw Error('ledger not connected')\n\n const derivationPath = this.getFullDerivationPath(walletIndex)\n\n const rawTxHex = transaction.raw_data_hex\n\n const signature = await this.ledgerApp.signTransaction(\n derivationPath,\n rawTxHex,\n [], // No token signatures for basic TRX/TRC20 sends, just pass [].\n )\n\n if (!signature) {\n throw new Error('failed signing tx by ledger')\n }\n\n return {\n ...transaction,\n signature: [signature],\n }\n }\n}\n\nexport { ClientLedger }\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
package/lib/index.js
CHANGED
|
@@ -5,10 +5,12 @@ var bip39 = require('@scure/bip39');
|
|
|
5
5
|
var TW = require('tronweb');
|
|
6
6
|
var xchainClient = require('@xchainjs/xchain-client');
|
|
7
7
|
var xchainUtil = require('@xchainjs/xchain-util');
|
|
8
|
+
var TronLedgerApp = require('@ledgerhq/hw-app-trx');
|
|
8
9
|
|
|
9
10
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
11
|
|
|
11
12
|
var TW__default = /*#__PURE__*/_interopDefault(TW);
|
|
13
|
+
var TronLedgerApp__default = /*#__PURE__*/_interopDefault(TronLedgerApp);
|
|
12
14
|
|
|
13
15
|
/******************************************************************************
|
|
14
16
|
Copyright (c) Microsoft Corporation.
|
|
@@ -598,7 +600,7 @@ class Client extends xchainClient.BaseXChainClient {
|
|
|
598
600
|
const { asset, amount: baseValue, recipient, memo, walletIndex } = params;
|
|
599
601
|
if (!asset)
|
|
600
602
|
throw Error('Asset not provided');
|
|
601
|
-
const sender = this.
|
|
603
|
+
const sender = yield this.getAddressAsync(walletIndex);
|
|
602
604
|
const amount = baseValue.amount().toString();
|
|
603
605
|
if (asset.type === xchainUtil.AssetType.NATIVE) {
|
|
604
606
|
const transaction = yield this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender);
|
|
@@ -778,7 +780,7 @@ class Client extends xchainClient.BaseXChainClient {
|
|
|
778
780
|
const isNative = (asset === null || asset === void 0 ? void 0 : asset.type) === xchainUtil.AssetType.NATIVE;
|
|
779
781
|
let feeAmount;
|
|
780
782
|
// Get sender address
|
|
781
|
-
const senderAddress = this.
|
|
783
|
+
const senderAddress = yield this.getAddressAsync(walletIndex);
|
|
782
784
|
if (!senderAddress) {
|
|
783
785
|
// If no signer, return default fee
|
|
784
786
|
feeAmount = isNative ? xchainUtil.baseAmount(0.1 * Math.pow(10, 6), TRX_DECIMAL) : xchainUtil.baseAmount(15 * Math.pow(10, 6), TRX_DECIMAL);
|
|
@@ -846,7 +848,7 @@ class Client extends xchainClient.BaseXChainClient {
|
|
|
846
848
|
if (!asset)
|
|
847
849
|
throw Error('Asset not provided');
|
|
848
850
|
const amount = baseValue.amount().toString();
|
|
849
|
-
const sender = this.
|
|
851
|
+
const sender = yield this.getAddressAsync(walletIndex);
|
|
850
852
|
const isNative = asset.type === xchainUtil.AssetType.NATIVE;
|
|
851
853
|
if (isNative) {
|
|
852
854
|
const transaction = yield this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender);
|
|
@@ -881,7 +883,7 @@ class Client extends xchainClient.BaseXChainClient {
|
|
|
881
883
|
*/
|
|
882
884
|
isApproved(_a) {
|
|
883
885
|
return __awaiter(this, arguments, void 0, function* ({ contractAddress, spenderAddress, amount, walletIndex }) {
|
|
884
|
-
const from = this.
|
|
886
|
+
const from = yield this.getAddressAsync(walletIndex);
|
|
885
887
|
const allowance = yield this.getApprovedAmount({ contractAddress, from, spenderAddress });
|
|
886
888
|
if (!amount) {
|
|
887
889
|
// If no amount specified, check if there's any approval
|
|
@@ -903,7 +905,7 @@ class Client extends xchainClient.BaseXChainClient {
|
|
|
903
905
|
*/
|
|
904
906
|
approve(_a) {
|
|
905
907
|
return __awaiter(this, arguments, void 0, function* ({ contractAddress, spenderAddress, amount, walletIndex = 0 }) {
|
|
906
|
-
const fromAddress = this.
|
|
908
|
+
const fromAddress = yield this.getAddressAsync(walletIndex);
|
|
907
909
|
const approvalAmount = amount !== undefined ? amount.amount().toString() : MAX_APPROVAL;
|
|
908
910
|
// Build approve transaction using triggerSmartContract
|
|
909
911
|
const functionSelector = 'approve(address,uint256)';
|
|
@@ -933,7 +935,7 @@ class Client extends xchainClient.BaseXChainClient {
|
|
|
933
935
|
}
|
|
934
936
|
getTransactions(params) {
|
|
935
937
|
return __awaiter(this, void 0, void 0, function* () {
|
|
936
|
-
const address = (params === null || params === void 0 ? void 0 : params.address) || this.
|
|
938
|
+
const address = (params === null || params === void 0 ? void 0 : params.address) || (yield this.getAddressAsync());
|
|
937
939
|
const offset = (params === null || params === void 0 ? void 0 : params.offset) || 0;
|
|
938
940
|
const limit = (params === null || params === void 0 ? void 0 : params.limit) || 10;
|
|
939
941
|
return this.tronGrid.getTransactions({ address, limit, offset });
|
|
@@ -1026,9 +1028,50 @@ class ClientKeystore extends Client {
|
|
|
1026
1028
|
}
|
|
1027
1029
|
}
|
|
1028
1030
|
|
|
1031
|
+
/**
|
|
1032
|
+
* Custom Tron Ledger client extending the base Tron client
|
|
1033
|
+
*/
|
|
1034
|
+
class ClientLedger extends Client {
|
|
1035
|
+
constructor(params) {
|
|
1036
|
+
const clientParams = Object.assign(Object.assign({}, defaultTRONParams), params);
|
|
1037
|
+
super(clientParams);
|
|
1038
|
+
this.transport = params.transport;
|
|
1039
|
+
this.ledgerApp = new TronLedgerApp__default.default(this.transport);
|
|
1040
|
+
}
|
|
1041
|
+
// Get the current address synchronously - not supported for Ledger Client
|
|
1042
|
+
getAddress() {
|
|
1043
|
+
throw Error('Sync method not supported for Ledger');
|
|
1044
|
+
}
|
|
1045
|
+
// Get the current address asynchronously
|
|
1046
|
+
getAddressAsync() {
|
|
1047
|
+
return __awaiter(this, arguments, void 0, function* (index = 0, verify = false) {
|
|
1048
|
+
if (!this.ledgerApp)
|
|
1049
|
+
throw Error('ledger not connected');
|
|
1050
|
+
const derivationPath = this.getFullDerivationPath(index);
|
|
1051
|
+
const result = yield this.ledgerApp.getAddress(derivationPath, verify);
|
|
1052
|
+
return result.address;
|
|
1053
|
+
});
|
|
1054
|
+
}
|
|
1055
|
+
// Sign transaction using Ledger
|
|
1056
|
+
signTransaction(transaction_1) {
|
|
1057
|
+
return __awaiter(this, arguments, void 0, function* (transaction, walletIndex = 0) {
|
|
1058
|
+
if (!this.ledgerApp)
|
|
1059
|
+
throw Error('ledger not connected');
|
|
1060
|
+
const derivationPath = this.getFullDerivationPath(walletIndex);
|
|
1061
|
+
const rawTxHex = transaction.raw_data_hex;
|
|
1062
|
+
const signature = yield this.ledgerApp.signTransaction(derivationPath, rawTxHex, []);
|
|
1063
|
+
if (!signature) {
|
|
1064
|
+
throw new Error('failed signing tx by ledger');
|
|
1065
|
+
}
|
|
1066
|
+
return Object.assign(Object.assign({}, transaction), { signature: [signature] });
|
|
1067
|
+
});
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1029
1071
|
exports.AssetTRONUSDT = AssetTRONUSDT;
|
|
1030
1072
|
exports.AssetTRX = AssetTRX;
|
|
1031
1073
|
exports.Client = ClientKeystore;
|
|
1074
|
+
exports.ClientLedger = ClientLedger;
|
|
1032
1075
|
exports.MAX_APPROVAL = MAX_APPROVAL;
|
|
1033
1076
|
exports.TRC20_TRANSFER_BANDWIDTH = TRC20_TRANSFER_BANDWIDTH;
|
|
1034
1077
|
exports.TRC20_TRANSFER_ENERGY = TRC20_TRANSFER_ENERGY;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/tslib/tslib.es6.js","../src/const.ts","../src/utils/index.ts","../src/utils/trongrid/trongrid.ts","../src/client.ts","../src/clientKeystore.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import { ExplorerProvider, Network } from '@xchainjs/xchain-client'\nimport { Asset, AnyAsset, AssetType } from '@xchainjs/xchain-util'\n\nexport const TRX_DECIMAL = 6\n\nexport const TRON_DERIVATION_PATH = \"m/44'/195'/0'/0/\"\n\n/**\n * Chain identifier for Tron mainnet\n */\nexport const TRONChain = 'TRON' as const\n\nexport const AssetTRX: Asset = {\n chain: TRONChain,\n symbol: 'TRX',\n ticker: 'TRX',\n type: AssetType.NATIVE,\n}\n\nexport const AssetTRONUSDT: AnyAsset = {\n chain: TRONChain,\n symbol: 'USDT-TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t',\n ticker: 'USDT',\n type: AssetType.TOKEN,\n}\n// Explorer providers for Tron\nconst TRON_MAINNET_EXPLORER = new ExplorerProvider(\n 'https://tronscan.org/',\n 'https://tronscan.org/#/address/%%ADDRESS%%',\n 'https://tronscan.org/#/transaction/%%TX_ID%%',\n)\n\nconst TRON_TESTNET_EXPLORER = new ExplorerProvider(\n 'https://nile.tronscan.org/',\n 'https://nile.tronscan.org/accounts/%%ADDRESS%%',\n 'https://nile.tronscan.org/transactions/%%TX_ID%%',\n)\n\nexport const TRON_DEFAULT_RPC = 'https://tron-rpc.publicnode.com'\n\nexport const tronExplorerProviders = {\n [Network.Mainnet]: TRON_MAINNET_EXPLORER,\n [Network.Stagenet]: TRON_MAINNET_EXPLORER,\n [Network.Testnet]: TRON_TESTNET_EXPLORER,\n}\n\nexport const TRX_TRANSFER_BANDWIDTH = 268 // Bandwidth consumed by a TRX transfer\nexport const TRC20_TRANSFER_ENERGY = 13000 // Average energy consumed by TRC20 transfer\nexport const TRC20_TRANSFER_BANDWIDTH = 345 // Bandwidth consumed by TRC20 transfer\n\nexport const TRON_USDT_CONTRACT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'\n\nexport const MAX_APPROVAL = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'\nexport const TRX_FEE_LIMIT = 100_000_000\n","import { AnyAsset } from '@xchainjs/xchain-util'\nimport { TronWeb } from 'tronweb'\n\nexport const validateAddress = (address: string) => {\n return TronWeb.isAddress(address)\n}\n\nexport const getTRC20AssetContractAddress = (asset: AnyAsset): string | null => {\n try {\n return asset.symbol.slice(asset.ticker.length + 1)\n } catch (_err) {\n return null\n }\n}\n","import { Tx, TxType, TxFrom, TxTo, TxsPage } from '@xchainjs/xchain-client'\nimport { AssetType, baseAmount } from '@xchainjs/xchain-util'\nimport TW, { TronWeb } from 'tronweb'\nimport type { TronGridAccountResponse, TronGridTransaction } from './types'\nimport { AssetTRX, TRX_DECIMAL, TRON_DEFAULT_RPC } from '../../const'\n\nconst TRONGRID_API_BASE_URL = 'https://api.trongrid.io'\n\nexport class TronGrid {\n public tronWeb: TronWeb\n\n constructor() {\n this.tronWeb = new TronWeb({ fullHost: TRON_DEFAULT_RPC })\n }\n\n public async getAccount(address: string) {\n try {\n const response = await fetch(`${TRONGRID_API_BASE_URL}/v1/accounts/${address}`)\n\n if (!response.ok) {\n throw new Error(`TronGrid API error: ${response.status} ${response.statusText}`)\n }\n\n const data = (await response.json()) as TronGridAccountResponse\n\n if (!(data.success && data.data) || data.data.length === 0) {\n throw new Error('Invalid response from TronGrid API')\n }\n\n // Convert search address to hex format for comparison\n let searchAddressHex: string\n try {\n // If address is base58, convert to hex\n searchAddressHex = TronWeb.address.toHex(address).toLowerCase()\n } catch {\n // If conversion fails, assume it's already hex\n searchAddressHex = address.toLowerCase()\n }\n\n // Find the account that matches the requested address\n const account = data.data.find((acc) => {\n return acc.address.toLowerCase() === searchAddressHex\n })\n\n if (!account) {\n return\n }\n\n return account\n } catch (error) {\n throw error\n }\n }\n\n public async getTransactions(params: { address: string; limit: number; offset: number }): Promise<TxsPage> {\n const { address, offset, limit } = params\n const url = `https://api.trongrid.io/v1/accounts/${address}/transactions?limit=${limit}&start=${offset}`\n const res = await fetch(url)\n const { data }: { data: TronGridTransaction[] } = await res.json()\n\n const txs: Tx[] = []\n\n for (const tx of data) {\n const contract = tx.raw_data.contract[0]\n\n // Case 1: Native TRX transfer\n if (contract.type === 'TransferContract') {\n const amount = baseAmount(contract.parameter.value.amount, TRX_DECIMAL)\n const from: TxFrom[] = [{ from: TronWeb.address.fromHex(contract.parameter.value.owner_address), amount }]\n const to: TxTo[] = [{ to: TronWeb.address.fromHex(contract.parameter.value.to_address), amount }]\n\n txs.push({\n asset: AssetTRX,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.block_timestamp as number),\n hash: tx.txID,\n })\n continue\n }\n\n // Case 2: TRC20 transfer (TriggerSmartContract)\n if (contract.type === 'TriggerSmartContract') {\n const { contract_address, data: inputData, owner_address } = contract.parameter.value\n\n // `inputData` starts with 4-byte method selector (transfer(address,uint256))\n // and then encoded params\n try {\n const decoded = TW.utils.abi.decodeParams(\n ['_to', '_value'], // parameter names\n ['address', 'uint256'], // parameter types\n inputData, // full input data (with selector)\n true, // ignoreMethodHash - automatically skip selector\n )\n\n const toAddress = decoded._to\n const fromAddress = TronWeb.address.fromHex(owner_address)\n const rawValue = decoded._value.toString()\n\n // Get token contract instance\n const contractHex = TronWeb.address.fromHex(contract_address)\n const tokenContract = await this.tronWeb.contract().at(contractHex)\n\n // Call symbol() and decimals()\n const symbol: string = await tokenContract.symbol().call()\n const decimals: number = await tokenContract.decimals().call()\n\n const amount = baseAmount(rawValue, decimals)\n const from: TxFrom[] = [{ from: fromAddress, amount }]\n const to: TxTo[] = [{ to: toAddress, amount }]\n const asset = {\n chain: 'TRON',\n symbol: `${symbol}-${contract_address}`,\n ticker: symbol,\n type: AssetType.TOKEN,\n }\n\n txs.push({\n asset,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.block_timestamp as number),\n hash: tx.txID,\n })\n } catch (_e) {\n // Not an ERC20 transfer (could be another contract call)\n continue\n }\n }\n }\n\n return {\n total: txs.length,\n txs,\n }\n }\n\n public async getTransactionData(txId: string): Promise<Tx> {\n const url = `${TRONGRID_API_BASE_URL}/walletsolidity/gettransactionbyid`\n const res = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ value: txId }),\n })\n\n const tx: TronGridTransaction = await res.json()\n if (!tx || !tx.raw_data?.contract?.length) {\n throw new Error('Transaction not found')\n }\n\n const contract = tx.raw_data.contract[0]\n\n // Case 1: Native TRX transfer\n if (contract.type === 'TransferContract') {\n const amount = baseAmount(contract.parameter.value.amount, TRX_DECIMAL)\n const from: TxFrom[] = [{ from: TronWeb.address.fromHex(contract.parameter.value.owner_address), amount }]\n const to: TxTo[] = [{ to: TronWeb.address.fromHex(contract.parameter.value.to_address), amount }]\n\n return {\n asset: AssetTRX,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.raw_data.timestamp ?? Date.now()),\n hash: tx.txID,\n }\n }\n\n // Case 2: TRC20 transfer (must decode ABI input manually)\n if (contract.type === 'TriggerSmartContract') {\n const { owner_address, contract_address, data: inputData } = contract.parameter.value\n\n // ERC20 transfer selector = a9059cbb\n if (inputData.startsWith('a9059cbb')) {\n const decoded = TW.utils.abi.decodeParams(\n ['_to', '_value'], // parameter names\n ['address', 'uint256'], // parameter types\n inputData, // full input data (with selector)\n true, // ignoreMethodHash - automatically skip selector\n )\n\n const toAddress = TronWeb.address.fromHex(decoded._to)\n const fromAddress = TronWeb.address.fromHex(owner_address)\n const rawValue = decoded._value.toString()\n\n // should set owner_address\n this.tronWeb.setAddress(fromAddress)\n // Get token contract instance\n const contract = TronWeb.address.fromHex(contract_address)\n const tokenContract = await this.tronWeb.contract().at(contract)\n\n // Call symbol() and decimals()\n const symbol: string = await tokenContract.symbol().call()\n const decimals: number = await tokenContract.decimals().call()\n\n const amount = baseAmount(rawValue, decimals)\n const from: TxFrom[] = [{ from: fromAddress, amount }]\n const to: TxTo[] = [{ to: toAddress, amount }]\n const asset = {\n chain: 'TRON',\n symbol: `${symbol}-${contract_address}`,\n ticker: symbol,\n type: AssetType.TOKEN,\n }\n\n return {\n asset,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.raw_data.timestamp as number),\n hash: tx.txID,\n }\n }\n }\n\n throw new Error(`Unsupported or non-transfer transaction: ${contract.type}`)\n }\n}\n","import {\n AssetInfo,\n FeeType,\n Fees,\n Balance,\n Network,\n TxHash,\n BaseXChainClient,\n ExplorerProviders,\n TxParams,\n PreparedTx,\n TxsPage,\n TxHistoryParams,\n Tx,\n FeesWithRates,\n FeeRate,\n} from '@xchainjs/xchain-client'\nimport { baseAmount, Address, AssetType, BaseAmount } from '@xchainjs/xchain-util'\nimport { TronWeb } from 'tronweb'\n\nimport {\n AssetTRX,\n TRONChain,\n TRON_DERIVATION_PATH,\n TRX_DECIMAL,\n tronExplorerProviders,\n TRON_DEFAULT_RPC,\n TRON_USDT_CONTRACT,\n TRX_TRANSFER_BANDWIDTH,\n TRC20_TRANSFER_ENERGY,\n TRC20_TRANSFER_BANDWIDTH,\n TRX_FEE_LIMIT,\n MAX_APPROVAL,\n} from './const'\nimport { validateAddress, getTRC20AssetContractAddress } from './utils'\nimport trc20ABI from './utils/trc20.json'\nimport {\n TRONClientParams,\n TronTransaction,\n TronSignedTransaction,\n ApproveParams,\n IsApprovedParams,\n TronGetApprovedParams,\n} from './types'\nimport { TronGrid } from './utils/trongrid'\n\n// Default parameters for the Tron client\nexport const defaultTRONParams: TRONClientParams = {\n network: Network.Mainnet,\n phrase: '',\n explorerProviders: tronExplorerProviders,\n rootDerivationPaths: {\n [Network.Mainnet]: TRON_DERIVATION_PATH,\n [Network.Testnet]: TRON_DERIVATION_PATH,\n [Network.Stagenet]: TRON_DERIVATION_PATH,\n },\n}\n\nexport abstract class Client extends BaseXChainClient {\n protected explorerProviders: ExplorerProviders\n protected tronWeb: TronWeb\n protected tronGrid: TronGrid\n\n constructor(params: TRONClientParams = defaultTRONParams) {\n const clientParams = { ...defaultTRONParams, ...params }\n\n super(TRONChain, clientParams)\n this.explorerProviders = clientParams.explorerProviders\n this.tronWeb = new TronWeb({ fullHost: TRON_DEFAULT_RPC })\n this.tronGrid = new TronGrid()\n }\n\n /**\n * Get TRX asset info.\n * @returns {AssetInfo} TRX asset information.\n */\n getAssetInfo(): AssetInfo {\n const assetInfo: AssetInfo = {\n asset: AssetTRX,\n decimal: TRX_DECIMAL,\n }\n return assetInfo\n }\n\n /**\n * Get the explorer URL.\n *\n * @returns {string} The explorer URL.\n */\n public getExplorerUrl(): string {\n return this.explorerProviders[this.getNetwork()].getExplorerUrl()\n }\n\n /**\n * Get the explorer url for the given address.\n *\n * @param {Address} address\n * @returns {string} The explorer url for the given address.\n */\n public getExplorerAddressUrl(address: Address): string {\n return this.explorerProviders[this.getNetwork()].getExplorerAddressUrl(address)\n }\n\n /**\n * Get the explorer url for the given transaction id.\n *\n * @param {string} txID\n * @returns {string} The explorer url for the given transaction id.\n */\n public getExplorerTxUrl(txID: TxHash): string {\n return this.explorerProviders[this.getNetwork()].getExplorerTxUrl(txID)\n }\n\n /**\n * Validate the given Tron address.\n * @param {string} address Tron address to validate.\n * @returns {boolean} `true` if the address is valid, `false` otherwise.\n */\n validateAddress(address: string): boolean {\n return validateAddress(address)\n }\n\n /**\n * Get token balance and info directly from contract\n */\n public fetchTokenMetadata = async ({ contractAddress }: { contractAddress: string }) => {\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n const [symbolRaw, decimalsRaw] = await Promise.all([\n contract\n .symbol()\n .call()\n .catch(() => 'UNKNOWN'),\n contract\n .decimals()\n .call()\n .catch(() => '18'),\n ])\n\n return { decimals: Number(decimalsRaw ?? 18), symbol: symbolRaw ?? 'UNKNOWN' }\n }\n\n /**\n * Get token balance and info directly from contract\n */\n public fetchTokenBalance = async ({ contractAddress, address }: { contractAddress: string; address: string }) => {\n try {\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n if (!contract.methods?.balanceOf) {\n return BigInt(0)\n }\n\n const [balance] = await contract.methods.balanceOf(address).call()\n\n return balance ? (typeof balance === 'bigint' ? balance : BigInt(balance)) : BigInt(0)\n } catch (err) {\n console.warn(`balanceOf() failed for ${contractAddress}:`, err)\n return BigInt(0)\n }\n }\n\n /**\n * Get current chain parameters including resource prices\n */\n getChainParameters = async () => {\n try {\n const parameters = await this.tronWeb.trx.getChainParameters()\n const paramMap: Record<string, number> = {}\n\n for (const param of parameters) {\n paramMap[param.key] = param.value\n }\n\n return {\n bandwidthFee: paramMap.getTransactionFee || 1000, // SUN per bandwidth unit\n createAccountFee: paramMap.getCreateAccountFee || 100000, // 0.1 TRX in SUN\n energyFee: paramMap.getEnergyFee || 420, // SUN per energy unit\n }\n } catch {\n // Return default values if unable to fetch\n return { bandwidthFee: 1000, createAccountFee: 100000, energyFee: 420 }\n }\n }\n\n /**\n * Check if an address exists on the blockchain\n */\n accountExists = async (address: string) => {\n try {\n const account = await this.tronWeb.trx.getAccount(address)\n return account && Object.keys(account).length > 0\n } catch {\n return false\n }\n }\n\n /**\n * Get account resources (bandwidth and energy)\n */\n getAccountResources = async (address: string) => {\n try {\n const resources = await this.tronWeb.trx.getAccountResources(address)\n\n return {\n bandwidth: {\n free: (resources?.freeNetLimit ?? 0) - (resources?.freeNetUsed ?? 0),\n total: resources.NetLimit || 0,\n used: resources.NetUsed || 0,\n },\n energy: { total: resources.EnergyLimit || 0, used: resources.EnergyUsed || 0 },\n }\n } catch {\n // Return default structure if unable to fetch\n return {\n bandwidth: { free: 600, total: 0, used: 0 }, // 600 free bandwidth daily\n energy: { total: 0, used: 0 },\n }\n }\n }\n\n /**\n * Retrieves the balance of a given address.\n * @param {Address} address - The address to retrieve the balance for.\n * @param {TokenAsset[]} assets - Assets to retrieve the balance for (optional).\n * @returns {Promise<Balance[]>} An array containing the balance of the address.\n */\n public async getBalance(address: Address): Promise<Balance[]> {\n const ZeroBalance = [\n {\n asset: AssetTRX,\n amount: baseAmount(0, TRX_DECIMAL),\n },\n ]\n\n // Try get balance from TronGrid\n try {\n const accountData = await this.tronGrid.getAccount(address)\n\n if (!accountData) return ZeroBalance\n const balances: Balance[] = []\n // Add TRX balance\n balances.push({\n asset: AssetTRX,\n amount: baseAmount(accountData.balance, TRX_DECIMAL),\n })\n\n // Add TRC20 balances\n for (const token of accountData.trc20) {\n const entries = Object.entries(token)\n if (entries.length !== 1) continue\n const [contractAddress, balance] = entries[0]\n\n if (!(contractAddress && balance)) continue\n\n const tokenMetaData = await this.fetchTokenMetadata({ contractAddress })\n\n if (!tokenMetaData) continue\n\n balances.push({\n asset: {\n chain: TRONChain,\n symbol: `${tokenMetaData.symbol}-${contractAddress}`,\n ticker: tokenMetaData.symbol,\n type: AssetType.TOKEN,\n },\n amount: baseAmount(balance || 0, tokenMetaData.decimals),\n })\n }\n\n return balances\n } catch (_error) {\n // Fallback: get TRX and USDT Balance from TronWeb\n const balances: Balance[] = []\n\n const trxBalanceInSun = await this.tronWeb.trx.getBalance(address)\n if (trxBalanceInSun && Number(trxBalanceInSun) > 0) {\n balances.push({\n asset: AssetTRX,\n amount: baseAmount(trxBalanceInSun, TRX_DECIMAL),\n })\n }\n\n const usdtBalance = await this.fetchTokenBalance({ address, contractAddress: TRON_USDT_CONTRACT })\n if (usdtBalance) {\n balances.push({\n asset: {\n chain: TRONChain,\n symbol: `USDT-${TRON_USDT_CONTRACT}`,\n ticker: 'USDT',\n type: AssetType.TOKEN,\n },\n amount: baseAmount(usdtBalance.toString(), 6),\n })\n }\n\n return balances\n }\n }\n\n /**\n * Get transaction fees.\n * @param {TxParams} params - Tx param\n * @returns {Fees} The average, fast, and fastest fees.\n */\n public async getFees(params?: TxParams): Promise<Fees> {\n if (!params) throw new Error('Params need to be passed')\n\n const { asset, recipient, walletIndex } = params\n const isNative = asset?.type === AssetType.NATIVE\n let feeAmount: BaseAmount\n\n // Get sender address\n const senderAddress = this.getAddress(walletIndex)\n if (!senderAddress) {\n // If no signer, return default fee\n feeAmount = isNative ? baseAmount(0.1 * 10 ** 6, TRX_DECIMAL) : baseAmount(15 * 10 ** 6, TRX_DECIMAL)\n } else {\n // Get chain parameters for current resource prices\n const chainParams = await this.getChainParameters()\n\n // Check if recipient account exists (new accounts require activation fee)\n const recipientExists = await this.accountExists(recipient)\n const activationFee = recipientExists ? 0 : chainParams.createAccountFee\n\n // Get account resources\n const resources = await this.getAccountResources(senderAddress)\n\n if (isNative) {\n // Calculate bandwidth needed for TRX transfer\n const bandwidthNeeded = TRX_TRANSFER_BANDWIDTH\n const availableBandwidth = resources.bandwidth.free + (resources.bandwidth.total - resources.bandwidth.used)\n\n let bandwidthFee = 0\n if (bandwidthNeeded > availableBandwidth) {\n // Need to burn TRX for bandwidth\n const bandwidthToBuy = bandwidthNeeded - availableBandwidth\n bandwidthFee = bandwidthToBuy * chainParams.bandwidthFee\n }\n\n // Total fee in SUN\n const totalFeeSun = activationFee + bandwidthFee\n\n feeAmount = baseAmount(totalFeeSun, TRX_DECIMAL)\n } else {\n // TRC20 Transfer - needs both bandwidth and energy\n const bandwidthNeeded = TRC20_TRANSFER_BANDWIDTH\n const energyNeeded = TRC20_TRANSFER_ENERGY\n\n const availableBandwidth = resources.bandwidth.free + (resources.bandwidth.total - resources.bandwidth.used)\n const availableEnergy = resources.energy.total - resources.energy.used\n\n let bandwidthFee = 0\n if (bandwidthNeeded > availableBandwidth) {\n const bandwidthToBuy = bandwidthNeeded - availableBandwidth\n bandwidthFee = bandwidthToBuy * chainParams.bandwidthFee\n }\n\n let energyFee = 0\n if (energyNeeded > availableEnergy) {\n const energyToBuy = energyNeeded - availableEnergy\n energyFee = energyToBuy * chainParams.energyFee\n }\n\n // Total fee in SUN\n const totalFeeSun = activationFee + bandwidthFee + energyFee\n feeAmount = baseAmount(totalFeeSun, TRX_DECIMAL)\n }\n }\n\n // Tron has Fixed Fee model, unlike ETH or BTC\n return {\n average: feeAmount,\n fast: feeAmount,\n fastest: feeAmount,\n type: FeeType.FlatFee,\n }\n }\n\n createTransaction = async (params: TxParams) => {\n const { asset, amount: baseValue, recipient, memo, walletIndex } = params\n if (!asset) throw Error('Asset not provided')\n\n const sender = this.getAddress(walletIndex)\n const amount = baseValue.amount().toString()\n\n if (asset.type === AssetType.NATIVE) {\n const transaction = await this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender)\n\n if (memo) {\n return this.tronWeb.transactionBuilder.addUpdateData(transaction, memo, 'utf8')\n }\n\n return transaction\n }\n\n const contractAddress = getTRC20AssetContractAddress(asset)\n if (!contractAddress) {\n throw new Error('TRC20 Asset Contract Address is not valid')\n }\n\n // Build TRC20 transfer transaction\n const functionSelector = 'transfer(address,uint256)'\n const parameter = [\n { type: 'address', value: recipient },\n { type: 'uint256', value: amount },\n ]\n\n const options = { callValue: 0, feeLimit: TRX_FEE_LIMIT }\n const res = await this.tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n options,\n parameter,\n sender,\n )\n\n // Some nodes don’t throw; they return result=false + message\n if (!(res?.result?.result && res?.transaction)) {\n throw new Error(res?.result?.message)\n }\n\n // Attach memo if requested\n const tx = memo\n ? await this.tronWeb.transactionBuilder.addUpdateData(res.transaction, memo, 'utf8')\n : res.transaction\n\n return tx\n }\n\n /**\n * Return signed tx\n * @param transaction TronTransaction\n * @param walletIndex wallet index\n * @returns Transaction signed by phrase\n */\n abstract signTransaction(transaction: TronTransaction, walletIndex?: number): Promise<TronSignedTransaction>\n\n /**\n * Transfer TRON Asset\n * @param {TxParams} params The transfer options.\n * @returns {TxHash} The transaction hash.\n */\n public async transfer(params: TxParams): Promise<string> {\n const { asset, amount: baseValue, recipient, memo, walletIndex } = params\n if (!asset) throw Error('Asset not provided')\n\n const amount = baseValue.amount().toString()\n const sender = this.getAddress(walletIndex)\n\n const isNative = asset.type === AssetType.NATIVE\n\n if (isNative) {\n const transaction = await this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender)\n\n if (memo) {\n const transactionWithMemo = await this.tronWeb.transactionBuilder.addUpdateData(transaction, memo, 'utf8')\n const signedTx = await this.signTransaction(transactionWithMemo, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n // TRC20 Token Transfer - always use createTransaction + sign pattern\n const transaction = await this.createTransaction(params)\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n\n if (!txid) {\n throw new Error('TRON Transfer falied')\n }\n\n return txid\n }\n\n /**\n * Check the current allowance for a spender on a token\n */\n public getApprovedAmount = async ({ contractAddress, spenderAddress, from }: TronGetApprovedParams) => {\n this.tronWeb.setAddress(from)\n\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n if (!contract.methods?.allowance) {\n throw new Error('invalid contract')\n }\n\n const [allowance] = await contract.methods.allowance(from, spenderAddress).call()\n\n return allowance ? (typeof allowance === 'bigint' ? allowance : BigInt(allowance)) : BigInt(0)\n }\n\n /**\n * Check TRC20 allowance.\n * @param {Address} contractAddress The contract address.\n * @param {Address} spenderAddress The spender address.\n * @param {BaseAmount} amount The amount to check if it's allowed to spend or not (optional).\n * @param {number} walletIndex (optional) HD wallet index\n * @param {IsApprovedParams} params - Parameters for checking allowance.\n * @returns {boolean} `true` if the allowance is approved, `false` otherwise.\n */\n async isApproved({ contractAddress, spenderAddress, amount, walletIndex }: IsApprovedParams): Promise<boolean> {\n const from = this.getAddress(walletIndex)\n\n const allowance = await this.getApprovedAmount({ contractAddress, from, spenderAddress })\n\n if (!amount) {\n // If no amount specified, check if there's any approval\n return allowance > BigInt(0)\n }\n\n return allowance >= BigInt(amount.amount().toString())\n }\n\n /**\n * Approves an allowance for spending tokens.\n *\n * @param {ApproveParams} params - Parameters for approving an allowance.\n * @param {Address} contractAddress The contract address.\n * @param {Address} spenderAddress The spender address.\n * @param {BaseAmount} amount The amount of token. By default, it will be unlimited token allowance. (optional)\n * @param {number} walletIndex (optional) HD wallet index\n * @returns {TransactionResponse} The result of the approval transaction.\n * @throws Error If gas estimation fails.\n */\n public async approve({ contractAddress, spenderAddress, amount, walletIndex = 0 }: ApproveParams): Promise<string> {\n const fromAddress = this.getAddress(walletIndex)\n const approvalAmount = amount !== undefined ? amount.amount().toString() : MAX_APPROVAL\n\n // Build approve transaction using triggerSmartContract\n const functionSelector = 'approve(address,uint256)'\n const parameter = [\n { type: 'address', value: spenderAddress },\n { type: 'uint256', value: approvalAmount },\n ]\n\n const feeLimit = TRX_FEE_LIMIT\n const options = { callValue: 0, feeLimit }\n\n const { transaction } = await this.tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n options,\n parameter,\n fromAddress,\n )\n\n if (!transaction) {\n throw new Error('Failed to build approve transaction')\n }\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n\n if (!txid) {\n throw new Error('TRC20 Approve Failed')\n }\n\n return txid\n }\n\n public async broadcastTransaction(signedTx: TronSignedTransaction): Promise<TxHash> {\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n public async getTransactions(params?: TxHistoryParams): Promise<TxsPage> {\n const address = params?.address || this.getAddress()\n const offset = params?.offset || 0\n const limit = params?.limit || 10\n\n return this.tronGrid.getTransactions({ address, limit, offset })\n }\n\n /**\n * Get the transaction details of a given transaction ID.\n *\n * @param {string} txId The transaction ID.\n * @returns {Tx} The transaction details.\n */\n public async getTransactionData(txId: string): Promise<Tx> {\n return this.tronGrid.getTransactionData(txId)\n }\n\n public async broadcastTx(_signedTx: string): Promise<TxHash> {\n throw Error('Error: not supported')\n }\n\n async prepareTx(_: TxParams & { sender: Address }): Promise<PreparedTx> {\n throw new Error('Error: raw tx string not supported')\n }\n\n async getFeesWithRates(): Promise<FeesWithRates> {\n throw Error('Error: not supported')\n }\n\n async getFeeRates(): Promise<FeeRate> {\n throw Error('Error: not supported')\n }\n}\n","import { HDKey } from '@scure/bip32'\nimport { mnemonicToSeedSync } from '@scure/bip39'\nimport { TronWeb } from 'tronweb'\n\nimport { TronTransaction, TronSignedTransaction, TRONClientParams } from './types'\nimport { Client, defaultTRONParams } from './client'\nimport { TRON_DEFAULT_RPC } from './const'\n\nexport class ClientKeystore extends Client {\n constructor(params: TRONClientParams = defaultTRONParams) {\n const clientParams = { ...defaultTRONParams, ...params }\n\n super(clientParams)\n }\n\n public getSigner(walletIndex = 0) {\n if (!this.phrase) throw new Error('Phrase must be provided')\n\n const seed = mnemonicToSeedSync(this.phrase)\n const hdKey = HDKey.fromMasterSeed(seed)\n const derived = hdKey.derive(this.getFullDerivationPath(walletIndex))\n\n if (!derived.privateKey) {\n throw new Error('No Tron Signer')\n }\n\n const privateKeyHex = Buffer.from(derived.privateKey).toString('hex')\n\n const isolatedTronWeb = new TronWeb({\n fullHost: TRON_DEFAULT_RPC,\n privateKey: privateKeyHex,\n })\n\n const address = isolatedTronWeb.address.fromPrivateKey(privateKeyHex)\n\n return {\n getAddress: () => (typeof address === 'string' ? address : ''),\n signTransaction: async (transaction: TronTransaction) => {\n // Use isolated instance - no shared state\n const signedTx = await isolatedTronWeb.trx.sign(transaction)\n return signedTx\n },\n }\n }\n /**\n * Get the current address synchronously.\n */\n public getAddress(walletIndex = 0): string {\n return this.getSigner(walletIndex).getAddress()\n }\n\n /**\n * Get the current address asynchronously.\n *\n * @param {number} index The index of the address. Default 0\n * @returns {Address} The TRON address related to the index provided.\n * @throws {\"Phrase must be provided\"} Thrown if the phrase has not been set before.\n */\n public async getAddressAsync(walletIndex = 0): Promise<string> {\n return this.getAddress(walletIndex)\n }\n\n public async signTransaction(transaction: TronTransaction, walletIndex = 0): Promise<TronSignedTransaction> {\n return this.getSigner(walletIndex).signTransaction(transaction)\n }\n}\n"],"names":["AssetType","ExplorerProvider","Network","TronWeb","baseAmount","TxType","TW","BaseXChainClient","FeeType","mnemonicToSeedSync","HDKey"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/tslib/tslib.es6.js","../src/const.ts","../src/utils/index.ts","../src/utils/trongrid/trongrid.ts","../src/client.ts","../src/clientKeystore.ts","../src/clientLedger.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import { ExplorerProvider, Network } from '@xchainjs/xchain-client'\nimport { Asset, AnyAsset, AssetType } from '@xchainjs/xchain-util'\n\nexport const TRX_DECIMAL = 6\n\nexport const TRON_DERIVATION_PATH = \"m/44'/195'/0'/0/\"\n\n/**\n * Chain identifier for Tron mainnet\n */\nexport const TRONChain = 'TRON' as const\n\nexport const AssetTRX: Asset = {\n chain: TRONChain,\n symbol: 'TRX',\n ticker: 'TRX',\n type: AssetType.NATIVE,\n}\n\nexport const AssetTRONUSDT: AnyAsset = {\n chain: TRONChain,\n symbol: 'USDT-TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t',\n ticker: 'USDT',\n type: AssetType.TOKEN,\n}\n// Explorer providers for Tron\nconst TRON_MAINNET_EXPLORER = new ExplorerProvider(\n 'https://tronscan.org/',\n 'https://tronscan.org/#/address/%%ADDRESS%%',\n 'https://tronscan.org/#/transaction/%%TX_ID%%',\n)\n\nconst TRON_TESTNET_EXPLORER = new ExplorerProvider(\n 'https://nile.tronscan.org/',\n 'https://nile.tronscan.org/accounts/%%ADDRESS%%',\n 'https://nile.tronscan.org/transactions/%%TX_ID%%',\n)\n\nexport const TRON_DEFAULT_RPC = 'https://tron-rpc.publicnode.com'\n\nexport const tronExplorerProviders = {\n [Network.Mainnet]: TRON_MAINNET_EXPLORER,\n [Network.Stagenet]: TRON_MAINNET_EXPLORER,\n [Network.Testnet]: TRON_TESTNET_EXPLORER,\n}\n\nexport const TRX_TRANSFER_BANDWIDTH = 268 // Bandwidth consumed by a TRX transfer\nexport const TRC20_TRANSFER_ENERGY = 13000 // Average energy consumed by TRC20 transfer\nexport const TRC20_TRANSFER_BANDWIDTH = 345 // Bandwidth consumed by TRC20 transfer\n\nexport const TRON_USDT_CONTRACT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'\n\nexport const MAX_APPROVAL = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'\nexport const TRX_FEE_LIMIT = 100_000_000\n","import { AnyAsset } from '@xchainjs/xchain-util'\nimport { TronWeb } from 'tronweb'\n\nexport const validateAddress = (address: string) => {\n return TronWeb.isAddress(address)\n}\n\nexport const getTRC20AssetContractAddress = (asset: AnyAsset): string | null => {\n try {\n return asset.symbol.slice(asset.ticker.length + 1)\n } catch (_err) {\n return null\n }\n}\n","import { Tx, TxType, TxFrom, TxTo, TxsPage } from '@xchainjs/xchain-client'\nimport { AssetType, baseAmount } from '@xchainjs/xchain-util'\nimport TW, { TronWeb } from 'tronweb'\nimport type { TronGridAccountResponse, TronGridTransaction } from './types'\nimport { AssetTRX, TRX_DECIMAL, TRON_DEFAULT_RPC } from '../../const'\n\nconst TRONGRID_API_BASE_URL = 'https://api.trongrid.io'\n\nexport class TronGrid {\n public tronWeb: TronWeb\n\n constructor() {\n this.tronWeb = new TronWeb({ fullHost: TRON_DEFAULT_RPC })\n }\n\n public async getAccount(address: string) {\n try {\n const response = await fetch(`${TRONGRID_API_BASE_URL}/v1/accounts/${address}`)\n\n if (!response.ok) {\n throw new Error(`TronGrid API error: ${response.status} ${response.statusText}`)\n }\n\n const data = (await response.json()) as TronGridAccountResponse\n\n if (!(data.success && data.data) || data.data.length === 0) {\n throw new Error('Invalid response from TronGrid API')\n }\n\n // Convert search address to hex format for comparison\n let searchAddressHex: string\n try {\n // If address is base58, convert to hex\n searchAddressHex = TronWeb.address.toHex(address).toLowerCase()\n } catch {\n // If conversion fails, assume it's already hex\n searchAddressHex = address.toLowerCase()\n }\n\n // Find the account that matches the requested address\n const account = data.data.find((acc) => {\n return acc.address.toLowerCase() === searchAddressHex\n })\n\n if (!account) {\n return\n }\n\n return account\n } catch (error) {\n throw error\n }\n }\n\n public async getTransactions(params: { address: string; limit: number; offset: number }): Promise<TxsPage> {\n const { address, offset, limit } = params\n const url = `https://api.trongrid.io/v1/accounts/${address}/transactions?limit=${limit}&start=${offset}`\n const res = await fetch(url)\n const { data }: { data: TronGridTransaction[] } = await res.json()\n\n const txs: Tx[] = []\n\n for (const tx of data) {\n const contract = tx.raw_data.contract[0]\n\n // Case 1: Native TRX transfer\n if (contract.type === 'TransferContract') {\n const amount = baseAmount(contract.parameter.value.amount, TRX_DECIMAL)\n const from: TxFrom[] = [{ from: TronWeb.address.fromHex(contract.parameter.value.owner_address), amount }]\n const to: TxTo[] = [{ to: TronWeb.address.fromHex(contract.parameter.value.to_address), amount }]\n\n txs.push({\n asset: AssetTRX,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.block_timestamp as number),\n hash: tx.txID,\n })\n continue\n }\n\n // Case 2: TRC20 transfer (TriggerSmartContract)\n if (contract.type === 'TriggerSmartContract') {\n const { contract_address, data: inputData, owner_address } = contract.parameter.value\n\n // `inputData` starts with 4-byte method selector (transfer(address,uint256))\n // and then encoded params\n try {\n const decoded = TW.utils.abi.decodeParams(\n ['_to', '_value'], // parameter names\n ['address', 'uint256'], // parameter types\n inputData, // full input data (with selector)\n true, // ignoreMethodHash - automatically skip selector\n )\n\n const toAddress = decoded._to\n const fromAddress = TronWeb.address.fromHex(owner_address)\n const rawValue = decoded._value.toString()\n\n // Get token contract instance\n const contractHex = TronWeb.address.fromHex(contract_address)\n const tokenContract = await this.tronWeb.contract().at(contractHex)\n\n // Call symbol() and decimals()\n const symbol: string = await tokenContract.symbol().call()\n const decimals: number = await tokenContract.decimals().call()\n\n const amount = baseAmount(rawValue, decimals)\n const from: TxFrom[] = [{ from: fromAddress, amount }]\n const to: TxTo[] = [{ to: toAddress, amount }]\n const asset = {\n chain: 'TRON',\n symbol: `${symbol}-${contract_address}`,\n ticker: symbol,\n type: AssetType.TOKEN,\n }\n\n txs.push({\n asset,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.block_timestamp as number),\n hash: tx.txID,\n })\n } catch (_e) {\n // Not an ERC20 transfer (could be another contract call)\n continue\n }\n }\n }\n\n return {\n total: txs.length,\n txs,\n }\n }\n\n public async getTransactionData(txId: string): Promise<Tx> {\n const url = `${TRONGRID_API_BASE_URL}/walletsolidity/gettransactionbyid`\n const res = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ value: txId }),\n })\n\n const tx: TronGridTransaction = await res.json()\n if (!tx || !tx.raw_data?.contract?.length) {\n throw new Error('Transaction not found')\n }\n\n const contract = tx.raw_data.contract[0]\n\n // Case 1: Native TRX transfer\n if (contract.type === 'TransferContract') {\n const amount = baseAmount(contract.parameter.value.amount, TRX_DECIMAL)\n const from: TxFrom[] = [{ from: TronWeb.address.fromHex(contract.parameter.value.owner_address), amount }]\n const to: TxTo[] = [{ to: TronWeb.address.fromHex(contract.parameter.value.to_address), amount }]\n\n return {\n asset: AssetTRX,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.raw_data.timestamp ?? Date.now()),\n hash: tx.txID,\n }\n }\n\n // Case 2: TRC20 transfer (must decode ABI input manually)\n if (contract.type === 'TriggerSmartContract') {\n const { owner_address, contract_address, data: inputData } = contract.parameter.value\n\n // ERC20 transfer selector = a9059cbb\n if (inputData.startsWith('a9059cbb')) {\n const decoded = TW.utils.abi.decodeParams(\n ['_to', '_value'], // parameter names\n ['address', 'uint256'], // parameter types\n inputData, // full input data (with selector)\n true, // ignoreMethodHash - automatically skip selector\n )\n\n const toAddress = TronWeb.address.fromHex(decoded._to)\n const fromAddress = TronWeb.address.fromHex(owner_address)\n const rawValue = decoded._value.toString()\n\n // should set owner_address\n this.tronWeb.setAddress(fromAddress)\n // Get token contract instance\n const contract = TronWeb.address.fromHex(contract_address)\n const tokenContract = await this.tronWeb.contract().at(contract)\n\n // Call symbol() and decimals()\n const symbol: string = await tokenContract.symbol().call()\n const decimals: number = await tokenContract.decimals().call()\n\n const amount = baseAmount(rawValue, decimals)\n const from: TxFrom[] = [{ from: fromAddress, amount }]\n const to: TxTo[] = [{ to: toAddress, amount }]\n const asset = {\n chain: 'TRON',\n symbol: `${symbol}-${contract_address}`,\n ticker: symbol,\n type: AssetType.TOKEN,\n }\n\n return {\n asset,\n type: TxType.Transfer,\n from,\n to,\n date: new Date(tx.raw_data.timestamp as number),\n hash: tx.txID,\n }\n }\n }\n\n throw new Error(`Unsupported or non-transfer transaction: ${contract.type}`)\n }\n}\n","import {\n AssetInfo,\n FeeType,\n Fees,\n Balance,\n Network,\n TxHash,\n BaseXChainClient,\n ExplorerProviders,\n TxParams,\n PreparedTx,\n TxsPage,\n TxHistoryParams,\n Tx,\n FeesWithRates,\n FeeRate,\n} from '@xchainjs/xchain-client'\nimport { baseAmount, Address, AssetType, BaseAmount } from '@xchainjs/xchain-util'\nimport { TronWeb } from 'tronweb'\n\nimport {\n AssetTRX,\n TRONChain,\n TRON_DERIVATION_PATH,\n TRX_DECIMAL,\n tronExplorerProviders,\n TRON_DEFAULT_RPC,\n TRON_USDT_CONTRACT,\n TRX_TRANSFER_BANDWIDTH,\n TRC20_TRANSFER_ENERGY,\n TRC20_TRANSFER_BANDWIDTH,\n TRX_FEE_LIMIT,\n MAX_APPROVAL,\n} from './const'\nimport { validateAddress, getTRC20AssetContractAddress } from './utils'\nimport trc20ABI from './utils/trc20.json'\nimport {\n TRONClientParams,\n TronTransaction,\n TronSignedTransaction,\n ApproveParams,\n IsApprovedParams,\n TronGetApprovedParams,\n} from './types'\nimport { TronGrid } from './utils/trongrid'\n\n// Default parameters for the Tron client\nexport const defaultTRONParams: TRONClientParams = {\n network: Network.Mainnet,\n phrase: '',\n explorerProviders: tronExplorerProviders,\n rootDerivationPaths: {\n [Network.Mainnet]: TRON_DERIVATION_PATH,\n [Network.Testnet]: TRON_DERIVATION_PATH,\n [Network.Stagenet]: TRON_DERIVATION_PATH,\n },\n}\n\nexport abstract class Client extends BaseXChainClient {\n protected explorerProviders: ExplorerProviders\n protected tronWeb: TronWeb\n protected tronGrid: TronGrid\n\n constructor(params: TRONClientParams = defaultTRONParams) {\n const clientParams = { ...defaultTRONParams, ...params }\n\n super(TRONChain, clientParams)\n this.explorerProviders = clientParams.explorerProviders\n this.tronWeb = new TronWeb({ fullHost: TRON_DEFAULT_RPC })\n this.tronGrid = new TronGrid()\n }\n\n /**\n * Get TRX asset info.\n * @returns {AssetInfo} TRX asset information.\n */\n getAssetInfo(): AssetInfo {\n const assetInfo: AssetInfo = {\n asset: AssetTRX,\n decimal: TRX_DECIMAL,\n }\n return assetInfo\n }\n\n /**\n * Get the explorer URL.\n *\n * @returns {string} The explorer URL.\n */\n public getExplorerUrl(): string {\n return this.explorerProviders[this.getNetwork()].getExplorerUrl()\n }\n\n /**\n * Get the explorer url for the given address.\n *\n * @param {Address} address\n * @returns {string} The explorer url for the given address.\n */\n public getExplorerAddressUrl(address: Address): string {\n return this.explorerProviders[this.getNetwork()].getExplorerAddressUrl(address)\n }\n\n /**\n * Get the explorer url for the given transaction id.\n *\n * @param {string} txID\n * @returns {string} The explorer url for the given transaction id.\n */\n public getExplorerTxUrl(txID: TxHash): string {\n return this.explorerProviders[this.getNetwork()].getExplorerTxUrl(txID)\n }\n\n /**\n * Validate the given Tron address.\n * @param {string} address Tron address to validate.\n * @returns {boolean} `true` if the address is valid, `false` otherwise.\n */\n validateAddress(address: string): boolean {\n return validateAddress(address)\n }\n\n /**\n * Get token balance and info directly from contract\n */\n public fetchTokenMetadata = async ({ contractAddress }: { contractAddress: string }) => {\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n const [symbolRaw, decimalsRaw] = await Promise.all([\n contract\n .symbol()\n .call()\n .catch(() => 'UNKNOWN'),\n contract\n .decimals()\n .call()\n .catch(() => '18'),\n ])\n\n return { decimals: Number(decimalsRaw ?? 18), symbol: symbolRaw ?? 'UNKNOWN' }\n }\n\n /**\n * Get token balance and info directly from contract\n */\n public fetchTokenBalance = async ({ contractAddress, address }: { contractAddress: string; address: string }) => {\n try {\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n if (!contract.methods?.balanceOf) {\n return BigInt(0)\n }\n\n const [balance] = await contract.methods.balanceOf(address).call()\n\n return balance ? (typeof balance === 'bigint' ? balance : BigInt(balance)) : BigInt(0)\n } catch (err) {\n console.warn(`balanceOf() failed for ${contractAddress}:`, err)\n return BigInt(0)\n }\n }\n\n /**\n * Get current chain parameters including resource prices\n */\n getChainParameters = async () => {\n try {\n const parameters = await this.tronWeb.trx.getChainParameters()\n const paramMap: Record<string, number> = {}\n\n for (const param of parameters) {\n paramMap[param.key] = param.value\n }\n\n return {\n bandwidthFee: paramMap.getTransactionFee || 1000, // SUN per bandwidth unit\n createAccountFee: paramMap.getCreateAccountFee || 100000, // 0.1 TRX in SUN\n energyFee: paramMap.getEnergyFee || 420, // SUN per energy unit\n }\n } catch {\n // Return default values if unable to fetch\n return { bandwidthFee: 1000, createAccountFee: 100000, energyFee: 420 }\n }\n }\n\n /**\n * Check if an address exists on the blockchain\n */\n accountExists = async (address: string) => {\n try {\n const account = await this.tronWeb.trx.getAccount(address)\n return account && Object.keys(account).length > 0\n } catch {\n return false\n }\n }\n\n /**\n * Get account resources (bandwidth and energy)\n */\n getAccountResources = async (address: string) => {\n try {\n const resources = await this.tronWeb.trx.getAccountResources(address)\n\n return {\n bandwidth: {\n free: (resources?.freeNetLimit ?? 0) - (resources?.freeNetUsed ?? 0),\n total: resources.NetLimit || 0,\n used: resources.NetUsed || 0,\n },\n energy: { total: resources.EnergyLimit || 0, used: resources.EnergyUsed || 0 },\n }\n } catch {\n // Return default structure if unable to fetch\n return {\n bandwidth: { free: 600, total: 0, used: 0 }, // 600 free bandwidth daily\n energy: { total: 0, used: 0 },\n }\n }\n }\n\n /**\n * Retrieves the balance of a given address.\n * @param {Address} address - The address to retrieve the balance for.\n * @param {TokenAsset[]} assets - Assets to retrieve the balance for (optional).\n * @returns {Promise<Balance[]>} An array containing the balance of the address.\n */\n public async getBalance(address: Address): Promise<Balance[]> {\n const ZeroBalance = [\n {\n asset: AssetTRX,\n amount: baseAmount(0, TRX_DECIMAL),\n },\n ]\n\n // Try get balance from TronGrid\n try {\n const accountData = await this.tronGrid.getAccount(address)\n\n if (!accountData) return ZeroBalance\n const balances: Balance[] = []\n // Add TRX balance\n balances.push({\n asset: AssetTRX,\n amount: baseAmount(accountData.balance, TRX_DECIMAL),\n })\n\n // Add TRC20 balances\n for (const token of accountData.trc20) {\n const entries = Object.entries(token)\n if (entries.length !== 1) continue\n const [contractAddress, balance] = entries[0]\n\n if (!(contractAddress && balance)) continue\n\n const tokenMetaData = await this.fetchTokenMetadata({ contractAddress })\n\n if (!tokenMetaData) continue\n\n balances.push({\n asset: {\n chain: TRONChain,\n symbol: `${tokenMetaData.symbol}-${contractAddress}`,\n ticker: tokenMetaData.symbol,\n type: AssetType.TOKEN,\n },\n amount: baseAmount(balance || 0, tokenMetaData.decimals),\n })\n }\n\n return balances\n } catch (_error) {\n // Fallback: get TRX and USDT Balance from TronWeb\n const balances: Balance[] = []\n\n const trxBalanceInSun = await this.tronWeb.trx.getBalance(address)\n if (trxBalanceInSun && Number(trxBalanceInSun) > 0) {\n balances.push({\n asset: AssetTRX,\n amount: baseAmount(trxBalanceInSun, TRX_DECIMAL),\n })\n }\n\n const usdtBalance = await this.fetchTokenBalance({ address, contractAddress: TRON_USDT_CONTRACT })\n if (usdtBalance) {\n balances.push({\n asset: {\n chain: TRONChain,\n symbol: `USDT-${TRON_USDT_CONTRACT}`,\n ticker: 'USDT',\n type: AssetType.TOKEN,\n },\n amount: baseAmount(usdtBalance.toString(), 6),\n })\n }\n\n return balances\n }\n }\n\n /**\n * Get transaction fees.\n * @param {TxParams} params - Tx param\n * @returns {Fees} The average, fast, and fastest fees.\n */\n public async getFees(params?: TxParams): Promise<Fees> {\n if (!params) throw new Error('Params need to be passed')\n\n const { asset, recipient, walletIndex } = params\n const isNative = asset?.type === AssetType.NATIVE\n let feeAmount: BaseAmount\n\n // Get sender address\n const senderAddress = await this.getAddressAsync(walletIndex)\n if (!senderAddress) {\n // If no signer, return default fee\n feeAmount = isNative ? baseAmount(0.1 * 10 ** 6, TRX_DECIMAL) : baseAmount(15 * 10 ** 6, TRX_DECIMAL)\n } else {\n // Get chain parameters for current resource prices\n const chainParams = await this.getChainParameters()\n\n // Check if recipient account exists (new accounts require activation fee)\n const recipientExists = await this.accountExists(recipient)\n const activationFee = recipientExists ? 0 : chainParams.createAccountFee\n\n // Get account resources\n const resources = await this.getAccountResources(senderAddress)\n\n if (isNative) {\n // Calculate bandwidth needed for TRX transfer\n const bandwidthNeeded = TRX_TRANSFER_BANDWIDTH\n const availableBandwidth = resources.bandwidth.free + (resources.bandwidth.total - resources.bandwidth.used)\n\n let bandwidthFee = 0\n if (bandwidthNeeded > availableBandwidth) {\n // Need to burn TRX for bandwidth\n const bandwidthToBuy = bandwidthNeeded - availableBandwidth\n bandwidthFee = bandwidthToBuy * chainParams.bandwidthFee\n }\n\n // Total fee in SUN\n const totalFeeSun = activationFee + bandwidthFee\n\n feeAmount = baseAmount(totalFeeSun, TRX_DECIMAL)\n } else {\n // TRC20 Transfer - needs both bandwidth and energy\n const bandwidthNeeded = TRC20_TRANSFER_BANDWIDTH\n const energyNeeded = TRC20_TRANSFER_ENERGY\n\n const availableBandwidth = resources.bandwidth.free + (resources.bandwidth.total - resources.bandwidth.used)\n const availableEnergy = resources.energy.total - resources.energy.used\n\n let bandwidthFee = 0\n if (bandwidthNeeded > availableBandwidth) {\n const bandwidthToBuy = bandwidthNeeded - availableBandwidth\n bandwidthFee = bandwidthToBuy * chainParams.bandwidthFee\n }\n\n let energyFee = 0\n if (energyNeeded > availableEnergy) {\n const energyToBuy = energyNeeded - availableEnergy\n energyFee = energyToBuy * chainParams.energyFee\n }\n\n // Total fee in SUN\n const totalFeeSun = activationFee + bandwidthFee + energyFee\n feeAmount = baseAmount(totalFeeSun, TRX_DECIMAL)\n }\n }\n\n // Tron has Fixed Fee model, unlike ETH or BTC\n return {\n average: feeAmount,\n fast: feeAmount,\n fastest: feeAmount,\n type: FeeType.FlatFee,\n }\n }\n\n createTransaction = async (params: TxParams) => {\n const { asset, amount: baseValue, recipient, memo, walletIndex } = params\n if (!asset) throw Error('Asset not provided')\n\n const sender = await this.getAddressAsync(walletIndex)\n const amount = baseValue.amount().toString()\n\n if (asset.type === AssetType.NATIVE) {\n const transaction = await this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender)\n\n if (memo) {\n return this.tronWeb.transactionBuilder.addUpdateData(transaction, memo, 'utf8')\n }\n\n return transaction\n }\n\n const contractAddress = getTRC20AssetContractAddress(asset)\n if (!contractAddress) {\n throw new Error('TRC20 Asset Contract Address is not valid')\n }\n\n // Build TRC20 transfer transaction\n const functionSelector = 'transfer(address,uint256)'\n const parameter = [\n { type: 'address', value: recipient },\n { type: 'uint256', value: amount },\n ]\n\n const options = { callValue: 0, feeLimit: TRX_FEE_LIMIT }\n const res = await this.tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n options,\n parameter,\n sender,\n )\n\n // Some nodes don’t throw; they return result=false + message\n if (!(res?.result?.result && res?.transaction)) {\n throw new Error(res?.result?.message)\n }\n\n // Attach memo if requested\n const tx = memo\n ? await this.tronWeb.transactionBuilder.addUpdateData(res.transaction, memo, 'utf8')\n : res.transaction\n\n return tx\n }\n\n /**\n * Return signed tx\n * @param transaction TronTransaction\n * @param walletIndex wallet index\n * @returns Transaction signed by phrase\n */\n abstract signTransaction(transaction: TronTransaction, walletIndex?: number): Promise<TronSignedTransaction>\n\n /**\n * Transfer TRON Asset\n * @param {TxParams} params The transfer options.\n * @returns {TxHash} The transaction hash.\n */\n public async transfer(params: TxParams): Promise<string> {\n const { asset, amount: baseValue, recipient, memo, walletIndex } = params\n if (!asset) throw Error('Asset not provided')\n\n const amount = baseValue.amount().toString()\n const sender = await this.getAddressAsync(walletIndex)\n\n const isNative = asset.type === AssetType.NATIVE\n\n if (isNative) {\n const transaction = await this.tronWeb.transactionBuilder.sendTrx(recipient, Number(amount), sender)\n\n if (memo) {\n const transactionWithMemo = await this.tronWeb.transactionBuilder.addUpdateData(transaction, memo, 'utf8')\n const signedTx = await this.signTransaction(transactionWithMemo, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n // TRC20 Token Transfer - always use createTransaction + sign pattern\n const transaction = await this.createTransaction(params)\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n\n if (!txid) {\n throw new Error('TRON Transfer falied')\n }\n\n return txid\n }\n\n /**\n * Check the current allowance for a spender on a token\n */\n public getApprovedAmount = async ({ contractAddress, spenderAddress, from }: TronGetApprovedParams) => {\n this.tronWeb.setAddress(from)\n\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n if (!contract.methods?.allowance) {\n throw new Error('invalid contract')\n }\n\n const [allowance] = await contract.methods.allowance(from, spenderAddress).call()\n\n return allowance ? (typeof allowance === 'bigint' ? allowance : BigInt(allowance)) : BigInt(0)\n }\n\n /**\n * Check TRC20 allowance.\n * @param {Address} contractAddress The contract address.\n * @param {Address} spenderAddress The spender address.\n * @param {BaseAmount} amount The amount to check if it's allowed to spend or not (optional).\n * @param {number} walletIndex (optional) HD wallet index\n * @param {IsApprovedParams} params - Parameters for checking allowance.\n * @returns {boolean} `true` if the allowance is approved, `false` otherwise.\n */\n async isApproved({ contractAddress, spenderAddress, amount, walletIndex }: IsApprovedParams): Promise<boolean> {\n const from = await this.getAddressAsync(walletIndex)\n\n const allowance = await this.getApprovedAmount({ contractAddress, from, spenderAddress })\n\n if (!amount) {\n // If no amount specified, check if there's any approval\n return allowance > BigInt(0)\n }\n\n return allowance >= BigInt(amount.amount().toString())\n }\n\n /**\n * Approves an allowance for spending tokens.\n *\n * @param {ApproveParams} params - Parameters for approving an allowance.\n * @param {Address} contractAddress The contract address.\n * @param {Address} spenderAddress The spender address.\n * @param {BaseAmount} amount The amount of token. By default, it will be unlimited token allowance. (optional)\n * @param {number} walletIndex (optional) HD wallet index\n * @returns {TransactionResponse} The result of the approval transaction.\n * @throws Error If gas estimation fails.\n */\n public async approve({ contractAddress, spenderAddress, amount, walletIndex = 0 }: ApproveParams): Promise<string> {\n const fromAddress = await this.getAddressAsync(walletIndex)\n const approvalAmount = amount !== undefined ? amount.amount().toString() : MAX_APPROVAL\n\n // Build approve transaction using triggerSmartContract\n const functionSelector = 'approve(address,uint256)'\n const parameter = [\n { type: 'address', value: spenderAddress },\n { type: 'uint256', value: approvalAmount },\n ]\n\n const feeLimit = TRX_FEE_LIMIT\n const options = { callValue: 0, feeLimit }\n\n const { transaction } = await this.tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n options,\n parameter,\n fromAddress,\n )\n\n if (!transaction) {\n throw new Error('Failed to build approve transaction')\n }\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n\n if (!txid) {\n throw new Error('TRC20 Approve Failed')\n }\n\n return txid\n }\n\n public async broadcastTransaction(signedTx: TronSignedTransaction): Promise<TxHash> {\n const { txid } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n return txid\n }\n\n public async getTransactions(params?: TxHistoryParams): Promise<TxsPage> {\n const address = params?.address || (await this.getAddressAsync())\n const offset = params?.offset || 0\n const limit = params?.limit || 10\n\n return this.tronGrid.getTransactions({ address, limit, offset })\n }\n\n /**\n * Get the transaction details of a given transaction ID.\n *\n * @param {string} txId The transaction ID.\n * @returns {Tx} The transaction details.\n */\n public async getTransactionData(txId: string): Promise<Tx> {\n return this.tronGrid.getTransactionData(txId)\n }\n\n public async broadcastTx(_signedTx: string): Promise<TxHash> {\n throw Error('Error: not supported')\n }\n\n async prepareTx(_: TxParams & { sender: Address }): Promise<PreparedTx> {\n throw new Error('Error: raw tx string not supported')\n }\n\n async getFeesWithRates(): Promise<FeesWithRates> {\n throw Error('Error: not supported')\n }\n\n async getFeeRates(): Promise<FeeRate> {\n throw Error('Error: not supported')\n }\n}\n","import { HDKey } from '@scure/bip32'\nimport { mnemonicToSeedSync } from '@scure/bip39'\nimport { TronWeb } from 'tronweb'\n\nimport { TronTransaction, TronSignedTransaction, TRONClientParams } from './types'\nimport { Client, defaultTRONParams } from './client'\nimport { TRON_DEFAULT_RPC } from './const'\n\nexport class ClientKeystore extends Client {\n constructor(params: TRONClientParams = defaultTRONParams) {\n const clientParams = { ...defaultTRONParams, ...params }\n\n super(clientParams)\n }\n\n public getSigner(walletIndex = 0) {\n if (!this.phrase) throw new Error('Phrase must be provided')\n\n const seed = mnemonicToSeedSync(this.phrase)\n const hdKey = HDKey.fromMasterSeed(seed)\n const derived = hdKey.derive(this.getFullDerivationPath(walletIndex))\n\n if (!derived.privateKey) {\n throw new Error('No Tron Signer')\n }\n\n const privateKeyHex = Buffer.from(derived.privateKey).toString('hex')\n\n const isolatedTronWeb = new TronWeb({\n fullHost: TRON_DEFAULT_RPC,\n privateKey: privateKeyHex,\n })\n\n const address = isolatedTronWeb.address.fromPrivateKey(privateKeyHex)\n\n return {\n getAddress: () => (typeof address === 'string' ? address : ''),\n signTransaction: async (transaction: TronTransaction) => {\n // Use isolated instance - no shared state\n const signedTx = await isolatedTronWeb.trx.sign(transaction)\n return signedTx\n },\n }\n }\n /**\n * Get the current address synchronously.\n */\n public getAddress(walletIndex = 0): string {\n return this.getSigner(walletIndex).getAddress()\n }\n\n /**\n * Get the current address asynchronously.\n *\n * @param {number} index The index of the address. Default 0\n * @returns {Address} The TRON address related to the index provided.\n * @throws {\"Phrase must be provided\"} Thrown if the phrase has not been set before.\n */\n public async getAddressAsync(walletIndex = 0): Promise<string> {\n return this.getAddress(walletIndex)\n }\n\n public async signTransaction(transaction: TronTransaction, walletIndex = 0): Promise<TronSignedTransaction> {\n return this.getSigner(walletIndex).signTransaction(transaction)\n }\n}\n","import TronLedgerApp from '@ledgerhq/hw-app-trx'\nimport { Address } from '@xchainjs/xchain-util'\n\nimport { Client, defaultTRONParams } from './client'\nimport { TronTransaction, TronSignedTransaction, TRONClientLedgerParams } from './types'\n\n/**\n * Custom Tron Ledger client extending the base Tron client\n */\nclass ClientLedger extends Client {\n // Reference to the Ledger transport object\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private transport: any\n private ledgerApp: TronLedgerApp | undefined\n\n constructor(params: TRONClientLedgerParams) {\n const clientParams = { ...defaultTRONParams, ...params }\n\n super(clientParams)\n\n this.transport = params.transport\n this.ledgerApp = new TronLedgerApp(this.transport)\n }\n\n // Get the current address synchronously - not supported for Ledger Client\n getAddress(): string {\n throw Error('Sync method not supported for Ledger')\n }\n\n // Get the current address asynchronously\n async getAddressAsync(index = 0, verify = false): Promise<Address> {\n if (!this.ledgerApp) throw Error('ledger not connected')\n\n const derivationPath = this.getFullDerivationPath(index)\n const result = await this.ledgerApp.getAddress(derivationPath, verify)\n return result.address\n }\n\n // Sign transaction using Ledger\n async signTransaction(transaction: TronTransaction, walletIndex = 0): Promise<TronSignedTransaction> {\n if (!this.ledgerApp) throw Error('ledger not connected')\n\n const derivationPath = this.getFullDerivationPath(walletIndex)\n\n const rawTxHex = transaction.raw_data_hex\n\n const signature = await this.ledgerApp.signTransaction(\n derivationPath,\n rawTxHex,\n [], // No token signatures for basic TRX/TRC20 sends, just pass [].\n )\n\n if (!signature) {\n throw new Error('failed signing tx by ledger')\n }\n\n return {\n ...transaction,\n signature: [signature],\n }\n }\n}\n\nexport { ClientLedger }\n"],"names":["AssetType","ExplorerProvider","Network","TronWeb","baseAmount","TxType","TW","BaseXChainClient","FeeType","mnemonicToSeedSync","HDKey","TronLedgerApp"],"mappings":"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","x_google_ignoreList":[0]}
|
package/lib/types.d.ts
CHANGED
|
@@ -4,6 +4,10 @@ import type { Contract, Types } from 'tronweb';
|
|
|
4
4
|
export type TRONClientParams = XChainClientParams & {
|
|
5
5
|
explorerProviders: ExplorerProviders;
|
|
6
6
|
};
|
|
7
|
+
export type TRONClientLedgerParams = XChainClientParams & {
|
|
8
|
+
explorerProviders: ExplorerProviders;
|
|
9
|
+
transport: any;
|
|
10
|
+
};
|
|
7
11
|
export type TronTransaction = Types.Transaction;
|
|
8
12
|
export type TronContract = Contract;
|
|
9
13
|
export type TronSignedTransaction = Types.SignedTransaction;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xchainjs/xchain-tron",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Custom Tron client and utilities used by XChainJS clients",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"XChain",
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"postversion": "git push --follow-tags"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
+
"@ledgerhq/hw-app-trx": "^6.31.8",
|
|
36
37
|
"@scure/bip32": "^1.7.0",
|
|
37
38
|
"@scure/bip39": "^1.6.0",
|
|
38
39
|
"@xchainjs/xchain-client": "^2.0.9",
|