@tonappchain/sdk 0.6.1-v3.0.1 → 0.6.1-v3.0.3

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.
Files changed (47) hide show
  1. package/dist/adapters/contractOpener.d.ts +19 -0
  2. package/dist/adapters/contractOpener.js +94 -0
  3. package/dist/errors/errors.d.ts +34 -0
  4. package/dist/errors/errors.js +80 -0
  5. package/dist/errors/index.d.ts +2 -0
  6. package/dist/errors/index.js +30 -0
  7. package/dist/errors/instances.d.ts +17 -0
  8. package/dist/errors/instances.js +29 -0
  9. package/dist/index.d.ts +10 -0
  10. package/dist/index.js +35 -0
  11. package/dist/sdk/Consts.d.ts +7 -0
  12. package/dist/sdk/Consts.js +11 -0
  13. package/dist/sdk/OperationTracker.d.ts +14 -0
  14. package/dist/sdk/OperationTracker.js +151 -0
  15. package/dist/sdk/StartTracking.d.ts +8 -0
  16. package/dist/sdk/StartTracking.js +127 -0
  17. package/dist/sdk/TacSdk.d.ts +53 -0
  18. package/dist/sdk/TacSdk.js +713 -0
  19. package/dist/sdk/Utils.d.ts +18 -0
  20. package/dist/sdk/Utils.js +128 -0
  21. package/dist/sender/RawSender.d.ts +14 -0
  22. package/dist/sender/RawSender.js +70 -0
  23. package/dist/sender/SenderAbstraction.d.ts +20 -0
  24. package/dist/sender/SenderAbstraction.js +5 -0
  25. package/dist/sender/SenderFactory.d.ts +33 -0
  26. package/dist/sender/SenderFactory.js +55 -0
  27. package/dist/sender/TonConnectSender.d.ts +12 -0
  28. package/dist/sender/TonConnectSender.js +55 -0
  29. package/dist/sender/index.d.ts +2 -0
  30. package/dist/sender/index.js +18 -0
  31. package/dist/structs/InternalStruct.d.ts +82 -0
  32. package/dist/structs/InternalStruct.js +10 -0
  33. package/dist/structs/Struct.d.ts +334 -0
  34. package/dist/structs/Struct.js +53 -0
  35. package/dist/wrappers/ContentUtils.d.ts +25 -0
  36. package/dist/wrappers/ContentUtils.js +160 -0
  37. package/dist/wrappers/HighloadQueryId.d.ts +17 -0
  38. package/dist/wrappers/HighloadQueryId.js +72 -0
  39. package/dist/wrappers/HighloadWalletV3.d.ts +61 -0
  40. package/dist/wrappers/HighloadWalletV3.js +161 -0
  41. package/dist/wrappers/JettonMaster.d.ts +24 -0
  42. package/dist/wrappers/JettonMaster.js +53 -0
  43. package/dist/wrappers/JettonWallet.d.ts +47 -0
  44. package/dist/wrappers/JettonWallet.js +107 -0
  45. package/dist/wrappers/Settings.d.ts +10 -0
  46. package/dist/wrappers/Settings.js +38 -0
  47. package/package.json +2 -2
