@lifi/sdk-provider-tron 4.0.0-alpha.23 → 4.0.0-alpha.24

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.
@@ -14,7 +14,7 @@ function TronProvider(options) {
14
14
  },
15
15
  isAddress: (address) => tronweb_1.TronWeb.isAddress(address),
16
16
  resolveAddress: resolveTronAddress_js_1.resolveTronAddress,
17
- getBalance: getTronBalance_js_1.getTronBalance,
17
+ getBalance: (client, walletAddress, tokens) => (0, getTronBalance_js_1.getTronBalance)(client, walletAddress, tokens, _options.multicallBatchSize),
18
18
  async getStepExecutor(options) {
19
19
  if (!_options.getWallet) {
20
20
  throw new sdk_1.ProviderError(sdk_1.LiFiErrorCode.ProviderUnavailable, 'TronProvider requires a getWallet function.');
@@ -1 +1 @@
1
- {"version":3,"file":"TronProvider.js","sourceRoot":"","sources":["../../src/TronProvider.ts"],"names":[],"mappings":";;AAYA,oCAmCC;AA/CD,mCAKkB;AAClB,qCAAiC;AACjC,mEAA4D;AAC5D,2EAAoE;AACpE,oEAA6D;AAG7D,SAAgB,YAAY,CAAC,OAA6B;IACxD,MAAM,QAAQ,GAAwB,OAAO,IAAI,EAAE,CAAA;IACnD,OAAO;QACL,IAAI,IAAI;YACN,OAAO,eAAS,CAAC,GAAG,CAAA;QACtB,CAAC;QACD,SAAS,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,iBAAO,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1D,cAAc,EAAE,0CAAkB;QAClC,UAAU,EAAE,kCAAc;QAC1B,KAAK,CAAC,eAAe,CACnB,OAA4B;YAE5B,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,mBAAa,CACrB,mBAAa,CAAC,mBAAmB,EACjC,6CAA6C,CAC9C,CAAA;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAA;YAEzC,MAAM,QAAQ,GAAG,IAAI,sCAAgB,CAAC;gBACpC,MAAM;gBACN,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,gBAAgB,EAAE;oBAChB,GAAG,OAAO,CAAC,gBAAgB;iBAC5B;aACF,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,UAAU,CAAC,OAA4B;YACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"TronProvider.js","sourceRoot":"","sources":["../../src/TronProvider.ts"],"names":[],"mappings":";;AAYA,oCAyCC;AArDD,mCAKkB;AAClB,qCAAiC;AACjC,mEAA4D;AAC5D,2EAAoE;AACpE,oEAA6D;AAG7D,SAAgB,YAAY,CAAC,OAA6B;IACxD,MAAM,QAAQ,GAAwB,OAAO,IAAI,EAAE,CAAA;IACnD,OAAO;QACL,IAAI,IAAI;YACN,OAAO,eAAS,CAAC,GAAG,CAAA;QACtB,CAAC;QACD,SAAS,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,iBAAO,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1D,cAAc,EAAE,0CAAkB;QAClC,UAAU,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,CAC5C,IAAA,kCAAc,EACZ,MAAM,EACN,aAAa,EACb,MAAM,EACN,QAAQ,CAAC,kBAAkB,CAC5B;QACH,KAAK,CAAC,eAAe,CACnB,OAA4B;YAE5B,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,mBAAa,CACrB,mBAAa,CAAC,mBAAmB,EACjC,6CAA6C,CAC9C,CAAA;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAA;YAEzC,MAAM,QAAQ,GAAG,IAAI,sCAAgB,CAAC;gBACpC,MAAM;gBACN,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,gBAAgB,EAAE;oBAChB,GAAG,OAAO,CAAC,gBAAgB;iBAC5B;aACF,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,UAAU,CAAC,OAA4B;YACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,2 +1,2 @@
1
1
  import type { SDKClient, Token, TokenAmount } from '@lifi/sdk';
2
- export declare const getTronBalance: (client: SDKClient, walletAddress: string, tokens: Token[]) => Promise<TokenAmount[]>;
2
+ export declare const getTronBalance: (client: SDKClient, walletAddress: string, tokens: Token[], multicallBatchSize?: number) => Promise<TokenAmount[]>;
@@ -10,7 +10,8 @@ const multicall3Abi_js_1 = require("../utils/multicall3Abi.js");
10
10
  const getMulticallAddress_js_1 = require("./getMulticallAddress.js");
11
11
  const BALANCE_OF_SELECTOR = tronweb_1.TronWeb.sha3('balanceOf(address)').slice(2, 10);
12
12
  const GET_ETH_BALANCE_SELECTOR = tronweb_1.TronWeb.sha3('getEthBalance(address)').slice(2, 10);
13
- const getTronBalance = async (client, walletAddress, tokens) => {
13
+ const DEFAULT_MULTICALL_BATCH_SIZE = 50;
14
+ const getTronBalance = async (client, walletAddress, tokens, multicallBatchSize = DEFAULT_MULTICALL_BATCH_SIZE) => {
14
15
  if (tokens.length === 0) {
15
16
  return [];
16
17
  }
@@ -22,17 +23,17 @@ const getTronBalance = async (client, walletAddress, tokens) => {
22
23
  }
23
24
  const multicallAddress = await (0, getMulticallAddress_js_1.getMulticallAddress)(client, chainId);
24
25
  if (multicallAddress && tokens.length > 1) {
25
- return getTronBalanceMulticall(client, tokens, walletAddress, multicallAddress);
26
+ return getTronBalanceMulticall(client, tokens, walletAddress, multicallAddress, multicallBatchSize);
26
27
  }
27
28
  return getTronBalanceDefault(client, tokens, walletAddress);
28
29
  };
29
30
  exports.getTronBalance = getTronBalance;
30
- const getTronBalanceMulticall = async (client, tokens, walletAddress, multicallAddress) => {
31
+ const getTronBalanceMulticall = async (client, tokens, walletAddress, multicallAddress, batchSize) => {
31
32
  const walletHex = (0, address_js_1.toEvmHex)(walletAddress);
32
33
  const multicallHex = (0, address_js_1.toEvmHex)(multicallAddress);
33
34
  const [blockNumber, results] = await (0, callTronRpcsWithRetry_js_1.callTronRpcsWithRetry)(client, async (tronWeb) => {
34
35
  const contract = tronWeb.contract(multicall3Abi_js_1.multicall3Abi, multicallAddress);
35
- const calls = tokens.map((token) => {
36
+ const allCalls = tokens.map((token) => {
36
37
  const isNative = (0, isZeroAddress_js_1.isZeroAddress)(token.address);
37
38
  return [
38
39
  isNative ? multicallHex : (0, address_js_1.toEvmHex)(token.address),
@@ -40,13 +41,24 @@ const getTronBalanceMulticall = async (client, tokens, walletAddress, multicallA
40
41
  (0, address_js_1.encodeAddressCalldata)(isNative ? GET_ETH_BALANCE_SELECTOR : BALANCE_OF_SELECTOR, walletHex),
41
42
  ];
42
43
  });
43
- const [block, aggregateResult] = await Promise.all([
44
+ const batches = [];
45
+ for (let i = 0; i < allCalls.length; i += batchSize) {
46
+ batches.push(allCalls.slice(i, i + batchSize));
47
+ }
48
+ const [block, ...batchResults] = await Promise.all([
44
49
  tronWeb.trx.getCurrentBlock(),
45
- contract.aggregate3(calls).call({ from: walletAddress }),
50
+ ...batches.map((batch, idx) => contract
51
+ .aggregate3(batch)
52
+ .call({ from: walletAddress })
53
+ .then((r) => r[0])
54
+ .catch((error) => {
55
+ console.warn(`[getTronBalance] batch ${idx + 1}/${batches.length} failed:`, error.message);
56
+ return batch.map(() => [false, '0x']);
57
+ })),
46
58
  ]);
47
59
  return [
48
60
  BigInt(block.block_header?.raw_data?.number ?? 0),
49
- aggregateResult[0],
61
+ batchResults.flat(),
50
62
  ];
51
63
  });
52
64
  return tokens.map((token, i) => {
@@ -1 +1 @@
1
- {"version":3,"file":"getTronBalance.js","sourceRoot":"","sources":["../../../src/actions/getTronBalance.ts"],"names":[],"mappings":";;;AACA,mCAAsC;AACtC,qCAAiC;AACjC,8EAAuE;AACvE,oDAAqE;AACrE,gEAAyD;AACzD,gEAAyD;AACzD,qEAA8D;AAE9D,MAAM,mBAAmB,GAAG,iBAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC3E,MAAM,wBAAwB,GAAG,iBAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAC3E,CAAC,EACD,EAAE,CACH,CAAA;AAEM,MAAM,cAAc,GAAG,KAAK,EACjC,MAAiB,EACjB,aAAqB,EACrB,MAAe,EACS,EAAE;IAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,IAAA,4CAAmB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEnE,IAAI,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,uBAAuB,CAC5B,MAAM,EACN,MAAM,EACN,aAAa,EACb,gBAAgB,CACjB,CAAA;IACH,CAAC;IAED,OAAO,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAA;AAC7D,CAAC,CAAA;AA3BY,QAAA,cAAc,kBA2B1B;AAED,MAAM,uBAAuB,GAAG,KAAK,EACnC,MAAiB,EACjB,MAAe,EACf,aAAqB,EACrB,gBAAwB,EACA,EAAE;IAC1B,MAAM,SAAS,GAAG,IAAA,qBAAQ,EAAC,aAAa,CAAC,CAAA;IACzC,MAAM,YAAY,GAAG,IAAA,qBAAQ,EAAC,gBAAgB,CAAC,CAAA;IAE/C,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,MAAM,IAAA,gDAAqB,EACxD,MAAM,EACN,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,gCAAa,EAAE,gBAAgB,CAAC,CAAA;QAGlE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACjC,MAAM,QAAQ,GAAG,IAAA,gCAAa,EAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC7C,OAAO;gBACL,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAA,qBAAQ,EAAC,KAAK,CAAC,OAAO,CAAC;gBACjD,IAAI;gBACJ,IAAA,kCAAqB,EACnB,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,mBAAmB,EACzD,SAAS,CACV;aACF,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE;YAC7B,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;SACzD,CAAC,CAAA;QAEF,OAAO;YACL,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;YAEjD,eAAe,CAAC,CAAC,CAAC;SACnB,CAAA;IACH,CAAC,CACF,CAAA;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,CAAA;QAClC,CAAC;QACD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,KAAK,EACjC,MAAiB,EACjB,MAAe,EACf,aAAqB,EACG,EAAE;IAC1B,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,MAAM,IAAA,gDAAqB,EACxD,MAAM,EACN,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;QAClC,MAAM,KAAK,GAAsB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACpD,IAAI,IAAA,gCAAa,EAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAA,gBAAU,EACf,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAC/D,EAAE,EAAE,EAAE,GAAG,qBAAqB,CAAC,IAAI,eAAe,IAAI,EAAE,EAAE,CAC3D,CAAA;YACH,CAAC;YACD,OAAO,IAAA,gBAAU,EACf,KAAK,IAAI,EAAE;gBACT,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC3D,MAAM,OAAO,GAAG,MAAM,QAAQ;qBAC3B,SAAS,CAAC,aAAa,CAAC;qBACxB,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA;gBAChC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;YACnC,CAAC,EACD;gBACE,EAAE,EAAE,GAAG,qBAAqB,CAAC,IAAI,cAAc,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE;aACvE,CACF,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,OAAO,CAAC,GAAG,CAAC;YACjB,IAAA,gBAAU,EACR,KAAK,IAAI,EAAE;gBACT,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAA;gBACjD,OAAO,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,CAAA;YAC1D,CAAC,EACD,EAAE,EAAE,EAAE,GAAG,qBAAqB,CAAC,IAAI,oBAAoB,IAAI,EAAE,EAAE,CAChE;YACD,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CACF,CAAA;IAED,MAAM,YAAY,GAAkB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,CAAA;QAClC,CAAC;QACD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
1
+ {"version":3,"file":"getTronBalance.js","sourceRoot":"","sources":["../../../src/actions/getTronBalance.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { type LiFiStepExtended, type SDKProvider, type StepExecutorContext, type
2
2
  import type { Adapter, SignedTransaction } from '@tronweb3/tronwallet-abstract-adapter';
3
3
  export interface TronProviderOptions {
4
4
  getWallet?: () => Promise<Adapter>;
5
+ multicallBatchSize?: number;
5
6
  }
6
7
  export interface TronTaskContext {
7
8
  signedTransaction?: SignedTransaction;
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;AAiCA,wCAIC;AArCD,mCAMkB;AA2BlB,SAAgB,cAAc,CAC5B,QAAqB;IAErB,OAAO,QAAQ,CAAC,IAAI,KAAK,eAAS,CAAC,GAAG,CAAA;AACxC,CAAC"}
@@ -1,2 +1,2 @@
1
1
  export declare const name = "@lifi/sdk-provider-tron";
2
- export declare const version = "4.0.0-alpha.23";
2
+ export declare const version = "4.0.0-alpha.24";
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = exports.name = void 0;
4
4
  exports.name = '@lifi/sdk-provider-tron';
5
- exports.version = '4.0.0-alpha.23';
5
+ exports.version = '4.0.0-alpha.24';
6
6
  //# sourceMappingURL=version.js.map
@@ -11,7 +11,7 @@ export function TronProvider(options) {
11
11
  },
12
12
  isAddress: (address) => TronWeb.isAddress(address),
13
13
  resolveAddress: resolveTronAddress,
14
- getBalance: getTronBalance,
14
+ getBalance: (client, walletAddress, tokens) => getTronBalance(client, walletAddress, tokens, _options.multicallBatchSize),
15
15
  async getStepExecutor(options) {
16
16
  if (!_options.getWallet) {
17
17
  throw new ProviderError(LiFiErrorCode.ProviderUnavailable, 'TronProvider requires a getWallet function.');
@@ -1 +1 @@
1
- {"version":3,"file":"TronProvider.js","sourceRoot":"","sources":["../../src/TronProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,GAEd,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAG7D,MAAM,UAAU,YAAY,CAAC,OAA6B;IACxD,MAAM,QAAQ,GAAwB,OAAO,IAAI,EAAE,CAAA;IACnD,OAAO;QACL,IAAI,IAAI;YACN,OAAO,SAAS,CAAC,GAAG,CAAA;QACtB,CAAC;QACD,SAAS,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1D,cAAc,EAAE,kBAAkB;QAClC,UAAU,EAAE,cAAc;QAC1B,KAAK,CAAC,eAAe,CACnB,OAA4B;YAE5B,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,aAAa,CACrB,aAAa,CAAC,mBAAmB,EACjC,6CAA6C,CAC9C,CAAA;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAA;YAEzC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;gBACpC,MAAM;gBACN,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,gBAAgB,EAAE;oBAChB,GAAG,OAAO,CAAC,gBAAgB;iBAC5B;aACF,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,UAAU,CAAC,OAA4B;YACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"TronProvider.js","sourceRoot":"","sources":["../../src/TronProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,GAEd,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAG7D,MAAM,UAAU,YAAY,CAAC,OAA6B;IACxD,MAAM,QAAQ,GAAwB,OAAO,IAAI,EAAE,CAAA;IACnD,OAAO;QACL,IAAI,IAAI;YACN,OAAO,SAAS,CAAC,GAAG,CAAA;QACtB,CAAC;QACD,SAAS,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1D,cAAc,EAAE,kBAAkB;QAClC,UAAU,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,CAC5C,cAAc,CACZ,MAAM,EACN,aAAa,EACb,MAAM,EACN,QAAQ,CAAC,kBAAkB,CAC5B;QACH,KAAK,CAAC,eAAe,CACnB,OAA4B;YAE5B,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,aAAa,CACrB,aAAa,CAAC,mBAAmB,EACjC,6CAA6C,CAC9C,CAAA;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAA;YAEzC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;gBACpC,MAAM;gBACN,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,gBAAgB,EAAE;oBAChB,GAAG,OAAO,CAAC,gBAAgB;iBAC5B;aACF,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,UAAU,CAAC,OAA4B;YACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,2 +1,2 @@
1
1
  import type { SDKClient, Token, TokenAmount } from '@lifi/sdk';
2
- export declare const getTronBalance: (client: SDKClient, walletAddress: string, tokens: Token[]) => Promise<TokenAmount[]>;
2
+ export declare const getTronBalance: (client: SDKClient, walletAddress: string, tokens: Token[], multicallBatchSize?: number) => Promise<TokenAmount[]>;
@@ -7,7 +7,8 @@ import { multicall3Abi } from '../utils/multicall3Abi.js';
7
7
  import { getMulticallAddress } from './getMulticallAddress.js';
8
8
  const BALANCE_OF_SELECTOR = TronWeb.sha3('balanceOf(address)').slice(2, 10);
9
9
  const GET_ETH_BALANCE_SELECTOR = TronWeb.sha3('getEthBalance(address)').slice(2, 10);
10
- export const getTronBalance = async (client, walletAddress, tokens) => {
10
+ const DEFAULT_MULTICALL_BATCH_SIZE = 50;
11
+ export const getTronBalance = async (client, walletAddress, tokens, multicallBatchSize = DEFAULT_MULTICALL_BATCH_SIZE) => {
11
12
  if (tokens.length === 0) {
12
13
  return [];
13
14
  }
@@ -19,17 +20,17 @@ export const getTronBalance = async (client, walletAddress, tokens) => {
19
20
  }
20
21
  const multicallAddress = await getMulticallAddress(client, chainId);
21
22
  if (multicallAddress && tokens.length > 1) {
22
- return getTronBalanceMulticall(client, tokens, walletAddress, multicallAddress);
23
+ return getTronBalanceMulticall(client, tokens, walletAddress, multicallAddress, multicallBatchSize);
23
24
  }
24
25
  return getTronBalanceDefault(client, tokens, walletAddress);
25
26
  };
26
- const getTronBalanceMulticall = async (client, tokens, walletAddress, multicallAddress) => {
27
+ const getTronBalanceMulticall = async (client, tokens, walletAddress, multicallAddress, batchSize) => {
27
28
  const walletHex = toEvmHex(walletAddress);
28
29
  const multicallHex = toEvmHex(multicallAddress);
29
30
  const [blockNumber, results] = await callTronRpcsWithRetry(client, async (tronWeb) => {
30
31
  const contract = tronWeb.contract(multicall3Abi, multicallAddress);
31
32
  // TronWeb encodes tuples positionally: [target, allowFailure, callData]
32
- const calls = tokens.map((token) => {
33
+ const allCalls = tokens.map((token) => {
33
34
  const isNative = isZeroAddress(token.address);
34
35
  return [
35
36
  isNative ? multicallHex : toEvmHex(token.address),
@@ -37,14 +38,26 @@ const getTronBalanceMulticall = async (client, tokens, walletAddress, multicallA
37
38
  encodeAddressCalldata(isNative ? GET_ETH_BALANCE_SELECTOR : BALANCE_OF_SELECTOR, walletHex),
38
39
  ];
39
40
  });
40
- const [block, aggregateResult] = await Promise.all([
41
+ // Chunk calls to avoid CPU timeout on Tron nodes
42
+ const batches = [];
43
+ for (let i = 0; i < allCalls.length; i += batchSize) {
44
+ batches.push(allCalls.slice(i, i + batchSize));
45
+ }
46
+ const [block, ...batchResults] = await Promise.all([
41
47
  tronWeb.trx.getCurrentBlock(),
42
- contract.aggregate3(calls).call({ from: walletAddress }),
48
+ ...batches.map((batch, idx) => contract
49
+ .aggregate3(batch)
50
+ .call({ from: walletAddress })
51
+ // TronWeb wraps the single return value in an extra array
52
+ .then((r) => r[0])
53
+ .catch((error) => {
54
+ console.warn(`[getTronBalance] batch ${idx + 1}/${batches.length} failed:`, error.message);
55
+ return batch.map(() => [false, '0x']);
56
+ })),
43
57
  ]);
44
58
  return [
45
59
  BigInt(block.block_header?.raw_data?.number ?? 0),
46
- // TronWeb wraps the single return value in an extra array
47
- aggregateResult[0],
60
+ batchResults.flat(),
48
61
  ];
49
62
  });
50
63
  return tokens.map((token, i) => {
@@ -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":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC3E,MAAM,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAC3E,CAAC,EACD,EAAE,CACH,CAAA;AAED,MAAM,4BAA4B,GAAG,EAAE,CAAA;AAEvC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,MAAiB,EACjB,aAAqB,EACrB,MAAe,EACf,qBAA6B,4BAA4B,EACjC,EAAE;IAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEnE,IAAI,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,uBAAuB,CAC5B,MAAM,EACN,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,kBAAkB,CACnB,CAAA;IACH,CAAC;IAED,OAAO,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAA;AAC7D,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,KAAK,EACnC,MAAiB,EACjB,MAAe,EACf,aAAqB,EACrB,gBAAwB,EACxB,SAAiB,EACO,EAAE;IAC1B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA;IACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IAE/C,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,MAAM,qBAAqB,CACxD,MAAM,EACN,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAA;QAElE,wEAAwE;QACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACpC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC7C,OAAO;gBACL,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;gBACjD,IAAI;gBACJ,qBAAqB,CACnB,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,mBAAmB,EACzD,SAAS,CACV;aACF,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,iDAAiD;QACjD,MAAM,OAAO,GAAwB,EAAE,CAAA;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAA;QAChD,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,GAAG,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE;YAC7B,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAC5B,QAAQ;iBACL,UAAU,CAAC,KAAK,CAAC;iBACjB,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;gBAC9B,0DAA0D;iBACzD,IAAI,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAA6B,CAAC;iBACxD,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;gBACtB,OAAO,CAAC,IAAI,CACV,0BAA0B,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,UAAU,EAC7D,KAAK,CAAC,OAAO,CACd,CAAA;gBACD,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAsB,CAAC,CAAA;YAC5D,CAAC,CAAC,CACL;SACF,CAAC,CAAA;QAEF,OAAO;YACL,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;YACjD,YAAY,CAAC,IAAI,EAAE;SACpB,CAAA;IACH,CAAC,CACF,CAAA;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,CAAC,CAAsB,CAAA;QAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,CAAA;QAClC,CAAC;QACD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,KAAK,EACjC,MAAiB,EACjB,MAAe,EACf,aAAqB,EACG,EAAE;IAC1B,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,MAAM,qBAAqB,CACxD,MAAM,EACN,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;QAClC,MAAM,KAAK,GAAsB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACpD,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,OAAO,UAAU,CACf,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAC/D,EAAE,EAAE,EAAE,GAAG,qBAAqB,CAAC,IAAI,eAAe,IAAI,EAAE,EAAE,CAC3D,CAAA;YACH,CAAC;YACD,OAAO,UAAU,CACf,KAAK,IAAI,EAAE;gBACT,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC3D,MAAM,OAAO,GAAG,MAAM,QAAQ;qBAC3B,SAAS,CAAC,aAAa,CAAC;qBACxB,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA;gBAChC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;YACnC,CAAC,EACD;gBACE,EAAE,EAAE,GAAG,qBAAqB,CAAC,IAAI,cAAc,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE;aACvE,CACF,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,OAAO,CAAC,GAAG,CAAC;YACjB,UAAU,CACR,KAAK,IAAI,EAAE;gBACT,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAA;gBACjD,OAAO,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,CAAA;YAC1D,CAAC,EACD,EAAE,EAAE,EAAE,GAAG,qBAAqB,CAAC,IAAI,oBAAoB,IAAI,EAAE,EAAE,CAChE;YACD,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CACF,CAAA;IAED,MAAM,YAAY,GAAkB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,CAAA;QAClC,CAAC;QACD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
@@ -2,6 +2,7 @@ import { type LiFiStepExtended, type SDKProvider, type StepExecutorContext, type
2
2
  import type { Adapter, SignedTransaction } from '@tronweb3/tronwallet-abstract-adapter';
3
3
  export interface TronProviderOptions {
4
4
  getWallet?: () => Promise<Adapter>;
5
+ multicallBatchSize?: number;
5
6
  }
6
7
  export interface TronTaskContext {
7
8
  signedTransaction?: SignedTransaction;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAKV,MAAM,WAAW,CAAA;AA0BlB,MAAM,UAAU,cAAc,CAC5B,QAAqB;IAErB,OAAO,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,CAAA;AACxC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAKV,MAAM,WAAW,CAAA;AA2BlB,MAAM,UAAU,cAAc,CAC5B,QAAqB;IAErB,OAAO,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,CAAA;AACxC,CAAC"}
@@ -1,2 +1,2 @@
1
1
  export declare const name = "@lifi/sdk-provider-tron";
2
- export declare const version = "4.0.0-alpha.23";
2
+ export declare const version = "4.0.0-alpha.24";
@@ -1,3 +1,3 @@
1
1
  export const name = '@lifi/sdk-provider-tron';
2
- export const version = '4.0.0-alpha.23';
2
+ export const version = '4.0.0-alpha.24';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TronProvider.d.ts","sourceRoot":"","sources":["../../src/TronProvider.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEtE,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,eAAe,CAmC3E"}
1
+ {"version":3,"file":"TronProvider.d.ts","sourceRoot":"","sources":["../../src/TronProvider.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEtE,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,eAAe,CAyC3E"}
@@ -1,3 +1,3 @@
1
1
  import type { SDKClient, Token, TokenAmount } from '@lifi/sdk';
2
- export declare const getTronBalance: (client: SDKClient, walletAddress: string, tokens: Token[]) => Promise<TokenAmount[]>;
2
+ export declare const getTronBalance: (client: SDKClient, walletAddress: string, tokens: Token[], multicallBatchSize?: number) => Promise<TokenAmount[]>;
3
3
  //# sourceMappingURL=getTronBalance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getTronBalance.d.ts","sourceRoot":"","sources":["../../../src/actions/getTronBalance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAe9D,eAAO,MAAM,cAAc,GACzB,QAAQ,SAAS,EACjB,eAAe,MAAM,EACrB,QAAQ,KAAK,EAAE,KACd,OAAO,CAAC,WAAW,EAAE,CAuBvB,CAAA"}
1
+ {"version":3,"file":"getTronBalance.d.ts","sourceRoot":"","sources":["../../../src/actions/getTronBalance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAiB9D,eAAO,MAAM,cAAc,GACzB,QAAQ,SAAS,EACjB,eAAe,MAAM,EACrB,QAAQ,KAAK,EAAE,EACf,qBAAoB,MAAqC,KACxD,OAAO,CAAC,WAAW,EAAE,CAwBvB,CAAA"}
@@ -2,6 +2,7 @@ import { type LiFiStepExtended, type SDKProvider, type StepExecutorContext, type
2
2
  import type { Adapter, SignedTransaction } from '@tronweb3/tronwallet-abstract-adapter';
3
3
  export interface TronProviderOptions {
4
4
  getWallet?: () => Promise<Adapter>;
5
+ multicallBatchSize?: number;
5
6
  }
6
7
  export interface TronTaskContext {
7
8
  signedTransaction?: SignedTransaction;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EACV,OAAO,EACP,iBAAiB,EAClB,MAAM,uCAAuC,CAAA;AAE9C,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,uBACf,SAAQ,mBAAmB,EACzB,eAAe;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAC9C;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAC/C;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,WAAW,GACpB,QAAQ,IAAI,eAAe,CAE7B;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,MAAM,EAAE,OAAO,CAAA;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EACV,OAAO,EACP,iBAAiB,EAClB,MAAM,uCAAuC,CAAA;AAE9C,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,uBACf,SAAQ,mBAAmB,EACzB,eAAe;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAC9C;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAC/C;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,WAAW,GACpB,QAAQ,IAAI,eAAe,CAE7B;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,MAAM,EAAE,OAAO,CAAA;CAChB"}
@@ -1,3 +1,3 @@
1
1
  export declare const name = "@lifi/sdk-provider-tron";
2
- export declare const version = "4.0.0-alpha.23";
2
+ export declare const version = "4.0.0-alpha.24";
3
3
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/sdk-provider-tron",
3
- "version": "4.0.0-alpha.23",
3
+ "version": "4.0.0-alpha.24",
4
4
  "description": "LI.FI Tron SDK Provider for Any-to-Any Cross-Chain-Swap",
5
5
  "homepage": "https://github.com/lifinance/sdk",
6
6
  "bugs": {
@@ -30,7 +30,7 @@
30
30
  "dependencies": {
31
31
  "@tronweb3/tronwallet-abstract-adapter": "^1.1.10",
32
32
  "tronweb": "^6.0.4",
33
- "@lifi/sdk": "4.0.0-alpha.23"
33
+ "@lifi/sdk": "4.0.0-alpha.24"
34
34
  },
35
35
  "publishConfig": {
36
36
  "access": "public"
@@ -18,7 +18,13 @@ export function TronProvider(options?: TronProviderOptions): TronSDKProvider {
18
18
  },
19
19
  isAddress: (address: string) => TronWeb.isAddress(address),
20
20
  resolveAddress: resolveTronAddress,
21
- getBalance: getTronBalance,
21
+ getBalance: (client, walletAddress, tokens) =>
22
+ getTronBalance(
23
+ client,
24
+ walletAddress,
25
+ tokens,
26
+ _options.multicallBatchSize
27
+ ),
22
28
  async getStepExecutor(
23
29
  options: StepExecutorOptions
24
30
  ): Promise<TronStepExecutor> {
@@ -13,10 +13,13 @@ const GET_ETH_BALANCE_SELECTOR = TronWeb.sha3('getEthBalance(address)').slice(
13
13
  10
14
14
  )
15
15
 
16
+ const DEFAULT_MULTICALL_BATCH_SIZE = 50
17
+
16
18
  export const getTronBalance = async (
17
19
  client: SDKClient,
18
20
  walletAddress: string,
19
- tokens: Token[]
21
+ tokens: Token[],
22
+ multicallBatchSize: number = DEFAULT_MULTICALL_BATCH_SIZE
20
23
  ): Promise<TokenAmount[]> => {
21
24
  if (tokens.length === 0) {
22
25
  return []
@@ -35,7 +38,8 @@ export const getTronBalance = async (
35
38
  client,
36
39
  tokens,
37
40
  walletAddress,
38
- multicallAddress
41
+ multicallAddress,
42
+ multicallBatchSize
39
43
  )
40
44
  }
41
45
 
@@ -46,7 +50,8 @@ const getTronBalanceMulticall = async (
46
50
  client: SDKClient,
47
51
  tokens: Token[],
48
52
  walletAddress: string,
49
- multicallAddress: string
53
+ multicallAddress: string,
54
+ batchSize: number
50
55
  ): Promise<TokenAmount[]> => {
51
56
  const walletHex = toEvmHex(walletAddress)
52
57
  const multicallHex = toEvmHex(multicallAddress)
@@ -57,7 +62,7 @@ const getTronBalanceMulticall = async (
57
62
  const contract = tronWeb.contract(multicall3Abi, multicallAddress)
58
63
 
59
64
  // TronWeb encodes tuples positionally: [target, allowFailure, callData]
60
- const calls = tokens.map((token) => {
65
+ const allCalls = tokens.map((token) => {
61
66
  const isNative = isZeroAddress(token.address)
62
67
  return [
63
68
  isNative ? multicallHex : toEvmHex(token.address),
@@ -69,21 +74,39 @@ const getTronBalanceMulticall = async (
69
74
  ]
70
75
  })
71
76
 
72
- const [block, aggregateResult] = await Promise.all([
77
+ // Chunk calls to avoid CPU timeout on Tron nodes
78
+ const batches: (typeof allCalls)[] = []
79
+ for (let i = 0; i < allCalls.length; i += batchSize) {
80
+ batches.push(allCalls.slice(i, i + batchSize))
81
+ }
82
+
83
+ const [block, ...batchResults] = await Promise.all([
73
84
  tronWeb.trx.getCurrentBlock(),
74
- contract.aggregate3(calls).call({ from: walletAddress }),
85
+ ...batches.map((batch, idx) =>
86
+ contract
87
+ .aggregate3(batch)
88
+ .call({ from: walletAddress })
89
+ // TronWeb wraps the single return value in an extra array
90
+ .then((r: unknown[]) => r[0] as Array<[boolean, string]>)
91
+ .catch((error: Error) => {
92
+ console.warn(
93
+ `[getTronBalance] batch ${idx + 1}/${batches.length} failed:`,
94
+ error.message
95
+ )
96
+ return batch.map(() => [false, '0x'] as [boolean, string])
97
+ })
98
+ ),
75
99
  ])
76
100
 
77
101
  return [
78
102
  BigInt(block.block_header?.raw_data?.number ?? 0),
79
- // TronWeb wraps the single return value in an extra array
80
- aggregateResult[0],
103
+ batchResults.flat(),
81
104
  ]
82
105
  }
83
106
  )
84
107
 
85
108
  return tokens.map((token, i) => {
86
- const [success, returnData] = results[i]
109
+ const [success, returnData] = results[i] as [boolean, string]
87
110
  if (!success) {
88
111
  return { ...token, blockNumber }
89
112
  }
package/src/types.ts CHANGED
@@ -12,6 +12,7 @@ import type {
12
12
 
13
13
  export interface TronProviderOptions {
14
14
  getWallet?: () => Promise<Adapter>
15
+ multicallBatchSize?: number
15
16
  }
16
17
 
17
18
  export interface TronTaskContext {
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/sdk-provider-tron'
2
- export const version = '4.0.0-alpha.23'
2
+ export const version = '4.0.0-alpha.24'