@xchainjs/xchain-tron 3.0.2 → 3.0.3
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 +6 -0
- package/lib/index.esm.js +26 -5
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +26 -5
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/lib/client.d.ts
CHANGED
|
@@ -107,6 +107,12 @@ export declare abstract class Client extends BaseXChainClient {
|
|
|
107
107
|
* @returns Transaction signed by phrase
|
|
108
108
|
*/
|
|
109
109
|
abstract signTransaction(transaction: TronTransaction, walletIndex?: number): Promise<TronSignedTransaction>;
|
|
110
|
+
/**
|
|
111
|
+
* Decode TRON error message from hex to UTF-8
|
|
112
|
+
* @param message Hex-encoded error message from TRON node
|
|
113
|
+
* @returns Decoded error message or fallback
|
|
114
|
+
*/
|
|
115
|
+
private decodeTronError;
|
|
110
116
|
/**
|
|
111
117
|
* Transfer TRON Asset
|
|
112
118
|
* @param {TxParams} params The transfer options.
|
package/lib/index.esm.js
CHANGED
|
@@ -853,6 +853,21 @@ class Client extends BaseXChainClient {
|
|
|
853
853
|
};
|
|
854
854
|
});
|
|
855
855
|
}
|
|
856
|
+
/**
|
|
857
|
+
* Decode TRON error message from hex to UTF-8
|
|
858
|
+
* @param message Hex-encoded error message from TRON node
|
|
859
|
+
* @returns Decoded error message or fallback
|
|
860
|
+
*/
|
|
861
|
+
decodeTronError(message) {
|
|
862
|
+
if (!message)
|
|
863
|
+
return 'Transaction failed';
|
|
864
|
+
try {
|
|
865
|
+
return Buffer.from(message, 'hex').toString('utf8');
|
|
866
|
+
}
|
|
867
|
+
catch (_a) {
|
|
868
|
+
return message;
|
|
869
|
+
}
|
|
870
|
+
}
|
|
856
871
|
/**
|
|
857
872
|
* Transfer TRON Asset
|
|
858
873
|
* @param {TxParams} params The transfer options.
|
|
@@ -871,19 +886,25 @@ class Client extends BaseXChainClient {
|
|
|
871
886
|
if (memo) {
|
|
872
887
|
const transactionWithMemo = yield this.tronWeb.transactionBuilder.addUpdateData(transaction, memo, 'utf8');
|
|
873
888
|
const signedTx = yield this.signTransaction(transactionWithMemo, walletIndex);
|
|
874
|
-
const { txid } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
889
|
+
const { result, txid, message } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
890
|
+
if (!result) {
|
|
891
|
+
throw new Error(this.decodeTronError(message));
|
|
892
|
+
}
|
|
875
893
|
return txid;
|
|
876
894
|
}
|
|
877
895
|
const signedTx = yield this.signTransaction(transaction, walletIndex);
|
|
878
|
-
const { txid } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
896
|
+
const { result, txid, message } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
897
|
+
if (!result) {
|
|
898
|
+
throw new Error(this.decodeTronError(message));
|
|
899
|
+
}
|
|
879
900
|
return txid;
|
|
880
901
|
}
|
|
881
902
|
// TRC20 Token Transfer - always use createTransaction + sign pattern
|
|
882
903
|
const transaction = yield this.createTransaction(params);
|
|
883
904
|
const signedTx = yield this.signTransaction(transaction, walletIndex);
|
|
884
|
-
const { txid } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
885
|
-
if (!
|
|
886
|
-
throw new Error(
|
|
905
|
+
const { result, txid, message } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
906
|
+
if (!result) {
|
|
907
|
+
throw new Error(this.decodeTronError(message));
|
|
887
908
|
}
|
|
888
909
|
return txid;
|
|
889
910
|
});
|
package/lib/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../node_modules/tslib/tslib.es6.js","../src/const.ts","../src/utils/index.ts","../src/utils/trongrid/trongrid.ts","../src/client.ts","../src/clientKeystore.ts","../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]}
|
|
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 * Decode TRON error message from hex to UTF-8\n * @param message Hex-encoded error message from TRON node\n * @returns Decoded error message or fallback\n */\n private decodeTronError(message?: string): string {\n if (!message) return 'Transaction failed'\n try {\n return Buffer.from(message, 'hex').toString('utf8')\n } catch {\n return message\n }\n }\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 { result, txid, message } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n if (!result) {\n throw new Error(this.decodeTronError(message))\n }\n return txid\n }\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { result, txid, message } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n if (!result) {\n throw new Error(this.decodeTronError(message))\n }\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 { result, txid, message } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n if (!result) {\n throw new Error(this.decodeTronError(message))\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
|
@@ -860,6 +860,21 @@ class Client extends xchainClient.BaseXChainClient {
|
|
|
860
860
|
};
|
|
861
861
|
});
|
|
862
862
|
}
|
|
863
|
+
/**
|
|
864
|
+
* Decode TRON error message from hex to UTF-8
|
|
865
|
+
* @param message Hex-encoded error message from TRON node
|
|
866
|
+
* @returns Decoded error message or fallback
|
|
867
|
+
*/
|
|
868
|
+
decodeTronError(message) {
|
|
869
|
+
if (!message)
|
|
870
|
+
return 'Transaction failed';
|
|
871
|
+
try {
|
|
872
|
+
return Buffer.from(message, 'hex').toString('utf8');
|
|
873
|
+
}
|
|
874
|
+
catch (_a) {
|
|
875
|
+
return message;
|
|
876
|
+
}
|
|
877
|
+
}
|
|
863
878
|
/**
|
|
864
879
|
* Transfer TRON Asset
|
|
865
880
|
* @param {TxParams} params The transfer options.
|
|
@@ -878,19 +893,25 @@ class Client extends xchainClient.BaseXChainClient {
|
|
|
878
893
|
if (memo) {
|
|
879
894
|
const transactionWithMemo = yield this.tronWeb.transactionBuilder.addUpdateData(transaction, memo, 'utf8');
|
|
880
895
|
const signedTx = yield this.signTransaction(transactionWithMemo, walletIndex);
|
|
881
|
-
const { txid } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
896
|
+
const { result, txid, message } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
897
|
+
if (!result) {
|
|
898
|
+
throw new Error(this.decodeTronError(message));
|
|
899
|
+
}
|
|
882
900
|
return txid;
|
|
883
901
|
}
|
|
884
902
|
const signedTx = yield this.signTransaction(transaction, walletIndex);
|
|
885
|
-
const { txid } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
903
|
+
const { result, txid, message } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
904
|
+
if (!result) {
|
|
905
|
+
throw new Error(this.decodeTronError(message));
|
|
906
|
+
}
|
|
886
907
|
return txid;
|
|
887
908
|
}
|
|
888
909
|
// TRC20 Token Transfer - always use createTransaction + sign pattern
|
|
889
910
|
const transaction = yield this.createTransaction(params);
|
|
890
911
|
const signedTx = yield this.signTransaction(transaction, walletIndex);
|
|
891
|
-
const { txid } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
892
|
-
if (!
|
|
893
|
-
throw new Error(
|
|
912
|
+
const { result, txid, message } = yield this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
913
|
+
if (!result) {
|
|
914
|
+
throw new Error(this.decodeTronError(message));
|
|
894
915
|
}
|
|
895
916
|
return txid;
|
|
896
917
|
});
|
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\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]}
|
|
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 * Decode TRON error message from hex to UTF-8\n * @param message Hex-encoded error message from TRON node\n * @returns Decoded error message or fallback\n */\n private decodeTronError(message?: string): string {\n if (!message) return 'Transaction failed'\n try {\n return Buffer.from(message, 'hex').toString('utf8')\n } catch {\n return message\n }\n }\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 { result, txid, message } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n if (!result) {\n throw new Error(this.decodeTronError(message))\n }\n return txid\n }\n\n const signedTx = await this.signTransaction(transaction, walletIndex)\n const { result, txid, message } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n if (!result) {\n throw new Error(this.decodeTronError(message))\n }\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 { result, txid, message } = await this.tronWeb.trx.sendRawTransaction(signedTx)\n if (!result) {\n throw new Error(this.decodeTronError(message))\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]}
|