@lifi/sdk-provider-tron 4.0.0-alpha.21 → 4.0.0-alpha.22

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.
Files changed (107) hide show
  1. package/dist/cjs/actions/getTronBalance.js +29 -43
  2. package/dist/cjs/actions/getTronBalance.js.map +1 -1
  3. package/dist/cjs/actions/resolveTronAddress.d.ts +1 -1
  4. package/dist/cjs/actions/resolveTronAddress.js +2 -2
  5. package/dist/cjs/actions/resolveTronAddress.js.map +1 -1
  6. package/dist/cjs/core/TronStepExecutor.js +20 -3
  7. package/dist/cjs/core/TronStepExecutor.js.map +1 -1
  8. package/dist/cjs/core/constants.d.ts +2 -0
  9. package/dist/cjs/core/constants.js +6 -0
  10. package/dist/cjs/core/constants.js.map +1 -0
  11. package/dist/cjs/core/tasks/TronCheckAllowanceTask.d.ts +6 -0
  12. package/dist/cjs/core/tasks/TronCheckAllowanceTask.js +45 -0
  13. package/dist/cjs/core/tasks/TronCheckAllowanceTask.js.map +1 -0
  14. package/dist/cjs/core/tasks/TronSetAllowanceTask.d.ts +6 -0
  15. package/dist/cjs/core/tasks/TronSetAllowanceTask.js +78 -0
  16. package/dist/cjs/core/tasks/TronSetAllowanceTask.js.map +1 -0
  17. package/dist/cjs/core/tasks/TronSignAndExecuteTask.js +22 -4
  18. package/dist/cjs/core/tasks/TronSignAndExecuteTask.js.map +1 -1
  19. package/dist/cjs/core/tasks/TronWaitForTransactionTask.js +14 -12
  20. package/dist/cjs/core/tasks/TronWaitForTransactionTask.js.map +1 -1
  21. package/dist/cjs/errors/parseTronErrors.js +8 -0
  22. package/dist/cjs/errors/parseTronErrors.js.map +1 -1
  23. package/dist/cjs/rpc/callTronRpcsWithRetry.d.ts +3 -0
  24. package/dist/cjs/rpc/callTronRpcsWithRetry.js +22 -0
  25. package/dist/cjs/rpc/callTronRpcsWithRetry.js.map +1 -0
  26. package/dist/cjs/types.d.ts +2 -2
  27. package/dist/cjs/types.js.map +1 -1
  28. package/dist/cjs/utils/isZeroAddress.d.ts +3 -0
  29. package/dist/cjs/utils/isZeroAddress.js +8 -0
  30. package/dist/cjs/utils/isZeroAddress.js.map +1 -0
  31. package/dist/cjs/utils/stripHexPrefix.d.ts +1 -0
  32. package/dist/cjs/utils/stripHexPrefix.js +6 -0
  33. package/dist/cjs/utils/stripHexPrefix.js.map +1 -0
  34. package/dist/cjs/version.d.ts +1 -1
  35. package/dist/cjs/version.js +1 -1
  36. package/dist/esm/actions/getTronBalance.js +29 -44
  37. package/dist/esm/actions/getTronBalance.js.map +1 -1
  38. package/dist/esm/actions/resolveTronAddress.d.ts +1 -1
  39. package/dist/esm/actions/resolveTronAddress.js +3 -3
  40. package/dist/esm/actions/resolveTronAddress.js.map +1 -1
  41. package/dist/esm/core/TronStepExecutor.js +20 -3
  42. package/dist/esm/core/TronStepExecutor.js.map +1 -1
  43. package/dist/esm/core/constants.d.ts +2 -0
  44. package/dist/esm/core/constants.js +3 -0
  45. package/dist/esm/core/constants.js.map +1 -0
  46. package/dist/esm/core/tasks/TronCheckAllowanceTask.d.ts +6 -0
  47. package/dist/esm/core/tasks/TronCheckAllowanceTask.js +41 -0
  48. package/dist/esm/core/tasks/TronCheckAllowanceTask.js.map +1 -0
  49. package/dist/esm/core/tasks/TronSetAllowanceTask.d.ts +6 -0
  50. package/dist/esm/core/tasks/TronSetAllowanceTask.js +75 -0
  51. package/dist/esm/core/tasks/TronSetAllowanceTask.js.map +1 -0
  52. package/dist/esm/core/tasks/TronSignAndExecuteTask.js +23 -5
  53. package/dist/esm/core/tasks/TronSignAndExecuteTask.js.map +1 -1
  54. package/dist/esm/core/tasks/TronWaitForTransactionTask.js +14 -12
  55. package/dist/esm/core/tasks/TronWaitForTransactionTask.js.map +1 -1
  56. package/dist/esm/errors/parseTronErrors.js +9 -0
  57. package/dist/esm/errors/parseTronErrors.js.map +1 -1
  58. package/dist/esm/rpc/callTronRpcsWithRetry.d.ts +3 -0
  59. package/dist/esm/rpc/callTronRpcsWithRetry.js +19 -0
  60. package/dist/esm/rpc/callTronRpcsWithRetry.js.map +1 -0
  61. package/dist/esm/types.d.ts +2 -2
  62. package/dist/esm/types.js.map +1 -1
  63. package/dist/esm/utils/isZeroAddress.d.ts +3 -0
  64. package/dist/esm/utils/isZeroAddress.js +4 -0
  65. package/dist/esm/utils/isZeroAddress.js.map +1 -0
  66. package/dist/esm/utils/stripHexPrefix.d.ts +1 -0
  67. package/dist/esm/utils/stripHexPrefix.js +2 -0
  68. package/dist/esm/utils/stripHexPrefix.js.map +1 -0
  69. package/dist/esm/version.d.ts +1 -1
  70. package/dist/esm/version.js +1 -1
  71. package/dist/types/actions/getTronBalance.d.ts.map +1 -1
  72. package/dist/types/actions/resolveTronAddress.d.ts +1 -1
  73. package/dist/types/actions/resolveTronAddress.d.ts.map +1 -1
  74. package/dist/types/core/TronStepExecutor.d.ts.map +1 -1
  75. package/dist/types/core/constants.d.ts +3 -0
  76. package/dist/types/core/constants.d.ts.map +1 -0
  77. package/dist/types/core/tasks/TronCheckAllowanceTask.d.ts +7 -0
  78. package/dist/types/core/tasks/TronCheckAllowanceTask.d.ts.map +1 -0
  79. package/dist/types/core/tasks/TronSetAllowanceTask.d.ts +7 -0
  80. package/dist/types/core/tasks/TronSetAllowanceTask.d.ts.map +1 -0
  81. package/dist/types/core/tasks/TronSignAndExecuteTask.d.ts.map +1 -1
  82. package/dist/types/core/tasks/TronWaitForTransactionTask.d.ts.map +1 -1
  83. package/dist/types/errors/parseTronErrors.d.ts.map +1 -1
  84. package/dist/types/rpc/callTronRpcsWithRetry.d.ts +4 -0
  85. package/dist/types/rpc/callTronRpcsWithRetry.d.ts.map +1 -0
  86. package/dist/types/types.d.ts +2 -2
  87. package/dist/types/types.d.ts.map +1 -1
  88. package/dist/types/utils/isZeroAddress.d.ts +4 -0
  89. package/dist/types/utils/isZeroAddress.d.ts.map +1 -0
  90. package/dist/types/utils/stripHexPrefix.d.ts +2 -0
  91. package/dist/types/utils/stripHexPrefix.d.ts.map +1 -0
  92. package/dist/types/version.d.ts +1 -1
  93. package/package.json +2 -2
  94. package/src/actions/getTronBalance.ts +35 -60
  95. package/src/actions/resolveTronAddress.ts +3 -5
  96. package/src/core/TronStepExecutor.ts +22 -4
  97. package/src/core/constants.ts +2 -0
  98. package/src/core/tasks/TronCheckAllowanceTask.ts +61 -0
  99. package/src/core/tasks/TronSetAllowanceTask.ts +131 -0
  100. package/src/core/tasks/TronSignAndExecuteTask.ts +35 -15
  101. package/src/core/tasks/TronWaitForTransactionTask.ts +28 -18
  102. package/src/errors/parseTronErrors.ts +20 -0
  103. package/src/rpc/callTronRpcsWithRetry.ts +24 -0
  104. package/src/types.ts +5 -2
  105. package/src/utils/isZeroAddress.ts +5 -0
  106. package/src/utils/stripHexPrefix.ts +2 -0
  107. package/src/version.ts +1 -1
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTronBalance = void 0;
4
4
  const sdk_1 = require("@lifi/sdk");
