@across-protocol/sdk 4.3.136 → 4.3.137-alpha.0
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/dist/cjs/src/arch/evm/UpgradeUtils.d.ts +2 -0
- package/dist/cjs/src/arch/evm/UpgradeUtils.js +33 -0
- package/dist/cjs/src/arch/evm/UpgradeUtils.js.map +1 -0
- package/dist/cjs/src/arch/evm/index.d.ts +1 -0
- package/dist/cjs/src/arch/evm/index.js +1 -0
- package/dist/cjs/src/arch/evm/index.js.map +1 -1
- package/dist/cjs/src/arch/index.d.ts +1 -0
- package/dist/cjs/src/arch/index.js +2 -1
- package/dist/cjs/src/arch/index.js.map +1 -1
- package/dist/cjs/src/arch/tvm/BlockUtils.d.ts +1 -0
- package/dist/cjs/src/arch/tvm/BlockUtils.js +7 -0
- package/dist/cjs/src/arch/tvm/BlockUtils.js.map +1 -0
- package/dist/cjs/src/arch/tvm/MessageUtils.d.ts +1 -0
- package/dist/cjs/src/arch/tvm/MessageUtils.js +5 -0
- package/dist/cjs/src/arch/tvm/MessageUtils.js.map +1 -0
- package/dist/cjs/src/arch/tvm/ResourceUtils.d.ts +14 -0
- package/dist/cjs/src/arch/tvm/ResourceUtils.js +69 -0
- package/dist/cjs/src/arch/tvm/ResourceUtils.js.map +1 -0
- package/dist/cjs/src/arch/tvm/SpokeUtils.d.ts +12 -0
- package/dist/cjs/src/arch/tvm/SpokeUtils.js +207 -0
- package/dist/cjs/src/arch/tvm/SpokeUtils.js.map +1 -0
- package/dist/cjs/src/arch/tvm/TransactionUtils.d.ts +7 -0
- package/dist/cjs/src/arch/tvm/TransactionUtils.js +43 -0
- package/dist/cjs/src/arch/tvm/TransactionUtils.js.map +1 -0
- package/dist/cjs/src/arch/tvm/index.d.ts +6 -0
- package/dist/cjs/src/arch/tvm/index.js +10 -0
- package/dist/cjs/src/arch/tvm/index.js.map +1 -0
- package/dist/cjs/src/arch/tvm/types.d.ts +2 -0
- package/dist/cjs/src/arch/tvm/types.js +3 -0
- package/dist/cjs/src/arch/tvm/types.js.map +1 -0
- package/dist/cjs/src/arch/tvm/utils/address.d.ts +3 -0
- package/dist/cjs/src/arch/tvm/utils/address.js +17 -0
- package/dist/cjs/src/arch/tvm/utils/address.js.map +1 -0
- package/dist/cjs/src/arch/tvm/utils/index.d.ts +2 -0
- package/dist/cjs/src/arch/tvm/utils/index.js +6 -0
- package/dist/cjs/src/arch/tvm/utils/index.js.map +1 -0
- package/dist/cjs/src/arch/tvm/utils/wait.d.ts +1 -0
- package/dist/cjs/src/arch/tvm/utils/wait.js +5 -0
- package/dist/cjs/src/arch/tvm/utils/wait.js.map +1 -0
- package/dist/cjs/src/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +9 -2
- package/dist/cjs/src/clients/SpokePoolClient/EVMSpokePoolClient.js +33 -12
- package/dist/cjs/src/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/src/clients/SpokePoolClient/TVMSpokePoolClient.d.ts +11 -0
- package/dist/cjs/src/clients/SpokePoolClient/TVMSpokePoolClient.js +47 -0
- package/dist/cjs/src/clients/SpokePoolClient/TVMSpokePoolClient.js.map +1 -0
- package/dist/cjs/src/clients/SpokePoolClient/index.d.ts +3 -0
- package/dist/cjs/src/clients/SpokePoolClient/index.js +7 -1
- package/dist/cjs/src/clients/SpokePoolClient/index.js.map +1 -1
- package/dist/cjs/src/clients/SpokePoolClient/types.d.ts +1 -0
- package/dist/cjs/src/clients/SpokePoolClient/types.js +2 -1
- package/dist/cjs/src/clients/SpokePoolClient/types.js.map +1 -1
- package/dist/cjs/src/gasPriceOracle/adapters/tron.d.ts +4 -0
- package/dist/cjs/src/gasPriceOracle/adapters/tron.js +58 -0
- package/dist/cjs/src/gasPriceOracle/adapters/tron.js.map +1 -0
- package/dist/cjs/src/gasPriceOracle/index.d.ts +1 -1
- package/dist/cjs/src/gasPriceOracle/oracle.d.ts +3 -1
- package/dist/cjs/src/gasPriceOracle/oracle.js +15 -10
- package/dist/cjs/src/gasPriceOracle/oracle.js.map +1 -1
- package/dist/cjs/src/gasPriceOracle/types.d.ts +6 -1
- package/dist/cjs/src/gasPriceOracle/types.js +5 -0
- package/dist/cjs/src/gasPriceOracle/types.js.map +1 -1
- package/dist/cjs/src/relayFeeCalculator/chain-queries/factory.d.ts +81 -152
- package/dist/cjs/src/relayFeeCalculator/chain-queries/factory.js +5 -0
- package/dist/cjs/src/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/cjs/src/relayFeeCalculator/chain-queries/index.d.ts +1 -0
- package/dist/cjs/src/relayFeeCalculator/chain-queries/index.js +1 -0
- package/dist/cjs/src/relayFeeCalculator/chain-queries/index.js.map +1 -1
- package/dist/cjs/src/relayFeeCalculator/chain-queries/tvmQuery.d.ts +16 -0
- package/dist/cjs/src/relayFeeCalculator/chain-queries/tvmQuery.js +52 -0
- package/dist/cjs/src/relayFeeCalculator/chain-queries/tvmQuery.js.map +1 -0
- package/dist/cjs/src/relayFeeCalculator/relayFeeCalculator.d.ts +77 -150
- package/dist/cjs/src/utils/Multicall.js +1 -0
- package/dist/cjs/src/utils/Multicall.js.map +1 -1
- package/dist/cjs/src/utils/NetworkUtils.d.ts +1 -0
- package/dist/cjs/src/utils/NetworkUtils.js +9 -3
- package/dist/cjs/src/utils/NetworkUtils.js.map +1 -1
- package/dist/cjs/src/utils/TokenUtils.d.ts +154 -300
- package/dist/cjs/src/utils/TypeGuards.d.ts +3 -1
- package/dist/cjs/src/utils/TypeGuards.js +5 -0
- package/dist/cjs/src/utils/TypeGuards.js.map +1 -1
- package/dist/esm/src/arch/evm/UpgradeUtils.d.ts +9 -0
- package/dist/esm/src/arch/evm/UpgradeUtils.js +37 -0
- package/dist/esm/src/arch/evm/UpgradeUtils.js.map +1 -0
- package/dist/esm/src/arch/evm/index.d.ts +1 -0
- package/dist/esm/src/arch/evm/index.js +1 -0
- package/dist/esm/src/arch/evm/index.js.map +1 -1
- package/dist/esm/src/arch/index.d.ts +1 -0
- package/dist/esm/src/arch/index.js +2 -0
- package/dist/esm/src/arch/index.js.map +1 -1
- package/dist/esm/src/arch/tvm/BlockUtils.d.ts +1 -0
- package/dist/esm/src/arch/tvm/BlockUtils.js +2 -0
- package/dist/esm/src/arch/tvm/BlockUtils.js.map +1 -0
- package/dist/esm/src/arch/tvm/MessageUtils.d.ts +1 -0
- package/dist/esm/src/arch/tvm/MessageUtils.js +2 -0
- package/dist/esm/src/arch/tvm/MessageUtils.js.map +1 -0
- package/dist/esm/src/arch/tvm/ResourceUtils.d.ts +32 -0
- package/dist/esm/src/arch/tvm/ResourceUtils.js +88 -0
- package/dist/esm/src/arch/tvm/ResourceUtils.js.map +1 -0
- package/dist/esm/src/arch/tvm/SpokeUtils.d.ts +48 -0
- package/dist/esm/src/arch/tvm/SpokeUtils.js +237 -0
- package/dist/esm/src/arch/tvm/SpokeUtils.js.map +1 -0
- package/dist/esm/src/arch/tvm/TransactionUtils.d.ts +20 -0
- package/dist/esm/src/arch/tvm/TransactionUtils.js +55 -0
- package/dist/esm/src/arch/tvm/TransactionUtils.js.map +1 -0
- package/dist/esm/src/arch/tvm/index.d.ts +6 -0
- package/dist/esm/src/arch/tvm/index.js +7 -0
- package/dist/esm/src/arch/tvm/index.js.map +1 -0
- package/dist/esm/src/arch/tvm/types.d.ts +2 -0
- package/dist/esm/src/arch/tvm/types.js +2 -0
- package/dist/esm/src/arch/tvm/types.js.map +1 -0
- package/dist/esm/src/arch/tvm/utils/address.d.ts +18 -0
- package/dist/esm/src/arch/tvm/utils/address.js +31 -0
- package/dist/esm/src/arch/tvm/utils/address.js.map +1 -0
- package/dist/esm/src/arch/tvm/utils/index.d.ts +2 -0
- package/dist/esm/src/arch/tvm/utils/index.js +3 -0
- package/dist/esm/src/arch/tvm/utils/index.js.map +1 -0
- package/dist/esm/src/arch/tvm/utils/wait.d.ts +1 -0
- package/dist/esm/src/arch/tvm/utils/wait.js +2 -0
- package/dist/esm/src/arch/tvm/utils/wait.js.map +1 -0
- package/dist/esm/src/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +20 -2
- package/dist/esm/src/clients/SpokePoolClient/EVMSpokePoolClient.js +44 -12
- package/dist/esm/src/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/esm/src/clients/SpokePoolClient/TVMSpokePoolClient.d.ts +32 -0
- package/dist/esm/src/clients/SpokePoolClient/TVMSpokePoolClient.js +66 -0
- package/dist/esm/src/clients/SpokePoolClient/TVMSpokePoolClient.js.map +1 -0
- package/dist/esm/src/clients/SpokePoolClient/index.d.ts +8 -0
- package/dist/esm/src/clients/SpokePoolClient/index.js +10 -1
- package/dist/esm/src/clients/SpokePoolClient/index.js.map +1 -1
- package/dist/esm/src/clients/SpokePoolClient/types.d.ts +1 -0
- package/dist/esm/src/clients/SpokePoolClient/types.js +1 -0
- package/dist/esm/src/clients/SpokePoolClient/types.js.map +1 -1
- package/dist/esm/src/gasPriceOracle/adapters/tron.d.ts +10 -0
- package/dist/esm/src/gasPriceOracle/adapters/tron.js +68 -0
- package/dist/esm/src/gasPriceOracle/adapters/tron.js.map +1 -0
- package/dist/esm/src/gasPriceOracle/index.d.ts +1 -1
- package/dist/esm/src/gasPriceOracle/oracle.d.ts +3 -1
- package/dist/esm/src/gasPriceOracle/oracle.js +17 -11
- package/dist/esm/src/gasPriceOracle/oracle.js.map +1 -1
- package/dist/esm/src/gasPriceOracle/types.d.ts +6 -1
- package/dist/esm/src/gasPriceOracle/types.js +4 -0
- package/dist/esm/src/gasPriceOracle/types.js.map +1 -1
- package/dist/esm/src/relayFeeCalculator/chain-queries/factory.d.ts +81 -152
- package/dist/esm/src/relayFeeCalculator/chain-queries/factory.js +6 -1
- package/dist/esm/src/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/esm/src/relayFeeCalculator/chain-queries/index.d.ts +1 -0
- package/dist/esm/src/relayFeeCalculator/chain-queries/index.js +1 -0
- package/dist/esm/src/relayFeeCalculator/chain-queries/index.js.map +1 -1
- package/dist/esm/src/relayFeeCalculator/chain-queries/tvmQuery.d.ts +32 -0
- package/dist/esm/src/relayFeeCalculator/chain-queries/tvmQuery.js +65 -0
- package/dist/esm/src/relayFeeCalculator/chain-queries/tvmQuery.js.map +1 -0
- package/dist/esm/src/relayFeeCalculator/relayFeeCalculator.d.ts +77 -150
- package/dist/esm/src/utils/Multicall.js +1 -0
- package/dist/esm/src/utils/Multicall.js.map +1 -1
- package/dist/esm/src/utils/NetworkUtils.d.ts +6 -0
- package/dist/esm/src/utils/NetworkUtils.js +13 -3
- package/dist/esm/src/utils/NetworkUtils.js.map +1 -1
- package/dist/esm/src/utils/TokenUtils.d.ts +154 -300
- package/dist/esm/src/utils/TypeGuards.d.ts +3 -1
- package/dist/esm/src/utils/TypeGuards.js +4 -0
- package/dist/esm/src/utils/TypeGuards.js.map +1 -1
- package/dist/types/src/arch/evm/UpgradeUtils.d.ts +10 -0
- package/dist/types/src/arch/evm/UpgradeUtils.d.ts.map +1 -0
- package/dist/types/src/arch/evm/index.d.ts +1 -0
- package/dist/types/src/arch/evm/index.d.ts.map +1 -1
- package/dist/types/src/arch/index.d.ts +1 -0
- package/dist/types/src/arch/index.d.ts.map +1 -1
- package/dist/types/src/arch/tvm/BlockUtils.d.ts +2 -0
- package/dist/types/src/arch/tvm/BlockUtils.d.ts.map +1 -0
- package/dist/types/src/arch/tvm/MessageUtils.d.ts +2 -0
- package/dist/types/src/arch/tvm/MessageUtils.d.ts.map +1 -0
- package/dist/types/src/arch/tvm/ResourceUtils.d.ts +33 -0
- package/dist/types/src/arch/tvm/ResourceUtils.d.ts.map +1 -0
- package/dist/types/src/arch/tvm/SpokeUtils.d.ts +49 -0
- package/dist/types/src/arch/tvm/SpokeUtils.d.ts.map +1 -0
- package/dist/types/src/arch/tvm/TransactionUtils.d.ts +21 -0
- package/dist/types/src/arch/tvm/TransactionUtils.d.ts.map +1 -0
- package/dist/types/src/arch/tvm/index.d.ts +7 -0
- package/dist/types/src/arch/tvm/index.d.ts.map +1 -0
- package/dist/types/src/arch/tvm/types.d.ts +3 -0
- package/dist/types/src/arch/tvm/types.d.ts.map +1 -0
- package/dist/types/src/arch/tvm/utils/address.d.ts +19 -0
- package/dist/types/src/arch/tvm/utils/address.d.ts.map +1 -0
- package/dist/types/src/arch/tvm/utils/index.d.ts +3 -0
- package/dist/types/src/arch/tvm/utils/index.d.ts.map +1 -0
- package/dist/types/src/arch/tvm/utils/wait.d.ts +2 -0
- package/dist/types/src/arch/tvm/utils/wait.d.ts.map +1 -0
- package/dist/types/src/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +20 -2
- package/dist/types/src/clients/SpokePoolClient/EVMSpokePoolClient.d.ts.map +1 -1
- package/dist/types/src/clients/SpokePoolClient/TVMSpokePoolClient.d.ts +33 -0
- package/dist/types/src/clients/SpokePoolClient/TVMSpokePoolClient.d.ts.map +1 -0
- package/dist/types/src/clients/SpokePoolClient/index.d.ts +8 -0
- package/dist/types/src/clients/SpokePoolClient/index.d.ts.map +1 -1
- package/dist/types/src/clients/SpokePoolClient/types.d.ts +1 -0
- package/dist/types/src/clients/SpokePoolClient/types.d.ts.map +1 -1
- package/dist/types/src/gasPriceOracle/adapters/tron.d.ts +11 -0
- package/dist/types/src/gasPriceOracle/adapters/tron.d.ts.map +1 -0
- package/dist/types/src/gasPriceOracle/index.d.ts +1 -1
- package/dist/types/src/gasPriceOracle/index.d.ts.map +1 -1
- package/dist/types/src/gasPriceOracle/oracle.d.ts +3 -1
- package/dist/types/src/gasPriceOracle/oracle.d.ts.map +1 -1
- package/dist/types/src/gasPriceOracle/types.d.ts +6 -1
- package/dist/types/src/gasPriceOracle/types.d.ts.map +1 -1
- package/dist/types/src/relayFeeCalculator/chain-queries/factory.d.ts +81 -152
- package/dist/types/src/relayFeeCalculator/chain-queries/factory.d.ts.map +1 -1
- package/dist/types/src/relayFeeCalculator/chain-queries/index.d.ts +1 -0
- package/dist/types/src/relayFeeCalculator/chain-queries/index.d.ts.map +1 -1
- package/dist/types/src/relayFeeCalculator/chain-queries/tvmQuery.d.ts +33 -0
- package/dist/types/src/relayFeeCalculator/chain-queries/tvmQuery.d.ts.map +1 -0
- package/dist/types/src/relayFeeCalculator/relayFeeCalculator.d.ts +77 -150
- package/dist/types/src/relayFeeCalculator/relayFeeCalculator.d.ts.map +1 -1
- package/dist/types/src/utils/Multicall.d.ts.map +1 -1
- package/dist/types/src/utils/NetworkUtils.d.ts +6 -0
- package/dist/types/src/utils/NetworkUtils.d.ts.map +1 -1
- package/dist/types/src/utils/TokenUtils.d.ts +154 -300
- package/dist/types/src/utils/TokenUtils.d.ts.map +1 -1
- package/dist/types/src/utils/TypeGuards.d.ts +3 -1
- package/dist/types/src/utils/TypeGuards.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/arch/evm/UpgradeUtils.ts +18 -0
- package/src/arch/evm/index.ts +1 -0
- package/src/arch/index.ts +1 -0
- package/src/arch/tvm/BlockUtils.ts +1 -0
- package/src/arch/tvm/MessageUtils.ts +1 -0
- package/src/arch/tvm/ResourceUtils.ts +92 -0
- package/src/arch/tvm/SpokeUtils.ts +225 -0
- package/src/arch/tvm/TransactionUtils.ts +62 -0
- package/src/arch/tvm/index.ts +6 -0
- package/src/arch/tvm/types.ts +2 -0
- package/src/arch/tvm/utils/address.ts +33 -0
- package/src/arch/tvm/utils/index.ts +2 -0
- package/src/arch/tvm/utils/wait.ts +1 -0
- package/src/clients/SpokePoolClient/EVMSpokePoolClient.ts +44 -18
- package/src/clients/SpokePoolClient/TVMSpokePoolClient.ts +65 -0
- package/src/clients/SpokePoolClient/index.ts +12 -1
- package/src/clients/SpokePoolClient/types.ts +1 -0
- package/src/gasPriceOracle/adapters/tron.ts +50 -0
- package/src/gasPriceOracle/index.ts +1 -1
- package/src/gasPriceOracle/oracle.ts +23 -3
- package/src/gasPriceOracle/types.ts +11 -1
- package/src/relayFeeCalculator/chain-queries/factory.ts +18 -3
- package/src/relayFeeCalculator/chain-queries/index.ts +1 -0
- package/src/relayFeeCalculator/chain-queries/tvmQuery.ts +88 -0
- package/src/utils/Multicall.ts +1 -0
- package/src/utils/NetworkUtils.ts +13 -3
- package/src/utils/TypeGuards.ts +6 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { __awaiter, __generator } from "tslib";
|
|
2
|
+
import { evmToTronAddress } from "./utils/address";
|
|
3
|
+
/**
|
|
4
|
+
* Submit a populated EVM transaction to TRON via TronWeb.
|
|
5
|
+
*
|
|
6
|
+
* The EVM `populateV3Relay()` already produces correct ABI-encoded calldata.
|
|
7
|
+
* This function extracts `to` and `data` from the PopulatedTransaction,
|
|
8
|
+
* converts the target address to TRON Base58 format, and uses TronWeb's
|
|
9
|
+
* `triggerSmartContract` → `sign` → `sendRawTransaction` pipeline.
|
|
10
|
+
*
|
|
11
|
+
* @param tronWeb An authenticated TronWeb instance (with private key set).
|
|
12
|
+
* @param populatedTx The populated transaction containing `to` and `data`.
|
|
13
|
+
* @param feeLimit The maximum TRX to burn for energy consumption, in SUN (1 TRX = 1,000,000 SUN).
|
|
14
|
+
* @returns The transaction ID and result status.
|
|
15
|
+
*/
|
|
16
|
+
export function submitTransaction(tronWeb, populatedTx, feeLimit) {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
18
|
+
var to, data, tronAddress, ownerAddress, txWrapper, message, signedTx, broadcast;
|
|
19
|
+
var _a, _b, _c, _d, _e, _f;
|
|
20
|
+
return __generator(this, function (_g) {
|
|
21
|
+
switch (_g.label) {
|
|
22
|
+
case 0:
|
|
23
|
+
to = populatedTx.to, data = populatedTx.data;
|
|
24
|
+
if (!to || !data) {
|
|
25
|
+
throw new Error("submitTransaction: populatedTx must have both 'to' and 'data' fields");
|
|
26
|
+
}
|
|
27
|
+
tronAddress = evmToTronAddress(to);
|
|
28
|
+
ownerAddress = (_a = tronWeb.defaultAddress) === null || _a === void 0 ? void 0 : _a.base58;
|
|
29
|
+
if (!ownerAddress) {
|
|
30
|
+
throw new Error("submitTransaction: TronWeb instance must have a default address configured");
|
|
31
|
+
}
|
|
32
|
+
return [4 /*yield*/, tronWeb.transactionBuilder.triggerSmartContract(tronAddress,
|
|
33
|
+
// Use empty function selector — the `input` option provides the full calldata.
|
|
34
|
+
"", { feeLimit: feeLimit, input: data }, [], ownerAddress)];
|
|
35
|
+
case 1:
|
|
36
|
+
txWrapper = _g.sent();
|
|
37
|
+
if (!((_b = txWrapper === null || txWrapper === void 0 ? void 0 : txWrapper.result) === null || _b === void 0 ? void 0 : _b.result)) {
|
|
38
|
+
message = (_d = (_c = txWrapper === null || txWrapper === void 0 ? void 0 : txWrapper.result) === null || _c === void 0 ? void 0 : _c.message) !== null && _d !== void 0 ? _d : "Unknown error";
|
|
39
|
+
throw new Error("submitTransaction: triggerSmartContract failed: ".concat(message));
|
|
40
|
+
}
|
|
41
|
+
return [4 /*yield*/, tronWeb.trx.sign(txWrapper.transaction)];
|
|
42
|
+
case 2:
|
|
43
|
+
signedTx = _g.sent();
|
|
44
|
+
return [4 /*yield*/, tronWeb.trx.sendRawTransaction(signedTx)];
|
|
45
|
+
case 3:
|
|
46
|
+
broadcast = _g.sent();
|
|
47
|
+
return [2 /*return*/, {
|
|
48
|
+
txid: (_e = broadcast.txid) !== null && _e !== void 0 ? _e : signedTx.txID,
|
|
49
|
+
result: (_f = broadcast.result) !== null && _f !== void 0 ? _f : false,
|
|
50
|
+
}];
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=TransactionUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionUtils.js","sourceRoot":"","sources":["../../../../../src/arch/tvm/TransactionUtils.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOnD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAgB,iBAAiB,CACrC,OAAgB,EAChB,WAAiC,EACjC,QAAgB;;;;;;;oBAER,EAAE,GAAW,WAAW,GAAtB,EAAE,IAAI,GAAK,WAAW,KAAhB,CAAiB;oBACjC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;wBACjB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;oBAC1F,CAAC;oBAEK,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;oBACnC,YAAY,GAAG,MAAA,OAAO,CAAC,cAAc,0CAAE,MAAM,CAAC;oBACpD,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;oBAChG,CAAC;oBAIiB,qBAAM,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,CACrE,WAAW;wBACX,+EAA+E;wBAC/E,EAAE,EACF,EAAE,QAAQ,UAAA,EAAE,KAAK,EAAE,IAAI,EAAE,EACzB,EAAE,EACF,YAAY,CACb,EAAA;;oBAPK,SAAS,GAAG,SAOjB;oBAED,IAAI,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,0CAAE,MAAM,CAAA,EAAE,CAAC;wBACzB,OAAO,GAAG,MAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,0CAAE,OAAO,mCAAI,eAAe,CAAC;wBAC9D,MAAM,IAAI,KAAK,CAAC,0DAAmD,OAAO,CAAE,CAAC,CAAC;oBAChF,CAAC;oBAEgB,qBAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAA;;oBAAxD,QAAQ,GAAG,SAA6C;oBAC5C,qBAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAA;;oBAA1D,SAAS,GAAG,SAA8C;oBAEhE,sBAAO;4BACL,IAAI,EAAE,MAAA,SAAS,CAAC,IAAI,mCAAI,QAAQ,CAAC,IAAI;4BACrC,MAAM,EAAE,MAAA,SAAS,CAAC,MAAM,mCAAI,KAAK;yBAClC,EAAC;;;;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/arch/tvm/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/arch/tvm/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert an EVM-format hex address (0x...) to a TRON Base58Check address (T...).
|
|
3
|
+
* @param evmAddress The 0x-prefixed hex address.
|
|
4
|
+
* @returns The TRON Base58Check-encoded address.
|
|
5
|
+
*/
|
|
6
|
+
export declare function evmToTronAddress(evmAddress: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Convert a TRON Base58Check address (T...) to an EVM-format hex address (0x...).
|
|
9
|
+
* @param tronAddress The TRON Base58Check-encoded address.
|
|
10
|
+
* @returns The 0x-prefixed hex address.
|
|
11
|
+
*/
|
|
12
|
+
export declare function tronToEvmAddress(tronAddress: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Check whether a string is a valid TRON Base58Check address.
|
|
15
|
+
* @param address The string to check.
|
|
16
|
+
* @returns True if the address is a valid TRON Base58Check address.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isTronBase58Address(address: string): boolean;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { TronWeb } from "tronweb";
|
|
2
|
+
/**
|
|
3
|
+
* Convert an EVM-format hex address (0x...) to a TRON Base58Check address (T...).
|
|
4
|
+
* @param evmAddress The 0x-prefixed hex address.
|
|
5
|
+
* @returns The TRON Base58Check-encoded address.
|
|
6
|
+
*/
|
|
7
|
+
export function evmToTronAddress(evmAddress) {
|
|
8
|
+
// TronWeb.address.fromHex expects a hex address (with or without 0x prefix)
|
|
9
|
+
// and returns the Base58Check-encoded TRON address.
|
|
10
|
+
return TronWeb.address.fromHex(evmAddress);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Convert a TRON Base58Check address (T...) to an EVM-format hex address (0x...).
|
|
14
|
+
* @param tronAddress The TRON Base58Check-encoded address.
|
|
15
|
+
* @returns The 0x-prefixed hex address.
|
|
16
|
+
*/
|
|
17
|
+
export function tronToEvmAddress(tronAddress) {
|
|
18
|
+
// TronWeb.address.toHex returns hex with a 41 prefix (TRON's address prefix).
|
|
19
|
+
// We strip the leading "41" and add "0x" to get standard EVM format.
|
|
20
|
+
var hex = TronWeb.address.toHex(tronAddress);
|
|
21
|
+
return "0x" + hex.slice(2);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check whether a string is a valid TRON Base58Check address.
|
|
25
|
+
* @param address The string to check.
|
|
26
|
+
* @returns True if the address is a valid TRON Base58Check address.
|
|
27
|
+
*/
|
|
28
|
+
export function isTronBase58Address(address) {
|
|
29
|
+
return TronWeb.isAddress(address);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../../../../src/arch/tvm/utils/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,4EAA4E;IAC5E,oDAAoD;IACpD,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,8EAA8E;IAC9E,qEAAqE;IACrE,IAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/arch/tvm/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../../evm/utils/wait";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../../../../src/arch/tvm/utils/wait.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Contract } from "ethers";
|
|
2
|
-
import { FillStatus, RelayData } from "../../interfaces";
|
|
2
|
+
import { FillStatus, Log, RelayData } from "../../interfaces";
|
|
3
3
|
import { BigNumber, DepositSearchResult, MakeOptional } from "../../utils";
|
|
4
4
|
import { EventSearchConfig } from "../../utils/EventUtils";
|
|
5
5
|
import { SpokePoolClient, SpokePoolUpdate } from "./SpokePoolClient";
|
|
@@ -17,9 +17,27 @@ export declare class EVMSpokePoolClient extends SpokePoolClient {
|
|
|
17
17
|
getMaxFillDeadlineInRange(startBlock: number, endBlock: number): Promise<number>;
|
|
18
18
|
private _availableEventsOnSpoke;
|
|
19
19
|
_queryableEventNames(): string[];
|
|
20
|
+
/**
|
|
21
|
+
* Retrieve the on-chain time at a specific block.
|
|
22
|
+
* EVM reads SpokePool.getCurrentTime() via multicall with a historical blockTag.
|
|
23
|
+
* @param blockNumber The block number to query.
|
|
24
|
+
* @returns The on-chain time as a number.
|
|
25
|
+
*/
|
|
26
|
+
protected _getCurrentTime(blockNumber: number): Promise<number>;
|
|
20
27
|
protected _update(eventsToQuery: string[]): Promise<SpokePoolUpdate>;
|
|
21
28
|
getTimeAt(blockNumber: number): Promise<number>;
|
|
22
29
|
findDeposit(depositId: BigNumber): Promise<DepositSearchResult>;
|
|
23
30
|
getTimestampForBlock(blockNumber: number): Promise<number>;
|
|
24
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Find the block at which a deposit was created.
|
|
33
|
+
* EVM uses a binary-search over historical numberOfDeposits().
|
|
34
|
+
* TVM overrides this with an event-based lookup.
|
|
35
|
+
*/
|
|
36
|
+
protected _findDepositBlock(depositId: BigNumber, lowBlock: number, highBlock?: number): Promise<number | undefined>;
|
|
37
|
+
protected queryDepositEvents(depositId: BigNumber): Promise<{
|
|
38
|
+
event: Log;
|
|
39
|
+
elapsedMs: number;
|
|
40
|
+
} | {
|
|
41
|
+
reason: string;
|
|
42
|
+
}>;
|
|
25
43
|
}
|
|
@@ -43,9 +43,38 @@ var EVMSpokePoolClient = /** @class */ (function (_super) {
|
|
|
43
43
|
EVMSpokePoolClient.prototype._queryableEventNames = function () {
|
|
44
44
|
return Object.keys(this._availableEventsOnSpoke(knownEventNames));
|
|
45
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* Retrieve the on-chain time at a specific block.
|
|
48
|
+
* EVM reads SpokePool.getCurrentTime() via multicall with a historical blockTag.
|
|
49
|
+
* @param blockNumber The block number to query.
|
|
50
|
+
* @returns The on-chain time as a number.
|
|
51
|
+
*/
|
|
52
|
+
EVMSpokePoolClient.prototype._getCurrentTime = function (blockNumber) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
54
|
+
var spokePool, multicallFunctions, multicallOutput, currentTime, errMsg;
|
|
55
|
+
return __generator(this, function (_a) {
|
|
56
|
+
switch (_a.label) {
|
|
57
|
+
case 0:
|
|
58
|
+
spokePool = this.spokePool;
|
|
59
|
+
multicallFunctions = ["getCurrentTime"];
|
|
60
|
+
return [4 /*yield*/, spokePool.callStatic.multicall(multicallFunctions.map(function (f) { return spokePool.interface.encodeFunctionData(f); }), { blockTag: blockNumber })];
|
|
61
|
+
case 1:
|
|
62
|
+
multicallOutput = _a.sent();
|
|
63
|
+
currentTime = multicallFunctions.map(function (fn, idx) { return spokePool.interface.decodeFunctionResult(fn, multicallOutput[idx])[0]; })[0];
|
|
64
|
+
if (!BigNumber.isBigNumber(currentTime) || currentTime.lt(this.currentTime)) {
|
|
65
|
+
errMsg = BigNumber.isBigNumber(currentTime)
|
|
66
|
+
? "currentTime: ".concat(currentTime, " < ").concat(toBN(this.currentTime))
|
|
67
|
+
: "currentTime is not a BigNumber: ".concat(JSON.stringify(currentTime));
|
|
68
|
+
throw new Error("EVMSpokePoolClient::update: ".concat(errMsg));
|
|
69
|
+
}
|
|
70
|
+
return [2 /*return*/, currentTime.toNumber()];
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
};
|
|
46
75
|
EVMSpokePoolClient.prototype._update = function (eventsToQuery) {
|
|
47
76
|
return __awaiter(this, void 0, void 0, function () {
|
|
48
|
-
var searchConfig, reason, eventSearchConfigs, spokePool, timerStart,
|
|
77
|
+
var searchConfig, reason, eventSearchConfigs, spokePool, timerStart, _a, currentTime, events, eventsWithBlockNumber;
|
|
49
78
|
var _this = this;
|
|
50
79
|
return __generator(this, function (_b) {
|
|
51
80
|
switch (_b.label) {
|
|
@@ -79,19 +108,14 @@ var EVMSpokePoolClient = /** @class */ (function (_super) {
|
|
|
79
108
|
spokePool: spokePool.address,
|
|
80
109
|
});
|
|
81
110
|
timerStart = Date.now();
|
|
82
|
-
multicallFunctions = ["getCurrentTime"];
|
|
83
111
|
return [4 /*yield*/, Promise.all(__spreadArray([
|
|
84
|
-
|
|
112
|
+
this._getCurrentTime(searchConfig.to)
|
|
85
113
|
], eventSearchConfigs.map(function (config) { return paginatedEventQuery(_this.spokePool, config.filter, config.searchConfig); }), true))];
|
|
86
114
|
case 2:
|
|
87
|
-
_a = _b.sent(),
|
|
115
|
+
_a = _b.sent(), currentTime = _a[0], events = _a.slice(1);
|
|
88
116
|
this.log("debug", "Time to query new events from RPC for ".concat(this.chainId, ": ").concat(Date.now() - timerStart, " ms"));
|
|
89
|
-
currentTime
|
|
90
|
-
|
|
91
|
-
errMsg = BigNumber.isBigNumber(currentTime)
|
|
92
|
-
? "currentTime: ".concat(currentTime, " < ").concat(toBN(this.currentTime))
|
|
93
|
-
: "currentTime is not a BigNumber: ".concat(JSON.stringify(currentTime));
|
|
94
|
-
throw new Error("EVMSpokePoolClient::update: ".concat(errMsg));
|
|
117
|
+
if (currentTime < this.currentTime) {
|
|
118
|
+
throw new Error("EVMSpokePoolClient::update: currentTime: ".concat(currentTime, " < ").concat(this.currentTime));
|
|
95
119
|
}
|
|
96
120
|
// Sort all events to ensure they are stored in a consistent order.
|
|
97
121
|
events.forEach(function (events) { return sortEventsAscendingInPlace(events.map(logToSortableEvent)); });
|
|
@@ -100,7 +124,7 @@ var EVMSpokePoolClient = /** @class */ (function (_super) {
|
|
|
100
124
|
});
|
|
101
125
|
return [2 /*return*/, {
|
|
102
126
|
success: true,
|
|
103
|
-
currentTime: currentTime
|
|
127
|
+
currentTime: currentTime,
|
|
104
128
|
searchEndBlock: searchConfig.to,
|
|
105
129
|
events: eventsWithBlockNumber,
|
|
106
130
|
}];
|
|
@@ -150,6 +174,14 @@ var EVMSpokePoolClient = /** @class */ (function (_super) {
|
|
|
150
174
|
EVMSpokePoolClient.prototype.getTimestampForBlock = function (blockNumber) {
|
|
151
175
|
return _getTimestampForBlock(this.spokePool.provider, blockNumber);
|
|
152
176
|
};
|
|
177
|
+
/**
|
|
178
|
+
* Find the block at which a deposit was created.
|
|
179
|
+
* EVM uses a binary-search over historical numberOfDeposits().
|
|
180
|
+
* TVM overrides this with an event-based lookup.
|
|
181
|
+
*/
|
|
182
|
+
EVMSpokePoolClient.prototype._findDepositBlock = function (depositId, lowBlock, highBlock) {
|
|
183
|
+
return findDepositBlock(this.spokePool, depositId, lowBlock, highBlock);
|
|
184
|
+
};
|
|
153
185
|
EVMSpokePoolClient.prototype.queryDepositEvents = function (depositId) {
|
|
154
186
|
return __awaiter(this, void 0, void 0, function () {
|
|
155
187
|
var tStart, upperBound, from, chain, to, maxLookBack, events, tStop, event;
|
|
@@ -158,7 +190,7 @@ var EVMSpokePoolClient = /** @class */ (function (_super) {
|
|
|
158
190
|
case 0:
|
|
159
191
|
tStart = Date.now();
|
|
160
192
|
upperBound = this.latestHeightSearched || undefined;
|
|
161
|
-
return [4 /*yield*/,
|
|
193
|
+
return [4 /*yield*/, this._findDepositBlock(depositId, this.deploymentBlock, upperBound)];
|
|
162
194
|
case 1:
|
|
163
195
|
from = _a.sent();
|
|
164
196
|
chain = getNetworkName(this.chainId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EVMSpokePoolClient.js","sourceRoot":"","sources":["../../../../../src/clients/SpokePoolClient/EVMSpokePoolClient.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"EVMSpokePoolClient.js","sourceRoot":"","sources":["../../../../../src/clients/SpokePoolClient/EVMSpokePoolClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { FillStatus, RelayData } from "../../interfaces";
|
|
2
|
+
import { BigNumber } from "../../utils";
|
|
3
|
+
import { EVMSpokePoolClient } from "./EVMSpokePoolClient";
|
|
4
|
+
/**
|
|
5
|
+
* A TVM-specific SpokePoolClient for TRON.
|
|
6
|
+
*
|
|
7
|
+
* TRON is EVM-compatible for reads and event queries, but diverges in three areas:
|
|
8
|
+
* 1. No historical `eth_call` — only "latest" blockTag is accepted.
|
|
9
|
+
* 2. No `eth_sendRawTransaction` — TRON uses Protobuf-encoded transactions via TronWeb.
|
|
10
|
+
* 3. Energy/bandwidth fee model instead of gas.
|
|
11
|
+
*
|
|
12
|
+
* This client extends EVMSpokePoolClient, overriding only the methods affected by (1).
|
|
13
|
+
* Transaction submission (2) and fee estimation (3) are handled by the arch/tvm utilities.
|
|
14
|
+
*/
|
|
15
|
+
export declare class TVMSpokePoolClient extends EVMSpokePoolClient {
|
|
16
|
+
readonly type = "TVM";
|
|
17
|
+
relayFillStatus(relayData: RelayData, atHeight?: number): Promise<FillStatus>;
|
|
18
|
+
getMaxFillDeadlineInRange(startBlock: number, endBlock: number): Promise<number>;
|
|
19
|
+
getTimeAt(blockNumber: number): Promise<number>;
|
|
20
|
+
/**
|
|
21
|
+
* Override to use TVM's event-based findDepositBlock
|
|
22
|
+
* instead of EVM's binary-search over historical numberOfDeposits().
|
|
23
|
+
*/
|
|
24
|
+
protected _findDepositBlock(depositId: BigNumber, lowBlock: number, highBlock?: number): Promise<number | undefined>;
|
|
25
|
+
/**
|
|
26
|
+
* Override to avoid historical eth_call for getCurrentTime.
|
|
27
|
+
* TRON does not support eth_call with historical blockTags, so we
|
|
28
|
+
* use the block timestamp from provider.getBlock() instead of
|
|
29
|
+
* SpokePool.getCurrentTime({ blockTag }).
|
|
30
|
+
*/
|
|
31
|
+
protected _getCurrentTime(blockNumber: number): Promise<number>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { __awaiter, __extends, __generator } from "tslib";
|
|
2
|
+
import { findDepositBlock, getMaxFillDeadlineInRange as getMaxFillDeadline, getTimeAt as _getTimeAt, relayFillStatus, } from "../../arch/tvm";
|
|
3
|
+
import { EVMSpokePoolClient } from "./EVMSpokePoolClient";
|
|
4
|
+
import { TVM_SPOKE_POOL_CLIENT_TYPE } from "./types";
|
|
5
|
+
/**
|
|
6
|
+
* A TVM-specific SpokePoolClient for TRON.
|
|
7
|
+
*
|
|
8
|
+
* TRON is EVM-compatible for reads and event queries, but diverges in three areas:
|
|
9
|
+
* 1. No historical `eth_call` — only "latest" blockTag is accepted.
|
|
10
|
+
* 2. No `eth_sendRawTransaction` — TRON uses Protobuf-encoded transactions via TronWeb.
|
|
11
|
+
* 3. Energy/bandwidth fee model instead of gas.
|
|
12
|
+
*
|
|
13
|
+
* This client extends EVMSpokePoolClient, overriding only the methods affected by (1).
|
|
14
|
+
* Transaction submission (2) and fee estimation (3) are handled by the arch/tvm utilities.
|
|
15
|
+
*/
|
|
16
|
+
var TVMSpokePoolClient = /** @class */ (function (_super) {
|
|
17
|
+
__extends(TVMSpokePoolClient, _super);
|
|
18
|
+
function TVMSpokePoolClient() {
|
|
19
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
20
|
+
// @ts-expect-error: Narrowing the base class literal type from "EVM" to "TVM".
|
|
21
|
+
_this.type = TVM_SPOKE_POOL_CLIENT_TYPE;
|
|
22
|
+
return _this;
|
|
23
|
+
}
|
|
24
|
+
TVMSpokePoolClient.prototype.relayFillStatus = function (relayData, atHeight) {
|
|
25
|
+
return relayFillStatus(this.spokePool, relayData, atHeight, this.chainId);
|
|
26
|
+
};
|
|
27
|
+
TVMSpokePoolClient.prototype.getMaxFillDeadlineInRange = function (startBlock, endBlock) {
|
|
28
|
+
return getMaxFillDeadline(this.spokePool, startBlock, endBlock);
|
|
29
|
+
};
|
|
30
|
+
TVMSpokePoolClient.prototype.getTimeAt = function (blockNumber) {
|
|
31
|
+
return _getTimeAt(this.spokePool, blockNumber);
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Override to use TVM's event-based findDepositBlock
|
|
35
|
+
* instead of EVM's binary-search over historical numberOfDeposits().
|
|
36
|
+
*/
|
|
37
|
+
TVMSpokePoolClient.prototype._findDepositBlock = function (depositId, lowBlock, highBlock) {
|
|
38
|
+
return findDepositBlock(this.spokePool, depositId, lowBlock, highBlock);
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Override to avoid historical eth_call for getCurrentTime.
|
|
42
|
+
* TRON does not support eth_call with historical blockTags, so we
|
|
43
|
+
* use the block timestamp from provider.getBlock() instead of
|
|
44
|
+
* SpokePool.getCurrentTime({ blockTag }).
|
|
45
|
+
*/
|
|
46
|
+
TVMSpokePoolClient.prototype._getCurrentTime = function (blockNumber) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
48
|
+
var block, currentTime;
|
|
49
|
+
return __generator(this, function (_a) {
|
|
50
|
+
switch (_a.label) {
|
|
51
|
+
case 0: return [4 /*yield*/, this.spokePool.provider.getBlock(blockNumber)];
|
|
52
|
+
case 1:
|
|
53
|
+
block = _a.sent();
|
|
54
|
+
currentTime = block.timestamp;
|
|
55
|
+
if (currentTime < this.currentTime) {
|
|
56
|
+
throw new Error("TVMSpokePoolClient::update: currentTime: ".concat(currentTime, " < ").concat(this.currentTime));
|
|
57
|
+
}
|
|
58
|
+
return [2 /*return*/, currentTime];
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
return TVMSpokePoolClient;
|
|
64
|
+
}(EVMSpokePoolClient));
|
|
65
|
+
export { TVMSpokePoolClient };
|
|
66
|
+
//# sourceMappingURL=TVMSpokePoolClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TVMSpokePoolClient.js","sourceRoot":"","sources":["../../../../../src/clients/SpokePoolClient/TVMSpokePoolClient.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,yBAAyB,IAAI,kBAAkB,EAC/C,SAAS,IAAI,UAAU,EACvB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAErD;;;;;;;;;;GAUG;AACH;IAAwC,sCAAkB;IAA1D;;QACE,+EAA+E;QAC7D,UAAI,GAAG,0BAA0B,CAAC;;IAwCtD,CAAC;IAtCiB,4CAAe,GAA/B,UAAgC,SAAoB,EAAE,QAAiB;QACrE,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5E,CAAC;IAEe,sDAAyB,GAAzC,UAA0C,UAAkB,EAAE,QAAgB;QAC5E,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAEe,sCAAS,GAAzB,UAA0B,WAAmB;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACgB,8CAAiB,GAApC,UACE,SAAoB,EACpB,QAAgB,EAChB,SAAkB;QAElB,OAAO,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;OAKG;IACsB,4CAAe,GAAxC,UAAyC,WAAmB;;;;;4BAC5C,qBAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAA;;wBAA3D,KAAK,GAAG,SAAmD;wBAC3D,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;wBACpC,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;4BACnC,MAAM,IAAI,KAAK,CAAC,mDAA4C,WAAW,gBAAM,IAAI,CAAC,WAAW,CAAE,CAAC,CAAC;wBACnG,CAAC;wBACD,sBAAO,WAAW,EAAC;;;;KACpB;IACH,yBAAC;AAAD,CAAC,AA1CD,CAAwC,kBAAkB,GA0CzD"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { EVMSpokePoolClient } from "./EVMSpokePoolClient";
|
|
2
2
|
import { SVMSpokePoolClient } from "./SVMSpokePoolClient";
|
|
3
|
+
import { TVMSpokePoolClient } from "./TVMSpokePoolClient";
|
|
3
4
|
import { SpokePoolClient } from "./SpokePoolClient";
|
|
4
5
|
export { EVMSpokePoolClient } from "./EVMSpokePoolClient";
|
|
5
6
|
export { SpokePoolClient, SpokePoolUpdate } from "./SpokePoolClient";
|
|
6
7
|
export { SVMSpokePoolClient } from "./SVMSpokePoolClient";
|
|
8
|
+
export { TVMSpokePoolClient } from "./TVMSpokePoolClient";
|
|
7
9
|
export { SpokePoolManager } from "./SpokePoolClientManager";
|
|
8
10
|
/**
|
|
9
11
|
* Checks if a SpokePoolClient is an EVMSpokePoolClient.
|
|
@@ -17,3 +19,9 @@ export declare function isEVMSpokePoolClient(spokePoolClient: SpokePoolClient):
|
|
|
17
19
|
* @returns True if the SpokePoolClient is an SVMSpokePoolClient, false otherwise.
|
|
18
20
|
*/
|
|
19
21
|
export declare function isSVMSpokePoolClient(spokePoolClient: SpokePoolClient): spokePoolClient is SVMSpokePoolClient;
|
|
22
|
+
/**
|
|
23
|
+
* Checks if a SpokePoolClient is a TVMSpokePoolClient.
|
|
24
|
+
* @param spokePoolClient The SpokePoolClient to check.
|
|
25
|
+
* @returns True if the SpokePoolClient is a TVMSpokePoolClient, false otherwise.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isTVMSpokePoolClient(spokePoolClient: SpokePoolClient): spokePoolClient is TVMSpokePoolClient;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { EVM_SPOKE_POOL_CLIENT_TYPE, SVM_SPOKE_POOL_CLIENT_TYPE } from "./types";
|
|
1
|
+
import { EVM_SPOKE_POOL_CLIENT_TYPE, SVM_SPOKE_POOL_CLIENT_TYPE, TVM_SPOKE_POOL_CLIENT_TYPE } from "./types";
|
|
2
2
|
export { EVMSpokePoolClient } from "./EVMSpokePoolClient";
|
|
3
3
|
export { SpokePoolClient } from "./SpokePoolClient";
|
|
4
4
|
export { SVMSpokePoolClient } from "./SVMSpokePoolClient";
|
|
5
|
+
export { TVMSpokePoolClient } from "./TVMSpokePoolClient";
|
|
5
6
|
export { SpokePoolManager } from "./SpokePoolClientManager";
|
|
6
7
|
/**
|
|
7
8
|
* Checks if a SpokePoolClient is an EVMSpokePoolClient.
|
|
@@ -21,4 +22,12 @@ export function isSVMSpokePoolClient(spokePoolClient) {
|
|
|
21
22
|
// @TODO: Should we handle the case where spokePoolClient is undefined?
|
|
22
23
|
return (spokePoolClient === null || spokePoolClient === void 0 ? void 0 : spokePoolClient.type) === SVM_SPOKE_POOL_CLIENT_TYPE;
|
|
23
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Checks if a SpokePoolClient is a TVMSpokePoolClient.
|
|
27
|
+
* @param spokePoolClient The SpokePoolClient to check.
|
|
28
|
+
* @returns True if the SpokePoolClient is a TVMSpokePoolClient, false otherwise.
|
|
29
|
+
*/
|
|
30
|
+
export function isTVMSpokePoolClient(spokePoolClient) {
|
|
31
|
+
return (spokePoolClient === null || spokePoolClient === void 0 ? void 0 : spokePoolClient.type) === TVM_SPOKE_POOL_CLIENT_TYPE;
|
|
32
|
+
}
|
|
24
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/clients/SpokePoolClient/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/clients/SpokePoolClient/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAE7G,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAmB,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,eAAgC;IACnE,uEAAuE;IACvE,OAAO,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI,MAAK,0BAA0B,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,eAAgC;IACnE,uEAAuE;IACvE,OAAO,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI,MAAK,0BAA0B,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,eAAgC;IACnE,OAAO,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI,MAAK,0BAA0B,CAAC;AAC9D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/clients/SpokePoolClient/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,0BAA0B,GAAG,KAAK,CAAC;AAChD,MAAM,CAAC,IAAM,0BAA0B,GAAG,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/clients/SpokePoolClient/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,0BAA0B,GAAG,KAAK,CAAC;AAChD,MAAM,CAAC,IAAM,0BAA0B,GAAG,KAAK,CAAC;AAChD,MAAM,CAAC,IAAM,0BAA0B,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TronWeb } from "tronweb";
|
|
2
|
+
import { TvmGasPriceEstimate } from "../types";
|
|
3
|
+
import { GasPriceEstimateOptions } from "../oracle";
|
|
4
|
+
/**
|
|
5
|
+
* @notice Returns energy and bandwidth prices for the TRON network.
|
|
6
|
+
* @param provider A TronWeb instance.
|
|
7
|
+
* @param _opts Gas price estimate options (unused, kept for interface consistency).
|
|
8
|
+
* @returns TvmGasPriceEstimate with energyPrice and bandwidthPrice in SUN per unit.
|
|
9
|
+
*/
|
|
10
|
+
export declare function gasPrices(provider: TronWeb, _opts: GasPriceEstimateOptions): Promise<TvmGasPriceEstimate>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { __awaiter, __generator } from "tslib";
|
|
2
|
+
import { toBN } from "../../utils";
|
|
3
|
+
/**
|
|
4
|
+
* @notice Returns energy and bandwidth prices for the TRON network.
|
|
5
|
+
* @param provider A TronWeb instance.
|
|
6
|
+
* @param _opts Gas price estimate options (unused, kept for interface consistency).
|
|
7
|
+
* @returns TvmGasPriceEstimate with energyPrice and bandwidthPrice in SUN per unit.
|
|
8
|
+
*/
|
|
9
|
+
export function gasPrices(provider, _opts) {
|
|
10
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
11
|
+
var _a, energyPrice, bandwidthPrice;
|
|
12
|
+
return __generator(this, function (_b) {
|
|
13
|
+
switch (_b.label) {
|
|
14
|
+
case 0: return [4 /*yield*/, Promise.all([getEnergyPrice(provider), getBandwidthPrice(provider)])];
|
|
15
|
+
case 1:
|
|
16
|
+
_a = _b.sent(), energyPrice = _a[0], bandwidthPrice = _a[1];
|
|
17
|
+
return [2 /*return*/, {
|
|
18
|
+
energyPrice: toBN(energyPrice),
|
|
19
|
+
bandwidthPrice: toBN(bandwidthPrice),
|
|
20
|
+
}];
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Query the current energy price in SUN per unit of energy.
|
|
27
|
+
* Parses the last entry from the comma-separated "timestamp:price" string.
|
|
28
|
+
*/
|
|
29
|
+
function getEnergyPrice(tronWeb) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
31
|
+
var pricesStr, entries, lastEntry, price;
|
|
32
|
+
return __generator(this, function (_a) {
|
|
33
|
+
switch (_a.label) {
|
|
34
|
+
case 0: return [4 /*yield*/, tronWeb.trx.getEnergyPrices()];
|
|
35
|
+
case 1:
|
|
36
|
+
pricesStr = _a.sent();
|
|
37
|
+
entries = pricesStr.split(",");
|
|
38
|
+
lastEntry = entries[entries.length - 1];
|
|
39
|
+
price = Number(lastEntry.split(":")[1]);
|
|
40
|
+
if (!Number.isFinite(price) || price <= 0) {
|
|
41
|
+
throw new Error("getEnergyPrice: unexpected energy price: ".concat(lastEntry));
|
|
42
|
+
}
|
|
43
|
+
return [2 /*return*/, price];
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Query the current bandwidth price (getTransactionFee) from chain parameters.
|
|
50
|
+
*/
|
|
51
|
+
function getBandwidthPrice(tronWeb) {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
53
|
+
var params, entry;
|
|
54
|
+
return __generator(this, function (_a) {
|
|
55
|
+
switch (_a.label) {
|
|
56
|
+
case 0: return [4 /*yield*/, tronWeb.trx.getChainParameters()];
|
|
57
|
+
case 1:
|
|
58
|
+
params = _a.sent();
|
|
59
|
+
entry = params.find(function (p) { return p.key === "getTransactionFee"; });
|
|
60
|
+
if (!entry) {
|
|
61
|
+
throw new Error("getBandwidthPrice: getTransactionFee not found in chain parameters");
|
|
62
|
+
}
|
|
63
|
+
return [2 /*return*/, entry.value];
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=tron.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tron.js","sourceRoot":"","sources":["../../../../../src/gasPriceOracle/adapters/tron.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAInC;;;;;GAKG;AACH,MAAM,UAAgB,SAAS,CAAC,QAAiB,EAAE,KAA8B;;;;;wBACzC,qBAAM,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAA;;oBAA1G,KAAgC,SAA0E,EAAzG,WAAW,QAAA,EAAE,cAAc,QAAA;oBAElC,sBAAO;4BACL,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;4BAC9B,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC;yBACrC,EAAC;;;;CACH;AAED;;;GAGG;AACH,SAAe,cAAc,CAAC,OAAgB;;;;;wBAC1B,qBAAM,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,EAAA;;oBAA/C,SAAS,GAAG,SAAmC;oBAC/C,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/B,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACxC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;wBAC1C,MAAM,IAAI,KAAK,CAAC,mDAA4C,SAAS,CAAE,CAAC,CAAC;oBAC3E,CAAC;oBAED,sBAAO,KAAK,EAAC;;;;CACd;AAED;;GAEG;AACH,SAAe,iBAAiB,CAAC,OAAgB;;;;;wBAChC,qBAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAA;;oBAA/C,MAAM,GAAG,SAAsC;oBAC/C,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAC,CAAiC,IAAK,OAAA,CAAC,CAAC,GAAG,KAAK,mBAAmB,EAA7B,CAA6B,CAAC,CAAC;oBAEhG,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;oBACxF,CAAC;oBAED,sBAAO,KAAK,CAAC,KAAK,EAAC;;;;CACpB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { getGasPriceEstimate, GasPriceEstimateOptions } from "./oracle";
|
|
2
|
-
export { GasPriceEstimate, EvmGasPriceEstimate, SvmGasPriceEstimate } from "./types";
|
|
2
|
+
export { GasPriceEstimate, EvmGasPriceEstimate, SvmGasPriceEstimate, TvmGasPriceEstimate } from "./types";
|