@tonappchain/sdk 0.8.0 → 0.8.1-rc1

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/README.md CHANGED
@@ -25,6 +25,11 @@ or
25
25
  yarn add @tonappchain/sdk
26
26
  ```
27
27
 
28
+ To use `TonConnectSender`, install TonConnect UI v3 alongside the SDK:
29
+
30
+ ```bash
31
+ npm install @tonconnect/ui@^3
32
+ ```
28
33
 
29
34
  ## Features
30
35
 
@@ -0,0 +1,21 @@
1
+ export interface ITonConnectUI {
2
+ readonly account: {
3
+ address: string;
4
+ } | null;
5
+ readonly wallet: {
6
+ device: {
7
+ features: readonly unknown[];
8
+ };
9
+ } | null;
10
+ sendTransaction(transaction: {
11
+ validUntil: number;
12
+ messages: {
13
+ address: string;
14
+ amount: string;
15
+ payload: string;
16
+ }[];
17
+ network: string;
18
+ }): Promise<{
19
+ boc: string;
20
+ }>;
21
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -11,6 +11,7 @@ export * from './ITacExplorerClient';
11
11
  export * from './ITacSDK';
12
12
  export * from './ITACTransactionManager';
13
13
  export * from './IToncenterV3Indexer';
14
+ export * from './ITonConnectUI';
14
15
  export * from './ITONTransactionManager';
15
16
  export * from './SenderAbstraction';
16
17
  export * from './WalletInstanse';
@@ -27,6 +27,7 @@ __exportStar(require("./ITacExplorerClient"), exports);
27
27
  __exportStar(require("./ITacSDK"), exports);
28
28
  __exportStar(require("./ITACTransactionManager"), exports);
29
29
  __exportStar(require("./IToncenterV3Indexer"), exports);
30
+ __exportStar(require("./ITonConnectUI"), exports);
30
31
  __exportStar(require("./ITONTransactionManager"), exports);
31
32
  __exportStar(require("./SenderAbstraction"), exports);
32
33
  __exportStar(require("./WalletInstanse"), exports);
@@ -24,6 +24,8 @@ export declare const MAX_HIGHLOAD_GROUP_MSG_NUM = 254;
24
24
  export declare const MAX_MSG_DEPTH = 512;
25
25
  export declare const TON_SYMBOL = "TON";
26
26
  export declare const TAC_SYMBOL = "TAC";
27
+ export declare const TON_MAINNET_GLOBAL_ID = -239;
28
+ export declare const TON_TESTNET_GLOBAL_ID = -3;
27
29
  export declare const FIFTEEN_MINUTES: number;
28
30
  export declare const ONE_YEAR_SECONDS: number;
29
31
  export declare const TON_DECIMALS = 9;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
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.DEFAULT_EIP1559_PRIORITY_FEE = void 0;
3
+ 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.TON_TESTNET_GLOBAL_ID = exports.TON_MAINNET_GLOBAL_ID = 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.DEFAULT_EIP1559_PRIORITY_FEE = exports.NFT_BRIDGE_AMOUNT = exports.CROSS_CHAIN_MESSAGE_VERSION_V1 = 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);
@@ -30,6 +30,8 @@ exports.MAX_HIGHLOAD_GROUP_MSG_NUM = 254;
30
30
  exports.MAX_MSG_DEPTH = 512;
31
31
  exports.TON_SYMBOL = 'TON';
32
32
  exports.TAC_SYMBOL = 'TAC';
33
+ exports.TON_MAINNET_GLOBAL_ID = -239;
34
+ exports.TON_TESTNET_GLOBAL_ID = -3;
33
35
  exports.FIFTEEN_MINUTES = 15 * 60 * 1000;
34
36
  exports.ONE_YEAR_SECONDS = 365 * 24 * 3600;
35
37
  exports.TON_DECIMALS = 9;
@@ -1,6 +1,5 @@
1
1
  import { WalletContractV2R1, WalletContractV2R2, WalletContractV3R1, WalletContractV3R2, WalletContractV4, WalletContractV5R1 } from '@ton/ton';
2
- import { TonConnectUI } from '@tonconnect/ui';
3
- import { SenderAbstraction } from '../interfaces';
2
+ import { ITonConnectUI, SenderAbstraction } from '../interfaces';
4
3
  import { Network } from '../structs/Struct';
5
4
  import { HighloadWalletV3 } from '../wrappers/HighloadWalletV3';
6
5
  export type WalletVersion = 'V2R1' | 'V2R2' | 'V3R1' | 'V3R2' | 'V4' | 'V5R1' | 'HIGHLOAD_V3';
@@ -28,6 +27,6 @@ export declare class SenderFactory {
28
27
  };
29
28
  };
30
29
  } | {
31
- tonConnect: TonConnectUI;
30
+ tonConnect: ITonConnectUI;
32
31
  }): Promise<SenderAbstraction>;
33
32
  }
@@ -4,6 +4,7 @@ exports.SenderFactory = exports.wallets = void 0;
4
4
  const ton_1 = require("@ton/ton");
5
5
  const ton_crypto_1 = require("ton-crypto");
6
6
  const errors_1 = require("../errors");
7
+ const Consts_1 = require("../sdk/Consts");
7
8
  const Struct_1 = require("../structs/Struct");
8
9
  const HighloadWalletV3_1 = require("../wrappers/HighloadWalletV3");
9
10
  const BatchSender_1 = require("./BatchSender");
@@ -38,7 +39,7 @@ class SenderFactory {
38
39
  if (params.version === 'V5R1') {
39
40
  // manual setup of wallet id required to support wallet w5 both on mainnet and testnet
40
41
  config.walletId = {
41
- networkGlobalId: params.network === Struct_1.Network.MAINNET ? -239 : -3,
42
+ networkGlobalId: params.network === Struct_1.Network.MAINNET ? Consts_1.TON_MAINNET_GLOBAL_ID : Consts_1.TON_TESTNET_GLOBAL_ID,
42
43
  context: {
43
44
  walletVersion: 'v5r1',
44
45
  workchain: 0,
@@ -1,10 +1,9 @@
1
- import { TonConnectUI } from '@tonconnect/ui';
2
- import { Asset, ContractOpener, SenderAbstraction } from '../interfaces';
1
+ import { Asset, ContractOpener, ITonConnectUI, SenderAbstraction } from '../interfaces';
3
2
  import type { SendResult, ShardTransaction } from '../structs/InternalStruct';
4
3
  import { Network } from '../structs/Struct';
5
4
  export declare class TonConnectSender implements SenderAbstraction {
6
- readonly tonConnect: TonConnectUI;
7
- constructor(tonConnect: TonConnectUI);
5
+ readonly tonConnect: ITonConnectUI;
6
+ constructor(tonConnect: ITonConnectUI);
8
7
  getBalanceOf(asset: Asset): Promise<bigint>;
9
8
  getBalance(contractOpener: ContractOpener): Promise<bigint>;
10
9
  private sendChunkedMessages;
@@ -2,8 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TonConnectSender = void 0;
4
4
  const ton_1 = require("@ton/ton");
5
- const protocol_1 = require("@tonconnect/protocol");
6
- const ui_1 = require("@tonconnect/ui");
5
+ const Consts_1 = require("../sdk/Consts");
7
6
  const Utils_1 = require("../sdk/Utils");
8
7
  const Struct_1 = require("../structs/Struct");
9
8
  const CHUNK_SIZE = 4;
@@ -22,13 +21,16 @@ class TonConnectSender {
22
21
  async sendChunkedMessages(messages, validUntil, chain) {
23
22
  const responses = [];
24
23
  let currentMessageIndex = 0;
25
- const chunkSize = this.tonConnect.wallet?.device.features.find((feat) => Object.prototype.hasOwnProperty.call(feat, 'maxMessages'))?.maxMessages || CHUNK_SIZE;
24
+ const chunkSize = this.tonConnect.wallet?.device.features.find((feature) => typeof feature === 'object' &&
25
+ feature !== null &&
26
+ 'maxMessages' in feature &&
27
+ typeof feature.maxMessages === 'number')?.maxMessages || CHUNK_SIZE;
26
28
  for (let i = 0; i < messages.length; i += chunkSize) {
27
29
  const chunk = messages.slice(i, i + chunkSize);
28
30
  const transaction = {
29
31
  validUntil,
30
32
  messages: chunk,
31
- network: chain == Struct_1.Network.MAINNET ? ui_1.CHAIN.MAINNET : ui_1.CHAIN.TESTNET,
33
+ network: (chain === Struct_1.Network.MAINNET ? Consts_1.TON_MAINNET_GLOBAL_ID : Consts_1.TON_TESTNET_GLOBAL_ID).toString(),
32
34
  };
33
35
  try {
34
36
  const response = await this.tonConnect.sendTransaction(transaction);
@@ -63,7 +65,7 @@ class TonConnectSender {
63
65
  allMessages.push({
64
66
  address: message.address,
65
67
  amount: message.value.toString(),
66
- payload: protocol_1.Base64.encode(message.payload.toBoc()).toString(),
68
+ payload: message.payload.toBoc().toString('base64'),
67
69
  });
68
70
  }
69
71
  minValidUntil = Math.min(minValidUntil, transaction.validUntil);
@@ -79,7 +81,7 @@ class TonConnectSender {
79
81
  messages.push({
80
82
  address: message.address,
81
83
  amount: message.value.toString(),
82
- payload: protocol_1.Base64.encode(message.payload.toBoc()).toString(),
84
+ payload: message.payload.toBoc().toString('base64'),
83
85
  });
84
86
  }
85
87
  const responses = await this.sendChunkedMessages(messages, shardTransaction.validUntil, chain);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tonappchain/sdk",
3
- "version": "0.8.0",
3
+ "version": "0.8.1-rc1",
4
4
  "repository": "https://github.com/TacBuild/tac-sdk.git",
5
5
  "author": "TAC. <developers@tac>",
6
6
  "license": "MIT",
@@ -78,10 +78,15 @@
78
78
  },
79
79
  "peerDependencies": {
80
80
  "@ton/ton": ">=15",
81
- "@tonconnect/ui": ">=2",
81
+ "@tonconnect/ui": ">=3",
82
82
  "ethers": ">=6",
83
83
  "ton-crypto": ">=3"
84
84
  },
85
+ "peerDependenciesMeta": {
86
+ "@tonconnect/ui": {
87
+ "optional": true
88
+ }
89
+ },
85
90
  "keywords": [],
86
91
  "description": "",
87
92
  "devDependencies": {
@@ -91,7 +96,7 @@
91
96
  "@ton/sandbox": "^0.27.1",
92
97
  "@ton/test-utils": "^0.5.0",
93
98
  "@ton/ton": "16.2.2",
94
- "@tonconnect/ui": "^2.0.11",
99
+ "@tonconnect/ui": "^3.0.0",
95
100
  "@types/bn.js": "^5.1.6",
96
101
  "@types/jest": "^29.5.14",
97
102
  "eslint": "^9.26.0",