@xchainjs/xchain-tron 3.0.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.d.ts CHANGED
@@ -40,6 +40,10 @@ export declare abstract class Client extends BaseXChainClient {
40
40
  * @returns {boolean} `true` if the address is valid, `false` otherwise.
41
41
  */
42
42
  validateAddress(address: string): boolean;
43
+ /**
44
+ * Get token metadata from whitelist if available
45
+ */
46
+ private getTokenFromWhitelist;
43
47
  /**
44
48
  * Get token balance and info directly from contract
45
49
  */
package/lib/const.d.ts CHANGED
@@ -20,3 +20,8 @@ export declare const TRC20_TRANSFER_BANDWIDTH = 345;
20
20
  export declare const TRON_USDT_CONTRACT = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t";
21
21
  export declare const MAX_APPROVAL = "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
22
22
  export declare const TRX_FEE_LIMIT = 100000000;
23
+ export interface TokenMetadata {
24
+ symbol: string;
25
+ decimals: number;
26
+ }
27
+ export declare const TRON_TOKEN_WHITELIST: Record<string, TokenMetadata>;
package/lib/index.esm.js CHANGED
@@ -70,6 +70,12 @@ const TRC20_TRANSFER_BANDWIDTH = 345; // Bandwidth consumed by TRC20 transfer
70
70
  const TRON_USDT_CONTRACT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
71
71
  const MAX_APPROVAL = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';
72
72
  const TRX_FEE_LIMIT = 100000000;
73
+ const TRON_TOKEN_WHITELIST = {
74
+ [TRON_USDT_CONTRACT]: {
75
+ symbol: 'USDT',
76
+ decimals: 6,
77
+ },
78
+ };
73
79
 
74
80
  const validateAddress = (address) => {
75
81
  return TronWeb.isAddress(address);
@@ -500,18 +506,29 @@ class Client extends BaseXChainClient {
500
506
  * Get token balance and info directly from contract
501
507
  */
502
508
  this.fetchTokenMetadata = (_a) => __awaiter(this, [_a], void 0, function* ({ contractAddress }) {
503
- const contract = this.tronWeb.contract(trc20ABI, contractAddress);
504
- const [symbolRaw, decimalsRaw] = yield Promise.all([
505
- contract
506
- .symbol()
507
- .call()
508
- .catch(() => 'UNKNOWN'),
509
- contract
510
- .decimals()
511
- .call()
512
- .catch(() => '18'),
513
- ]);
514
- return { decimals: Number(decimalsRaw !== null && decimalsRaw !== void 0 ? decimalsRaw : 18), symbol: symbolRaw !== null && symbolRaw !== void 0 ? symbolRaw : 'UNKNOWN' };
509
+ // First check whitelist for known tokens - faster and more reliable
510
+ const whitelistData = this.getTokenFromWhitelist(contractAddress);
511
+ if (whitelistData) {
512
+ return whitelistData;
513
+ }
514
+ // Try contract calls for unknown tokens
515
+ try {
516
+ // Set address if available to avoid owner_address error
517
+ const address = yield this.getAddressAsync().catch(() => null);
518
+ if (address) {
519
+ this.tronWeb.setAddress(address);
520
+ }
521
+ const contract = this.tronWeb.contract(trc20ABI, contractAddress);
522
+ const [symbolRaw, decimalsRaw] = yield Promise.all([
523
+ contract.methods.symbol().call(),
524
+ contract.methods.decimals().call(),
525
+ ]);
526
+ return { decimals: Number(decimalsRaw !== null && decimalsRaw !== void 0 ? decimalsRaw : 18), symbol: symbolRaw !== null && symbolRaw !== void 0 ? symbolRaw : 'UNKNOWN' };
527
+ }
528
+ catch (error) {
529
+ console.warn(`Contract call failed for ${contractAddress}:`, error instanceof Error ? error.message : String(error));
530
+ return { decimals: 18, symbol: 'UNKNOWN' };
531
+ }
515
532
  });
516
533
  /**
517
534
  * Get token balance and info directly from contract
@@ -686,6 +703,12 @@ class Client extends BaseXChainClient {
686
703
  validateAddress(address) {
687
704
  return validateAddress(address);
688
705
  }
706
+ /**
707
+ * Get token metadata from whitelist if available
708
+ */
709
+ getTokenFromWhitelist(contractAddress) {
710
+ return TRON_TOKEN_WHITELIST[contractAddress] || null;
711
+ }
689
712
  /**
690
713
  * Retrieves the balance of a given address.
691
714
  * @param {Address} address - The address to retrieve the balance for.
@@ -1061,5 +1084,5 @@ class ClientLedger extends Client {
1061
1084
  }
1062
1085
  }
1063
1086
 
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 };
1087
+ export { AssetTRONUSDT, AssetTRX, ClientKeystore as Client, ClientLedger, MAX_APPROVAL, TRC20_TRANSFER_BANDWIDTH, TRC20_TRANSFER_ENERGY, TRONChain, TRON_DEFAULT_RPC, TRON_DERIVATION_PATH, TRON_TOKEN_WHITELIST, TRON_USDT_CONTRACT, TRX_DECIMAL, TRX_FEE_LIMIT, TRX_TRANSFER_BANDWIDTH, defaultTRONParams, tronExplorerProviders, validateAddress };
1065
1088
  //# 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","../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]}
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\nexport interface TokenMetadata {\n symbol: string\n decimals: number\n}\n\nexport const TRON_TOKEN_WHITELIST: Record<string, TokenMetadata> = {\n [TRON_USDT_CONTRACT]: {\n symbol: 'USDT',\n decimals: 6,\n },\n}\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 TRON_TOKEN_WHITELIST,\n TokenMetadata,\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 metadata from whitelist if available\n */\n private getTokenFromWhitelist(contractAddress: string): TokenMetadata | null {\n return TRON_TOKEN_WHITELIST[contractAddress] || null\n }\n\n /**\n * Get token balance and info directly from contract\n */\n public fetchTokenMetadata = async ({ contractAddress }: { contractAddress: string }) => {\n // First check whitelist for known tokens - faster and more reliable\n const whitelistData = this.getTokenFromWhitelist(contractAddress)\n if (whitelistData) {\n return whitelistData\n }\n\n // Try contract calls for unknown tokens\n try {\n // Set address if available to avoid owner_address error\n const address = await this.getAddressAsync().catch(() => null)\n if (address) {\n this.tronWeb.setAddress(address)\n }\n\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n const [symbolRaw, decimalsRaw] = await Promise.all([\n contract.methods.symbol().call(),\n contract.methods.decimals().call(),\n ])\n\n return { decimals: Number(decimalsRaw ?? 18), symbol: symbolRaw ?? 'UNKNOWN' }\n } catch (error) {\n console.warn(\n `Contract call failed for ${contractAddress}:`,\n error instanceof Error ? error.message : String(error),\n )\n return { decimals: 18, symbol: 'UNKNOWN' }\n }\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
@@ -77,6 +77,12 @@ const TRC20_TRANSFER_BANDWIDTH = 345; // Bandwidth consumed by TRC20 transfer
77
77
  const TRON_USDT_CONTRACT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
78
78
  const MAX_APPROVAL = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';
79
79
  const TRX_FEE_LIMIT = 100000000;
80
+ const TRON_TOKEN_WHITELIST = {
81
+ [TRON_USDT_CONTRACT]: {
82
+ symbol: 'USDT',
83
+ decimals: 6,
84
+ },
85
+ };
80
86
 
81
87
  const validateAddress = (address) => {
82
88
  return TW.TronWeb.isAddress(address);
@@ -507,18 +513,29 @@ class Client extends xchainClient.BaseXChainClient {
507
513
  * Get token balance and info directly from contract
508
514
  */
509
515
  this.fetchTokenMetadata = (_a) => __awaiter(this, [_a], void 0, function* ({ contractAddress }) {
510
- const contract = this.tronWeb.contract(trc20ABI, contractAddress);
511
- const [symbolRaw, decimalsRaw] = yield Promise.all([
512
- contract
513
- .symbol()
514
- .call()
515
- .catch(() => 'UNKNOWN'),
516
- contract
517
- .decimals()
518
- .call()
519
- .catch(() => '18'),
520
- ]);
521
- return { decimals: Number(decimalsRaw !== null && decimalsRaw !== void 0 ? decimalsRaw : 18), symbol: symbolRaw !== null && symbolRaw !== void 0 ? symbolRaw : 'UNKNOWN' };
516
+ // First check whitelist for known tokens - faster and more reliable
517
+ const whitelistData = this.getTokenFromWhitelist(contractAddress);
518
+ if (whitelistData) {
519
+ return whitelistData;
520
+ }
521
+ // Try contract calls for unknown tokens
522
+ try {
523
+ // Set address if available to avoid owner_address error
524
+ const address = yield this.getAddressAsync().catch(() => null);
525
+ if (address) {
526
+ this.tronWeb.setAddress(address);
527
+ }
528
+ const contract = this.tronWeb.contract(trc20ABI, contractAddress);
529
+ const [symbolRaw, decimalsRaw] = yield Promise.all([
530
+ contract.methods.symbol().call(),
531
+ contract.methods.decimals().call(),
532
+ ]);
533
+ return { decimals: Number(decimalsRaw !== null && decimalsRaw !== void 0 ? decimalsRaw : 18), symbol: symbolRaw !== null && symbolRaw !== void 0 ? symbolRaw : 'UNKNOWN' };
534
+ }
535
+ catch (error) {
536
+ console.warn(`Contract call failed for ${contractAddress}:`, error instanceof Error ? error.message : String(error));
537
+ return { decimals: 18, symbol: 'UNKNOWN' };
538
+ }
522
539
  });
523
540
  /**
524
541
  * Get token balance and info directly from contract
@@ -693,6 +710,12 @@ class Client extends xchainClient.BaseXChainClient {
693
710
  validateAddress(address) {
694
711
  return validateAddress(address);
695
712
  }
713
+ /**
714
+ * Get token metadata from whitelist if available
715
+ */
716
+ getTokenFromWhitelist(contractAddress) {
717
+ return TRON_TOKEN_WHITELIST[contractAddress] || null;
718
+ }
696
719
  /**
697
720
  * Retrieves the balance of a given address.
698
721
  * @param {Address} address - The address to retrieve the balance for.
@@ -1078,6 +1101,7 @@ exports.TRC20_TRANSFER_ENERGY = TRC20_TRANSFER_ENERGY;
1078
1101
  exports.TRONChain = TRONChain;
1079
1102
  exports.TRON_DEFAULT_RPC = TRON_DEFAULT_RPC;
1080
1103
  exports.TRON_DERIVATION_PATH = TRON_DERIVATION_PATH;
1104
+ exports.TRON_TOKEN_WHITELIST = TRON_TOKEN_WHITELIST;
1081
1105
  exports.TRON_USDT_CONTRACT = TRON_USDT_CONTRACT;
1082
1106
  exports.TRX_DECIMAL = TRX_DECIMAL;
1083
1107
  exports.TRX_FEE_LIMIT = TRX_FEE_LIMIT;
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","../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]}
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\nexport interface TokenMetadata {\n symbol: string\n decimals: number\n}\n\nexport const TRON_TOKEN_WHITELIST: Record<string, TokenMetadata> = {\n [TRON_USDT_CONTRACT]: {\n symbol: 'USDT',\n decimals: 6,\n },\n}\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 TRON_TOKEN_WHITELIST,\n TokenMetadata,\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 metadata from whitelist if available\n */\n private getTokenFromWhitelist(contractAddress: string): TokenMetadata | null {\n return TRON_TOKEN_WHITELIST[contractAddress] || null\n }\n\n /**\n * Get token balance and info directly from contract\n */\n public fetchTokenMetadata = async ({ contractAddress }: { contractAddress: string }) => {\n // First check whitelist for known tokens - faster and more reliable\n const whitelistData = this.getTokenFromWhitelist(contractAddress)\n if (whitelistData) {\n return whitelistData\n }\n\n // Try contract calls for unknown tokens\n try {\n // Set address if available to avoid owner_address error\n const address = await this.getAddressAsync().catch(() => null)\n if (address) {\n this.tronWeb.setAddress(address)\n }\n\n const contract = this.tronWeb.contract(trc20ABI, contractAddress)\n\n const [symbolRaw, decimalsRaw] = await Promise.all([\n contract.methods.symbol().call(),\n contract.methods.decimals().call(),\n ])\n\n return { decimals: Number(decimalsRaw ?? 18), symbol: symbolRaw ?? 'UNKNOWN' }\n } catch (error) {\n console.warn(\n `Contract call failed for ${contractAddress}:`,\n error instanceof Error ? error.message : String(error),\n )\n return { decimals: 18, symbol: 'UNKNOWN' }\n }\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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xchainjs/xchain-tron",
3
- "version": "3.0.0",
3
+ "version": "3.0.2",
4
4
  "description": "Custom Tron client and utilities used by XChainJS clients",
5
5
  "keywords": [
6
6
  "XChain",
@@ -36,7 +36,7 @@
36
36
  "@ledgerhq/hw-app-trx": "^6.31.8",
37
37
  "@scure/bip32": "^1.7.0",
38
38
  "@scure/bip39": "^1.6.0",
39
- "@xchainjs/xchain-client": "^2.0.9",
39
+ "@xchainjs/xchain-client": "^2.0.10",
40
40
  "@xchainjs/xchain-crypto": "^1.0.6",
41
41
  "@xchainjs/xchain-util": "^2.0.5",
42
42
  "tronweb": "^6.0.4"