5
- const tronweb_1 = require("tronweb");
5
+ const callTronRpcsWithRetry_js_1 = require("../rpc/callTronRpcsWithRetry.js");
6
+ const isZeroAddress_js_1 = require("../utils/isZeroAddress.js");
6
7
  const getTronBalance = async (client, walletAddress, tokens) => {
7
8
  if (tokens.length === 0) {
8
9
  return [];
@@ -17,56 +18,41 @@ const getTronBalance = async (client, walletAddress, tokens) => {
17
18
  };
18
19
  exports.getTronBalance = getTronBalance;
19
20
  const getTronBalanceDefault = async (client, tokens, walletAddress) => {
20
- const rpcUrls = await client.getRpcUrlsByChainId(tokens[0].chainId);
21
- const fullHost = rpcUrls[0] || 'https://api.trongrid.io';
22
- const tronWeb = new tronweb_1.TronWeb({ fullHost });
23
- const [trxBalance, currentBlock] = await Promise.allSettled([
24
- (0, sdk_1.withDedupe)(() => tronWeb.trx.getBalance(walletAddress), {
25
- id: `${getTronBalanceDefault.name}.getBalance`,
26
- }),
27
- (0, sdk_1.withDedupe)(() => tronWeb.trx.getCurrentBlock(), {
28
- id: `${getTronBalanceDefault.name}.getCurrentBlock`,
29
- }),
30
- ]);
31
- const nativeBalance = trxBalance.status === 'fulfilled' ? BigInt(trxBalance.value) : 0n;
32
- const blockNumber = currentBlock.status === 'fulfilled'
33
- ? BigInt(currentBlock.value.block_header?.raw_data?.number ?? 0)
34
- : 0n;
35
- const walletTokenAmounts = {};
36
- const nativeTokens = tokens.filter((token) => token.address === 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' ||
37
- token.address === '0x0000000000000000000000000000000000000000');
38
- const trc20Tokens = tokens.filter((token) => token.address !== 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' &&
39
- token.address !== '0x0000000000000000000000000000000000000000');
40
- for (const token of nativeTokens) {
41
- walletTokenAmounts[token.address] = nativeBalance;
42
- }
43
- if (trc20Tokens.length > 0) {
44
- const trc20Balances = await Promise.allSettled(trc20Tokens.map((token) => (0, sdk_1.withDedupe)(async () => {
45
- const contract = await tronWeb.contract().at(token.address);
46
- const balance = await contract.balanceOf(walletAddress).call();
47
- return {
48
- address: token.address,
49
- balance: BigInt(balance.toString()),
50
- };
51
- }, {
52
- id: `${getTronBalanceDefault.name}.balanceOf.${token.address}`,
53
- })));
54
- for (const result of trc20Balances) {
55
- if (result.status === 'fulfilled' && result.value.balance > 0n) {
56
- walletTokenAmounts[result.value.address] = result.value.balance;
21
+ const [blockNumber, results] = await (0, callTronRpcsWithRetry_js_1.callTronRpcsWithRetry)(client, async (tronWeb) => {
22
+ const host = tronWeb.fullNode.host;
23
+ const queue = tokens.map((token) => {
24
+ if ((0, isZeroAddress_js_1.isZeroAddress)(token.address)) {
25
+ return (0, sdk_1.withDedupe)(async () => BigInt(await tronWeb.trx.getBalance(walletAddress)), { id: `${getTronBalanceDefault.name}.getBalance.${host}` });
57
26
  }
58
- }
59
- }
60
- const tokenAmounts = tokens.map((token) => {
61
- if (walletTokenAmounts[token.address]) {
27
+ return (0, sdk_1.withDedupe)(async () => {
28
+ const contract = await tronWeb.contract().at(token.address);
29
+ const balance = await contract
30
+ .balanceOf(walletAddress)
31
+ .call({ from: walletAddress });
32
+ return BigInt(balance.toString());
33
+ }, {
34
+ id: `${getTronBalanceDefault.name}.balanceOf.${token.address}.${host}`,
35
+ });
36
+ });
37
+ return Promise.all([
38
+ (0, sdk_1.withDedupe)(async () => {
39
+ const block = await tronWeb.trx.getCurrentBlock();
40
+ return BigInt(block.block_header?.raw_data?.number ?? 0);
41
+ }, { id: `${getTronBalanceDefault.name}.getCurrentBlock.${host}` }),
42
+ Promise.allSettled(queue),
43
+ ]);
44
+ });
45
+ const tokenAmounts = tokens.map((token, index) => {
46
+ const result = results[index];
47
+ if (result.status === 'rejected') {
62
48
  return {
63
49
  ...token,
64
- amount: walletTokenAmounts[token.address],
65
50
  blockNumber,
66
51
  };
67
52
  }
68
53
  return {
69
54
  ...token,
55
+ amount: result.value,
70
56
  blockNumber,
71
57
  };
72
58
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getTronBalance.js","sourceRoot":"","sources":["../../../src/actions/getTronBalance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getTronBalance.js","sourceRoot":"","sources":["../../../src/actions/getTronBalance.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare function resolveTronAddress(_name: string): Promise<string | undefined>;
1
+ export declare function resolveTronAddress(name: string): Promise<string>;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveTronAddress = resolveTronAddress;
4
- async function resolveTronAddress(_name) {
5
- return undefined;
4
+ async function resolveTronAddress(name) {
5
+ return name;
6
6
  }
7
7
  //# sourceMappingURL=resolveTronAddress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveTronAddress.js","sourceRoot":"","sources":["../../../src/actions/resolveTronAddress.ts"],"names":[],"mappings":";;AAAA,gDAKC;AALM,KAAK,UAAU,kBAAkB,CACtC,KAAa;IAGb,OAAO,SAAS,CAAA;AAClB,CAAC"}
1
+ {"version":3,"file":"resolveTronAddress.js","sourceRoot":"","sources":["../../../src/actions/resolveTronAddress.ts"],"names":[],"mappings":";;AAAA,gDAGC;AAHM,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAEnD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TronStepExecutor = void 0;
4
4
  const sdk_1 = require("@lifi/sdk");
5
5
  const parseTronErrors_js_1 = require("../errors/parseTronErrors.js");
6
+ const isZeroAddress_js_1 = require("../utils/isZeroAddress.js");
7
+ const TronCheckAllowanceTask_js_1 = require("./tasks/TronCheckAllowanceTask.js");
8
+ const TronSetAllowanceTask_js_1 = require("./tasks/TronSetAllowanceTask.js");
6
9
  const TronSignAndExecuteTask_js_1 = require("./tasks/TronSignAndExecuteTask.js");
7
10
  const TronWaitForTransactionTask_js_1 = require("./tasks/TronWaitForTransactionTask.js");
8
11
  class TronStepExecutor extends sdk_1.BaseStepExecutor {
@@ -27,7 +30,10 @@ class TronStepExecutor extends sdk_1.BaseStepExecutor {
27
30
  };
28
31
  createPipeline = (context) => {
29
32
  const { step, isBridgeExecution } = context;
33
+ const isFromNativeToken = (0, isZeroAddress_js_1.isZeroAddress)(step.action.fromToken.address);
30
34
  const tasks = [
35
+ new TronCheckAllowanceTask_js_1.TronCheckAllowanceTask(),
36
+ new TronSetAllowanceTask_js_1.TronSetAllowanceTask(),
31
37
  new sdk_1.CheckBalanceTask(),
32
38
  new sdk_1.PrepareTransactionTask(),
33
39
  new TronSignAndExecuteTask_js_1.TronSignAndExecuteTask(),
@@ -35,9 +41,20 @@ class TronStepExecutor extends sdk_1.BaseStepExecutor {
35
41
  new sdk_1.WaitForTransactionStatusTask(isBridgeExecution ? 'RECEIVING_CHAIN' : 'SWAP'),
36
42
  ];
37
43
  const swapOrBridgeAction = this.statusManager.findAction(step, isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP');
38
- const taskName = swapOrBridgeAction?.txHash && swapOrBridgeAction?.status === 'DONE'
39
- ? sdk_1.WaitForTransactionStatusTask.name
40
- : sdk_1.CheckBalanceTask.name;
44
+ const doCheckAllowance = !swapOrBridgeAction?.txHash &&
45
+ !isFromNativeToken &&
46
+ !!step.estimate.approvalAddress &&
47
+ !step.estimate.skipApproval;
48
+ let taskName;
49
+ if (doCheckAllowance) {
50
+ taskName = TronCheckAllowanceTask_js_1.TronCheckAllowanceTask.name;
51
+ }
52
+ else {
53
+ taskName =
54
+ swapOrBridgeAction?.txHash && swapOrBridgeAction?.status === 'DONE'
55
+ ? sdk_1.WaitForTransactionStatusTask.name
56
+ : sdk_1.CheckBalanceTask.name;
57
+ }
41
58
  const firstTaskIndex = tasks.findIndex((task) => task.constructor.name === taskName);
42
59
  const tasksToRun = tasks.slice(firstTaskIndex);
43
60
  return new sdk_1.TaskPipeline(tasksToRun);
@@ -1 +1 @@
1
- {"version":3,"file":"TronStepExecutor.js","sourceRoot":"","sources":["../../../src/core/TronStepExecutor.ts"],"names":[],"mappings":";;;AAAA,mCAYkB;AAElB,qEAA8D;AAK9D,iFAA0E;AAC1E,yFAAkF;AAElF,MAAa,gBAAiB,SAAQ,sBAAgB;IAC5C,MAAM,CAAS;IAEvB,YAAY,OAAgC;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC9B,CAAC;IAED,WAAW,GAAG,CAAC,IAAsB,EAAE,EAAE;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QACnC,IAAI,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,IAAI,sBAAgB,CACxB,mBAAa,CAAC,4BAA4B,EAC1C,mHAAmH,CACpH,CAAA;QACH,CAAC;IACH,CAAC,CAAA;IAEQ,WAAW,GAAG,CACrB,KAAY,EACZ,IAAuB,EACvB,MAAwB,EACL,EAAE,CAAC,IAAA,oCAAe,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAEnD,aAAa,GAAG,KAAK,EAC5B,WAAoC,EACF,EAAE;QACpC,OAAO;YACL,GAAG,WAAW;YACd,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAA;IACH,CAAC,CAAA;IAEQ,cAAc,GAAG,CAAC,OAAgC,EAAE,EAAE;QAC7D,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAA;QAE3C,MAAM,KAAK,GAAG;YACZ,IAAI,sBAAgB,EAAE;YACtB,IAAI,4BAAsB,EAAE;YAC5B,IAAI,kDAAsB,EAAE;YAC5B,IAAI,0DAA0B,EAAE;YAChC,IAAI,kCAA4B,CAC9B,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAC/C;SACF,CAAA;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CACtD,IAAI,EACJ,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAC3C,CAAA;QAED,MAAM,QAAQ,GACZ,kBAAkB,EAAE,MAAM,IAAI,kBAAkB,EAAE,MAAM,KAAK,MAAM;YACjE,CAAC,CAAC,kCAA4B,CAAC,IAAI;YACnC,CAAC,CAAC,sBAAgB,CAAC,IAAI,CAAA;QAE3B,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAC7C,CAAA;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QAE9C,OAAO,IAAI,kBAAY,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC,CAAA;CACF;AAjED,4CAiEC"}
1
+ {"version":3,"file":"TronStepExecutor.js","sourceRoot":"","sources":["../../../src/core/TronStepExecutor.ts"],"names":[],"mappings":";;;AAAA,mCAYkB;AAElB,qEAA8D;AAK9D,gEAAyD;AACzD,iFAA0E;AAC1E,6EAAsE;AACtE,iFAA0E;AAC1E,yFAAkF;AAElF,MAAa,gBAAiB,SAAQ,sBAAgB;IAC5C,MAAM,CAAS;IAEvB,YAAY,OAAgC;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC9B,CAAC;IAED,WAAW,GAAG,CAAC,IAAsB,EAAE,EAAE;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QACnC,IAAI,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,IAAI,sBAAgB,CACxB,mBAAa,CAAC,4BAA4B,EAC1C,mHAAmH,CACpH,CAAA;QACH,CAAC;IACH,CAAC,CAAA;IAEQ,WAAW,GAAG,CACrB,KAAY,EACZ,IAAuB,EACvB,MAAwB,EACL,EAAE,CAAC,IAAA,oCAAe,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAEnD,aAAa,GAAG,KAAK,EAC5B,WAAoC,EACF,EAAE;QACpC,OAAO;YACL,GAAG,WAAW;YACd,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAA;IACH,CAAC,CAAA;IAEQ,cAAc,GAAG,CAAC,OAAgC,EAAE,EAAE;QAC7D,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAA;QAE3C,MAAM,iBAAiB,GAAG,IAAA,gCAAa,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAEtE,MAAM,KAAK,GAAG;YACZ,IAAI,kDAAsB,EAAE;YAC5B,IAAI,8CAAoB,EAAE;YAC1B,IAAI,sBAAgB,EAAE;YACtB,IAAI,4BAAsB,EAAE;YAC5B,IAAI,kDAAsB,EAAE;YAC5B,IAAI,0DAA0B,EAAE;YAChC,IAAI,kCAA4B,CAC9B,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAC/C;SACF,CAAA;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CACtD,IAAI,EACJ,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAC3C,CAAA;QAED,MAAM,gBAAgB,GACpB,CAAC,kBAAkB,EAAE,MAAM;YAC3B,CAAC,iBAAiB;YAClB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe;YAC/B,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA;QAE7B,IAAI,QAAgB,CAAA;QACpB,IAAI,gBAAgB,EAAE,CAAC;YACrB,QAAQ,GAAG,kDAAsB,CAAC,IAAI,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,QAAQ;gBACN,kBAAkB,EAAE,MAAM,IAAI,kBAAkB,EAAE,MAAM,KAAK,MAAM;oBACjE,CAAC,CAAC,kCAA4B,CAAC,IAAI;oBACnC,CAAC,CAAC,sBAAgB,CAAC,IAAI,CAAA;QAC7B,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAC7C,CAAA;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QAE9C,OAAO,IAAI,kBAAY,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC,CAAA;CACF;AAhFD,4CAgFC"}
@@ -0,0 +1,2 @@
1
+ export declare const TRON_POLL_INTERVAL_MS = 3000;
2
+ export declare const TRON_POLL_MAX_RETRIES = 20;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TRON_POLL_MAX_RETRIES = exports.TRON_POLL_INTERVAL_MS = void 0;
4
+ exports.TRON_POLL_INTERVAL_MS = 3000;
5
+ exports.TRON_POLL_MAX_RETRIES = 20;
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,IAAI,CAAA;AAC5B,QAAA,qBAAqB,GAAG,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { BaseStepExecutionTask, type TaskResult } from '@lifi/sdk';
2
+ import type { TronStepExecutorContext } from '../../types.js';
3
+ export declare class TronCheckAllowanceTask extends BaseStepExecutionTask {
4
+ shouldRun(context: TronStepExecutorContext): Promise<boolean>;
5
+ run(context: TronStepExecutorContext): Promise<TaskResult>;
6
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TronCheckAllowanceTask = void 0;
4
+ const sdk_1 = require("@lifi/sdk");
5
+ const callTronRpcsWithRetry_js_1 = require("../../rpc/callTronRpcsWithRetry.js");
6
+ class TronCheckAllowanceTask extends sdk_1.BaseStepExecutionTask {
7
+ async shouldRun(context) {
8
+ return !context.hasSufficientAllowance;
9
+ }
10
+ async run(context) {
11
+ const { step, client, wallet, statusManager } = context;
12
+ const action = statusManager.initializeAction({
13
+ step,
14
+ type: 'CHECK_ALLOWANCE',
15
+ chainId: step.action.fromChainId,
16
+ status: 'STARTED',
17
+ });
18
+ if (!wallet.address) {
19
+ throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.WalletChangedDuringExecution, 'Wallet address is not available. Wallet may have been disconnected.');
20
+ }
21
+ if (!step.estimate.approvalAddress) {
22
+ throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionUnprepared, 'Approval address is not available.');
23
+ }
24
+ const ownerAddress = wallet.address;
25
+ const tokenAddress = step.action.fromToken.address;
26
+ const spenderAddress = step.estimate.approvalAddress;
27
+ const fromAmount = BigInt(step.action.fromAmount);
28
+ const allowance = await (0, callTronRpcsWithRetry_js_1.callTronRpcsWithRetry)(client, async (tronWeb) => {
29
+ const contract = await tronWeb.contract().at(tokenAddress);
30
+ const result = await contract
31
+ .allowance(ownerAddress, spenderAddress)
32
+ .call({ from: ownerAddress });
33
+ return BigInt(result.toString());
34
+ });
35
+ statusManager.updateAction(step, action.type, 'DONE');
36
+ return {
37
+ status: 'COMPLETED',
38
+ context: {
39
+ hasSufficientAllowance: fromAmount <= allowance,
40
+ },
41
+ };
42
+ }
43
+ }
44
+ exports.TronCheckAllowanceTask = TronCheckAllowanceTask;
45
+ //# sourceMappingURL=TronCheckAllowanceTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TronCheckAllowanceTask.js","sourceRoot":"","sources":["../../../../src/core/tasks/TronCheckAllowanceTask.ts"],"names":[],"mappings":";;;AAAA,mCAKkB;AAClB,iFAA0E;AAG1E,MAAa,sBAAuB,SAAQ,2BAAqB;IACtD,KAAK,CAAC,SAAS,CAAC,OAAgC;QACvD,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgC;QACxC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;QAEvD,MAAM,MAAM,GAAG,aAAa,CAAC,gBAAgB,CAAC;YAC5C,IAAI;YACJ,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YAChC,MAAM,EAAE,SAAS;SAClB,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,sBAAgB,CACxB,mBAAa,CAAC,4BAA4B,EAC1C,qEAAqE,CACtE,CAAA;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,sBAAgB,CACxB,mBAAa,CAAC,qBAAqB,EACnC,oCAAoC,CACrC,CAAA;QACH,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAA;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAA;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAA;QACpD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAEjD,MAAM,SAAS,GAAG,MAAM,IAAA,gDAAqB,EAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACtE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;YAC1D,MAAM,MAAM,GAAG,MAAM,QAAQ;iBAC1B,SAAS,CAAC,YAAY,EAAE,cAAc,CAAC;iBACvC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAA;YAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAErD,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE;gBACP,sBAAsB,EAAE,UAAU,IAAI,SAAS;aAChD;SACF,CAAA;IACH,CAAC;CACF;AAnDD,wDAmDC"}
@@ -0,0 +1,6 @@
1
+ import { BaseStepExecutionTask, type TaskResult } from '@lifi/sdk';
2
+ import type { TronStepExecutorContext } from '../../types.js';
3
+ export declare class TronSetAllowanceTask extends BaseStepExecutionTask {
4
+ shouldRun(context: TronStepExecutorContext): Promise<boolean>;
5
+ run(context: TronStepExecutorContext): Promise<TaskResult>;
6
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TronSetAllowanceTask = void 0;
4
+ const sdk_1 = require("@lifi/sdk");
5
+ const callTronRpcsWithRetry_js_1 = require("../../rpc/callTronRpcsWithRetry.js");
6
+ const stripHexPrefix_js_1 = require("../../utils/stripHexPrefix.js");
7
+ const constants_js_1 = require("../constants.js");
8
+ const DEFAULT_APPROVE_FEE_LIMIT = 100_000_000;
9
+ class TronSetAllowanceTask extends sdk_1.BaseStepExecutionTask {
10
+ async shouldRun(context) {
11
+ return !context.hasSufficientAllowance;
12
+ }
13
+ async run(context) {
14
+ const { step, client, wallet, statusManager, fromChain } = context;
15
+ const action = statusManager.initializeAction({
16
+ step,
17
+ type: 'SET_ALLOWANCE',
18
+ chainId: step.action.fromChainId,
19
+ status: 'STARTED',
20
+ });
21
+ statusManager.updateAction(step, action.type, 'ACTION_REQUIRED');
22
+ if (!wallet.address) {
23
+ throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.WalletChangedDuringExecution, 'Wallet address is not available. Wallet may have been disconnected.');
24
+ }
25
+ if (!step.estimate.approvalAddress) {
26
+ throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionUnprepared, 'Approval address is not available.');
27
+ }
28
+ const tokenAddress = step.action.fromToken.address;
29
+ const spenderAddress = step.estimate.approvalAddress;
30
+ const ownerAddress = wallet.address;
31
+ const approveAmount = BigInt(step.action.fromAmount).toString();
32
+ const approveGasCost = step.estimate.gasCosts?.find((gc) => gc.type === 'APPROVE');
33
+ const feeLimit = approveGasCost?.limit
34
+ ? parseInt(approveGasCost.limit, 10)
35
+ : DEFAULT_APPROVE_FEE_LIMIT;
36
+ const transaction = await (0, callTronRpcsWithRetry_js_1.callTronRpcsWithRetry)(client, async (tronWeb) => {
37
+ const { transaction } = await tronWeb.transactionBuilder.triggerSmartContract(tokenAddress, 'approve(address,uint256)', { feeLimit }, [
38
+ { type: 'address', value: spenderAddress },
39
+ { type: 'uint256', value: approveAmount },
40
+ ], ownerAddress);
41
+ return transaction;
42
+ });
43
+ const signedTransaction = await wallet.signTransaction(transaction);
44
+ statusManager.updateAction(step, action.type, 'PENDING');
45
+ const broadcastResult = await (0, callTronRpcsWithRetry_js_1.callTronRpcsWithRetry)(client, async (tronWeb) => {
46
+ const result = await tronWeb.trx.sendRawTransaction(signedTransaction);
47
+ if (!result.result && String(result.code) !== 'DUP_TRANSACTION_ERROR') {
48
+ throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionFailed, `Approval broadcast failed: ${result.code || 'Unknown error'}`);
49
+ }
50
+ return result;
51
+ });
52
+ const txHash = (0, stripHexPrefix_js_1.stripHexPrefix)(broadcastResult.transaction.txID);
53
+ statusManager.updateAction(step, action.type, 'PENDING', {
54
+ txHash,
55
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}#/transaction/${txHash}`,
56
+ });
57
+ await (0, sdk_1.waitForResult)(async () => {
58
+ const txInfo = await (0, callTronRpcsWithRetry_js_1.callTronRpcsWithRetry)(client, (tronWeb) => tronWeb.trx.getTransactionInfo(txHash));
59
+ if (txInfo?.id) {
60
+ if (txInfo.receipt?.result === 'FAILED') {
61
+ throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionFailed, 'Approval transaction failed on-chain.');
62
+ }
63
+ return txInfo;
64
+ }
65
+ return undefined;
66
+ }, constants_js_1.TRON_POLL_INTERVAL_MS, constants_js_1.TRON_POLL_MAX_RETRIES);
67
+ statusManager.updateAction(step, action.type, 'DONE', {
68
+ txHash,
69
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}#/transaction/${txHash}`,
70
+ });
71
+ return {
72
+ status: 'COMPLETED',
73
+ context: { hasSufficientAllowance: true },
74
+ };
75
+ }
76
+ }
77
+ exports.TronSetAllowanceTask = TronSetAllowanceTask;
78
+ //# sourceMappingURL=TronSetAllowanceTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TronSetAllowanceTask.js","sourceRoot":"","sources":["../../../../src/core/tasks/TronSetAllowanceTask.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,35 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TronSignAndExecuteTask = void 0;
4
4
  const sdk_1 = require("@lifi/sdk");
5
+ const tronweb_1 = require("tronweb");
6
+ const stripHexPrefix_js_1 = require("../../utils/stripHexPrefix.js");
5
7
  class TronSignAndExecuteTask extends sdk_1.BaseStepExecutionTask {
6
8
  async run(context) {
7
- const { step, wallet, statusManager, executionOptions, isBridgeExecution, checkWallet, } = context;
9
+ const { step, wallet, statusManager, isBridgeExecution, checkWallet } = context;
8
10
  const action = statusManager.findAction(step, isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP');
9
11
  if (!action) {
10
12
  throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction. Action not found.');
11
13
  }
12
- const transactionRequestData = await (0, sdk_1.getTransactionRequestData)(step, executionOptions);
13
14
  checkWallet(step);
14
- const unsignedTransaction = JSON.parse(transactionRequestData);
15
- const signedTransaction = await wallet.signTransaction(unsignedTransaction);
15
+ if (!step.transactionRequest?.data) {
16
+ throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction. Transaction request is not found.');
17
+ }
18
+ const rawDataHex = (0, stripHexPrefix_js_1.stripHexPrefix)(step.transactionRequest.data);
19
+ const contractType = step.transactionRequest.customData?.contractType ??
20
+ 'TriggerSmartContract';
21
+ const raw_data = tronweb_1.utils.deserializeTx.deserializeTransaction(contractType, rawDataHex);
22
+ const transactionPb = tronweb_1.utils.transaction.txJsonToPb({
23
+ visible: false,
24
+ raw_data,
25
+ });
26
+ const txID = (0, stripHexPrefix_js_1.stripHexPrefix)(tronweb_1.utils.transaction.txPbToTxID(transactionPb));
27
+ const transaction = {
28
+ visible: false,
29
+ txID,
30
+ raw_data,
31
+ raw_data_hex: rawDataHex,
32
+ };
33
+ const signedTransaction = await wallet.signTransaction(transaction);
16
34
  statusManager.updateAction(step, action.type, 'PENDING', {
17
35
  signedAt: Date.now(),
18
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"TronSignAndExecuteTask.js","sourceRoot":"","sources":["../../../../src/core/tasks/TronSignAndExecuteTask.ts"],"names":[],"mappings":";;;AAAA,mCAMkB;AAGlB,MAAa,sBAAuB,SAAQ,2BAAqB;IAC/D,KAAK,CAAC,GAAG,CAAC,OAAgC;QACxC,MAAM,EACJ,IAAI,EACJ,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,GAAG,OAAO,CAAA;QAEX,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CACrC,IAAI,EACJ,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAC3C,CAAA;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,sBAAgB,CACxB,mBAAa,CAAC,qBAAqB,EACnC,kDAAkD,CACnD,CAAA;QACH,CAAC;QAED,MAAM,sBAAsB,GAAG,MAAM,IAAA,+BAAyB,EAC5D,IAAI,EACJ,gBAAgB,CACjB,CAAA;QAED,WAAW,CAAC,IAAI,CAAC,CAAA;QAEjB,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAE9D,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAA;QAE3E,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE;YACvD,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC,CAAA;QAEF,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,EAAE,iBAAiB,EAAE;SAC/B,CAAA;IACH,CAAC;CACF;AA3CD,wDA2CC"}
1
+ {"version":3,"file":"TronSignAndExecuteTask.js","sourceRoot":"","sources":["../../../../src/core/tasks/TronSignAndExecuteTask.ts"],"names":[],"mappings":";;;AAAA,mCAKkB;AAElB,qCAA+B;AAE/B,qEAA8D;AAE9D,MAAa,sBAAuB,SAAQ,2BAAqB;IAC/D,KAAK,CAAC,GAAG,CAAC,OAAgC;QACxC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,GACnE,OAAO,CAAA;QAET,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CACrC,IAAI,EACJ,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAC3C,CAAA;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,sBAAgB,CACxB,mBAAa,CAAC,qBAAqB,EACnC,kDAAkD,CACnD,CAAA;QACH,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,CAAA;QAEjB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,sBAAgB,CACxB,mBAAa,CAAC,qBAAqB,EACnC,kEAAkE,CACnE,CAAA;QACH,CAAC;QAED,MAAM,UAAU,GAAG,IAAA,kCAAc,EAAC,IAAI,CAAC,kBAAkB,CAAC,IAAc,CAAC,CAAA;QAEzE,MAAM,YAAY,GACf,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,YAAuB;YAC5D,sBAAsB,CAAA;QAExB,MAAM,QAAQ,GAAG,eAAK,CAAC,aAAa,CAAC,sBAAsB,CACzD,YAAY,EACZ,UAAU,CACX,CAAA;QAED,MAAM,aAAa,GAAG,eAAK,CAAC,WAAW,CAAC,UAAU,CAAC;YACjD,OAAO,EAAE,KAAK;YACd,QAAQ;SACT,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,IAAA,kCAAc,EAAC,eAAK,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAA;QAExE,MAAM,WAAW,GAAgB;YAC/B,OAAO,EAAE,KAAK;YACd,IAAI;YACJ,QAAQ;YACR,YAAY,EAAE,UAAU;SACzB,CAAA;QAED,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QAEnE,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE;YACvD,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC,CAAA;QAEF,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,EAAE,iBAAiB,EAAE;SAC/B,CAAA;IACH,CAAC;CACF;AA7DD,wDA6DC"}
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TronWaitForTransactionTask = void 0;
4
4
  const sdk_1 = require("@lifi/sdk");
5
- const tronweb_1 = require("tronweb");
5
+ const callTronRpcsWithRetry_js_1 = require("../../rpc/callTronRpcsWithRetry.js");
6
+ const stripHexPrefix_js_1 = require("../../utils/stripHexPrefix.js");
7
+ const constants_js_1 = require("../constants.js");
6
8
  class TronWaitForTransactionTask extends sdk_1.BaseStepExecutionTask {
7
9
  async run(context) {
8
10
  const { client, step, statusManager, fromChain, isBridgeExecution, signedTransaction, } = context;
@@ -13,19 +15,19 @@ class TronWaitForTransactionTask extends sdk_1.BaseStepExecutionTask {
13
15
  if (!action) {
14
16
  throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction. Action not found.');
15
17
  }
16
- const rpcUrls = await client.getRpcUrlsByChainId(fromChain.id);
17
- const fullHost = rpcUrls[0] || 'https://api.trongrid.io';
18
- const tronWeb = new tronweb_1.TronWeb({ fullHost });
19
- const broadcastResult = await tronWeb.trx.sendRawTransaction(signedTransaction);
20
- if (!broadcastResult.result) {
21
- throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionFailed, `Transaction broadcast failed: ${broadcastResult.code || 'Unknown error'}`);
22
- }
23
- const txHash = broadcastResult.transaction.txID;
18
+ const broadcastResult = await (0, callTronRpcsWithRetry_js_1.callTronRpcsWithRetry)(client, async (tronWeb) => {
19
+ const result = await tronWeb.trx.sendRawTransaction(signedTransaction);
20
+ if (!result.result && String(result.code) !== 'DUP_TRANSACTION_ERROR') {
21
+ throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionFailed, `Transaction broadcast failed: ${result.code || 'Unknown error'}`);
22
+ }
23
+ return result;
24
+ });
25
+ const txHash = (0, stripHexPrefix_js_1.stripHexPrefix)(broadcastResult.transaction?.txID ?? signedTransaction.txID);
24
26
  statusManager.updateAction(step, action.type, 'PENDING', {
25
27
  txHash,
26
28
  txLink: `${fromChain.metamask.blockExplorerUrls[0]}#/transaction/${txHash}`,
27
29
  });
28
- await waitForTronConfirmation(tronWeb, txHash);
30
+ await waitForTronConfirmation(client, txHash);
29
31
  if (isBridgeExecution) {
30
32
  statusManager.updateAction(step, action.type, 'DONE');
31
33
  }
@@ -33,10 +35,10 @@ class TronWaitForTransactionTask extends sdk_1.BaseStepExecutionTask {
33
35
  }
34
36
  }
35
37
  exports.TronWaitForTransactionTask = TronWaitForTransactionTask;
36
- async function waitForTronConfirmation(tronWeb, txHash, maxRetries = 20, intervalMs = 3000) {
38
+ async function waitForTronConfirmation(client, txHash, maxRetries = constants_js_1.TRON_POLL_MAX_RETRIES, intervalMs = constants_js_1.TRON_POLL_INTERVAL_MS) {
37
39
  for (let i = 0; i < maxRetries; i++) {
38
40
  try {
39
- const txInfo = await tronWeb.trx.getTransactionInfo(txHash);
41
+ const txInfo = await (0, callTronRpcsWithRetry_js_1.callTronRpcsWithRetry)(client, (tronWeb) => tronWeb.trx.getTransactionInfo(txHash));
40
42
  if (txInfo?.id) {
41
43
  if (txInfo.receipt?.result === 'FAILED') {
42
44
  throw new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionFailed, `Transaction failed on-chain: ${txInfo.receipt.result}`);
@@ -1 +1 @@
1
- {"version":3,"file":"TronWaitForTransactionTask.js","sourceRoot":"","sources":["../../../../src/core/tasks/TronWaitForTransactionTask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TronWaitForTransactionTask.js","sourceRoot":"","sources":["../../../../src/core/tasks/TronWaitForTransactionTask.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseTronErrors = void 0;
4
4
  const sdk_1 = require("@lifi/sdk");
5
5
  const tronwallet_abstract_adapter_1 = require("@tronweb3/tronwallet-abstract-adapter");
6
+ const isBandwidthError = (message) => !!message?.includes('BANDWITH_ERROR');
6
7
  const parseTronErrors = async (e, step, action) => {
7
8
  if (e instanceof sdk_1.SDKError) {
9
+ if (isBandwidthError(e.message)) {
10
+ const baseError = new sdk_1.TransactionError(sdk_1.LiFiErrorCode.InsufficientFunds, 'Insufficient TRX for network bandwidth. The account needs more TRX to cover transaction fees.', e);
11
+ return new sdk_1.SDKError(baseError, step ?? e.step, action ?? e.action);
12
+ }
8
13
  e.step = e.step ?? step;
9
14
  e.action = e.action ?? action;
10
15
  return e;
@@ -35,6 +40,9 @@ const handleSpecificErrors = (e) => {
35
40
  if (message === 'Private key does not match address in transaction') {
36
41
  return new sdk_1.TransactionError(sdk_1.LiFiErrorCode.WalletChangedDuringExecution, message, e);
37
42
  }
43
+ if (isBandwidthError(message)) {
44
+ return new sdk_1.TransactionError(sdk_1.LiFiErrorCode.InsufficientFunds, 'Insufficient TRX for network bandwidth. The account needs more TRX to cover transaction fees.', e);
45
+ }
38
46
  if (e instanceof sdk_1.BaseError) {
39
47
  return e;
40
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parseTronErrors.js","sourceRoot":"","sources":["../../../src/errors/parseTronErrors.ts"],"names":[],"mappings":";;;AAAA,mCASkB;AAClB,uFAM8C;AAEvC,MAAM,eAAe,GAAG,KAAK,EAClC,CAAQ,EACR,IAAe,EACf,MAAwB,EACL,EAAE;IACrB,IAAI,CAAC,YAAY,cAAQ,EAAE,CAAC;QAC1B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAA;QACvB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAA;QAC7B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAA;IAEzC,OAAO,IAAI,cAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAC9C,CAAC,CAAA;AAdY,QAAA,eAAe,mBAc3B;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAM,EAAE,EAAE;IACtC,MAAM,OAAO,GAAW,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAA;IAEnE,IACE,CAAC,YAAY,wDAA0B;QACvC,CAAC,YAAY,qDAAuB,EACpC,CAAC;QACD,OAAO,IAAI,sBAAgB,CAAC,mBAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,IACE,CAAC,YAAY,iDAAmB;QAChC,CAAC,YAAY,oDAAsB;QACnC,CAAC,YAAY,qDAAuB,EACpC,CAAC;QACD,OAAO,IAAI,sBAAgB,CACzB,mBAAa,CAAC,4BAA4B,EAC1C,OAAO,EACP,CAAC,CACF,CAAA;IACH,CAAC;IAGD,IACE,OAAO,KAAK,8BAA8B;QAC1C,OAAO,KAAK,qBAAqB;QACjC,OAAO,KAAK,2BAA2B,EACvC,CAAC;QACD,OAAO,IAAI,sBAAgB,CAAC,mBAAa,CAAC,qBAAqB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED,IAAI,OAAO,KAAK,+BAA+B,EAAE,CAAC;QAChD,OAAO,IAAI,sBAAgB,CAAC,mBAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,OAAO,KAAK,mDAAmD,EAAE,CAAC;QACpE,OAAO,IAAI,sBAAgB,CACzB,mBAAa,CAAC,4BAA4B,EAC1C,OAAO,EACP,CAAC,CACF,CAAA;IACH,CAAC;IAED,IAAI,CAAC,YAAY,eAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,IAAI,kBAAY,CAAC,OAAO,IAAI,kBAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;AAClE,CAAC,CAAA"}
1
+ {"version":3,"file":"parseTronErrors.js","sourceRoot":"","sources":["../../../src/errors/parseTronErrors.ts"],"names":[],"mappings":";;;AAAA,mCASkB;AAClB,uFAM8C;AAG9C,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAW,EAAE,CACrD,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAA;AAEhC,MAAM,eAAe,GAAG,KAAK,EAClC,CAAQ,EACR,IAAe,EACf,MAAwB,EACL,EAAE;IACrB,IAAI,CAAC,YAAY,cAAQ,EAAE,CAAC;QAC1B,IAAI,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,sBAAgB,CACpC,mBAAa,CAAC,iBAAiB,EAC/B,+FAA+F,EAC/F,CAAC,CACF,CAAA;YACD,OAAO,IAAI,cAAQ,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;QACpE,CAAC;QACD,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAA;QACvB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAA;QAC7B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAA;IAEzC,OAAO,IAAI,cAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAC9C,CAAC,CAAA;AAtBY,QAAA,eAAe,mBAsB3B;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAM,EAAE,EAAE;IACtC,MAAM,OAAO,GAAW,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAA;IAEnE,IACE,CAAC,YAAY,wDAA0B;QACvC,CAAC,YAAY,qDAAuB,EACpC,CAAC;QACD,OAAO,IAAI,sBAAgB,CAAC,mBAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,IACE,CAAC,YAAY,iDAAmB;QAChC,CAAC,YAAY,oDAAsB;QACnC,CAAC,YAAY,qDAAuB,EACpC,CAAC;QACD,OAAO,IAAI,sBAAgB,CACzB,mBAAa,CAAC,4BAA4B,EAC1C,OAAO,EACP,CAAC,CACF,CAAA;IACH,CAAC;IAGD,IACE,OAAO,KAAK,8BAA8B;QAC1C,OAAO,KAAK,qBAAqB;QACjC,OAAO,KAAK,2BAA2B,EACvC,CAAC;QACD,OAAO,IAAI,sBAAgB,CAAC,mBAAa,CAAC,qBAAqB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED,IAAI,OAAO,KAAK,+BAA+B,EAAE,CAAC;QAChD,OAAO,IAAI,sBAAgB,CAAC,mBAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,OAAO,KAAK,mDAAmD,EAAE,CAAC;QACpE,OAAO,IAAI,sBAAgB,CACzB,mBAAa,CAAC,4BAA4B,EAC1C,OAAO,EACP,CAAC,CACF,CAAA;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,sBAAgB,CACzB,mBAAa,CAAC,iBAAiB,EAC/B,+FAA+F,EAC/F,CAAC,CACF,CAAA;IACH,CAAC;IAED,IAAI,CAAC,YAAY,eAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,IAAI,kBAAY,CAAC,OAAO,IAAI,kBAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;AAClE,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { type SDKClient } from '@lifi/sdk';
2
+ import { TronWeb } from 'tronweb';
3
+ export declare function callTronRpcsWithRetry<R>(client: SDKClient, fn: (tronWeb: TronWeb) => Promise<R>): Promise<R>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callTronRpcsWithRetry = callTronRpcsWithRetry;
4
+ const sdk_1 = require("@lifi/sdk");
5
+ const tronweb_1 = require("tronweb");
6
+ async function callTronRpcsWithRetry(client, fn) {
7
+ const urls = await client.getRpcUrlsByChainId(sdk_1.ChainId.TRN);
8
+ if (!urls.length) {
9
+ throw new Error('No Tron RPC URLs available');
10
+ }
11
+ const errors = [];
12
+ for (const url of urls) {
13
+ try {
14
+ return await fn(new tronweb_1.TronWeb({ fullHost: url }));
15
+ }
16
+ catch (error) {
17
+ errors.push(error instanceof Error ? error : new Error(String(error)));
18
+ }
19
+ }
20
+ throw new AggregateError(errors, `All ${urls.length} Tron RPCs failed`);
21
+ }
22
+ //# sourceMappingURL=callTronRpcsWithRetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callTronRpcsWithRetry.js","sourceRoot":"","sources":["../../../src/rpc/callTronRpcsWithRetry.ts"],"names":[],"mappings":";;AAGA,sDAoBC;AAvBD,mCAAmD;AACnD,qCAAiC;AAE1B,KAAK,UAAU,qBAAqB,CACzC,MAAiB,EACjB,EAAoC;IAEpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,aAAO,CAAC,GAAG,CAAC,CAAA;IAE1D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,MAAM,GAAY,EAAE,CAAA;IAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,IAAI,iBAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,mBAAmB,CAAC,CAAA;AACzE,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { type LiFiStepExtended, type SDKProvider, type StepExecutorContext, type StepExecutorOptions } from '@lifi/sdk';
2
- import type { Adapter } from '@tronweb3/tronwallet-abstract-adapter';
3
- import type { SignedTransaction } from 'tronweb/lib/esm/types/Transaction';
2
+ import type { Adapter, SignedTransaction } from '@tronweb3/tronwallet-abstract-adapter';
4
3
  export interface TronProviderOptions {
5
4
  getWallet?: () => Promise<Adapter>;
6
5
  }
7
6
  export interface TronTaskContext {
8
7
  signedTransaction?: SignedTransaction;
8
+ hasSufficientAllowance?: boolean;
9
9
  }
10
10
  export interface TronStepExecutorContext extends StepExecutorContext, TronTaskContext {
11
11
  wallet: Adapter;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;AA6BA,wCAIC;AAjCD,mCAMkB;AAuBlB,SAAgB,cAAc,CAC5B,QAAqB;IAErB,OAAO,QAAQ,CAAC,IAAI,KAAK,eAAS,CAAC,GAAG,CAAA;AACxC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;AAgCA,wCAIC;AApCD,mCAMkB;AA0BlB,SAAgB,cAAc,CAC5B,QAAqB;IAErB,OAAO,QAAQ,CAAC,IAAI,KAAK,eAAS,CAAC,GAAG,CAAA;AACxC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const AddressZero = "0x0000000000000000000000000000000000000000";
2
+ export declare const TronAddressZero = "T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb";
3
+ export declare const isZeroAddress: (address: string) => boolean;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isZeroAddress = exports.TronAddressZero = exports.AddressZero = void 0;
4
+ exports.AddressZero = '0x0000000000000000000000000000000000000000';
5
+ exports.TronAddressZero = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb';
6
+ const isZeroAddress = (address) => address === exports.AddressZero || address === exports.TronAddressZero;
7
+ exports.isZeroAddress = isZeroAddress;
8
+ //# sourceMappingURL=isZeroAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isZeroAddress.js","sourceRoot":"","sources":["../../../src/utils/isZeroAddress.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,4CAA4C,CAAA;AAC1D,QAAA,eAAe,GAAG,oCAAoC,CAAA;AAE5D,MAAM,aAAa,GAAG,CAAC,OAAe,EAAW,EAAE,CACxD,OAAO,KAAK,mBAAW,IAAI,OAAO,KAAK,uBAAe,CAAA;AAD3C,QAAA,aAAa,iBAC8B"}
@@ -0,0 +1 @@
1
+ export declare const stripHexPrefix: (value: string) => string;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stripHexPrefix = void 0;
4
+ const stripHexPrefix = (value) => value.replace(/^0x/, '');
5
+ exports.stripHexPrefix = stripHexPrefix;
6
+ //# sourceMappingURL=stripHexPrefix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripHexPrefix.js","sourceRoot":"","sources":["../../../src/utils/stripHexPrefix.ts"],"names":[],"mappings":";;;AAAO,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE,CACtD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AADb,QAAA,cAAc,kBACD"}