@tonappchain/sdk 0.7.3-rc3 → 0.7.3-rc4

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.
@@ -150,7 +150,7 @@ class NFT {
150
150
  return new NFT(this._addresses, this.origin, this._configuration, this.feeMode);
151
151
  }
152
152
  static resolveFeeMode(origin) {
153
- return origin === Struct_1.Origin.TAC ? Struct_1.AssetFeeMode.TAC_ORIGINAL : Struct_1.AssetFeeMode.DYNAMIC;
153
+ return origin === Struct_1.Origin.TAC ? Struct_1.AssetFeeMode.TAC_ORIGINAL : Struct_1.AssetFeeMode.LEGACY;
154
154
  }
155
155
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
156
156
  withAmount(_amount) {
@@ -9,8 +9,12 @@ export declare const LEGACY_JETTON_WALLET_GAS_CONSUMPTION_COUNT = 2n;
9
9
  export declare const LEGACY_JETTON_TRANSFER_BASE_OUTBOUND_MESSAGE_COUNT = 1n;
10
10
  export declare const LEGACY_JETTON_TRANSFER_WITH_FORWARD_OUTBOUND_MESSAGE_COUNT = 2n;
11
11
  export declare const LEGACY_JETTON_WALLET_TRANSFER_GAS_AND_STORAGE: bigint;
12
+ export declare const LEGACY_NFT_ITEM_MIN_TONS_FOR_STORAGE = 50000000n;
13
+ export declare const LEGACY_NFT_TRANSFER_BASE_OUTBOUND_MESSAGE_COUNT = 1n;
14
+ export declare const LEGACY_NFT_TRANSFER_WITH_FORWARD_OUTBOUND_MESSAGE_COUNT = 2n;
12
15
  export declare const USDT_JETTON_WALLET_CODE_HASH = "89468f02c78e570802e39979c8516fc38df07ea76a48357e0536f2ba7b3ee37b";
13
16
  export declare const DYNAMIC_JETTON_WALLET_CODE_HASHES: string[];
17
+ export declare const FIXED_POINT_SHIFT: number;
14
18
  export declare const MAX_ITERATION_COUNT = 120;
15
19
  export declare const DEFAULT_DELAY = 0;
16
20
  export declare const SOLIDITY_SIGNATURE_REGEX: RegExp;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IGNORE_OPCODE = exports.SHARDS_KEY_RANDOM_RANGE = exports.DEFAULT_EIP1559_PRIORITY_FEE = 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_FIND_TX_ARCHIVAL = 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.DYNAMIC_JETTON_WALLET_CODE_HASHES = exports.USDT_JETTON_WALLET_CODE_HASH = 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;
3
+ 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_FIND_TX_ARCHIVAL = 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.IGNORE_OPCODE = exports.SHARDS_KEY_RANDOM_RANGE = exports.DEFAULT_EIP1559_PRIORITY_FEE = exports.NFT_BRIDGE_AMOUNT = void 0;
4
5
  const ton_1 = require("@ton/ton");
5
6
  exports.JETTON_TRANSFER_FORWARD_TON_AMOUNT = (0, ton_1.toNano)(0.2);
6
7
  exports.NFT_TRANSFER_FORWARD_TON_AMOUNT = (0, ton_1.toNano)(0.3);
@@ -14,8 +15,12 @@ exports.LEGACY_JETTON_TRANSFER_BASE_OUTBOUND_MESSAGE_COUNT = 1n;
14
15
  exports.LEGACY_JETTON_TRANSFER_WITH_FORWARD_OUTBOUND_MESSAGE_COUNT = 2n;
15
16
  exports.LEGACY_JETTON_WALLET_TRANSFER_GAS_AND_STORAGE = exports.LEGACY_JETTON_WALLET_GAS_CONSUMPTION_COUNT * exports.LEGACY_JETTON_WALLET_GAS_CONSUMPTION +
16
17
  exports.LEGACY_JETTON_WALLET_MIN_TONS_FOR_STORAGE;
18
+ exports.LEGACY_NFT_ITEM_MIN_TONS_FOR_STORAGE = 50000000n;
19
+ exports.LEGACY_NFT_TRANSFER_BASE_OUTBOUND_MESSAGE_COUNT = 1n;
20
+ exports.LEGACY_NFT_TRANSFER_WITH_FORWARD_OUTBOUND_MESSAGE_COUNT = 2n;
17
21
  exports.USDT_JETTON_WALLET_CODE_HASH = '89468f02c78e570802e39979c8516fc38df07ea76a48357e0536f2ba7b3ee37b';
18
22
  exports.DYNAMIC_JETTON_WALLET_CODE_HASHES = [exports.USDT_JETTON_WALLET_CODE_HASH];
23
+ exports.FIXED_POINT_SHIFT = 2 ** 16;
19
24
  exports.MAX_ITERATION_COUNT = 120;
20
25
  exports.DEFAULT_DELAY = 0;
21
26
  exports.SOLIDITY_SIGNATURE_REGEX = /^[a-zA-Z_][a-zA-Z0-9_]*(\((bytes,bytes)\))?$/;
@@ -1,5 +1,4 @@
1
1
  import { ContractFeeUsageParams, TransactionFeeCalculationStep } from '../structs/InternalStruct';
2
- export declare const FIXED_POINT_SHIFT: number;
3
2
  /**
4
3
  * Default contract fee usage parameters used as fallback.
5
4
  */
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createNftItemErrorNotificationStep = exports.createNftProxyErrorNotificationStep = exports.createMintAfterErrorGasStep = exports.createEstimatedReceiveTransferGasStep = exports.createEstimatedSendTransferGasStep = exports.createErrorNotificationGasStep = exports.createNftProxyOwnershipAssignedStep = exports.createNftItemBurnStep = exports.createNftItemSendStep = exports.createJettonMinterBurnNotificationStep = exports.createJettonProxyOwnershipAssignedStep = exports.createJettonWalletBurnStep = exports.createJettonWalletReceiveStep = exports.createJettonWalletInternalTransferStep = exports.createCrossChainLayerTvmMsgToEvmStep = exports.DEFAULT_CONTRACT_FEE_USAGE_PARAMS = exports.FIXED_POINT_SHIFT = void 0;
3
+ exports.createNftItemErrorNotificationStep = exports.createNftProxyErrorNotificationStep = exports.createMintAfterErrorGasStep = exports.createEstimatedReceiveTransferGasStep = exports.createEstimatedSendTransferGasStep = exports.createErrorNotificationGasStep = exports.createNftProxyOwnershipAssignedStep = exports.createNftItemBurnStep = exports.createNftItemSendStep = exports.createJettonMinterBurnNotificationStep = exports.createJettonProxyOwnershipAssignedStep = exports.createJettonWalletBurnStep = exports.createJettonWalletReceiveStep = exports.createJettonWalletInternalTransferStep = exports.createCrossChainLayerTvmMsgToEvmStep = exports.DEFAULT_CONTRACT_FEE_USAGE_PARAMS = void 0;
4
4
  const Consts_1 = require("./Consts");
5
- exports.FIXED_POINT_SHIFT = 2 ** 16;
6
5
  /**
7
6
  * Default contract fee usage parameters used as fallback.
8
7
  */
@@ -15,6 +15,8 @@ export declare class Simulator implements ISimulator {
15
15
  private calculateTONCrosschainFee;
16
16
  private calculateJettonTransferCrosschainFee;
17
17
  private calculateLegacyJettonTransferCrosschainFee;
18
+ private calculateLegacyNftTransferNetworkFee;
19
+ private calculateLegacyNftTransferCrosschainFee;
18
20
  private calculateJettonBurnCrosschainFee;
19
21
  private calculateNftTransferCrosschainFee;
20
22
  private calculateNftBurnCrosschainFee;
@@ -80,15 +80,15 @@ class Simulator {
80
80
  // Gas and computation
81
81
  gasUsed, accountBitPrice, accountCellPrice, lumpPrice, gasPrice, firstFrac, ihrPriceFactor, msgBitPrice, msgCellPrice, }) {
82
82
  // Storage Fee (nanotons)
83
- const storageFee = Math.ceil(((accountBits * accountBitPrice + accountCells * accountCellPrice) * timeDelta) / Fees_1.FIXED_POINT_SHIFT);
83
+ const storageFee = Math.ceil(((accountBits * accountBitPrice + accountCells * accountCellPrice) * timeDelta) / Consts_1.FIXED_POINT_SHIFT);
84
84
  // Computation Fee (nanotons)
85
- const computeFee = (gasUsed * gasPrice) / Fees_1.FIXED_POINT_SHIFT;
85
+ const computeFee = (gasUsed * gasPrice) / Consts_1.FIXED_POINT_SHIFT;
86
86
  // Forwarding Fee (nanotons)
87
- const msgFwdFees = lumpPrice + Math.ceil((msgBitPrice * msgBits + msgCellPrice * msgCells) / Fees_1.FIXED_POINT_SHIFT);
88
- const ihrFwdFees = Math.ceil((msgFwdFees * ihrPriceFactor) / Fees_1.FIXED_POINT_SHIFT);
87
+ const msgFwdFees = lumpPrice + Math.ceil((msgBitPrice * msgBits + msgCellPrice * msgCells) / Consts_1.FIXED_POINT_SHIFT);
88
+ const ihrFwdFees = Math.ceil((msgFwdFees * ihrPriceFactor) / Consts_1.FIXED_POINT_SHIFT);
89
89
  const totalFwdFees = msgFwdFees + ihrFwdFees;
90
90
  // Action Fee (nanotons)
91
- const actionFee = Math.floor((msgFwdFees * firstFrac) / Fees_1.FIXED_POINT_SHIFT);
91
+ const actionFee = Math.floor((msgFwdFees * firstFrac) / Consts_1.FIXED_POINT_SHIFT);
92
92
  // Combine all fees
93
93
  const totalFees = storageFee + computeFee + actionFee + totalFwdFees;
94
94
  return BigInt(Math.ceil(totalFees));
@@ -98,7 +98,7 @@ class Simulator {
98
98
  }
99
99
  calculateMessageForwardFee(msgBits, msgCells) {
100
100
  const { lumpPrice, msgBitPrice, msgCellPrice } = this.config.TONParams.feesParams;
101
- const msgFwdFees = lumpPrice + Math.ceil((msgBitPrice * msgBits + msgCellPrice * msgCells) / Fees_1.FIXED_POINT_SHIFT);
101
+ const msgFwdFees = lumpPrice + Math.ceil((msgBitPrice * msgBits + msgCellPrice * msgCells) / Consts_1.FIXED_POINT_SHIFT);
102
102
  return BigInt(msgFwdFees);
103
103
  }
104
104
  calculateLegacyJettonTransferNetworkFee(params, msgBits, msgCells) {
@@ -135,6 +135,22 @@ class Simulator {
135
135
  const legacyNetworkFee = this.calculateLegacyJettonTransferNetworkFee(params, msgBits, msgCells);
136
136
  return dynamicFee > legacyNetworkFee ? dynamicFee : legacyNetworkFee;
137
137
  }
138
+ calculateLegacyNftTransferNetworkFee(params, msgBits, msgCells) {
139
+ const forwardTonAmount = Consts_1.NFT_TRANSFER_FORWARD_TON_AMOUNT +
140
+ (params.forwardFeeTonAmount ?? 0n) +
141
+ (params.crossChainTonAmount ?? 0n);
142
+ const outboundMessageCount = forwardTonAmount > 0n
143
+ ? Consts_1.LEGACY_NFT_TRANSFER_WITH_FORWARD_OUTBOUND_MESSAGE_COUNT
144
+ : Consts_1.LEGACY_NFT_TRANSFER_BASE_OUTBOUND_MESSAGE_COUNT;
145
+ const inboundForwardFee = (this.calculateMessageForwardFee(msgBits, msgCells) * Consts_1.LEGACY_FORWARD_FEE_ESTIMATE_NUMERATOR) /
146
+ Consts_1.LEGACY_FORWARD_FEE_ESTIMATE_DENOMINATOR;
147
+ return outboundMessageCount * inboundForwardFee + Consts_1.LEGACY_NFT_ITEM_MIN_TONS_FOR_STORAGE;
148
+ }
149
+ calculateLegacyNftTransferCrosschainFee(params, msgBits, msgCells) {
150
+ const dynamicFee = this.calculateNftTransferCrosschainFee(msgBits, msgCells);
151
+ const legacyNetworkFee = this.calculateLegacyNftTransferNetworkFee(params, msgBits, msgCells);
152
+ return dynamicFee > legacyNetworkFee ? dynamicFee : legacyNetworkFee;
153
+ }
138
154
  calculateJettonBurnCrosschainFee(msgBits, msgCells) {
139
155
  return this.calculateTransactionPipeline([
140
156
  (0, Fees_1.createJettonWalletBurnStep)(this.config.TONParams.contractFeeUsageParams, msgBits, msgCells),
@@ -184,6 +200,9 @@ class Simulator {
184
200
  case Struct_1.AssetType.NFT:
185
201
  if (asset.origin === Struct_1.Origin.TON) {
186
202
  // Pipeline: wallet -> nft item -> nft proxy -> ccl -> log
203
+ if (asset.feeMode === Struct_1.AssetFeeMode.LEGACY) {
204
+ return this.calculateLegacyNftTransferCrosschainFee(params, msgBits, msgCells);
205
+ }
187
206
  return this.calculateNftTransferCrosschainFee(msgBits, msgCells);
188
207
  }
189
208
  if (asset.origin === Struct_1.Origin.TAC) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tonappchain/sdk",
3
- "version": "0.7.3-rc3",
3
+ "version": "0.7.3-rc4",
4
4
  "repository": "https://github.com/TacBuild/tac-sdk.git",
5
5
  "author": "TAC. <developers@tac>",
6
6
  "license": "MIT",