@tonappchain/sdk 0.7.3-rc8 → 0.8.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/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/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 +1 -0
- package/dist/src/index.js +3 -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
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "1a7fdf01131876c48151a1ff676ac020d29258b3a4581000ae4048ffb86a43ec", "hashBase64": "Gn/fARMYdsSBUaH/Z2rAINKSWLOkWBAArkBI/7hqQ+w=", "hex": "b5ee9c72410216010004a6000114ff00f4a413f4bcf2c80b0102016202150202ca0314020120041301bdd0cc8b1c02497c0f83434c0c05c6c238f16fb51343480007e1874ffc07e18b500743e90007e18fe90007e19be900c3e193d010c3e19600835c874c7c04c60841b1608166ebcb832dffe187c0e383e903e900c7e800c7d007e800c7e80004c60504a4ed44d0d20001f861d3ff01f862d401d0fa4001f863fa4001f866fa4030f864f40430f86503d31f0101d33f0112218210bd6ea770bae3022182105fcc3d14bae3022182102fcb26a2bae30221820bb390ceba06070a0b00e8313432f841b3f2e0c8f84301c705f2e048fa4001f864d401f8657ff861f0387581058e82100966018070f83772fb02c8821005138d91580302cb1fcb3f8b02cf1601cf16c9f84470588010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0002c83110344013f841f2e0c9f84414c705f2e047fa4021f0155bfa40d2000130fa0022d70b01c000b35427272191729171e2f839206e9430812dcade02a812a07581058e82100966018070f837a00170f836a0bcf2b020923034e30d02923031e30df864f03808090084c8821005138d912502cb1fcb3ff844cf165006cf16c9544266801071226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00009e22f0155bc88210d53276db5802cb1fcb3fc97581058e82100966018070f83776fb0212700180108306226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb000096345b32f841f2e0c9c882108b7717355802cb1fcb3ff84201cbfff843cf16c9700180108042226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00015e8e873110344013db3ce030316c228210ae7df95bba8e12f841b3f2e0c8f846c705f2e0467ff861f038e030840ff2f00c01a0f841f2e0c9f84414c705f2e047fa40f40401d0fa00f404f404301034342070547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e2550233f8465260c70525105b50a443300d04faf839206e9430812d20de5aa058a05003a001aa00a00170f836a0813c9170f836a081121e70f836a080698200c99b8209e1338070f837a07581058e82100966018070f837a0bcf2b0248e123034c88210d53276db580302cb1fcb3ff400e30d70f861f038218e107581058e82100966018070f83776fb02de7022e30f030e0f10110060c88210bcd19310f844102510464303081582106c582059500502cb1fcb3f12cb1f01fa02f40001cf16f844cf1613f400000480180004801001189381009093810082e213db3c1200988e48c85801cb055004cf1658fa02547120ed41ed43ed44ed45ed479d5bc85003cf17c9127158cb6acced67ed65ed64ed63ed61737fed11977001cb6a01cf17ed41edf101f2ffc901fb00db050013a2fd2210e0007970a6c00045ae3e11723e10f3c5be11b3c5be1133c5b2723e104072803e108072fff33d00327b5520007ba11f9fda89a1a40003f0c3a7fe03f0c5a803a1f48003f0c7f48003f0cdf48061f0c9e80861f0cbf08335f083f085f087f089f08bc1f083f085f0871604db009485cf" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "9921c449c0d97e87b652a9ff33bb35a58c7d2e9791d5aaa015b62d7bf06f60a9", "hashBase64": "mSHEScDZfoe2Uqn/M7s1pYx9LpeR1aqgFbYte/BvYKk=", "hex": "b5ee9c7241020d01000396000114ff00f4a413f4bcf2c80b01020162020c04f6d020c700925f04e001d0d3030171b0925f04e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f0101d33f01125165a1800f811e008209e1338070f83766b608a15155a1ed44d0fa4001f861fa4001f862fa4030f863218210ae7df95bbae3022182107817b330bae30221821005138d91bae302306c33200304050900c05b6c22f84112c705f2e0468020d721fa40fa4030c882105fcc3d14580402cb1fcb3f22cf1658cf167001ca0070fa027001ca00c9700180108050226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000ee5b32f841c705f2e046fa40fa40fa006d21c700b39430f404309131e2c882105fcc3d14580702cb1fcb3f22cf1658cf167001ca0001fa02236e9633027001ca009313f400e20176fb027001c98010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0001783101fa40f40401d0fa00f404f404301034342070547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e255023324104a0306029e04aa015003a001a001a001a0811e0870f836a0813c9170f836a081128170f836a0812dca70f836a0801981269582100966018070f837a080698200c99b8209e1338070f837a014be226eb321b0e30f070800c430c8471382108b0929625120071582106c582059500502cb1fcb3f12cb1f01fa02f40001cf1601cf1601cf1612ccc90176fb02f84170588010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000b835355bc882105fcc3d14580502cb1fcb3f22cf1658cf167001ca0070fa027001ca00c912700180108050226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80f938100c8928064e2f2f002e08210581879bcba8e2730f84212c705f2e047fa4030f863f8438b02c705f2d050c8f841cf16f842cf16f843cf16c9ed54e020821060094a1bba8e1c5bf842c705f2e0478b02f863c8f841cf16f842cf16f843cf16c9ed54e02082106a4fbe34bae30282106e7145f9bae3025b840ff2f00a0b00525bf843c705f2e048f8438b02c705f2d050f843f8628b02f863c8f841cf16f842cf16f843cf16c9ed54002cf84212c705f2e047d421fb0401d0ed1eed53d430ed540035a0844bda89a1f48003f0c3f48003f0c5f48061f0c7f083f085f087cf495af0" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "655d70f72671db7999b6b72c2bac3577f8cba999456d33087de10fb2f970345e", "hashBase64": "ZV1w9yZx23mZtrcsK6w1d/jLqZlFbTMIfeEPsvlwNF4=", "hex": "b5ee9c72410210010002a6000114ff00f4a413f4bcf2c80b01020162020902f8d020c700925f04e001d0d3030171b0925f04e0fa403001d31f0101d33f0112ed44d0d30701f861fa4001f862fa4001f863f40430f8645154a1f844f80701830cf94130f8075003a170f83601a676820099075003a012821012cc030070f837a066b608a114a1c200f2e064228210245e9406bae302228210581879bc0304005a6c22f84212c705f2e046d3ff0101d430f844128307f417f864f844f841c8cb07f842cf16f843cf16f400c9ed5404feba8e2c6c22f84212c705f2e046fa4030f863f8438b02c705f2d050f844f841c8cb07f842cf16f843cf16f400c9ed54e022821060094a1bba8e22135f03f842c705f2e0468b02f863f844f841c8cb07f842cf16f843cf16f400c9ed54e02282106a4fbe34bae302228210399685b8bae3023001821040148d4abae3025b840f05060708005e135f03f843c705f2e047f8438b02c705f2d050f843f8628b02f863f844f841c8cb07f842cf16f843cf16f400c9ed5400a46c12d3ff013120f8448307f40f6fa130c88210707a28d2580502cb1fcb3f0101cbff12f400c9700180108042226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb000080f844c88210cf03b318580402cb1fcb3f12f400c9700180108042226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb000004f2f00201200a0d0201580b0c0043b444bda89a1a60e03f0c3f48003f0c5f48003f0c7e80861f0c9f083f085f087f0890003bb4fffda89a1a60e03f0c3f48003f0c5f48003f0c7e80861f0c9f085f087002016a0e0f0037b3093b513434c1c07e187e90007e18be90007e18fd010c3e193e11200043b10dfb513434c1c07e187e90007e18be90007e18fd010c3e193e1120c1fd03dbe860ab10d848" }
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { Address, Cell, Contract, ContractProvider, Sender, Slice } from '@ton/core';
|
|
2
2
|
import { StorageStats } from './utils/GasUtils';
|
|
3
3
|
import { MerkleRoot } from './utils/MerkleRoots';
|
|
4
|
+
import { CrossChainLayerPayload } from './utils/CrossChainLayerPayload';
|
|
4
5
|
export type CrossChainLayerConfig = {
|
|
5
6
|
adminAddress: string;
|
|
6
7
|
newAdminAddress?: string;
|
|
7
8
|
sequencerMultisigAddress: string;
|
|
9
|
+
groupPublicKey?: bigint;
|
|
8
10
|
maxRootsSize: number;
|
|
9
11
|
merkleRoots?: MerkleRoot[];
|
|
10
12
|
prevEpoch?: number;
|
|
@@ -16,6 +18,8 @@ export type CrossChainLayerConfig = {
|
|
|
16
18
|
tacProtocolFee?: number;
|
|
17
19
|
protocolFeeSupply?: number;
|
|
18
20
|
executorCode: Cell;
|
|
21
|
+
stakingAdapterAddress?: string;
|
|
22
|
+
stakedTonSupply?: number;
|
|
19
23
|
};
|
|
20
24
|
export type EpochInfo = {
|
|
21
25
|
lastMerkleRoot: bigint;
|
|
@@ -25,11 +29,16 @@ export type EpochInfo = {
|
|
|
25
29
|
messageCollectEndTime: number;
|
|
26
30
|
nextVotingTime: number;
|
|
27
31
|
epochDelay: number;
|
|
32
|
+
groupPublicKey: bigint;
|
|
28
33
|
};
|
|
29
34
|
export type ExecutorData = {
|
|
30
35
|
address: Address;
|
|
31
36
|
stateInit: Cell;
|
|
32
37
|
};
|
|
38
|
+
export type StakingInfo = {
|
|
39
|
+
stakingAdapterAddress: Address;
|
|
40
|
+
stakedTonSupply: bigint;
|
|
41
|
+
};
|
|
33
42
|
export declare enum MsgType {
|
|
34
43
|
tonTransfer = 1255570643,
|
|
35
44
|
jettonTransfer = 688302850,
|
|
@@ -39,14 +48,14 @@ export declare enum MsgType {
|
|
|
39
48
|
}
|
|
40
49
|
export declare const CrossChainLayerOpCodes: {
|
|
41
50
|
anyone_tvmMsgToEVM: number;
|
|
42
|
-
|
|
51
|
+
anyone_tvmMsgToEvmErrorNotification: number;
|
|
43
52
|
anyone_excesses: number;
|
|
44
53
|
anyone_addProtocolFee: number;
|
|
45
54
|
anyone_collectProtocolFee: number;
|
|
46
55
|
anyone_collectProtocolFeeNotification: number;
|
|
47
56
|
executor_evmMsgToTVM: number;
|
|
48
|
-
executor_revertSpentParam: number;
|
|
49
57
|
executor_errorNotification: number;
|
|
58
|
+
executor_evmMsgToTvmErrorNotification: number;
|
|
50
59
|
admin_changeAdminAddress: number;
|
|
51
60
|
admin_cancelChangingAdminAddress: number;
|
|
52
61
|
admin_updateCode: number;
|
|
@@ -54,25 +63,45 @@ export declare const CrossChainLayerOpCodes: {
|
|
|
54
63
|
admin_updateEpochDelay: number;
|
|
55
64
|
admin_updateTonProtocolFee: number;
|
|
56
65
|
admin_updateTacProtocolFee: number;
|
|
66
|
+
admin_changeStakingAdapterAddress: number;
|
|
67
|
+
admin_stake: number;
|
|
68
|
+
admin_unstake: number;
|
|
57
69
|
newAdmin_confirmChangingAdminAddress: number;
|
|
58
70
|
sequencerMultisig_changeSequencerMultisigAddress: number;
|
|
59
71
|
sequencerMultisig_updateMerkleRoot: number;
|
|
72
|
+
sequencerMultisig_updateGroupPublicKey: number;
|
|
73
|
+
stakingAdapter_manualUnstakeRequest: number;
|
|
74
|
+
stakingAdapter_automaticUnstakeRequest: number;
|
|
75
|
+
stakingAdapter_stakeRequest: number;
|
|
76
|
+
stakingAdapter_reportUnstakeResult: number;
|
|
77
|
+
stakingAdapter_reportUnstakeResultError: number;
|
|
78
|
+
jettonMinter_mint: number;
|
|
79
|
+
jettonWallet_transferNotification: number;
|
|
80
|
+
jettonWallet_burn: number;
|
|
60
81
|
};
|
|
61
82
|
export declare const CrossChainLayerErrors: {
|
|
62
83
|
noErrors: number;
|
|
84
|
+
invalidSenderSignature: number;
|
|
63
85
|
systemNotEnoughTon: number;
|
|
64
86
|
notFromAdmin: number;
|
|
65
87
|
notFromExecutor: number;
|
|
66
88
|
notFromSequencerMultisig: number;
|
|
67
89
|
notFromNewAdmin: number;
|
|
90
|
+
notFromStakingAdapter: number;
|
|
68
91
|
newAdminAddressIsNone: number;
|
|
69
92
|
notEnoughTon: number;
|
|
70
93
|
insufficientBalance: number;
|
|
94
|
+
insufficientStakedBalance: number;
|
|
71
95
|
zeroFeeSupply: number;
|
|
72
96
|
invalidProof: number;
|
|
73
97
|
votingNotActive: number;
|
|
74
98
|
messageCollectEndTimeLow: number;
|
|
75
99
|
notEnoughProtocolFee: number;
|
|
100
|
+
messageCollectEndTimeHigh: number;
|
|
101
|
+
feeCalculationUnsupported: number;
|
|
102
|
+
stakeAmountTooHigh: number;
|
|
103
|
+
unstakeAmountTooHigh: number;
|
|
104
|
+
unknownOp: number;
|
|
76
105
|
};
|
|
77
106
|
export declare function crossChainLayerConfigToCell(config: CrossChainLayerConfig): Cell;
|
|
78
107
|
export declare class CrossChainLayer implements Contract {
|
|
@@ -81,9 +110,14 @@ export declare class CrossChainLayer implements Contract {
|
|
|
81
110
|
code: Cell;
|
|
82
111
|
data: Cell;
|
|
83
112
|
} | undefined;
|
|
113
|
+
static tvmMsgToEvmGasConsumption: bigint;
|
|
114
|
+
static feeMinterGasConsumption: bigint;
|
|
115
|
+
static collectionMintGasConsumption: bigint;
|
|
84
116
|
static minStorageDuration: number;
|
|
85
117
|
static storageStats: StorageStats;
|
|
86
118
|
static addFeeGasConsumption: bigint;
|
|
119
|
+
static reserveFee: bigint;
|
|
120
|
+
static reportUnstakeResultGasConsumption: bigint;
|
|
87
121
|
constructor(address: Address, init?: {
|
|
88
122
|
code: Cell;
|
|
89
123
|
data: Cell;
|
|
@@ -108,10 +142,15 @@ export declare class CrossChainLayer implements Contract {
|
|
|
108
142
|
}): Promise<void>;
|
|
109
143
|
sendErrorNotification(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
110
144
|
queryId?: number;
|
|
111
|
-
|
|
145
|
+
operationId: bigint;
|
|
112
146
|
responseAddress: Address;
|
|
113
147
|
}): Promise<void>;
|
|
114
|
-
|
|
148
|
+
sendUpdateGroupPublicKey(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
149
|
+
queryId?: number;
|
|
150
|
+
groupPublicKey: bigint;
|
|
151
|
+
}): Promise<void>;
|
|
152
|
+
buildSignedUpdateMerkleRoot(secretKey: Buffer, merkleRoot: bigint, messageCollectEndTime: number): Cell;
|
|
153
|
+
sendUpdateMerkleRoot(provider: ContractProvider, secretKey: Buffer, opts: {
|
|
115
154
|
queryId?: number;
|
|
116
155
|
merkleRoot: bigint;
|
|
117
156
|
messageCollectEndTime: number;
|
|
@@ -157,8 +196,28 @@ export declare class CrossChainLayer implements Contract {
|
|
|
157
196
|
queryId?: number;
|
|
158
197
|
code: Cell;
|
|
159
198
|
}): Promise<void>;
|
|
199
|
+
sendExcesses(provider: ContractProvider, via: Sender, value: bigint): Promise<void>;
|
|
200
|
+
sendChangeStakingAdapter(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
201
|
+
queryId?: number;
|
|
202
|
+
stakingAdapterAddress: string;
|
|
203
|
+
}): Promise<void>;
|
|
204
|
+
sendStake(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
205
|
+
queryId?: number;
|
|
206
|
+
stakeAmount: number | bigint;
|
|
207
|
+
}): Promise<void>;
|
|
208
|
+
sendUnstake(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
209
|
+
queryId?: number;
|
|
210
|
+
unstakeAmount: number | bigint;
|
|
211
|
+
}): Promise<void>;
|
|
212
|
+
sendReportUnstakeResult(provider: ContractProvider, via: Sender, value: bigint, opts: {
|
|
213
|
+
queryId?: number;
|
|
214
|
+
payload: CrossChainLayerPayload;
|
|
215
|
+
}): Promise<void>;
|
|
160
216
|
getFullData(provider: ContractProvider): Promise<CrossChainLayerConfig>;
|
|
161
217
|
getCurrentEpochInfo(provider: ContractProvider): Promise<EpochInfo>;
|
|
162
|
-
|
|
163
|
-
|
|
218
|
+
getStakingInfo(provider: ContractProvider): Promise<StakingInfo>;
|
|
219
|
+
getExecutorAddress(provider: ContractProvider, operationId: bigint): Promise<Address>;
|
|
220
|
+
getStorageFee(provider: ContractProvider, merkleRoots: Cell): Promise<bigint>;
|
|
221
|
+
getExecutorData(provider: ContractProvider, operationId: bigint): Promise<ExecutorData>;
|
|
222
|
+
getEvmMsgToTvmFees(provider: ContractProvider, payload: Cell, proofBits: bigint, proofCells: bigint, executorFeeAmount: bigint, executorFeeToken: Address): Promise<bigint>;
|
|
164
223
|
}
|
|
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CrossChainLayer = exports.CrossChainLayerErrors = exports.CrossChainLayerOpCodes = exports.MsgType = void 0;
|
|
4
4
|
exports.crossChainLayerConfigToCell = crossChainLayerConfigToCell;
|
|
5
5
|
const core_1 = require("@ton/core");
|
|
6
|
+
const crypto_1 = require("@ton/crypto");
|
|
6
7
|
const Constants_1 = require("./Constants");
|
|
7
8
|
const GasUtils_1 = require("./utils/GasUtils");
|
|
8
9
|
const MerkleRoots_1 = require("./utils/MerkleRoots");
|
|
10
|
+
const CrossChainLayerPayload_1 = require("./utils/CrossChainLayerPayload");
|
|
9
11
|
var MsgType;
|
|
10
12
|
(function (MsgType) {
|
|
11
13
|
MsgType[MsgType["tonTransfer"] = 1255570643] = "tonTransfer";
|
|
@@ -16,40 +18,60 @@ var MsgType;
|
|
|
16
18
|
})(MsgType || (exports.MsgType = MsgType = {}));
|
|
17
19
|
exports.CrossChainLayerOpCodes = {
|
|
18
20
|
anyone_tvmMsgToEVM: 0x6c582059,
|
|
19
|
-
|
|
21
|
+
anyone_tvmMsgToEvmErrorNotification: 0xae7df95b,
|
|
20
22
|
anyone_excesses: 0xd53276db,
|
|
21
23
|
anyone_addProtocolFee: 0x48e660b5,
|
|
22
24
|
anyone_collectProtocolFee: 0x1f95f86c,
|
|
23
25
|
anyone_collectProtocolFeeNotification: 0xf358b6d0,
|
|
24
|
-
executor_evmMsgToTVM:
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
executor_evmMsgToTVM: 0x497dae1d,
|
|
27
|
+
executor_errorNotification: 0xcda6f261,
|
|
28
|
+
executor_evmMsgToTvmErrorNotification: 0x86f27385,
|
|
27
29
|
admin_changeAdminAddress: 0x581879bc,
|
|
28
30
|
admin_cancelChangingAdminAddress: 0x60094a1b,
|
|
29
|
-
admin_updateCode:
|
|
31
|
+
admin_updateCode: 0x6e7145f9,
|
|
30
32
|
admin_updateExecutorCode: 0x7ee5a6d0,
|
|
31
33
|
admin_updateEpochDelay: 0xe97250b7,
|
|
32
34
|
admin_updateTonProtocolFee: 0x063199b7,
|
|
33
35
|
admin_updateTacProtocolFee: 0x3531465c,
|
|
36
|
+
admin_changeStakingAdapterAddress: 0x74db6fbd,
|
|
37
|
+
admin_stake: 0x149c7a93,
|
|
38
|
+
admin_unstake: 0x461d3038,
|
|
34
39
|
newAdmin_confirmChangingAdminAddress: 0x6a4fbe34,
|
|
35
40
|
sequencerMultisig_changeSequencerMultisigAddress: 0x5cec6be0,
|
|
36
|
-
sequencerMultisig_updateMerkleRoot:
|
|
41
|
+
sequencerMultisig_updateMerkleRoot: 0x4b19e42a,
|
|
42
|
+
sequencerMultisig_updateGroupPublicKey: 0x74cd76b2,
|
|
43
|
+
stakingAdapter_manualUnstakeRequest: 0x0659627f,
|
|
44
|
+
stakingAdapter_automaticUnstakeRequest: 0x3c497a61,
|
|
45
|
+
stakingAdapter_stakeRequest: 0x58d9b21b,
|
|
46
|
+
stakingAdapter_reportUnstakeResult: 0x46a47169,
|
|
47
|
+
stakingAdapter_reportUnstakeResultError: 0x49e26543,
|
|
48
|
+
jettonMinter_mint: 0xd7b9c06e,
|
|
49
|
+
jettonWallet_transferNotification: 0x7362d09c,
|
|
50
|
+
jettonWallet_burn: 0x595f07bc,
|
|
37
51
|
};
|
|
38
52
|
exports.CrossChainLayerErrors = {
|
|
39
53
|
noErrors: 0,
|
|
54
|
+
invalidSenderSignature: 32,
|
|
40
55
|
systemNotEnoughTon: 37,
|
|
41
56
|
notFromAdmin: 70,
|
|
42
57
|
notFromExecutor: 71,
|
|
43
58
|
notFromSequencerMultisig: 72,
|
|
44
59
|
notFromNewAdmin: 73,
|
|
60
|
+
notFromStakingAdapter: 74,
|
|
45
61
|
newAdminAddressIsNone: 80,
|
|
46
62
|
notEnoughTon: 100,
|
|
47
63
|
insufficientBalance: 101,
|
|
64
|
+
insufficientStakedBalance: 102,
|
|
48
65
|
zeroFeeSupply: 200,
|
|
49
66
|
invalidProof: 201,
|
|
50
67
|
votingNotActive: 202,
|
|
51
68
|
messageCollectEndTimeLow: 203,
|
|
52
69
|
notEnoughProtocolFee: 204,
|
|
70
|
+
messageCollectEndTimeHigh: 205,
|
|
71
|
+
feeCalculationUnsupported: 206,
|
|
72
|
+
stakeAmountTooHigh: 207,
|
|
73
|
+
unstakeAmountTooHigh: 208,
|
|
74
|
+
unknownOp: 0xfffff,
|
|
53
75
|
};
|
|
54
76
|
function crossChainLayerConfigToCell(config) {
|
|
55
77
|
return (0, core_1.beginCell)()
|
|
@@ -61,7 +83,10 @@ function crossChainLayerConfigToCell(config) {
|
|
|
61
83
|
.storeCoins(config.tonProtocolFee ? (0, core_1.toNano)(config.tonProtocolFee.toFixed(9)) : 0)
|
|
62
84
|
.storeCoins(config.protocolFeeSupply ? (0, core_1.toNano)(config.protocolFeeSupply.toFixed(9)) : 0)
|
|
63
85
|
.endCell())
|
|
86
|
+
.storeRef((0, core_1.beginCell)()
|
|
87
|
+
.storeUint(config.groupPublicKey ? config.groupPublicKey : 0n, Constants_1.Params.bitsize.hash)
|
|
64
88
|
.storeRef(config.executorCode)
|
|
89
|
+
.endCell())
|
|
65
90
|
.storeRef((0, core_1.beginCell)()
|
|
66
91
|
.storeUint(config.epochDelay, Constants_1.Params.bitsize.time)
|
|
67
92
|
.storeUint(config.prevEpoch ? config.prevEpoch : 0, Constants_1.Params.bitsize.time)
|
|
@@ -69,7 +94,11 @@ function crossChainLayerConfigToCell(config) {
|
|
|
69
94
|
.storeUint(config.messageCollectEndTime ? config.messageCollectEndTime : 0, Constants_1.Params.bitsize.time)
|
|
70
95
|
.storeUint(config.nextVotingTime ? config.nextVotingTime : 0, Constants_1.Params.bitsize.time)
|
|
71
96
|
.storeUint(config.maxRootsSize, 4)
|
|
72
|
-
.storeDict((0, MerkleRoots_1.
|
|
97
|
+
.storeDict((0, MerkleRoots_1.arrayToDict)(config.merkleRoots ?? []))
|
|
98
|
+
.endCell())
|
|
99
|
+
.storeRef((0, core_1.beginCell)()
|
|
100
|
+
.storeAddress(config.stakingAdapterAddress ? core_1.Address.parse(config.stakingAdapterAddress) : null)
|
|
101
|
+
.storeCoins(config.stakedTonSupply ? (0, core_1.toNano)(config.stakedTonSupply.toFixed(9)) : 0)
|
|
73
102
|
.endCell())
|
|
74
103
|
.endCell();
|
|
75
104
|
}
|
|
@@ -129,23 +158,39 @@ class CrossChainLayer {
|
|
|
129
158
|
body: (0, core_1.beginCell)()
|
|
130
159
|
.storeUint(exports.CrossChainLayerOpCodes.executor_errorNotification, 32)
|
|
131
160
|
.storeUint(opts.queryId || 0, 64)
|
|
132
|
-
.
|
|
161
|
+
.storeUint(opts.operationId, Constants_1.Params.bitsize.hash)
|
|
133
162
|
.storeAddress(opts.responseAddress)
|
|
134
163
|
.endCell(),
|
|
135
164
|
});
|
|
136
165
|
}
|
|
137
|
-
async
|
|
166
|
+
async sendUpdateGroupPublicKey(provider, via, value, opts) {
|
|
138
167
|
await provider.internal(via, {
|
|
139
168
|
value,
|
|
140
169
|
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
141
170
|
body: (0, core_1.beginCell)()
|
|
142
|
-
.storeUint(exports.CrossChainLayerOpCodes.
|
|
171
|
+
.storeUint(exports.CrossChainLayerOpCodes.sequencerMultisig_updateGroupPublicKey, Constants_1.Params.bitsize.op)
|
|
143
172
|
.storeUint(opts.queryId || 0, Constants_1.Params.bitsize.queryId)
|
|
144
|
-
.storeUint(opts.
|
|
145
|
-
.storeUint(opts.messageCollectEndTime, Constants_1.Params.bitsize.time)
|
|
173
|
+
.storeUint(opts.groupPublicKey, Constants_1.Params.bitsize.hash)
|
|
146
174
|
.endCell(),
|
|
147
175
|
});
|
|
148
176
|
}
|
|
177
|
+
buildSignedUpdateMerkleRoot(secretKey, merkleRoot, messageCollectEndTime) {
|
|
178
|
+
let msg = (0, core_1.beginCell)()
|
|
179
|
+
.storeUint(merkleRoot, Constants_1.Params.bitsize.hash)
|
|
180
|
+
.storeUint(messageCollectEndTime, Constants_1.Params.bitsize.time)
|
|
181
|
+
.endCell();
|
|
182
|
+
let signature = (0, crypto_1.sign)(msg.hash(), secretKey);
|
|
183
|
+
msg = (0, core_1.beginCell)()
|
|
184
|
+
.storeUint(exports.CrossChainLayerOpCodes.sequencerMultisig_updateMerkleRoot, 32)
|
|
185
|
+
.storeBuffer(signature)
|
|
186
|
+
.storeSlice(msg.asSlice())
|
|
187
|
+
.endCell();
|
|
188
|
+
return msg;
|
|
189
|
+
}
|
|
190
|
+
async sendUpdateMerkleRoot(provider, secretKey, opts) {
|
|
191
|
+
const msg = this.buildSignedUpdateMerkleRoot(secretKey, opts.merkleRoot, opts.messageCollectEndTime);
|
|
192
|
+
await provider.external(msg);
|
|
193
|
+
}
|
|
149
194
|
async sendAddProtocolFee(provider, via, value, opts) {
|
|
150
195
|
await provider.internal(via, {
|
|
151
196
|
value,
|
|
@@ -264,6 +309,71 @@ class CrossChainLayer {
|
|
|
264
309
|
.endCell(),
|
|
265
310
|
});
|
|
266
311
|
}
|
|
312
|
+
async sendExcesses(provider, via, value) {
|
|
313
|
+
await provider.internal(via, {
|
|
314
|
+
value,
|
|
315
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
316
|
+
body: (0, core_1.beginCell)().endCell(),
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
async sendChangeStakingAdapter(provider, via, value, opts) {
|
|
320
|
+
await provider.internal(via, {
|
|
321
|
+
value,
|
|
322
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
323
|
+
body: (0, core_1.beginCell)()
|
|
324
|
+
.storeUint(exports.CrossChainLayerOpCodes.admin_changeStakingAdapterAddress, Constants_1.Params.bitsize.op)
|
|
325
|
+
.storeUint(opts.queryId || 0, Constants_1.Params.bitsize.queryId)
|
|
326
|
+
.storeAddress(core_1.Address.parse(opts.stakingAdapterAddress))
|
|
327
|
+
.endCell(),
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
async sendStake(provider, via, value, opts) {
|
|
331
|
+
let stakeAmount;
|
|
332
|
+
if (typeof opts.stakeAmount === 'bigint') {
|
|
333
|
+
stakeAmount = opts.stakeAmount;
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
stakeAmount = (0, core_1.toNano)(opts.stakeAmount.toFixed(9));
|
|
337
|
+
}
|
|
338
|
+
await provider.internal(via, {
|
|
339
|
+
value,
|
|
340
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
341
|
+
body: (0, core_1.beginCell)()
|
|
342
|
+
.storeUint(exports.CrossChainLayerOpCodes.admin_stake, Constants_1.Params.bitsize.op)
|
|
343
|
+
.storeUint(opts.queryId || 0, Constants_1.Params.bitsize.queryId)
|
|
344
|
+
.storeCoins(stakeAmount)
|
|
345
|
+
.endCell(),
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
async sendUnstake(provider, via, value, opts) {
|
|
349
|
+
let unstakeAmount;
|
|
350
|
+
if (typeof opts.unstakeAmount === 'bigint') {
|
|
351
|
+
unstakeAmount = opts.unstakeAmount;
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
unstakeAmount = (0, core_1.toNano)(opts.unstakeAmount.toFixed(9));
|
|
355
|
+
}
|
|
356
|
+
await provider.internal(via, {
|
|
357
|
+
value,
|
|
358
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
359
|
+
body: (0, core_1.beginCell)()
|
|
360
|
+
.storeUint(exports.CrossChainLayerOpCodes.admin_unstake, Constants_1.Params.bitsize.op)
|
|
361
|
+
.storeUint(opts.queryId || 0, Constants_1.Params.bitsize.queryId)
|
|
362
|
+
.storeCoins(unstakeAmount)
|
|
363
|
+
.endCell(),
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
async sendReportUnstakeResult(provider, via, value, opts) {
|
|
367
|
+
await provider.internal(via, {
|
|
368
|
+
value,
|
|
369
|
+
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
370
|
+
body: (0, core_1.beginCell)()
|
|
371
|
+
.storeUint(exports.CrossChainLayerOpCodes.stakingAdapter_reportUnstakeResult, Constants_1.Params.bitsize.op)
|
|
372
|
+
.storeUint(opts.queryId || 0, Constants_1.Params.bitsize.queryId)
|
|
373
|
+
.storeMaybeRef((0, CrossChainLayerPayload_1.CrossChainLayerPayloadToCell)(opts.payload))
|
|
374
|
+
.endCell(),
|
|
375
|
+
});
|
|
376
|
+
}
|
|
267
377
|
async getFullData(provider) {
|
|
268
378
|
const result = await provider.get('get_full_data', []);
|
|
269
379
|
const adminAddress = result.stack.readAddress().toString();
|
|
@@ -280,10 +390,18 @@ class CrossChainLayer {
|
|
|
280
390
|
const tonProtocolFee = Number((0, core_1.fromNano)(result.stack.readNumber()));
|
|
281
391
|
const protocolFeeSupply = Number((0, core_1.fromNano)(result.stack.readNumber()));
|
|
282
392
|
const executorCode = result.stack.readCell();
|
|
393
|
+
const groupPublicKey = result.stack.readBigNumber();
|
|
394
|
+
let stakingAdapterAddress;
|
|
395
|
+
let stakedTonSupply;
|
|
396
|
+
if (result.stack.remaining > 0) {
|
|
397
|
+
stakingAdapterAddress = result.stack.readAddressOpt()?.toString();
|
|
398
|
+
stakedTonSupply = Number((0, core_1.fromNano)(result.stack.readBigNumber()));
|
|
399
|
+
}
|
|
283
400
|
return {
|
|
284
401
|
adminAddress,
|
|
285
402
|
newAdminAddress,
|
|
286
403
|
sequencerMultisigAddress,
|
|
404
|
+
groupPublicKey,
|
|
287
405
|
maxRootsSize,
|
|
288
406
|
merkleRoots: (0, MerkleRoots_1.cellToArray)(merkleRoots),
|
|
289
407
|
prevEpoch,
|
|
@@ -295,6 +413,8 @@ class CrossChainLayer {
|
|
|
295
413
|
tonProtocolFee,
|
|
296
414
|
protocolFeeSupply,
|
|
297
415
|
executorCode,
|
|
416
|
+
stakingAdapterAddress,
|
|
417
|
+
stakedTonSupply,
|
|
298
418
|
};
|
|
299
419
|
}
|
|
300
420
|
async getCurrentEpochInfo(provider) {
|
|
@@ -306,6 +426,7 @@ class CrossChainLayer {
|
|
|
306
426
|
const nextVotingTime = result.stack.readNumber();
|
|
307
427
|
const epochDelay = result.stack.readNumber();
|
|
308
428
|
const maxRootsSize = result.stack.readNumber();
|
|
429
|
+
const groupPublicKey = result.stack.readBigNumber();
|
|
309
430
|
return {
|
|
310
431
|
lastMerkleRoot,
|
|
311
432
|
prevEpoch,
|
|
@@ -314,14 +435,28 @@ class CrossChainLayer {
|
|
|
314
435
|
nextVotingTime,
|
|
315
436
|
epochDelay,
|
|
316
437
|
maxRootsSize,
|
|
438
|
+
groupPublicKey,
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
async getStakingInfo(provider) {
|
|
442
|
+
const result = await provider.get('get_staking_info', []);
|
|
443
|
+
const stakingAdapterAddress = result.stack.readAddress();
|
|
444
|
+
const stakedTonSupply = result.stack.readBigNumber();
|
|
445
|
+
return {
|
|
446
|
+
stakingAdapterAddress,
|
|
447
|
+
stakedTonSupply,
|
|
317
448
|
};
|
|
318
449
|
}
|
|
319
|
-
async getExecutorAddress(provider,
|
|
320
|
-
const result = await provider.get('get_executor_address', [{ type: '
|
|
450
|
+
async getExecutorAddress(provider, operationId) {
|
|
451
|
+
const result = await provider.get('get_executor_address', [{ type: 'int', value: operationId }]);
|
|
321
452
|
return result.stack.readAddress();
|
|
322
453
|
}
|
|
323
|
-
async
|
|
324
|
-
const result = await provider.get('
|
|
454
|
+
async getStorageFee(provider, merkleRoots) {
|
|
455
|
+
const result = await provider.get('get_ccl_storage_fee', [{ type: 'cell', cell: merkleRoots }]);
|
|
456
|
+
return result.stack.readBigNumber();
|
|
457
|
+
}
|
|
458
|
+
async getExecutorData(provider, operationId) {
|
|
459
|
+
const result = await provider.get('get_executor_data', [{ type: 'int', value: operationId }]);
|
|
325
460
|
const address = result.stack.readAddress();
|
|
326
461
|
const stateInit = result.stack.readCell();
|
|
327
462
|
return {
|
|
@@ -329,8 +464,24 @@ class CrossChainLayer {
|
|
|
329
464
|
stateInit,
|
|
330
465
|
};
|
|
331
466
|
}
|
|
467
|
+
async getEvmMsgToTvmFees(provider, payload, proofBits, proofCells, executorFeeAmount, executorFeeToken) {
|
|
468
|
+
const result = await provider.get('calculate_evm_msg_to_tvm_fees', [
|
|
469
|
+
{ type: 'cell', cell: payload },
|
|
470
|
+
{ type: 'int', value: proofBits },
|
|
471
|
+
{ type: 'int', value: proofCells },
|
|
472
|
+
{ type: 'int', value: executorFeeAmount },
|
|
473
|
+
{ type: 'slice', cell: (0, core_1.beginCell)().storeAddress(executorFeeToken).endCell() },
|
|
474
|
+
]);
|
|
475
|
+
return result.stack.readBigNumber();
|
|
476
|
+
}
|
|
332
477
|
}
|
|
333
478
|
exports.CrossChainLayer = CrossChainLayer;
|
|
479
|
+
CrossChainLayer.tvmMsgToEvmGasConsumption = 15505n;
|
|
480
|
+
CrossChainLayer.feeMinterGasConsumption = 9904n;
|
|
481
|
+
CrossChainLayer.collectionMintGasConsumption = 9278n;
|
|
334
482
|
CrossChainLayer.minStorageDuration = 365 * 24 * 3600; //1 year
|
|
335
|
-
CrossChainLayer.storageStats = new GasUtils_1.StorageStats(
|
|
336
|
-
|
|
483
|
+
CrossChainLayer.storageStats = new GasUtils_1.StorageStats(51611n, 105n);
|
|
484
|
+
// Gas consumption constants from contracts/imports/precompiled_gas_const/ccl_gas_utils.fc
|
|
485
|
+
CrossChainLayer.addFeeGasConsumption = 8429n;
|
|
486
|
+
CrossChainLayer.reserveFee = 100n;
|
|
487
|
+
CrossChainLayer.reportUnstakeResultGasConsumption = 13170n;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Address, Cell, Contract, ContractProvider, Sender } from '@ton/ton';
|
|
2
2
|
import { Maybe } from '@ton/core/dist/utils/maybe';
|
|
3
|
+
import { StorageStats } from './utils/GasUtils';
|
|
3
4
|
export declare const JettonMinterOpCodes: {
|
|
4
5
|
mint: number;
|
|
5
6
|
changeAdmin: number;
|
|
@@ -19,7 +20,7 @@ export declare const JettonMinterErrors: {
|
|
|
19
20
|
};
|
|
20
21
|
export type JettonMinterConfig = {
|
|
21
22
|
totalSupply: bigint;
|
|
22
|
-
adminAddress
|
|
23
|
+
adminAddress?: Address;
|
|
23
24
|
newAdminAddress?: Address;
|
|
24
25
|
content: Cell;
|
|
25
26
|
jettonWalletCode: Cell;
|
|
@@ -28,7 +29,7 @@ export type JettonMinterConfig = {
|
|
|
28
29
|
export type JettonMinterData = {
|
|
29
30
|
totalSupply: bigint;
|
|
30
31
|
mintable: boolean;
|
|
31
|
-
adminAddress
|
|
32
|
+
adminAddress?: Address;
|
|
32
33
|
content: Cell;
|
|
33
34
|
walletCode: Cell;
|
|
34
35
|
};
|
|
@@ -39,6 +40,7 @@ export declare class JettonMinter implements Contract {
|
|
|
39
40
|
code: Cell;
|
|
40
41
|
data: Cell;
|
|
41
42
|
} | undefined;
|
|
43
|
+
static storageStats: StorageStats;
|
|
42
44
|
constructor(address: Address, init?: {
|
|
43
45
|
code: Cell;
|
|
44
46
|
data: Cell;
|
|
@@ -6,6 +6,7 @@ exports.jettonMinterConfigToCell = jettonMinterConfigToCell;
|
|
|
6
6
|
const ton_1 = require("@ton/ton");
|
|
7
7
|
const CrossChainLayer_1 = require("./CrossChainLayer");
|
|
8
8
|
const Constants_1 = require("./Constants");
|
|
9
|
+
const GasUtils_1 = require("./utils/GasUtils");
|
|
9
10
|
exports.JettonMinterOpCodes = {
|
|
10
11
|
mint: 0xd7b9c06e,
|
|
11
12
|
changeAdmin: 0x581879bc,
|
|
@@ -58,7 +59,7 @@ class JettonMinter {
|
|
|
58
59
|
value,
|
|
59
60
|
sendMode: ton_1.SendMode.PAY_GAS_SEPARATELY,
|
|
60
61
|
body: (0, ton_1.beginCell)()
|
|
61
|
-
.storeUint(CrossChainLayer_1.CrossChainLayerOpCodes.
|
|
62
|
+
.storeUint(CrossChainLayer_1.CrossChainLayerOpCodes.anyone_tvmMsgToEvmErrorNotification, 32)
|
|
62
63
|
.storeUint(params.queryId || 0, 64)
|
|
63
64
|
.storeUint(params.operation || CrossChainLayer_1.MsgType.jettonBurn, 32)
|
|
64
65
|
.storeAddress(params.jettonOwnerAddress)
|
|
@@ -166,7 +167,7 @@ class JettonMinter {
|
|
|
166
167
|
const res = await provider.get('get_jetton_data', []);
|
|
167
168
|
const totalSupply = res.stack.readBigNumber();
|
|
168
169
|
const mintable = res.stack.readBoolean();
|
|
169
|
-
const adminAddress = res.stack.
|
|
170
|
+
const adminAddress = res.stack.readAddressOpt() ?? undefined;
|
|
170
171
|
const content = res.stack.readCell();
|
|
171
172
|
const walletCode = res.stack.readCell();
|
|
172
173
|
return {
|
|
@@ -184,7 +185,7 @@ class JettonMinter {
|
|
|
184
185
|
async getFullData(provider) {
|
|
185
186
|
const res = await provider.get('get_full_data', []);
|
|
186
187
|
const totalSupply = res.stack.readBigNumber();
|
|
187
|
-
const adminAddress = res.stack.
|
|
188
|
+
const adminAddress = res.stack.readAddressOpt() ?? undefined;
|
|
188
189
|
const newAdminAddress = res.stack.readAddressOpt() ?? undefined;
|
|
189
190
|
const content = res.stack.readCell();
|
|
190
191
|
const jettonWalletCode = res.stack.readCell();
|
|
@@ -207,3 +208,4 @@ class JettonMinter {
|
|
|
207
208
|
}
|
|
208
209
|
}
|
|
209
210
|
exports.JettonMinter = JettonMinter;
|
|
211
|
+
JettonMinter.storageStats = new GasUtils_1.StorageStats(10208n, 28n);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Address, Cell, Contract, ContractProvider, Sender } from '@ton/core';
|
|
2
|
+
import { StorageStats } from './utils/GasUtils';
|
|
2
3
|
export type JettonProxyConfig = {
|
|
3
4
|
crossChainLayerAddress: string;
|
|
4
5
|
adminAddress: string;
|
|
@@ -31,6 +32,14 @@ export declare class JettonProxy implements Contract {
|
|
|
31
32
|
code: Cell;
|
|
32
33
|
data: Cell;
|
|
33
34
|
} | undefined;
|
|
35
|
+
static estimatedJettonWalletCells: bigint;
|
|
36
|
+
static estimatedJettonWalletBits: bigint;
|
|
37
|
+
static storageStats: StorageStats;
|
|
38
|
+
static msgToTvmGasConsumption: bigint;
|
|
39
|
+
static errorNotificationGasConsumption: bigint;
|
|
40
|
+
static transferNotificationGasConsumption: bigint;
|
|
41
|
+
static estimatedReceiveTransferGasConsumption: bigint;
|
|
42
|
+
static estimatedSendTransferGasConsumption: bigint;
|
|
34
43
|
constructor(address: Address, init?: {
|
|
35
44
|
code: Cell;
|
|
36
45
|
data: Cell;
|
|
@@ -5,6 +5,7 @@ exports.jettonProxyConfigToCell = jettonProxyConfigToCell;
|
|
|
5
5
|
const core_1 = require("@ton/core");
|
|
6
6
|
const CrossChainLayer_1 = require("./CrossChainLayer");
|
|
7
7
|
const Constants_1 = require("./Constants");
|
|
8
|
+
const GasUtils_1 = require("./utils/GasUtils");
|
|
8
9
|
exports.JettonProxyOpCodes = {
|
|
9
10
|
jettonWallet_transfer: 0xf8a7ea5,
|
|
10
11
|
jettonWallet_transferNotification: 0x7362d09c,
|
|
@@ -13,7 +14,7 @@ exports.JettonProxyOpCodes = {
|
|
|
13
14
|
anyone_tvmMsgToEVM: 0x6c582059,
|
|
14
15
|
admin_changeAdminAddress: 0x581879bc,
|
|
15
16
|
admin_cancelChangingAdminAddress: 0x60094a1b,
|
|
16
|
-
admin_updateCode:
|
|
17
|
+
admin_updateCode: 0x6e7145f9,
|
|
17
18
|
newAdmin_confirmChangingAdminAddress: 0x6a4fbe34,
|
|
18
19
|
};
|
|
19
20
|
exports.JettonProxyErrors = {
|
|
@@ -29,7 +30,7 @@ function jettonProxyConfigToCell(config) {
|
|
|
29
30
|
return (0, core_1.beginCell)()
|
|
30
31
|
.storeAddress(core_1.Address.parse(config.crossChainLayerAddress))
|
|
31
32
|
.storeAddress(core_1.Address.parse(config.adminAddress))
|
|
32
|
-
.storeAddress(config.newAdminAddress ? core_1.Address.parse(config.
|
|
33
|
+
.storeAddress(config.newAdminAddress ? core_1.Address.parse(config.newAdminAddress) : null)
|
|
33
34
|
.endCell();
|
|
34
35
|
}
|
|
35
36
|
class JettonProxy {
|
|
@@ -156,3 +157,11 @@ class JettonProxy {
|
|
|
156
157
|
}
|
|
157
158
|
}
|
|
158
159
|
exports.JettonProxy = JettonProxy;
|
|
160
|
+
JettonProxy.estimatedJettonWalletCells = 25n;
|
|
161
|
+
JettonProxy.estimatedJettonWalletBits = 11000n;
|
|
162
|
+
JettonProxy.storageStats = new GasUtils_1.StorageStats(7760n, 16n);
|
|
163
|
+
JettonProxy.msgToTvmGasConsumption = 5536n;
|
|
164
|
+
JettonProxy.errorNotificationGasConsumption = 5556n;
|
|
165
|
+
JettonProxy.transferNotificationGasConsumption = 8515n;
|
|
166
|
+
JettonProxy.estimatedReceiveTransferGasConsumption = 12000n;
|
|
167
|
+
JettonProxy.estimatedSendTransferGasConsumption = 11000n;
|
|
@@ -42,8 +42,15 @@ export declare class JettonWallet implements Contract {
|
|
|
42
42
|
code: Cell;
|
|
43
43
|
data: Cell;
|
|
44
44
|
} | undefined;
|
|
45
|
+
static mintAfterErrorGasConsumption: bigint;
|
|
46
|
+
static burnNotificationGasConsumption: bigint;
|
|
47
|
+
static nftBurnGasConsumption: bigint;
|
|
48
|
+
static receiveTransferGasConsumption: bigint;
|
|
49
|
+
static sendTransferGasConsumption: bigint;
|
|
50
|
+
static burnGasConsumption: bigint;
|
|
45
51
|
static storageStats: StorageStats;
|
|
46
52
|
static stateInitStats: StorageStats;
|
|
53
|
+
static storageDuration: bigint;
|
|
47
54
|
constructor(address: Address, init?: {
|
|
48
55
|
code: Cell;
|
|
49
56
|
data: Cell;
|