@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.
@@ -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
@@ -1,4 +1,5 @@
1
1
  export { ClientKeystore as Client } from './clientKeystore';
2
+ export { ClientLedger } from './clientLedger';
2
3
  export { defaultTRONParams } from './client';
3
4
  export * from './const';
4
5
  export { validateAddress } from './utils';
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.getAddress(walletIndex);
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.getAddress(walletIndex);
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.getAddress(walletIndex);
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.getAddress(walletIndex);
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.getAddress(walletIndex);
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.getAddress();
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
- export { AssetTRONUSDT, AssetTRX, ClientKeystore as Client, 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
+ /**
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
@@ -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.getAddress(walletIndex);
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.getAddress(walletIndex);
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.getAddress(walletIndex);
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.getAddress(walletIndex);
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.getAddress(walletIndex);
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.getAddress();
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": "2.0.0",
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",