@@ -0,0 +1,18 @@
1
+ import { Address, Cell } from '@ton/ton';
2
+ import { AbiCoder } from 'ethers';
3
+ import { EvmProxyMsg, TransactionLinker, ValidExecutors } from '../structs/Struct';
4
+ import { RandomNumberByTimestamp } from '../structs/InternalStruct';
5
+ export declare const sleep: (ms: number) => Promise<unknown>;
6
+ export declare function generateRandomNumber(interval: number): number;
7
+ export declare function generateRandomNumberByTimestamp(): RandomNumberByTimestamp;
8
+ export declare function calculateContractAddress(code: Cell, data: Cell): Promise<Address>;
9
+ export declare function buildEvmDataCell(transactionLinker: TransactionLinker, evmProxyMsg: EvmProxyMsg, validExecutors: ValidExecutors): Cell;
10
+ export declare function formatSolidityMethodName(methodName?: string): string;
11
+ export declare function generateTransactionLinker(caller: string, shardCount: number): TransactionLinker;
12
+ export declare function validateTVMAddress(address: string): void;
13
+ export declare function validateEVMAddress(address: string): void;
14
+ export declare function calculateEVMTokenAddress(abiCoder: AbiCoder, tokenUtilsAddress: string, crossChainLayerTokenBytecode: string, crossChainLayerAddress: string, tvmAddress: string): string;
15
+ export declare const convertKeysToCamelCase: <T>(data: T) => T;
16
+ export declare const calculateRawAmount: (amount: number, decimals: number) => bigint;
17
+ export declare const calculateAmount: (rawAmount: bigint, decimals: number) => number;
18
+ export declare const toCamelCaseTransformer: (data: any) => any;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toCamelCaseTransformer = exports.calculateAmount = exports.calculateRawAmount = exports.convertKeysToCamelCase = exports.sleep = void 0;
4
+ exports.generateRandomNumber = generateRandomNumber;
5
+ exports.generateRandomNumberByTimestamp = generateRandomNumberByTimestamp;
6
+ exports.calculateContractAddress = calculateContractAddress;
7
+ exports.buildEvmDataCell = buildEvmDataCell;
8
+ exports.formatSolidityMethodName = formatSolidityMethodName;
9
+ exports.generateTransactionLinker = generateTransactionLinker;
10
+ exports.validateTVMAddress = validateTVMAddress;
11
+ exports.validateEVMAddress = validateEVMAddress;
12
+ exports.calculateEVMTokenAddress = calculateEVMTokenAddress;
13
+ const ton_1 = require("@ton/ton");
14
+ const ethers_1 = require("ethers");
15
+ const errors_1 = require("../errors");
16
+ const Consts_1 = require("./Consts");
17
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
18
+ exports.sleep = sleep;
19
+ function generateRandomNumber(interval) {
20
+ return Math.round(Math.random() * interval);
21
+ }
22
+ function generateRandomNumberByTimestamp() {
23
+ const timestamp = Math.floor(+new Date() / 1000);
24
+ return {
25
+ timestamp,
26
+ randomNumber: timestamp + generateRandomNumber(1000),
27
+ };
28
+ }
29
+ async function calculateContractAddress(code, data) {
30
+ const stateInit = (0, ton_1.beginCell)().store((0, ton_1.storeStateInit)({ code, data })).endCell();
31
+ return new ton_1.Address(0, stateInit.hash());
32
+ }
33
+ function buildEvmDataCell(transactionLinker, evmProxyMsg, validExecutors) {
34
+ const evmArguments = evmProxyMsg.encodedParameters
35
+ ? Buffer.from(evmProxyMsg.encodedParameters.split('0x')[1], 'hex').toString('base64')
36
+ : null;
37
+ const json = JSON.stringify({
38
+ evmCall: {
39
+ target: evmProxyMsg.evmTargetAddress,
40
+ methodName: formatSolidityMethodName(evmProxyMsg.methodName),
41
+ arguments: evmArguments,
42
+ gasLimit: Number(evmProxyMsg.gasLimit),
43
+ },
44
+ shardsKey: transactionLinker.shardsKey,
45
+ shardCount: transactionLinker.shardCount,
46
+ evmValidExecutors: validExecutors.tac,
47
+ tvmValidExecutors: validExecutors.ton,
48
+ });
49
+ return (0, ton_1.beginCell)().storeStringTail(json).endCell();
50
+ }
51
+ function formatSolidityMethodName(methodName) {
52
+ if (!methodName)
53
+ return '';
54
+ if (!Consts_1.SOLIDITY_SIGNATURE_REGEX.test(methodName)) {
55
+ throw (0, errors_1.invalidMethodNameError)(methodName);
56
+ }
57
+ return Consts_1.SOLIDITY_METHOD_NAME_REGEX.test(methodName) ? `${methodName}(bytes,bytes)` : methodName;
58
+ }
59
+ function generateTransactionLinker(caller, shardCount) {
60
+ const random = generateRandomNumberByTimestamp();
61
+ return {
62
+ caller: ton_1.Address.normalize(caller),
63
+ shardCount,
64
+ shardsKey: String(random.randomNumber),
65
+ timestamp: random.timestamp,
66
+ };
67
+ }
68
+ function validateTVMAddress(address) {
69
+ try {
70
+ ton_1.Address.parse(address); // will throw on error address
71
+ }
72
+ catch {
73
+ throw (0, errors_1.tvmAddressError)(address);
74
+ }
75
+ }
76
+ function validateEVMAddress(address) {
77
+ if (!(0, ethers_1.isAddress)(address)) {
78
+ throw (0, errors_1.evmAddressError)(address);
79
+ }
80
+ }
81
+ function calculateEVMTokenAddress(abiCoder, tokenUtilsAddress, crossChainLayerTokenBytecode, crossChainLayerAddress, tvmAddress) {
82
+ const salt = ethers_1.ethers.keccak256(ethers_1.ethers.solidityPacked(['string'], [tvmAddress]));
83
+ const initCode = ethers_1.ethers.solidityPacked(['bytes', 'bytes'], [crossChainLayerTokenBytecode, abiCoder.encode(['address'], [crossChainLayerAddress])]);
84
+ const initCodeHash = ethers_1.ethers.keccak256(initCode);
85
+ return ethers_1.ethers.getCreate2Address(tokenUtilsAddress, salt, initCodeHash);
86
+ }
87
+ const snakeToCamel = (str) => str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
88
+ const convertKeysToCamelCase = (data) => {
89
+ if (Array.isArray(data)) {
90
+ return data.map(exports.convertKeysToCamelCase);
91
+ }
92
+ else if (data !== null && typeof data === 'object') {
93
+ return Object.keys(data).reduce((acc, key) => {
94
+ const camelKey = snakeToCamel(key);
95
+ acc[camelKey] = (0, exports.convertKeysToCamelCase)(data[key]);
96
+ return acc;
97
+ }, {});
98
+ }
99
+ return data;
100
+ };
101
+ exports.convertKeysToCamelCase = convertKeysToCamelCase;
102
+ const calculateRawAmount = (amount, decimals) => {
103
+ const [integerPart, fractionalPart = ''] = amount.toString().split('.');
104
+ // Ensure the fractional part has enough digits
105
+ const paddedFraction = fractionalPart.padEnd(decimals, '0').slice(0, decimals);
106
+ return BigInt(integerPart + paddedFraction);
107
+ };
108
+ exports.calculateRawAmount = calculateRawAmount;
109
+ const calculateAmount = (rawAmount, decimals) => {
110
+ const rawStr = rawAmount.toString();
111
+ if (rawStr.length <= decimals) {
112
+ return Number(`0.${rawStr.padStart(decimals, '0')}`);
113
+ }
114
+ const integerPart = rawStr.slice(0, -decimals);
115
+ const fractionalPart = rawStr.slice(-decimals).replace(/0+$/, '');
116
+ return Number(fractionalPart ? `${integerPart}.${fractionalPart}` : integerPart);
117
+ };
118
+ exports.calculateAmount = calculateAmount;
119
+ const toCamelCaseTransformer = (data) => {
120
+ try {
121
+ const parsedData = JSON.parse(data);
122
+ return (0, exports.convertKeysToCamelCase)(parsedData);
123
+ }
124
+ catch {
125
+ return data;
126
+ }
127
+ };
128
+ exports.toCamelCaseTransformer = toCamelCaseTransformer;
@@ -0,0 +1,14 @@
1
+ import type { ContractOpener } from '../structs/Struct';
2
+ import type { ShardTransaction } from '../structs/InternalStruct';
3
+ import { Network } from '../structs/Struct';
4
+ import { SenderAbstraction, WalletInstance } from './SenderAbstraction';
5
+ export declare class RawSender implements SenderAbstraction {
6
+ private wallet;
7
+ private secretKey;
8
+ constructor(wallet: WalletInstance, secretKey: Buffer);
9
+ sendShardTransactions(shardTransactions: ShardTransaction[], delay: number, chain: Network, contractOpener: ContractOpener): Promise<unknown>;
10
+ getSenderAddress(): string;
11
+ sendShardTransaction(shardTransaction: ShardTransaction, delay: number, _chain: Network, contractOpener: ContractOpener): Promise<void | (import("@ton/sandbox").SendMessageResult & {
12
+ result: void;
13
+ })>;
14
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RawSender = void 0;
4
+ const ton_1 = require("@ton/ton");
5
+ const ton_2 = require("@ton/ton");
6
+ const SenderAbstraction_1 = require("./SenderAbstraction");
7
+ const HighloadWalletV3_1 = require("../wrappers/HighloadWalletV3");
8
+ class RawSender {
9
+ constructor(wallet, secretKey) {
10
+ this.wallet = wallet;
11
+ this.secretKey = secretKey;
12
+ }
13
+ async sendShardTransactions(shardTransactions, delay, chain, contractOpener) {
14
+ const walletContract = contractOpener.open(this.wallet);
15
+ const isBatchSendSupported = walletContract instanceof HighloadWalletV3_1.HighloadWalletV3 || walletContract instanceof ton_1.WalletContractV5R1;
16
+ if (isBatchSendSupported) {
17
+ const messages = [];
18
+ for (const shardTx of shardTransactions) {
19
+ for (const message of shardTx.messages) {
20
+ messages.push((0, ton_1.internal)({
21
+ to: message.address,
22
+ value: (0, ton_1.fromNano)(message.value),
23
+ bounce: true,
24
+ body: message.payload,
25
+ }));
26
+ }
27
+ }
28
+ const seqno = await walletContract.getSeqno();
29
+ await (0, SenderAbstraction_1.sleep)(delay * 1000);
30
+ return walletContract.sendTransfer({
31
+ seqno,
32
+ secretKey: this.secretKey,
33
+ messages,
34
+ sendMode: ton_2.SendMode.PAY_GAS_SEPARATELY,
35
+ });
36
+ }
37
+ else {
38
+ const results = [];
39
+ for (const shardTx of shardTransactions) {
40
+ results.push(await this.sendShardTransaction(shardTx, delay, chain, contractOpener));
41
+ }
42
+ return results;
43
+ }
44
+ }
45
+ getSenderAddress() {
46
+ return this.wallet.address.toString();
47
+ }
48
+ async sendShardTransaction(shardTransaction, delay, _chain, contractOpener) {
49
+ const walletContract = contractOpener.open(this.wallet);
50
+ await (0, SenderAbstraction_1.sleep)(delay * 1000);
51
+ const seqno = await walletContract.getSeqno();
52
+ const messages = [];
53
+ for (const message of shardTransaction.messages) {
54
+ messages.push((0, ton_1.internal)({
55
+ to: message.address,
56
+ value: (0, ton_1.fromNano)(message.value),
57
+ bounce: true,
58
+ body: message.payload,
59
+ }));
60
+ }
61
+ await (0, SenderAbstraction_1.sleep)(delay * 1000);
62
+ return walletContract.sendTransfer({
63
+ seqno,
64
+ secretKey: this.secretKey,
65
+ messages,
66
+ sendMode: ton_2.SendMode.PAY_GAS_SEPARATELY,
67
+ });
68
+ }
69
+ }
70
+ exports.RawSender = RawSender;
@@ -0,0 +1,20 @@
1
+ import type { Contract, ContractProvider, MessageRelaxed, SendMode } from '@ton/ton';
2
+ import type { ContractOpener } from '../structs/Struct';
3
+ import type { ShardTransaction } from '../structs/InternalStruct';
4
+ import { Network } from '../structs/Struct';
5
+ export declare const sleep: (ms: number) => Promise<unknown>;
6
+ export interface WalletInstance extends Contract {
7
+ getSeqno(provider: ContractProvider): Promise<number>;
8
+ sendTransfer(provider: ContractProvider, args: {
9
+ seqno: number;
10
+ secretKey: Buffer;
11
+ messages: MessageRelaxed[];
12
+ sendMode: SendMode;
13
+ timeout?: number;
14
+ }): Promise<void>;
15
+ }
16
+ export interface SenderAbstraction {
17
+ sendShardTransaction(shardTransaction: ShardTransaction, delay: number, chain?: Network, contractOpener?: ContractOpener): Promise<unknown>;
18
+ sendShardTransactions(shardTransactions: ShardTransaction[], delay: number, chain?: Network, contractOpener?: ContractOpener): Promise<unknown>;
19
+ getSenderAddress(): string;
20
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sleep = void 0;
4
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
5
+ exports.sleep = sleep;
@@ -0,0 +1,33 @@
1
+ import { WalletContractV2R1, WalletContractV2R2, WalletContractV3R1, WalletContractV3R2, WalletContractV4, WalletContractV5R1 } from '@ton/ton';
2
+ import { TonConnectUI } from '@tonconnect/ui';
3
+ import { SenderAbstraction } from './SenderAbstraction';
4
+ import { Network } from '../structs/Struct';
5
+ import { HighloadWalletV3 } from '../wrappers/HighloadWalletV3';
6
+ export type WalletVersion = 'V2R1' | 'V2R2' | 'V3R1' | 'V3R2' | 'V4' | 'V5R1' | 'HIGHLOAD_V3';
7
+ export declare const wallets: {
8
+ V2R1: typeof WalletContractV2R1;
9
+ V2R2: typeof WalletContractV2R2;
10
+ V3R1: typeof WalletContractV3R1;
11
+ V3R2: typeof WalletContractV3R2;
12
+ V4: typeof WalletContractV4;
13
+ V5R1: typeof WalletContractV5R1;
14
+ HIGHLOAD_V3: typeof HighloadWalletV3;
15
+ };
16
+ export declare class SenderFactory {
17
+ static getSender(params: {
18
+ network: Network;
19
+ version: WalletVersion;
20
+ mnemonic: string;
21
+ options?: {
22
+ v5r1?: {
23
+ subwalletNumber?: number;
24
+ };
25
+ highloadV3?: {
26
+ subwalletId?: number;
27
+ timeout?: number;
28
+ };
29
+ };
30
+ } | {
31
+ tonConnect: TonConnectUI;
32
+ }): Promise<SenderAbstraction>;
33
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SenderFactory = exports.wallets = void 0;
4
+ const ton_1 = require("@ton/ton");
5
+ const ton_crypto_1 = require("ton-crypto");
6
+ const RawSender_1 = require("./RawSender");
7
+ const TonConnectSender_1 = require("./TonConnectSender");
8
+ const errors_1 = require("../errors");
9
+ const Struct_1 = require("../structs/Struct");
10
+ const HighloadWalletV3_1 = require("../wrappers/HighloadWalletV3");
11
+ exports.wallets = {
12
+ V2R1: ton_1.WalletContractV2R1,
13
+ V2R2: ton_1.WalletContractV2R2,
14
+ V3R1: ton_1.WalletContractV3R1,
15
+ V3R2: ton_1.WalletContractV3R2,
16
+ V4: ton_1.WalletContractV4,
17
+ V5R1: ton_1.WalletContractV5R1,
18
+ HIGHLOAD_V3: HighloadWalletV3_1.HighloadWalletV3,
19
+ };
20
+ class SenderFactory {
21
+ static async getSender(params) {
22
+ if ('tonConnect' in params) {
23
+ return new TonConnectSender_1.TonConnectSender(params.tonConnect);
24
+ }
25
+ if (!(params.version in exports.wallets)) {
26
+ throw (0, errors_1.unknownWalletError)(params.version);
27
+ }
28
+ const keypair = await (0, ton_crypto_1.mnemonicToWalletKey)(params.mnemonic.split(' '));
29
+ const config = {
30
+ workchain: 0,
31
+ publicKey: keypair.publicKey,
32
+ walletId: undefined, // for w5
33
+ subwalletId: undefined, // for highload v3
34
+ timeout: undefined, // for highload v3
35
+ };
36
+ if (params.version === 'V5R1') {
37
+ // manual setup of wallet id required to support wallet w5 both on mainnet and testnet
38
+ config.walletId = {
39
+ networkGlobalId: params.network === Struct_1.Network.TESTNET ? -3 : -239,
40
+ context: {
41
+ walletVersion: 'v5r1',
42
+ workchain: 0,
43
+ subwalletNumber: params.options?.v5r1?.subwalletNumber ?? 0,
44
+ },
45
+ };
46
+ }
47
+ if (params.version === 'HIGHLOAD_V3') {
48
+ config.subwalletId = params.options?.highloadV3?.subwalletId ?? HighloadWalletV3_1.DEFAULT_SUBWALLET_ID;
49
+ config.timeout = params.options?.highloadV3?.timeout ?? HighloadWalletV3_1.DEFAULT_TIMEOUT;
50
+ }
51
+ const wallet = exports.wallets[params.version].create(config);
52
+ return new RawSender_1.RawSender(wallet, keypair.secretKey);
53
+ }
54
+ }
55
+ exports.SenderFactory = SenderFactory;
@@ -0,0 +1,12 @@
1
+ import { TonConnectUI } from '@tonconnect/ui';
2
+ import type { ShardTransaction } from '../structs/InternalStruct';
3
+ import { ContractOpener, Network } from '../structs/Struct';
4
+ import { SenderAbstraction } from './SenderAbstraction';
5
+ import { SendTransactionResponse } from '@tonconnect/sdk';
6
+ export declare class TonConnectSender implements SenderAbstraction {
7
+ readonly tonConnect: TonConnectUI;
8
+ constructor(tonConnect: TonConnectUI);
9
+ sendShardTransactions(shardTransactions: ShardTransaction[], delay: number, chain?: Network, contractOpener?: ContractOpener): Promise<SendTransactionResponse[]>;
10
+ getSenderAddress(): string;
11
+ sendShardTransaction(shardTransaction: ShardTransaction, delay: number, chain: Network): Promise<SendTransactionResponse>;
12
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TonConnectSender = void 0;
4
+ const protocol_1 = require("@tonconnect/protocol");
5
+ const ui_1 = require("@tonconnect/ui");
6
+ const Struct_1 = require("../structs/Struct");
7
+ const SenderAbstraction_1 = require("./SenderAbstraction");
8
+ class TonConnectSender {
9
+ constructor(tonConnect) {
10
+ this.tonConnect = tonConnect;
11
+ }
12
+ async sendShardTransactions(shardTransactions, delay, chain, contractOpener) {
13
+ const allMessages = [];
14
+ let minValidUntil = 0;
15
+ for (const transaction of shardTransactions) {
16
+ for (const message of transaction.messages) {
17
+ allMessages.push({
18
+ address: message.address,
19
+ amount: message.value.toString(),
20
+ payload: protocol_1.Base64.encode(message.payload.toBoc()).toString(),
21
+ });
22
+ }
23
+ minValidUntil = Math.min(minValidUntil, transaction.validUntil);
24
+ }
25
+ const transaction = {
26
+ validUntil: minValidUntil,
27
+ messages: allMessages,
28
+ network: chain == Struct_1.Network.TESTNET ? ui_1.CHAIN.TESTNET : ui_1.CHAIN.MAINNET,
29
+ };
30
+ await (0, SenderAbstraction_1.sleep)(delay * 1000);
31
+ const response = await this.tonConnect.sendTransaction(transaction);
32
+ return [response];
33
+ }
34
+ getSenderAddress() {
35
+ return this.tonConnect.account?.address?.toString() || '';
36
+ }
37
+ async sendShardTransaction(shardTransaction, delay, chain) {
38
+ const messages = [];
39
+ for (const message of shardTransaction.messages) {
40
+ messages.push({
41
+ address: message.address,
42
+ amount: message.value.toString(),
43
+ payload: protocol_1.Base64.encode(message.payload.toBoc()).toString(),
44
+ });
45
+ }
46
+ const transaction = {
47
+ validUntil: shardTransaction.validUntil,
48
+ messages,
49
+ network: chain == Struct_1.Network.TESTNET ? ui_1.CHAIN.TESTNET : ui_1.CHAIN.MAINNET,
50
+ };
51
+ await (0, SenderAbstraction_1.sleep)(delay * 1000);
52
+ return this.tonConnect.sendTransaction(transaction);
53
+ }
54
+ }
55
+ exports.TonConnectSender = TonConnectSender;
@@ -0,0 +1,2 @@
1
+ export * from './SenderAbstraction';
2
+ export * from './SenderFactory';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./SenderAbstraction"), exports);
18
+ __exportStar(require("./SenderFactory"), exports);
@@ -0,0 +1,82 @@
1
+ import { Cell } from '@ton/ton';
2
+ import { ContractOpener, TACSimulationResult, ExecutionStagesByOperationId, Network, OperationIdsByShardsKey, RawAssetBridgingData, StatusInfosByOperationId, OperationType, AssetType } from './Struct';
3
+ import { AbstractProvider, ethers, Interface, InterfaceAbi } from 'ethers';
4
+ import { mainnet, testnet } from '@tonappchain/artifacts';
5
+ export type ShardMessage = {
6
+ address: string;
7
+ value: bigint;
8
+ payload: Cell;
9
+ };
10
+ export type ShardTransaction = {
11
+ validUntil: number;
12
+ messages: ShardMessage[];
13
+ network: Network;
14
+ };
15
+ export declare enum AssetOpType {
16
+ JETTON_BURN = "JETTON_BURN",
17
+ JETTON_TRANSFER = "JETTON_TRANSFER",
18
+ NFT_BURN = "NFT_BURN",
19
+ NFT_TRANSFER = "NFT_TRANSFER"
20
+ }
21
+ export type RandomNumberByTimestamp = {
22
+ timestamp: number;
23
+ randomNumber: number;
24
+ };
25
+ export type JettonBridgingData = RawAssetBridgingData & {
26
+ type: AssetType.FT;
27
+ address: string;
28
+ };
29
+ export type JettonTransferData = JettonBridgingData;
30
+ export type JettonBurnData = JettonBridgingData & {
31
+ notificationReceiverAddress: string;
32
+ };
33
+ export type NFTBridgingData = RawAssetBridgingData & {
34
+ type: AssetType.NFT;
35
+ address: string;
36
+ };
37
+ export type NFTTransferData = NFTBridgingData & {
38
+ to: string;
39
+ responseAddress: string;
40
+ evmData: Cell;
41
+ crossChainTonAmount?: bigint;
42
+ feeData?: Cell;
43
+ };
44
+ export type NFTBurnData = NFTBridgingData & {
45
+ notificationReceiverAddress: string;
46
+ evmData: Cell;
47
+ crossChainTonAmount?: bigint;
48
+ feeData?: Cell;
49
+ };
50
+ export type InternalTONParams = {
51
+ contractOpener: ContractOpener;
52
+ jettonProxyAddress: string;
53
+ nftProxyAddress: string;
54
+ crossChainLayerAddress: string;
55
+ jettonMinterCode: Cell;
56
+ jettonWalletCode: Cell;
57
+ nftItemCode: Cell;
58
+ nftCollectionCode: Cell;
59
+ };
60
+ export type InternalTACParams = {
61
+ provider: AbstractProvider;
62
+ crossChainLayer: testnet.tac.wrappers.CrossChainLayerTAC | mainnet.tac.wrappers.CrossChainLayerTAC;
63
+ settings: testnet.tac.wrappers.SettingsTAC | testnet.tac.wrappers.SettingsTAC;
64
+ tokenUtils: testnet.tac.wrappers.TokenUtilsTAC | mainnet.tac.wrappers.TokenUtilsTAC;
65
+ trustedTACExecutors: string[];
66
+ trustedTONExecutors: string[];
67
+ abiCoder: ethers.AbiCoder;
68
+ crossChainLayerABI: Interface | InterfaceAbi;
69
+ crossChainLayerTokenABI: Interface | InterfaceAbi;
70
+ crossChainLayerTokenBytecode: string;
71
+ crossChainLayerNFTABI: Interface | InterfaceAbi;
72
+ crossChainLayerNFTBytecode: string;
73
+ };
74
+ export type ResponseBase<T> = {
75
+ response: T;
76
+ };
77
+ export type StringResponse = ResponseBase<string>;
78
+ export type OperationTypeResponse = ResponseBase<OperationType>;
79
+ export type StatusesResponse = ResponseBase<StatusInfosByOperationId>;
80
+ export type OperationIdsByShardsKeyResponse = ResponseBase<OperationIdsByShardsKey>;
81
+ export type StageProfilingResponse = ResponseBase<ExecutionStagesByOperationId>;
82
+ export type TACSimulationResponse = ResponseBase<TACSimulationResult>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AssetOpType = void 0;
4
+ var AssetOpType;
5
+ (function (AssetOpType) {
6
+ AssetOpType["JETTON_BURN"] = "JETTON_BURN";
7
+ AssetOpType["JETTON_TRANSFER"] = "JETTON_TRANSFER";
8
+ AssetOpType["NFT_BURN"] = "NFT_BURN";
9
+ AssetOpType["NFT_TRANSFER"] = "NFT_TRANSFER";
10
+ })(AssetOpType || (exports.AssetOpType = AssetOpType = {}));