@tonappchain/sdk 0.7.3-rc8 → 0.8.0-aa-alpha-test.1
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/artifacts/dev/tac/internal/artifacts/contracts/interfaces/ICrossChainLayer.sol/ICrossChainLayer.json +0 -7
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/interfaces/ISettings.sol/ISettings.json +0 -7
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/interfaces/ITokenUtils.sol/ITokenUtils.json +0 -7
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/smart-account/interfaces/ISAFactory.sol/ISAFactory.json +0 -7
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/ICrossChainLayer.d.ts +1 -5
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/ISettings.d.ts +1 -5
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/ITokenUtils.d.ts +1 -5
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/smart-account/interfaces/ISAFactory.d.ts +1 -5
- package/dist/artifacts/dev/ton/internal/build/Settings.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/wrappers/Settings.d.ts +1 -0
- package/dist/artifacts/dev/ton/internal/wrappers/Settings.js +11 -7
- package/dist/artifacts/index.d.ts +5 -3
- package/dist/artifacts/index.js +6 -3
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/interfaces/ICrossChainLayer.sol/ICrossChainLayer.json +0 -7
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/interfaces/ISettings.sol/ISettings.json +0 -7
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/interfaces/ITokenUtils.sol/ITokenUtils.json +0 -7
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/smart-account/interfaces/ISAFactory.sol/ISAFactory.json +0 -7
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/ICrossChainLayer.d.ts +1 -5
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/ISettings.d.ts +1 -5
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/ITokenUtils.d.ts +1 -5
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/smart-account/interfaces/ISAFactory.d.ts +1 -5
- package/dist/artifacts/mainnet/ton/internal/build/CrossChainLayer.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/Executor.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/JettonMinter.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/JettonProxy.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/JettonWallet.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/NFTCollection.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/NFTItem.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/NFTProxy.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/build/Settings.compiled.json +1 -1
- package/dist/artifacts/mainnet/ton/internal/wrappers/CrossChainLayer.d.ts +65 -6
- package/dist/artifacts/mainnet/ton/internal/wrappers/CrossChainLayer.js +169 -18
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonMinter.d.ts +4 -2
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonMinter.js +5 -3
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonProxy.d.ts +9 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonProxy.js +11 -2
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonWallet.d.ts +7 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonWallet.js +9 -2
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTCollection.d.ts +11 -1
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTCollection.js +17 -5
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTItem.d.ts +9 -1
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTItem.js +15 -5
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTProxy.d.ts +9 -1
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTProxy.js +16 -6
- package/dist/artifacts/mainnet/ton/internal/wrappers/Settings.d.ts +2 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/Settings.js +11 -6
- package/dist/artifacts/mainnet/ton/internal/wrappers/utils/CrossChainLayerPayload.d.ts +10 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/utils/CrossChainLayerPayload.js +24 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/utils/MerkleRoots.d.ts +2 -1
- package/dist/artifacts/mainnet/ton/internal/wrappers/utils/MerkleRoots.js +9 -1
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/interfaces/ICrossChainLayer.sol/ICrossChainLayer.json +0 -7
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/interfaces/ISettings.sol/ISettings.json +0 -7
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/interfaces/ITokenUtils.sol/ITokenUtils.json +0 -7
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/smart-account/interfaces/ISAFactory.sol/ISAFactory.json +0 -7
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/ICrossChainLayer.d.ts +1 -5
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/ISettings.d.ts +1 -5
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/ITokenUtils.d.ts +1 -5
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/smart-account/interfaces/ISAFactory.d.ts +1 -5
- package/dist/artifacts/testnet/ton/internal/build/Settings.compiled.json +1 -1
- package/dist/artifacts/testnet/ton/internal/wrappers/Settings.d.ts +1 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/Settings.js +11 -7
- package/dist/src/accountAbstraction/BaseAccountAPI.d.ts +62 -0
- package/dist/src/accountAbstraction/BaseAccountAPI.js +163 -0
- package/dist/src/accountAbstraction/Ed25519.d.ts +47 -0
- package/dist/src/accountAbstraction/Ed25519.js +100 -0
- package/dist/src/accountAbstraction/HttpRpcClient.d.ts +26 -0
- package/dist/src/accountAbstraction/HttpRpcClient.js +45 -0
- package/dist/src/accountAbstraction/PaymasterAPI.d.ts +21 -0
- package/dist/src/accountAbstraction/PaymasterAPI.js +18 -0
- package/dist/src/accountAbstraction/Permit2.d.ts +37 -0
- package/dist/src/accountAbstraction/Permit2.js +41 -0
- package/dist/src/accountAbstraction/PermitFlow.d.ts +43 -0
- package/dist/src/accountAbstraction/PermitFlow.js +80 -0
- package/dist/src/accountAbstraction/TacAccountAPI.d.ts +53 -0
- package/dist/src/accountAbstraction/TacAccountAPI.js +84 -0
- package/dist/src/accountAbstraction/TacAccountSdk.d.ts +101 -0
- package/dist/src/accountAbstraction/TacAccountSdk.js +163 -0
- package/dist/src/accountAbstraction/TacERC20PaymasterAPI.d.ts +59 -0
- package/dist/src/accountAbstraction/TacERC20PaymasterAPI.js +88 -0
- package/dist/src/accountAbstraction/TransactionDetailsForUserOp.d.ts +10 -0
- package/dist/src/accountAbstraction/TransactionDetailsForUserOp.js +2 -0
- package/dist/src/accountAbstraction/abi.d.ts +3 -0
- package/dist/src/accountAbstraction/abi.js +32 -0
- package/dist/src/accountAbstraction/index.d.ts +24 -0
- package/dist/src/accountAbstraction/index.js +44 -0
- package/dist/src/accountAbstraction/internal/entryPointAbi.d.ts +1 -0
- package/dist/src/accountAbstraction/internal/entryPointAbi.js +16 -0
- package/dist/src/accountAbstraction/internal/userOp.d.ts +54 -0
- package/dist/src/accountAbstraction/internal/userOp.js +72 -0
- package/dist/src/accountAbstraction/networks.d.ts +22 -0
- package/dist/src/accountAbstraction/networks.js +20 -0
- package/dist/src/accountAbstraction/signer.d.ts +12 -0
- package/dist/src/accountAbstraction/signer.js +14 -0
- package/dist/src/adapters/RetryableContractOpener.js +5 -2
- package/dist/src/adapters/ToncenterV3Indexer.js +1 -1
- package/dist/src/assets/AssetCache.d.ts +4 -4
- package/dist/src/assets/AssetCache.js +11 -6
- package/dist/src/assets/AssetFactory.js +2 -2
- package/dist/src/errors/index.d.ts +1 -1
- package/dist/src/errors/index.js +2 -1
- package/dist/src/errors/instances.d.ts +1 -0
- package/dist/src/errors/instances.js +3 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +4 -1
- package/dist/src/interfaces/IConfiguration.d.ts +2 -2
- package/dist/src/sdk/Artifacts.d.ts +3 -0
- package/dist/src/sdk/Artifacts.js +17 -0
- package/dist/src/sdk/Configuration.d.ts +4 -4
- package/dist/src/sdk/Configuration.js +3 -3
- package/dist/src/sdk/Consts.d.ts +0 -1
- package/dist/src/sdk/Consts.js +1 -2
- package/dist/src/sdk/LiteSequencerClient.js +2 -1
- package/dist/src/sdk/StartTracking.js +2 -2
- package/dist/src/sdk/TACTransactionManager.js +5 -5
- package/dist/src/sdk/TONTransactionManager.js +23 -21
- package/dist/src/sdk/TacExplorerClient.js +4 -3
- package/dist/src/sdk/TacSdk.js +2 -15
- package/dist/src/sdk/TxFinalizer.js +1 -1
- package/dist/src/sdk/Utils.js +37 -4
- package/dist/src/structs/Struct.d.ts +4 -4
- package/package.json +1 -1
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Configuration = void 0;
|
|
4
4
|
const ton_1 = require("@ton/ton");
|
|
5
5
|
const ethers_1 = require("ethers");
|
|
6
|
-
const artifacts_1 = require("../../artifacts");
|
|
7
6
|
const adapters_1 = require("../adapters");
|
|
8
7
|
const Struct_1 = require("../structs/Struct");
|
|
8
|
+
const Artifacts_1 = require("./Artifacts");
|
|
9
9
|
const Consts_1 = require("./Consts");
|
|
10
10
|
const Fees_1 = require("./Fees");
|
|
11
11
|
const Logger_1 = require("./Logger");
|
|
@@ -98,7 +98,7 @@ class Configuration {
|
|
|
98
98
|
};
|
|
99
99
|
}
|
|
100
100
|
static async prepareTACParams(network, TACParams) {
|
|
101
|
-
const artifacts =
|
|
101
|
+
const artifacts = (0, Artifacts_1.getArtifacts)(network);
|
|
102
102
|
let provider;
|
|
103
103
|
let settingsAddress;
|
|
104
104
|
let saFactoryAddress;
|
|
@@ -163,7 +163,7 @@ class Configuration {
|
|
|
163
163
|
// skip multicall in dev, because it's not guaranteed that multicall contract is deployed
|
|
164
164
|
return null;
|
|
165
165
|
}
|
|
166
|
-
const artifacts =
|
|
166
|
+
const artifacts = (0, Artifacts_1.getArtifacts)(network);
|
|
167
167
|
const multicallAddress = artifacts.MULTICALL_3_ADDRESS;
|
|
168
168
|
const multicallAbi = artifacts.tac.multicall.MULTICALL_ABI_ETHERS;
|
|
169
169
|
try {
|
package/dist/src/sdk/Consts.d.ts
CHANGED
|
@@ -49,6 +49,5 @@ export declare const IGNORE_MSG_VALUE_1_NANO = 1n;
|
|
|
49
49
|
export declare const CROSS_CHAIN_MESSAGE_VERSION_V1 = 1n;
|
|
50
50
|
export declare const NFT_BRIDGE_AMOUNT = 1n;
|
|
51
51
|
export declare const DEFAULT_EIP1559_PRIORITY_FEE = 0n;
|
|
52
|
-
export declare const SHARDS_KEY_RANDOM_RANGE = 1000000000000000000;
|
|
53
52
|
export declare const IGNORE_OPCODE: number[];
|
|
54
53
|
export declare const HTTP_NOT_FOUND_STATUS_CODE = 404;
|
package/dist/src/sdk/Consts.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NFT_BRIDGE_AMOUNT = exports.CROSS_CHAIN_MESSAGE_VERSION_V1 = exports.IGNORE_MSG_VALUE_1_NANO = exports.DEFAULT_RETRY_ON_NOT_FOUND_DELAY_MS = exports.DEFAULT_RETRY_ON_NOT_FOUND_RETRIES = exports.DEFAULT_RETRY_ON_NOT_FOUND = exports.DEFAULT_FIND_TX_MAX_DEPTH = exports.DEFAULT_MAX_SCANNED_TRANSACTIONS = exports.DEFAULT_FIND_TX_LIMIT = exports.DEFAULT_WAIT_DELAY_MS = exports.DEFAULT_WAIT_MAX_ATTEMPTS = exports.DEFAULT_WAIT_TIMEOUT_MS = exports.DEFAULT_RETRY_BACKOFF_MULTIPLIER = exports.DEFAULT_RETRY_MAX_DELAY_MS = exports.DEFAULT_RETRY_DELAY_MS = exports.DEFAULT_RETRY_MAX_COUNT = exports.DEFAULT_HTTP_CLIENT_TIMEOUT_MS = exports.TON_BURN_ADDRESS = exports.MINUTE = exports.FIVE_MINUTES = exports.TAC_DECIMALS = exports.TON_DECIMALS = exports.ONE_YEAR_SECONDS = exports.FIFTEEN_MINUTES = exports.TAC_SYMBOL = exports.TON_SYMBOL = exports.MAX_MSG_DEPTH = exports.MAX_HIGHLOAD_GROUP_MSG_NUM = exports.MAX_EXT_MSG_SIZE = exports.SOLIDITY_METHOD_NAME_REGEX = exports.SOLIDITY_SIGNATURE_REGEX = exports.DEFAULT_DELAY = exports.MAX_ITERATION_COUNT = exports.FIXED_POINT_SHIFT = exports.DYNAMIC_JETTON_WALLET_CODE_HASHES = exports.USDT_JETTON_WALLET_CODE_HASH = exports.LEGACY_NFT_TRANSFER_WITH_FORWARD_OUTBOUND_MESSAGE_COUNT = exports.LEGACY_NFT_TRANSFER_BASE_OUTBOUND_MESSAGE_COUNT = exports.LEGACY_NFT_ITEM_MIN_TONS_FOR_STORAGE = exports.LEGACY_JETTON_WALLET_TRANSFER_GAS_AND_STORAGE = exports.LEGACY_JETTON_TRANSFER_WITH_FORWARD_OUTBOUND_MESSAGE_COUNT = exports.LEGACY_JETTON_TRANSFER_BASE_OUTBOUND_MESSAGE_COUNT = exports.LEGACY_JETTON_WALLET_GAS_CONSUMPTION_COUNT = exports.LEGACY_JETTON_WALLET_GAS_CONSUMPTION = exports.LEGACY_JETTON_WALLET_MIN_TONS_FOR_STORAGE = exports.LEGACY_STRICTLY_GREATER_THAN_FEE_EPSILON = exports.LEGACY_FORWARD_FEE_ESTIMATE_DENOMINATOR = exports.LEGACY_FORWARD_FEE_ESTIMATE_NUMERATOR = exports.NFT_TRANSFER_FORWARD_TON_AMOUNT = exports.JETTON_TRANSFER_FORWARD_TON_AMOUNT = void 0;
|
|
4
|
-
exports.HTTP_NOT_FOUND_STATUS_CODE = exports.IGNORE_OPCODE = exports.
|
|
4
|
+
exports.HTTP_NOT_FOUND_STATUS_CODE = exports.IGNORE_OPCODE = exports.DEFAULT_EIP1559_PRIORITY_FEE = void 0;
|
|
5
5
|
const ton_1 = require("@ton/ton");
|
|
6
6
|
exports.JETTON_TRANSFER_FORWARD_TON_AMOUNT = (0, ton_1.toNano)(0.2);
|
|
7
7
|
exports.NFT_TRANSFER_FORWARD_TON_AMOUNT = (0, ton_1.toNano)(0.3);
|
|
@@ -55,7 +55,6 @@ exports.IGNORE_MSG_VALUE_1_NANO = 1n;
|
|
|
55
55
|
exports.CROSS_CHAIN_MESSAGE_VERSION_V1 = 1n;
|
|
56
56
|
exports.NFT_BRIDGE_AMOUNT = 1n;
|
|
57
57
|
exports.DEFAULT_EIP1559_PRIORITY_FEE = 0n;
|
|
58
|
-
exports.SHARDS_KEY_RANDOM_RANGE = 1e18;
|
|
59
58
|
exports.IGNORE_OPCODE = [
|
|
60
59
|
0xd53276db, // Excess
|
|
61
60
|
];
|
|
@@ -4,9 +4,10 @@ exports.LiteSequencerClient = void 0;
|
|
|
4
4
|
const errors_1 = require("../errors");
|
|
5
5
|
const instances_1 = require("../errors/instances");
|
|
6
6
|
const AxiosHttpClient_1 = require("./AxiosHttpClient");
|
|
7
|
+
const Consts_1 = require("./Consts");
|
|
7
8
|
const Utils_1 = require("./Utils");
|
|
8
9
|
class LiteSequencerClient {
|
|
9
|
-
constructor(endpoint, maxChunkSize = 100, httpClient = new AxiosHttpClient_1.AxiosHttpClient()) {
|
|
10
|
+
constructor(endpoint, maxChunkSize = 100, httpClient = new AxiosHttpClient_1.AxiosHttpClient({ timeout: Consts_1.DEFAULT_HTTP_CLIENT_TIMEOUT_MS })) {
|
|
10
11
|
this.endpoint = endpoint;
|
|
11
12
|
this.maxChunkSize = maxChunkSize;
|
|
12
13
|
this.httpClient = httpClient;
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.startTracking = startTracking;
|
|
4
4
|
exports.startTrackingMultiple = startTrackingMultiple;
|
|
5
5
|
exports.printExecutionStagesTable = printExecutionStagesTable;
|
|
6
|
-
const artifacts_1 = require("../../artifacts");
|
|
7
6
|
const Struct_1 = require("../structs/Struct");
|
|
7
|
+
const Artifacts_1 = require("./Artifacts");
|
|
8
8
|
const Configuration_1 = require("./Configuration");
|
|
9
9
|
const Consts_1 = require("./Consts");
|
|
10
10
|
const Logger_1 = require("./Logger");
|
|
@@ -16,7 +16,7 @@ const Utils_1 = require("./Utils");
|
|
|
16
16
|
*/
|
|
17
17
|
async function startTracking(transactionLinker, network, options) {
|
|
18
18
|
const { customLiteSequencerEndpoints, delay = 10, maxIterationCount = Consts_1.MAX_ITERATION_COUNT, returnValue = false, tableView = true, logger = new Logger_1.NoopLogger(), txFinalizer, contractOpener, cclAddress, } = options || {};
|
|
19
|
-
const artifacts =
|
|
19
|
+
const artifacts = (0, Artifacts_1.getArtifacts)(network);
|
|
20
20
|
const liteSequencerEndpoints = customLiteSequencerEndpoints && customLiteSequencerEndpoints.length !== 0
|
|
21
21
|
? customLiteSequencerEndpoints
|
|
22
22
|
: artifacts.PUBLIC_LITE_SEQUENCER_ENDPOINTS;
|
|
@@ -37,7 +37,7 @@ class TACTransactionManager {
|
|
|
37
37
|
tvmExecutorFee = BigInt(suggestedFee.inTAC);
|
|
38
38
|
}
|
|
39
39
|
const protocolFee = await this.config.TACParams.crossChainLayer.getProtocolFee();
|
|
40
|
-
const shardsKey = BigInt(
|
|
40
|
+
const shardsKey = BigInt((0, Utils_1.generateRandomNumberByTimestamp)().randomNumber);
|
|
41
41
|
this.logger.debug(`Shards key: ${shardsKey}, Protocol fee: ${protocolFee}`);
|
|
42
42
|
const [toBridge, toBridgeNFT] = await Promise.all([
|
|
43
43
|
Promise.all(assets
|
|
@@ -189,11 +189,11 @@ class TACTransactionManager {
|
|
|
189
189
|
if (!shouldWaitForOperationId) {
|
|
190
190
|
return { txHash: tx.hash };
|
|
191
191
|
}
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
|
|
192
|
+
const waitOperationIdOptions = options?.waitOperationIdOptions ?? {};
|
|
193
|
+
waitOperationIdOptions.successCheck = waitOperationIdOptions.successCheck ?? ((id) => !!id);
|
|
194
|
+
waitOperationIdOptions.logger = waitOperationIdOptions.logger ?? this.logger;
|
|
195
195
|
const operationId = await this.operationTracker
|
|
196
|
-
.getOperationIdByTransactionHash(tx.hash,
|
|
196
|
+
.getOperationIdByTransactionHash(tx.hash, waitOperationIdOptions)
|
|
197
197
|
.catch((error) => {
|
|
198
198
|
this.logger.error(`Error while waiting for operation ID by transaction hash: ${error}`);
|
|
199
199
|
return undefined;
|
|
@@ -188,10 +188,10 @@ class TONTransactionManager {
|
|
|
188
188
|
await this.config.TONParams.contractOpener.trackTransactionTree(sender.getSenderAddress(), hash);
|
|
189
189
|
this.logger.info(`Transaction tree successful`);
|
|
190
190
|
}
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const operationId = await this.resolveOperationId(sendTransactionResult.boc, transactionLinker,
|
|
191
|
+
const waitOperationIdOptions = tx.options?.waitOperationIdOptions ?? {};
|
|
192
|
+
waitOperationIdOptions.successCheck = waitOperationIdOptions.successCheck ?? ((id) => !!id);
|
|
193
|
+
waitOperationIdOptions.logger = waitOperationIdOptions.logger ?? this.logger;
|
|
194
|
+
const operationId = await this.resolveOperationId(sendTransactionResult.boc, transactionLinker, waitOperationIdOptions);
|
|
195
195
|
const shouldWaitForFinalization = tx.options?.waitFinalization ?? true;
|
|
196
196
|
if (!shouldWaitForFinalization) {
|
|
197
197
|
return { sendTransactionResult, operationId, ...transactionLinker };
|
|
@@ -219,18 +219,20 @@ class TONTransactionManager {
|
|
|
219
219
|
await this.operationTracker.getStageProfiling(operationId, finalizationWaitOptions);
|
|
220
220
|
return { sendTransactionResult, operationId, ...transactionLinker };
|
|
221
221
|
}
|
|
222
|
-
async resolveOperationId(boc, transactionLinker,
|
|
223
|
-
|
|
224
|
-
.
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
222
|
+
async resolveOperationId(boc, transactionLinker, waitOperationIdOptions) {
|
|
223
|
+
if (this.config.TONParams.tonIndexer) {
|
|
224
|
+
const operationId = await this.operationTracker
|
|
225
|
+
.getOperationIdByTonTransactionBoc(boc, waitOperationIdOptions)
|
|
226
|
+
.catch((error) => {
|
|
227
|
+
this.logger.error(`Error while waiting for operation ID by TON transaction BOC: ${error}`);
|
|
228
|
+
return undefined;
|
|
229
|
+
});
|
|
230
|
+
if (operationId) {
|
|
231
|
+
return operationId;
|
|
232
|
+
}
|
|
233
|
+
this.logger.debug('Operation ID by TON transaction BOC not found; trying transaction linker');
|
|
231
234
|
}
|
|
232
|
-
this.
|
|
233
|
-
return this.operationTracker.getOperationId(transactionLinker, waitOptions).catch((error) => {
|
|
235
|
+
return this.operationTracker.getOperationId(transactionLinker, waitOperationIdOptions).catch((error) => {
|
|
234
236
|
this.logger.error(`Error while waiting for operation ID by transaction linker: ${error}`);
|
|
235
237
|
return undefined;
|
|
236
238
|
});
|
|
@@ -249,7 +251,7 @@ class TONTransactionManager {
|
|
|
249
251
|
}
|
|
250
252
|
const shouldWaitForOperationIds = options?.waitOperationIds ?? true;
|
|
251
253
|
return shouldWaitForOperationIds
|
|
252
|
-
? await this.waitForOperationIds(transactionLinkers, caller, options?.
|
|
254
|
+
? await this.waitForOperationIds(transactionLinkers, caller, options?.waitOperationIdOptions ?? {})
|
|
253
255
|
: transactionLinkers;
|
|
254
256
|
}
|
|
255
257
|
async prepareBatchTransactions(txs, sender) {
|
|
@@ -271,15 +273,15 @@ class TONTransactionManager {
|
|
|
271
273
|
transactionLinkers: results.map((r) => r.transactionLinker),
|
|
272
274
|
};
|
|
273
275
|
}
|
|
274
|
-
async waitForOperationIds(transactionLinkers, caller,
|
|
276
|
+
async waitForOperationIds(transactionLinkers, caller, waitOperationIdOptions) {
|
|
275
277
|
this.logger.debug(`Waiting for operation IDs`);
|
|
276
278
|
try {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
+
waitOperationIdOptions.successCheck =
|
|
280
|
+
waitOperationIdOptions.successCheck ??
|
|
279
281
|
((operationIds) => Object.keys(operationIds).length == transactionLinkers.length &&
|
|
280
282
|
Object.values(operationIds).every((ids) => ids.operationIds.length > 0));
|
|
281
|
-
|
|
282
|
-
const operationIds = await this.operationTracker.getOperationIdsByShardsKeys(transactionLinkers.map((linker) => linker.shardsKey), caller,
|
|
283
|
+
waitOperationIdOptions.logger = waitOperationIdOptions.logger ?? this.logger;
|
|
284
|
+
const operationIds = await this.operationTracker.getOperationIdsByShardsKeys(transactionLinkers.map((linker) => linker.shardsKey), caller, waitOperationIdOptions);
|
|
283
285
|
this.logger.debug(`Operation IDs: ${(0, Utils_1.formatObjectForLogging)(operationIds)}`);
|
|
284
286
|
return transactionLinkers.map((linker) => ({
|
|
285
287
|
...linker,
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TacExplorerClient = void 0;
|
|
4
|
-
const
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
5
|
const AxiosHttpClient_1 = require("./AxiosHttpClient");
|
|
6
|
+
const Consts_1 = require("./Consts");
|
|
6
7
|
const Utils_1 = require("./Utils");
|
|
7
8
|
class TacExplorerClient {
|
|
8
|
-
constructor(explorerApiEndpoint, httpClient = new AxiosHttpClient_1.AxiosHttpClient()) {
|
|
9
|
+
constructor(explorerApiEndpoint, httpClient = new AxiosHttpClient_1.AxiosHttpClient({ timeout: Consts_1.DEFAULT_HTTP_CLIENT_TIMEOUT_MS })) {
|
|
9
10
|
this.explorerApiEndpoint = explorerApiEndpoint;
|
|
10
11
|
this.httpClient = httpClient;
|
|
11
12
|
}
|
|
@@ -15,7 +16,7 @@ class TacExplorerClient {
|
|
|
15
16
|
return response.data;
|
|
16
17
|
}
|
|
17
18
|
catch (error) {
|
|
18
|
-
throw (0,
|
|
19
|
+
throw (0, errors_1.gasPriceFetchError)(`endpoint ${this.explorerApiEndpoint} failed to complete request`, error);
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
}
|
package/dist/src/sdk/TacSdk.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TacSdk = void 0;
|
|
4
|
-
const artifacts_1 = require("../../artifacts");
|
|
5
4
|
const assets_1 = require("../assets");
|
|
6
5
|
const Struct_1 = require("../structs/Struct");
|
|
6
|
+
const Artifacts_1 = require("./Artifacts");
|
|
7
7
|
const Configuration_1 = require("./Configuration");
|
|
8
8
|
const Consts_1 = require("./Consts");
|
|
9
9
|
const Logger_1 = require("./Logger");
|
|
@@ -27,20 +27,7 @@ class TacSdk {
|
|
|
27
27
|
const network = sdkParams.network;
|
|
28
28
|
const delay = sdkParams.delay ?? Consts_1.DEFAULT_DELAY;
|
|
29
29
|
const passLoggerToOpeners = sdkParams.passLoggerToOpeners ?? true;
|
|
30
|
-
|
|
31
|
-
switch (network) {
|
|
32
|
-
case Struct_1.Network.MAINNET:
|
|
33
|
-
artifacts = artifacts_1.mainnet;
|
|
34
|
-
break;
|
|
35
|
-
case Struct_1.Network.TESTNET:
|
|
36
|
-
artifacts = artifacts_1.testnet;
|
|
37
|
-
break;
|
|
38
|
-
case Struct_1.Network.DEV:
|
|
39
|
-
artifacts = artifacts_1.dev;
|
|
40
|
-
break;
|
|
41
|
-
default:
|
|
42
|
-
throw new Error(`Unsupported network: ${network}`);
|
|
43
|
-
}
|
|
30
|
+
const artifacts = (0, Artifacts_1.getArtifacts)(network);
|
|
44
31
|
const config = await Configuration_1.Configuration.create(network, artifacts, sdkParams.TONParams, sdkParams.TACParams, sdkParams.customLiteSequencerEndpoints, delay, logger, passLoggerToOpeners);
|
|
45
32
|
const operationTracker = new OperationTracker_1.OperationTracker(config, logger);
|
|
46
33
|
const explorerClient = new TacExplorerClient_1.TacExplorerClient(artifacts.TAC_EXPLORER_API_ENDPOINT);
|
|
@@ -7,7 +7,7 @@ const Consts_1 = require("./Consts");
|
|
|
7
7
|
const Logger_1 = require("./Logger");
|
|
8
8
|
const Utils_1 = require("./Utils");
|
|
9
9
|
class TonTxFinalizer {
|
|
10
|
-
constructor(apiConfig, logger = new Logger_1.NoopLogger(), httpClient = new AxiosHttpClient_1.AxiosHttpClient()) {
|
|
10
|
+
constructor(apiConfig, logger = new Logger_1.NoopLogger(), httpClient = new AxiosHttpClient_1.AxiosHttpClient({ timeout: Consts_1.DEFAULT_HTTP_CLIENT_TIMEOUT_MS })) {
|
|
11
11
|
this.apiConfig = apiConfig;
|
|
12
12
|
this.logger = logger;
|
|
13
13
|
this.httpClient = httpClient;
|
package/dist/src/sdk/Utils.js
CHANGED
|
@@ -108,11 +108,44 @@ const convertKeysToCamelCase = (data) => {
|
|
|
108
108
|
return data;
|
|
109
109
|
};
|
|
110
110
|
exports.convertKeysToCamelCase = convertKeysToCamelCase;
|
|
111
|
+
function formatFiniteNumber(amount) {
|
|
112
|
+
const amountString = amount.toString();
|
|
113
|
+
if (!amountString.includes('e')) {
|
|
114
|
+
return amountString;
|
|
115
|
+
}
|
|
116
|
+
const [coefficient, exponentString] = amountString.split('e');
|
|
117
|
+
const exponent = Number(exponentString);
|
|
118
|
+
const [integerPart, fractionalPart = ''] = coefficient.split('.');
|
|
119
|
+
const digits = integerPart + fractionalPart;
|
|
120
|
+
const decimalIndex = integerPart.length + exponent;
|
|
121
|
+
let expanded;
|
|
122
|
+
if (decimalIndex <= 0) {
|
|
123
|
+
expanded = `0.${'0'.repeat(-decimalIndex)}${digits}`;
|
|
124
|
+
}
|
|
125
|
+
else if (decimalIndex >= digits.length) {
|
|
126
|
+
expanded = `${digits}${'0'.repeat(decimalIndex - digits.length)}`;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
expanded = `${digits.slice(0, decimalIndex)}.${digits.slice(decimalIndex)}`;
|
|
130
|
+
}
|
|
131
|
+
return expanded;
|
|
132
|
+
}
|
|
111
133
|
const calculateRawAmount = (amount, decimals) => {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
134
|
+
if (!Number.isFinite(amount)) {
|
|
135
|
+
throw (0, errors_1.invalidAmountError)('Amount must be finite');
|
|
136
|
+
}
|
|
137
|
+
if (amount < 0) {
|
|
138
|
+
throw (0, errors_1.invalidAmountError)('Amount must be non-negative');
|
|
139
|
+
}
|
|
140
|
+
if (!Number.isInteger(decimals) || decimals < 0) {
|
|
141
|
+
throw (0, errors_1.invalidAmountError)('Token decimals must be a non-negative integer');
|
|
142
|
+
}
|
|
143
|
+
const amountString = formatFiniteNumber(amount);
|
|
144
|
+
const [integerPart, fractionalPart = ''] = amountString.split('.');
|
|
145
|
+
if (fractionalPart.length > decimals) {
|
|
146
|
+
throw (0, errors_1.invalidAmountError)('Amount has more fractional digits than token decimals');
|
|
147
|
+
}
|
|
148
|
+
return BigInt(integerPart + fractionalPart.padEnd(decimals, '0'));
|
|
116
149
|
};
|
|
117
150
|
exports.calculateRawAmount = calculateRawAmount;
|
|
118
151
|
const calculateAmount = (rawAmount, decimals) => {
|
|
@@ -468,7 +468,7 @@ export type CrossChainTransactionOptions = {
|
|
|
468
468
|
* Retry policy used while resolving the operation ID.
|
|
469
469
|
* Use this to control timeout, attempts, delay, logger, callbacks, and success criteria.
|
|
470
470
|
*/
|
|
471
|
-
|
|
471
|
+
waitOperationIdOptions?: WaitOptions<string>;
|
|
472
472
|
/**
|
|
473
473
|
* If true, waits for full cross-chain finalization after the operation ID is known:
|
|
474
474
|
* the SDK waits for a final operation type, fetches stage profiling, and validates
|
|
@@ -489,10 +489,10 @@ export type CrossChainTransactionOptions = {
|
|
|
489
489
|
*/
|
|
490
490
|
evmDataBuilder?: evmDataBuilder;
|
|
491
491
|
};
|
|
492
|
-
export type BatchCrossChainTransactionOptions = Omit<CrossChainTransactionOptions, 'waitOperationId' | '
|
|
492
|
+
export type BatchCrossChainTransactionOptions = Omit<CrossChainTransactionOptions, 'waitOperationId' | 'waitOperationIdOptions' | 'ensureTxExecuted' | 'waitFinalization' | 'finalizationWaitOptions'>;
|
|
493
493
|
export type CrossChainTransactionsOptions = {
|
|
494
494
|
waitOperationIds?: boolean;
|
|
495
|
-
|
|
495
|
+
waitOperationIdOptions?: WaitOptions<OperationIdsByShardsKey>;
|
|
496
496
|
};
|
|
497
497
|
export type CrossChainTransactionToTONOptions = {
|
|
498
498
|
/**
|
|
@@ -522,7 +522,7 @@ export type CrossChainTransactionToTONOptions = {
|
|
|
522
522
|
* Retry policy used while resolving the operation ID.
|
|
523
523
|
* Use this to control timeout, attempts, delay, logger, callbacks, and success criteria.
|
|
524
524
|
*/
|
|
525
|
-
|
|
525
|
+
waitOperationIdOptions?: WaitOptions<string>;
|
|
526
526
|
/**
|
|
527
527
|
* Wait options used to finalize the cross-chain operation after operationId resolution.
|
|
528
528
|
* Use this to configure retries, delay, logger, successCheck, and onSuccess callback
|