@lifi/sdk-provider-tron 4.0.0-alpha.21
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/LICENSE +201 -0
- package/README.md +79 -0
- package/dist/cjs/TronProvider.d.ts +2 -0
- package/dist/cjs/TronProvider.js +37 -0
- package/dist/cjs/TronProvider.js.map +1 -0
- package/dist/cjs/actions/getTronBalance.d.ts +2 -0
- package/dist/cjs/actions/getTronBalance.js +75 -0
- package/dist/cjs/actions/getTronBalance.js.map +1 -0
- package/dist/cjs/actions/resolveTronAddress.d.ts +1 -0
- package/dist/cjs/actions/resolveTronAddress.js +7 -0
- package/dist/cjs/actions/resolveTronAddress.js.map +1 -0
- package/dist/cjs/core/TronStepExecutor.d.ts +10 -0
- package/dist/cjs/core/TronStepExecutor.js +47 -0
- package/dist/cjs/core/TronStepExecutor.js.map +1 -0
- package/dist/cjs/core/tasks/TronSignAndExecuteTask.d.ts +5 -0
- package/dist/cjs/core/tasks/TronSignAndExecuteTask.js +26 -0
- package/dist/cjs/core/tasks/TronSignAndExecuteTask.js.map +1 -0
- package/dist/cjs/core/tasks/TronWaitForTransactionTask.d.ts +5 -0
- package/dist/cjs/core/tasks/TronWaitForTransactionTask.js +56 -0
- package/dist/cjs/core/tasks/TronWaitForTransactionTask.js.map +1 -0
- package/dist/cjs/errors/parseTronErrors.d.ts +2 -0
- package/dist/cjs/errors/parseTronErrors.js +43 -0
- package/dist/cjs/errors/parseTronErrors.js.map +1 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types.d.ts +20 -0
- package/dist/cjs/types.js +8 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/version.d.ts +2 -0
- package/dist/cjs/version.js +6 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/TronProvider.d.ts +2 -0
- package/dist/esm/TronProvider.js +34 -0
- package/dist/esm/TronProvider.js.map +1 -0
- package/dist/esm/actions/getTronBalance.d.ts +2 -0
- package/dist/esm/actions/getTronBalance.js +72 -0
- package/dist/esm/actions/getTronBalance.js.map +1 -0
- package/dist/esm/actions/resolveTronAddress.d.ts +1 -0
- package/dist/esm/actions/resolveTronAddress.js +5 -0
- package/dist/esm/actions/resolveTronAddress.js.map +1 -0
- package/dist/esm/core/TronStepExecutor.d.ts +10 -0
- package/dist/esm/core/TronStepExecutor.js +43 -0
- package/dist/esm/core/TronStepExecutor.js.map +1 -0
- package/dist/esm/core/tasks/TronSignAndExecuteTask.d.ts +5 -0
- package/dist/esm/core/tasks/TronSignAndExecuteTask.js +22 -0
- package/dist/esm/core/tasks/TronSignAndExecuteTask.js.map +1 -0
- package/dist/esm/core/tasks/TronWaitForTransactionTask.d.ts +5 -0
- package/dist/esm/core/tasks/TronWaitForTransactionTask.js +53 -0
- package/dist/esm/core/tasks/TronWaitForTransactionTask.js.map +1 -0
- package/dist/esm/errors/parseTronErrors.d.ts +2 -0
- package/dist/esm/errors/parseTronErrors.js +40 -0
- package/dist/esm/errors/parseTronErrors.js.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/types.d.ts +20 -0
- package/dist/esm/types.js +5 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/version.d.ts +2 -0
- package/dist/esm/version.js +3 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/types/TronProvider.d.ts +3 -0
- package/dist/types/TronProvider.d.ts.map +1 -0
- package/dist/types/actions/getTronBalance.d.ts +3 -0
- package/dist/types/actions/getTronBalance.d.ts.map +1 -0
- package/dist/types/actions/resolveTronAddress.d.ts +2 -0
- package/dist/types/actions/resolveTronAddress.d.ts.map +1 -0
- package/dist/types/core/TronStepExecutor.d.ts +11 -0
- package/dist/types/core/TronStepExecutor.d.ts.map +1 -0
- package/dist/types/core/tasks/TronSignAndExecuteTask.d.ts +6 -0
- package/dist/types/core/tasks/TronSignAndExecuteTask.d.ts.map +1 -0
- package/dist/types/core/tasks/TronWaitForTransactionTask.d.ts +6 -0
- package/dist/types/core/tasks/TronWaitForTransactionTask.d.ts.map +1 -0
- package/dist/types/errors/parseTronErrors.d.ts +3 -0
- package/dist/types/errors/parseTronErrors.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types.d.ts +21 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/version.d.ts +3 -0
- package/dist/types/version.d.ts.map +1 -0
- package/package.json +76 -0
- package/src/TronProvider.ts +48 -0
- package/src/actions/getTronBalance.ts +108 -0
- package/src/actions/resolveTronAddress.ts +6 -0
- package/src/core/TronStepExecutor.ts +88 -0
- package/src/core/tasks/TronSignAndExecuteTask.ts +53 -0
- package/src/core/tasks/TronWaitForTransactionTask.ts +102 -0
- package/src/errors/parseTronErrors.ts +83 -0
- package/src/index.ts +4 -0
- package/src/types.ts +38 -0
- package/src/version.ts +2 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseTronErrors = void 0;
|
|
4
|
+
const sdk_1 = require("@lifi/sdk");
|
|
5
|
+
const tronwallet_abstract_adapter_1 = require("@tronweb3/tronwallet-abstract-adapter");
|
|
6
|
+
const parseTronErrors = async (e, step, action) => {
|
|
7
|
+
if (e instanceof sdk_1.SDKError) {
|
|
8
|
+
e.step = e.step ?? step;
|
|
9
|
+
e.action = e.action ?? action;
|
|
10
|
+
return e;
|
|
11
|
+
}
|
|
12
|
+
const baseError = handleSpecificErrors(e);
|
|
13
|
+
return new sdk_1.SDKError(baseError, step, action);
|
|
14
|
+
};
|
|
15
|
+
exports.parseTronErrors = parseTronErrors;
|
|
16
|
+
const handleSpecificErrors = (e) => {
|
|
17
|
+
const message = typeof e === 'string' ? e : e.message || '';
|
|
18
|
+
if (e instanceof tronwallet_abstract_adapter_1.WalletSignTransactionError ||
|
|
19
|
+
e instanceof tronwallet_abstract_adapter_1.WalletWindowClosedError) {
|
|
20
|
+
return new sdk_1.TransactionError(sdk_1.LiFiErrorCode.SignatureRejected, message, e);
|
|
21
|
+
}
|
|
22
|
+
if (e instanceof tronwallet_abstract_adapter_1.WalletNotFoundError ||
|
|
23
|
+
e instanceof tronwallet_abstract_adapter_1.WalletNotSelectedError ||
|
|
24
|
+
e instanceof tronwallet_abstract_adapter_1.WalletDisconnectedError) {
|
|
25
|
+
return new sdk_1.TransactionError(sdk_1.LiFiErrorCode.WalletChangedDuringExecution, message, e);
|
|
26
|
+
}
|
|
27
|
+
if (message === 'Invalid transaction provided' ||
|
|
28
|
+
message === 'Invalid transaction' ||
|
|
29
|
+
message === 'Transaction is not signed') {
|
|
30
|
+
return new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionUnprepared, message, e);
|
|
31
|
+
}
|
|
32
|
+
if (message === 'Transaction is already signed') {
|
|
33
|
+
return new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionFailed, message, e);
|
|
34
|
+
}
|
|
35
|
+
if (message === 'Private key does not match address in transaction') {
|
|
36
|
+
return new sdk_1.TransactionError(sdk_1.LiFiErrorCode.WalletChangedDuringExecution, message, e);
|
|
37
|
+
}
|
|
38
|
+
if (e instanceof sdk_1.BaseError) {
|
|
39
|
+
return e;
|
|
40
|
+
}
|
|
41
|
+
return new sdk_1.UnknownError(message || sdk_1.ErrorMessage.UnknownError, e);
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=parseTronErrors.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTronProvider = exports.TronProvider = void 0;
|
|
4
|
+
var TronProvider_js_1 = require("./TronProvider.js");
|
|
5
|
+
Object.defineProperty(exports, "TronProvider", { enumerable: true, get: function () { return TronProvider_js_1.TronProvider; } });
|
|
6
|
+
var types_js_1 = require("./types.js");
|
|
7
|
+
Object.defineProperty(exports, "isTronProvider", { enumerable: true, get: function () { return types_js_1.isTronProvider; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAAvC,+GAAA,YAAY,OAAA;AAErB,uCAA2C;AAAlC,0GAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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';
|
|
4
|
+
export interface TronProviderOptions {
|
|
5
|
+
getWallet?: () => Promise<Adapter>;
|
|
6
|
+
}
|
|
7
|
+
export interface TronTaskContext {
|
|
8
|
+
signedTransaction?: SignedTransaction;
|
|
9
|
+
}
|
|
10
|
+
export interface TronStepExecutorContext extends StepExecutorContext, TronTaskContext {
|
|
11
|
+
wallet: Adapter;
|
|
12
|
+
checkWallet: (step: LiFiStepExtended) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface TronSDKProvider extends SDKProvider {
|
|
15
|
+
setOptions(options: TronProviderOptions): void;
|
|
16
|
+
}
|
|
17
|
+
export declare function isTronProvider(provider: SDKProvider): provider is TronSDKProvider;
|
|
18
|
+
export interface TronStepExecutorOptions extends StepExecutorOptions {
|
|
19
|
+
wallet: Adapter;
|
|
20
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTronProvider = isTronProvider;
|
|
4
|
+
const sdk_1 = require("@lifi/sdk");
|
|
5
|
+
function isTronProvider(provider) {
|
|
6
|
+
return provider.type === sdk_1.ChainType.TVM;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG,yBAAyB,CAAA;AAChC,QAAA,OAAO,GAAG,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ChainType, LiFiErrorCode, ProviderError, } from '@lifi/sdk';
|
|
2
|
+
import { TronWeb } from 'tronweb';
|
|
3
|
+
import { getTronBalance } from './actions/getTronBalance.js';
|
|
4
|
+
import { resolveTronAddress } from './actions/resolveTronAddress.js';
|
|
5
|
+
import { TronStepExecutor } from './core/TronStepExecutor.js';
|
|
6
|
+
export function TronProvider(options) {
|
|
7
|
+
const _options = options ?? {};
|
|
8
|
+
return {
|
|
9
|
+
get type() {
|
|
10
|
+
return ChainType.TVM;
|
|
11
|
+
},
|
|
12
|
+
isAddress: (address) => TronWeb.isAddress(address),
|
|
13
|
+
resolveAddress: resolveTronAddress,
|
|
14
|
+
getBalance: getTronBalance,
|
|
15
|
+
async getStepExecutor(options) {
|
|
16
|
+
if (!_options.getWallet) {
|
|
17
|
+
throw new ProviderError(LiFiErrorCode.ProviderUnavailable, 'TronProvider requires a getWallet function.');
|
|
18
|
+
}
|
|
19
|
+
const wallet = await _options.getWallet();
|
|
20
|
+
const executor = new TronStepExecutor({
|
|
21
|
+
wallet,
|
|
22
|
+
routeId: options.routeId,
|
|
23
|
+
executionOptions: {
|
|
24
|
+
...options.executionOptions,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
return executor;
|
|
28
|
+
},
|
|
29
|
+
setOptions(options) {
|
|
30
|
+
Object.assign(_options, options);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=TronProvider.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { withDedupe } from '@lifi/sdk';
|
|
2
|
+
import { TronWeb } from 'tronweb';
|
|
3
|
+
export const getTronBalance = async (client, walletAddress, tokens) => {
|
|
4
|
+
if (tokens.length === 0) {
|
|
5
|
+
return [];
|
|
6
|
+
}
|
|
7
|
+
const { chainId } = tokens[0];
|
|
8
|
+
for (const token of tokens) {
|
|
9
|
+
if (token.chainId !== chainId) {
|
|
10
|
+
console.warn('Requested tokens have to be on the same chain.');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return getTronBalanceDefault(client, tokens, walletAddress);
|
|
14
|
+
};
|
|
15
|
+
const getTronBalanceDefault = async (client, tokens, walletAddress) => {
|
|
16
|
+
const rpcUrls = await client.getRpcUrlsByChainId(tokens[0].chainId);
|
|
17
|
+
const fullHost = rpcUrls[0] || 'https://api.trongrid.io';
|
|
18
|
+
const tronWeb = new TronWeb({ fullHost });
|
|
19
|
+
const [trxBalance, currentBlock] = await Promise.allSettled([
|
|
20
|
+
withDedupe(() => tronWeb.trx.getBalance(walletAddress), {
|
|
21
|
+
id: `${getTronBalanceDefault.name}.getBalance`,
|
|
22
|
+
}),
|
|
23
|
+
withDedupe(() => tronWeb.trx.getCurrentBlock(), {
|
|
24
|
+
id: `${getTronBalanceDefault.name}.getCurrentBlock`,
|
|
25
|
+
}),
|
|
26
|
+
]);
|
|
27
|
+
const nativeBalance = trxBalance.status === 'fulfilled' ? BigInt(trxBalance.value) : 0n;
|
|
28
|
+
const blockNumber = currentBlock.status === 'fulfilled'
|
|
29
|
+
? BigInt(currentBlock.value.block_header?.raw_data?.number ?? 0)
|
|
30
|
+
: 0n;
|
|
31
|
+
const walletTokenAmounts = {};
|
|
32
|
+
// Identify native TRX tokens by checking for the zero address pattern
|
|
33
|
+
const nativeTokens = tokens.filter((token) => token.address === 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' ||
|
|
34
|
+
token.address === '0x0000000000000000000000000000000000000000');
|
|
35
|
+
const trc20Tokens = tokens.filter((token) => token.address !== 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' &&
|
|
36
|
+
token.address !== '0x0000000000000000000000000000000000000000');
|
|
37
|
+
for (const token of nativeTokens) {
|
|
38
|
+
walletTokenAmounts[token.address] = nativeBalance;
|
|
39
|
+
}
|
|
40
|
+
if (trc20Tokens.length > 0) {
|
|
41
|
+
const trc20Balances = await Promise.allSettled(trc20Tokens.map((token) => withDedupe(async () => {
|
|
42
|
+
const contract = await tronWeb.contract().at(token.address);
|
|
43
|
+
const balance = await contract.balanceOf(walletAddress).call();
|
|
44
|
+
return {
|
|
45
|
+
address: token.address,
|
|
46
|
+
balance: BigInt(balance.toString()),
|
|
47
|
+
};
|
|
48
|
+
}, {
|
|
49
|
+
id: `${getTronBalanceDefault.name}.balanceOf.${token.address}`,
|
|
50
|
+
})));
|
|
51
|
+
for (const result of trc20Balances) {
|
|
52
|
+
if (result.status === 'fulfilled' && result.value.balance > 0n) {
|
|
53
|
+
walletTokenAmounts[result.value.address] = result.value.balance;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const tokenAmounts = tokens.map((token) => {
|
|
58
|
+
if (walletTokenAmounts[token.address]) {
|
|
59
|
+
return {
|
|
60
|
+
...token,
|
|
61
|
+
amount: walletTokenAmounts[token.address],
|
|
62
|
+
blockNumber,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
...token,
|
|
67
|
+
blockNumber,
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
return tokenAmounts;
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=getTronBalance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTronBalance.js","sourceRoot":"","sources":["../../../src/actions/getTronBalance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function resolveTronAddress(_name: string): Promise<string | undefined>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveTronAddress.js","sourceRoot":"","sources":["../../../src/actions/resolveTronAddress.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAa;IAEb,mDAAmD;IACnD,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseStepExecutor, type ExecutionAction, type LiFiStepExtended, type SDKError, type StepExecutorBaseContext, TaskPipeline } from '@lifi/sdk';
|
|
2
|
+
import type { TronStepExecutorContext, TronStepExecutorOptions } from '../types.js';
|
|
3
|
+
export declare class TronStepExecutor extends BaseStepExecutor {
|
|
4
|
+
private wallet;
|
|
5
|
+
constructor(options: TronStepExecutorOptions);
|
|
6
|
+
checkWallet: (step: LiFiStepExtended) => void;
|
|
7
|
+
parseErrors: (error: Error, step?: LiFiStepExtended, action?: ExecutionAction) => Promise<SDKError>;
|
|
8
|
+
createContext: (baseContext: StepExecutorBaseContext) => Promise<TronStepExecutorContext>;
|
|
9
|
+
createPipeline: (context: TronStepExecutorContext) => TaskPipeline;
|
|
10
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BaseStepExecutor, CheckBalanceTask, LiFiErrorCode, PrepareTransactionTask, TaskPipeline, TransactionError, WaitForTransactionStatusTask, } from '@lifi/sdk';
|
|
2
|
+
import { parseTronErrors } from '../errors/parseTronErrors.js';
|
|
3
|
+
import { TronSignAndExecuteTask } from './tasks/TronSignAndExecuteTask.js';
|
|
4
|
+
import { TronWaitForTransactionTask } from './tasks/TronWaitForTransactionTask.js';
|
|
5
|
+
export class TronStepExecutor extends BaseStepExecutor {
|
|
6
|
+
wallet;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
super(options);
|
|
9
|
+
this.wallet = options.wallet;
|
|
10
|
+
}
|
|
11
|
+
checkWallet = (step) => {
|
|
12
|
+
const address = this.wallet.address;
|
|
13
|
+
if (address && address !== step.action.fromAddress) {
|
|
14
|
+
throw new TransactionError(LiFiErrorCode.WalletChangedDuringExecution, 'The wallet address that requested the quote does not match the wallet address attempting to sign the transaction.');
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
parseErrors = (error, step, action) => parseTronErrors(error, step, action);
|
|
18
|
+
createContext = async (baseContext) => {
|
|
19
|
+
return {
|
|
20
|
+
...baseContext,
|
|
21
|
+
wallet: this.wallet,
|
|
22
|
+
checkWallet: this.checkWallet,
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
createPipeline = (context) => {
|
|
26
|
+
const { step, isBridgeExecution } = context;
|
|
27
|
+
const tasks = [
|
|
28
|
+
new CheckBalanceTask(),
|
|
29
|
+
new PrepareTransactionTask(),
|
|
30
|
+
new TronSignAndExecuteTask(),
|
|
31
|
+
new TronWaitForTransactionTask(),
|
|
32
|
+
new WaitForTransactionStatusTask(isBridgeExecution ? 'RECEIVING_CHAIN' : 'SWAP'),
|
|
33
|
+
];
|
|
34
|
+
const swapOrBridgeAction = this.statusManager.findAction(step, isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP');
|
|
35
|
+
const taskName = swapOrBridgeAction?.txHash && swapOrBridgeAction?.status === 'DONE'
|
|
36
|
+
? WaitForTransactionStatusTask.name
|
|
37
|
+
: CheckBalanceTask.name;
|
|
38
|
+
const firstTaskIndex = tasks.findIndex((task) => task.constructor.name === taskName);
|
|
39
|
+
const tasksToRun = tasks.slice(firstTaskIndex);
|
|
40
|
+
return new TaskPipeline(tasksToRun);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=TronStepExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TronStepExecutor.js","sourceRoot":"","sources":["../../../src/core/TronStepExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAEhB,aAAa,EAEb,sBAAsB,EAGtB,YAAY,EACZ,gBAAgB,EAChB,4BAA4B,GAC7B,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAK9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAElF,MAAM,OAAO,gBAAiB,SAAQ,gBAAgB;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,gBAAgB,CACxB,aAAa,CAAC,4BAA4B,EAC1C,mHAAmH,CACpH,CAAA;QACH,CAAC;IACH,CAAC,CAAA;IAEQ,WAAW,GAAG,CACrB,KAAY,EACZ,IAAuB,EACvB,MAAwB,EACL,EAAE,CAAC,eAAe,CAAC,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,gBAAgB,EAAE;YACtB,IAAI,sBAAsB,EAAE;YAC5B,IAAI,sBAAsB,EAAE;YAC5B,IAAI,0BAA0B,EAAE;YAChC,IAAI,4BAA4B,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,4BAA4B,CAAC,IAAI;YACnC,CAAC,CAAC,gBAAgB,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,YAAY,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC,CAAA;CACF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BaseStepExecutionTask, type TaskResult } from '@lifi/sdk';
|
|
2
|
+
import type { TronStepExecutorContext } from '../../types.js';
|
|
3
|
+
export declare class TronSignAndExecuteTask extends BaseStepExecutionTask {
|
|
4
|
+
run(context: TronStepExecutorContext): Promise<TaskResult>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseStepExecutionTask, getTransactionRequestData, LiFiErrorCode, TransactionError, } from '@lifi/sdk';
|
|
2
|
+
export class TronSignAndExecuteTask extends BaseStepExecutionTask {
|
|
3
|
+
async run(context) {
|
|
4
|
+
const { step, wallet, statusManager, executionOptions, isBridgeExecution, checkWallet, } = context;
|
|
5
|
+
const action = statusManager.findAction(step, isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP');
|
|
6
|
+
if (!action) {
|
|
7
|
+
throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction. Action not found.');
|
|
8
|
+
}
|
|
9
|
+
const transactionRequestData = await getTransactionRequestData(step, executionOptions);
|
|
10
|
+
checkWallet(step);
|
|
11
|
+
const unsignedTransaction = JSON.parse(transactionRequestData);
|
|
12
|
+
const signedTransaction = await wallet.signTransaction(unsignedTransaction);
|
|
13
|
+
statusManager.updateAction(step, action.type, 'PENDING', {
|
|
14
|
+
signedAt: Date.now(),
|
|
15
|
+
});
|
|
16
|
+
return {
|
|
17
|
+
status: 'COMPLETED',
|
|
18
|
+
context: { signedTransaction },
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=TronSignAndExecuteTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TronSignAndExecuteTask.js","sourceRoot":"","sources":["../../../../src/core/tasks/TronSignAndExecuteTask.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EAEb,gBAAgB,GACjB,MAAM,WAAW,CAAA;AAGlB,MAAM,OAAO,sBAAuB,SAAQ,qBAAqB;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,gBAAgB,CACxB,aAAa,CAAC,qBAAqB,EACnC,kDAAkD,CACnD,CAAA;QACH,CAAC;QAED,MAAM,sBAAsB,GAAG,MAAM,yBAAyB,CAC5D,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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BaseStepExecutionTask, type TaskResult } from '@lifi/sdk';
|
|
2
|
+
import type { TronStepExecutorContext } from '../../types.js';
|
|
3
|
+
export declare class TronWaitForTransactionTask extends BaseStepExecutionTask {
|
|
4
|
+
run(context: TronStepExecutorContext): Promise<TaskResult>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { BaseStepExecutionTask, LiFiErrorCode, TransactionError, } from '@lifi/sdk';
|
|
2
|
+
import { TronWeb } from 'tronweb';
|
|
3
|
+
export class TronWaitForTransactionTask extends BaseStepExecutionTask {
|
|
4
|
+
async run(context) {
|
|
5
|
+
const { client, step, statusManager, fromChain, isBridgeExecution, signedTransaction, } = context;
|
|
6
|
+
if (!signedTransaction) {
|
|
7
|
+
throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction. Signed transaction is not found.');
|
|
8
|
+
}
|
|
9
|
+
const action = statusManager.findAction(step, isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP');
|
|
10
|
+
if (!action) {
|
|
11
|
+
throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction. Action not found.');
|
|
12
|
+
}
|
|
13
|
+
const rpcUrls = await client.getRpcUrlsByChainId(fromChain.id);
|
|
14
|
+
const fullHost = rpcUrls[0] || 'https://api.trongrid.io';
|
|
15
|
+
const tronWeb = new TronWeb({ fullHost });
|
|
16
|
+
const broadcastResult = await tronWeb.trx.sendRawTransaction(signedTransaction);
|
|
17
|
+
if (!broadcastResult.result) {
|
|
18
|
+
throw new TransactionError(LiFiErrorCode.TransactionFailed, `Transaction broadcast failed: ${broadcastResult.code || 'Unknown error'}`);
|
|
19
|
+
}
|
|
20
|
+
const txHash = broadcastResult.transaction.txID;
|
|
21
|
+
statusManager.updateAction(step, action.type, 'PENDING', {
|
|
22
|
+
txHash,
|
|
23
|
+
txLink: `${fromChain.metamask.blockExplorerUrls[0]}#/transaction/${txHash}`,
|
|
24
|
+
});
|
|
25
|
+
await waitForTronConfirmation(tronWeb, txHash);
|
|
26
|
+
if (isBridgeExecution) {
|
|
27
|
+
statusManager.updateAction(step, action.type, 'DONE');
|
|
28
|
+
}
|
|
29
|
+
return { status: 'COMPLETED' };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async function waitForTronConfirmation(tronWeb, txHash, maxRetries = 20, intervalMs = 3000) {
|
|
33
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
34
|
+
try {
|
|
35
|
+
const txInfo = await tronWeb.trx.getTransactionInfo(txHash);
|
|
36
|
+
if (txInfo?.id) {
|
|
37
|
+
if (txInfo.receipt?.result === 'FAILED') {
|
|
38
|
+
throw new TransactionError(LiFiErrorCode.TransactionFailed, `Transaction failed on-chain: ${txInfo.receipt.result}`);
|
|
39
|
+
}
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof TransactionError) {
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
// Transaction info not yet available, continue polling
|
|
48
|
+
}
|
|
49
|
+
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
50
|
+
}
|
|
51
|
+
throw new TransactionError(LiFiErrorCode.TransactionFailed, 'Transaction confirmation timeout.');
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=TronWaitForTransactionTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TronWaitForTransactionTask.js","sourceRoot":"","sources":["../../../../src/core/tasks/TronWaitForTransactionTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BaseError, ErrorMessage, LiFiErrorCode, SDKError, TransactionError, UnknownError, } from '@lifi/sdk';
|
|
2
|
+
import { WalletDisconnectedError, WalletNotFoundError, WalletNotSelectedError, WalletSignTransactionError, WalletWindowClosedError, } from '@tronweb3/tronwallet-abstract-adapter';
|
|
3
|
+
export const parseTronErrors = async (e, step, action) => {
|
|
4
|
+
if (e instanceof SDKError) {
|
|
5
|
+
e.step = e.step ?? step;
|
|
6
|
+
e.action = e.action ?? action;
|
|
7
|
+
return e;
|
|
8
|
+
}
|
|
9
|
+
const baseError = handleSpecificErrors(e);
|
|
10
|
+
return new SDKError(baseError, step, action);
|
|
11
|
+
};
|
|
12
|
+
const handleSpecificErrors = (e) => {
|
|
13
|
+
const message = typeof e === 'string' ? e : e.message || '';
|
|
14
|
+
if (e instanceof WalletSignTransactionError ||
|
|
15
|
+
e instanceof WalletWindowClosedError) {
|
|
16
|
+
return new TransactionError(LiFiErrorCode.SignatureRejected, message, e);
|
|
17
|
+
}
|
|
18
|
+
if (e instanceof WalletNotFoundError ||
|
|
19
|
+
e instanceof WalletNotSelectedError ||
|
|
20
|
+
e instanceof WalletDisconnectedError) {
|
|
21
|
+
return new TransactionError(LiFiErrorCode.WalletChangedDuringExecution, message, e);
|
|
22
|
+
}
|
|
23
|
+
// TronWeb trx.sign() validation errors
|
|
24
|
+
if (message === 'Invalid transaction provided' ||
|
|
25
|
+
message === 'Invalid transaction' ||
|
|
26
|
+
message === 'Transaction is not signed') {
|
|
27
|
+
return new TransactionError(LiFiErrorCode.TransactionUnprepared, message, e);
|
|
28
|
+
}
|
|
29
|
+
if (message === 'Transaction is already signed') {
|
|
30
|
+
return new TransactionError(LiFiErrorCode.TransactionFailed, message, e);
|
|
31
|
+
}
|
|
32
|
+
if (message === 'Private key does not match address in transaction') {
|
|
33
|
+
return new TransactionError(LiFiErrorCode.WalletChangedDuringExecution, message, e);
|
|
34
|
+
}
|
|
35
|
+
if (e instanceof BaseError) {
|
|
36
|
+
return e;
|
|
37
|
+
}
|
|
38
|
+
return new UnknownError(message || ErrorMessage.UnknownError, e);
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=parseTronErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseTronErrors.js","sourceRoot":"","sources":["../../../src/errors/parseTronErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EAEZ,aAAa,EAEb,QAAQ,EACR,gBAAgB,EAChB,YAAY,GACb,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,uCAAuC,CAAA;AAE9C,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,CAAQ,EACR,IAAe,EACf,MAAwB,EACL,EAAE;IACrB,IAAI,CAAC,YAAY,QAAQ,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,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAC9C,CAAC,CAAA;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,0BAA0B;QACvC,CAAC,YAAY,uBAAuB,EACpC,CAAC;QACD,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,IACE,CAAC,YAAY,mBAAmB;QAChC,CAAC,YAAY,sBAAsB;QACnC,CAAC,YAAY,uBAAuB,EACpC,CAAC;QACD,OAAO,IAAI,gBAAgB,CACzB,aAAa,CAAC,4BAA4B,EAC1C,OAAO,EACP,CAAC,CACF,CAAA;IACH,CAAC;IAED,uCAAuC;IACvC,IACE,OAAO,KAAK,8BAA8B;QAC1C,OAAO,KAAK,qBAAqB;QACjC,OAAO,KAAK,2BAA2B,EACvC,CAAC;QACD,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,qBAAqB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED,IAAI,OAAO,KAAK,+BAA+B,EAAE,CAAC;QAChD,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,OAAO,KAAK,mDAAmD,EAAE,CAAC;QACpE,OAAO,IAAI,gBAAgB,CACzB,aAAa,CAAC,4BAA4B,EAC1C,OAAO,EACP,CAAC,CACF,CAAA;IACH,CAAC;IAED,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;AAClE,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "module","sideEffects":false}
|
|
@@ -0,0 +1,20 @@
|
|
|
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';
|
|
4
|
+
export interface TronProviderOptions {
|
|
5
|
+
getWallet?: () => Promise<Adapter>;
|
|
6
|
+
}
|
|
7
|
+
export interface TronTaskContext {
|
|
8
|
+
signedTransaction?: SignedTransaction;
|
|
9
|
+
}
|
|
10
|
+
export interface TronStepExecutorContext extends StepExecutorContext, TronTaskContext {
|
|
11
|
+
wallet: Adapter;
|
|
12
|
+
checkWallet: (step: LiFiStepExtended) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface TronSDKProvider extends SDKProvider {
|
|
15
|
+
setOptions(options: TronProviderOptions): void;
|
|
16
|
+
}
|
|
17
|
+
export declare function isTronProvider(provider: SDKProvider): provider is TronSDKProvider;
|
|
18
|
+
export interface TronStepExecutorOptions extends StepExecutorOptions {
|
|
19
|
+
wallet: Adapter;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAKV,MAAM,WAAW,CAAA;AAuBlB,MAAM,UAAU,cAAc,CAC5B,QAAqB;IAErB,OAAO,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,CAAA;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,yBAAyB,CAAA;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAA"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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;AAI9D,eAAO,MAAM,cAAc,GACzB,QAAQ,SAAS,EACjB,eAAe,MAAM,EACrB,QAAQ,KAAK,EAAE,KACd,OAAO,CAAC,WAAW,EAAE,CAYvB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveTronAddress.d.ts","sourceRoot":"","sources":["../../../src/actions/resolveTronAddress.ts"],"names":[],"mappings":"AAAA,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG7B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseStepExecutor, type ExecutionAction, type LiFiStepExtended, type SDKError, type StepExecutorBaseContext, TaskPipeline } from '@lifi/sdk';
|
|
2
|
+
import type { TronStepExecutorContext, TronStepExecutorOptions } from '../types.js';
|
|
3
|
+
export declare class TronStepExecutor extends BaseStepExecutor {
|
|
4
|
+
private wallet;
|
|
5
|
+
constructor(options: TronStepExecutorOptions);
|
|
6
|
+
checkWallet: (step: LiFiStepExtended) => void;
|
|
7
|
+
parseErrors: (error: Error, step?: LiFiStepExtended, action?: ExecutionAction) => Promise<SDKError>;
|
|
8
|
+
createContext: (baseContext: StepExecutorBaseContext) => Promise<TronStepExecutorContext>;
|
|
9
|
+
createPipeline: (context: TronStepExecutorContext) => TaskPipeline;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=TronStepExecutor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TronStepExecutor.d.ts","sourceRoot":"","sources":["../../../src/core/TronStepExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAEhB,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EAErB,KAAK,QAAQ,EACb,KAAK,uBAAuB,EAC5B,YAAY,EAGb,MAAM,WAAW,CAAA;AAGlB,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,aAAa,CAAA;AAIpB,qBAAa,gBAAiB,SAAQ,gBAAgB;IACpD,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,uBAAuB;IAK5C,WAAW,GAAI,MAAM,gBAAgB,UAQpC;IAEQ,WAAW,GAClB,OAAO,KAAK,EACZ,OAAO,gBAAgB,EACvB,SAAS,eAAe,KACvB,OAAO,CAAC,QAAQ,CAAC,CAAwC;IAEnD,aAAa,GACpB,aAAa,uBAAuB,KACnC,OAAO,CAAC,uBAAuB,CAAC,CAMlC;IAEQ,cAAc,GAAI,SAAS,uBAAuB,kBA8B1D;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BaseStepExecutionTask, type TaskResult } from '@lifi/sdk';
|
|
2
|
+
import type { TronStepExecutorContext } from '../../types.js';
|
|
3
|
+
export declare class TronSignAndExecuteTask extends BaseStepExecutionTask {
|
|
4
|
+
run(context: TronStepExecutorContext): Promise<TaskResult>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=TronSignAndExecuteTask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TronSignAndExecuteTask.d.ts","sourceRoot":"","sources":["../../../../src/core/tasks/TronSignAndExecuteTask.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGrB,KAAK,UAAU,EAEhB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAE7D,qBAAa,sBAAuB,SAAQ,qBAAqB;IACzD,GAAG,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;CA0CjE"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BaseStepExecutionTask, type TaskResult } from '@lifi/sdk';
|
|
2
|
+
import type { TronStepExecutorContext } from '../../types.js';
|
|
3
|
+
export declare class TronWaitForTransactionTask extends BaseStepExecutionTask {
|
|
4
|
+
run(context: TronStepExecutorContext): Promise<TaskResult>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=TronWaitForTransactionTask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TronWaitForTransactionTask.d.ts","sourceRoot":"","sources":["../../../../src/core/tasks/TronWaitForTransactionTask.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,KAAK,UAAU,EAEhB,MAAM,WAAW,CAAA;AAElB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAE7D,qBAAa,0BAA2B,SAAQ,qBAAqB;IAC7D,GAAG,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;CAyDjE"}
|