@ton/blueprint 0.10.0 → 0.13.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/CHANGELOG.md +36 -0
- package/README.md +8 -4
- package/dist/build.d.ts +3 -0
- package/dist/build.js +57 -0
- package/dist/cli/Runner.d.ts +5 -0
- package/dist/cli/Runner.js +4 -0
- package/dist/cli/build.d.ts +1 -3
- package/dist/cli/build.js +5 -46
- package/dist/cli/cli.d.ts +0 -5
- package/dist/cli/cli.js +47 -5
- package/dist/cli/create.d.ts +1 -1
- package/dist/cli/create.js +1 -1
- package/dist/cli/help.d.ts +2 -1
- package/dist/cli/help.js +12 -3
- package/dist/cli/run.d.ts +1 -1
- package/dist/cli/test.d.ts +1 -1
- package/dist/compile/CompilerConfig.d.ts +3 -1
- package/dist/compile/OverwritableVirtualFileSystem.d.ts +1 -0
- package/dist/compile/OverwritableVirtualFileSystem.js +6 -3
- package/dist/compile/compile.d.ts +1 -1
- package/dist/compile/compile.js +6 -5
- package/dist/config/Config.d.ts +4 -0
- package/dist/config/Config.js +2 -0
- package/dist/config/Plugin.d.ts +9 -0
- package/dist/config/Plugin.js +2 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -1
- package/dist/network/NetworkProvider.d.ts +4 -4
- package/dist/network/createNetworkProvider.js +45 -16
- package/dist/network/send/DeeplinkProvider.d.ts +1 -1
- package/dist/network/send/DeeplinkProvider.js +2 -2
- package/dist/network/send/MnemonicProvider.d.ts +3 -3
- package/dist/network/send/MnemonicProvider.js +6 -6
- package/dist/network/send/SendProvider.d.ts +1 -1
- package/dist/network/send/TonConnectProvider.d.ts +1 -1
- package/dist/network/send/TonConnectProvider.js +4 -4
- package/dist/network/send/TonHubProvider.d.ts +1 -1
- package/dist/network/send/TonHubProvider.js +4 -4
- package/dist/templates/func/common/wrappers/compile.ts.template +1 -1
- package/dist/templates/func/counter/scripts/deploy.ts.template +2 -2
- package/dist/templates/func/counter/scripts/increment.ts.template +2 -2
- package/dist/templates/func/counter/tests/spec.ts.template +6 -5
- package/dist/templates/func/counter/wrappers/wrapper.ts.template +1 -1
- package/dist/templates/func/empty/scripts/deploy.ts.template +2 -2
- package/dist/templates/func/empty/tests/spec.ts.template +6 -5
- package/dist/templates/func/empty/wrappers/wrapper.ts.template +1 -1
- package/dist/templates/tact/common/wrappers/compile.ts.template +1 -1
- package/dist/templates/tact/counter/scripts/deploy.ts.template +2 -2
- package/dist/templates/tact/counter/scripts/increment.ts.template +2 -2
- package/dist/templates/tact/counter/tests/spec.ts.template +5 -4
- package/dist/templates/tact/empty/scripts/deploy.ts.template +2 -2
- package/dist/templates/tact/empty/tests/spec.ts.template +5 -4
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +2 -2
- package/package.json +49 -50
|
@@ -21,23 +21,24 @@ const arg_1 = __importDefault(require("arg"));
|
|
|
21
21
|
const DeeplinkProvider_1 = require("./send/DeeplinkProvider");
|
|
22
22
|
const TonConnectProvider_1 = require("./send/TonConnectProvider");
|
|
23
23
|
const TonHubProvider_1 = require("./send/TonHubProvider");
|
|
24
|
-
const
|
|
25
|
-
const ton_1 = require("ton");
|
|
24
|
+
const core_1 = require("@ton/core");
|
|
25
|
+
const ton_1 = require("@ton/ton");
|
|
26
26
|
const ton_access_1 = require("@orbs-network/ton-access");
|
|
27
27
|
const FSStorage_1 = require("./storage/FSStorage");
|
|
28
28
|
const path_1 = __importDefault(require("path"));
|
|
29
29
|
const paths_1 = require("../paths");
|
|
30
|
-
const
|
|
30
|
+
const crypto_1 = require("@ton/crypto");
|
|
31
31
|
const MnemonicProvider_1 = require("./send/MnemonicProvider");
|
|
32
32
|
const argSpec = {
|
|
33
33
|
'--mainnet': Boolean,
|
|
34
34
|
'--testnet': Boolean,
|
|
35
|
+
'--custom': String,
|
|
35
36
|
'--tonconnect': Boolean,
|
|
36
37
|
'--deeplink': Boolean,
|
|
37
38
|
'--tonhub': Boolean,
|
|
38
39
|
'--mnemonic': Boolean,
|
|
39
40
|
'--tonscan': Boolean,
|
|
40
|
-
'--
|
|
41
|
+
'--tonviewer': Boolean,
|
|
41
42
|
'--toncx': Boolean,
|
|
42
43
|
'--dton': Boolean,
|
|
43
44
|
};
|
|
@@ -52,7 +53,7 @@ class SendProviderSender {
|
|
|
52
53
|
console.warn("Warning: blueprint's Sender does not support `bounce` flag, because it is ignored by all used Sender APIs");
|
|
53
54
|
console.warn('To silence this warning, change your `bounce` flags passed to Senders to unset or undefined');
|
|
54
55
|
}
|
|
55
|
-
if (!(args.sendMode === undefined || args.sendMode
|
|
56
|
+
if (!(args.sendMode === undefined || args.sendMode === core_1.SendMode.PAY_GAS_SEPARATELY)) {
|
|
56
57
|
throw new Error('Deployer sender does not support `sendMode` other than `PAY_GAS_SEPARATELY`');
|
|
57
58
|
}
|
|
58
59
|
await __classPrivateFieldGet(this, _SendProviderSender_provider, "f").sendTransaction(args.to, args.value, args.body ?? undefined, args.init ?? undefined);
|
|
@@ -81,11 +82,11 @@ class WrappedContractProvider {
|
|
|
81
82
|
const init = __classPrivateFieldGet(this, _WrappedContractProvider_init, "f") && (await this.getState()).state.type !== 'active' ? __classPrivateFieldGet(this, _WrappedContractProvider_init, "f") : undefined;
|
|
82
83
|
return await via.send({
|
|
83
84
|
to: __classPrivateFieldGet(this, _WrappedContractProvider_address, "f"),
|
|
84
|
-
value: typeof args.value === 'string' ? (0,
|
|
85
|
+
value: typeof args.value === 'string' ? (0, core_1.toNano)(args.value) : args.value,
|
|
85
86
|
sendMode: args.sendMode,
|
|
86
87
|
bounce: args.bounce,
|
|
87
88
|
init,
|
|
88
|
-
body: typeof args.body === 'string' ? (0,
|
|
89
|
+
body: typeof args.body === 'string' ? (0, core_1.comment)(args.body) : args.body,
|
|
89
90
|
});
|
|
90
91
|
}
|
|
91
92
|
}
|
|
@@ -116,10 +117,20 @@ class NetworkProviderImpl {
|
|
|
116
117
|
return __classPrivateFieldGet(this, _NetworkProviderImpl_tc, "f");
|
|
117
118
|
}
|
|
118
119
|
provider(address, init) {
|
|
119
|
-
|
|
120
|
+
if (__classPrivateFieldGet(this, _NetworkProviderImpl_tc, "f") instanceof ton_1.TonClient4) {
|
|
121
|
+
return new WrappedContractProvider(address, __classPrivateFieldGet(this, _NetworkProviderImpl_tc, "f").provider(address, init ? { code: init.code ?? new core_1.Cell(), data: init.data ?? new core_1.Cell() } : undefined), init);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
return new WrappedContractProvider(address, __classPrivateFieldGet(this, _NetworkProviderImpl_tc, "f").provider(address, { code: init?.code ?? new core_1.Cell(), data: init?.data ?? new core_1.Cell() }), init);
|
|
125
|
+
}
|
|
120
126
|
}
|
|
121
127
|
async isContractDeployed(address) {
|
|
122
|
-
|
|
128
|
+
if (__classPrivateFieldGet(this, _NetworkProviderImpl_tc, "f") instanceof ton_1.TonClient4) {
|
|
129
|
+
return __classPrivateFieldGet(this, _NetworkProviderImpl_tc, "f").isContractDeployed((await __classPrivateFieldGet(this, _NetworkProviderImpl_tc, "f").getLastBlock()).last.seqno, address);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
return (await __classPrivateFieldGet(this, _NetworkProviderImpl_tc, "f").getContractState(address)).state === 'active';
|
|
133
|
+
}
|
|
123
134
|
}
|
|
124
135
|
async waitForDeploy(address, attempts = 10, sleepDuration = 2000) {
|
|
125
136
|
if (attempts <= 0) {
|
|
@@ -163,7 +174,7 @@ class NetworkProviderImpl {
|
|
|
163
174
|
await this.waitForDeploy(contract.address, waitAttempts);
|
|
164
175
|
}
|
|
165
176
|
open(contract) {
|
|
166
|
-
return (0,
|
|
177
|
+
return (0, core_1.openContract)(contract, (params) => this.provider(params.address, params.init ?? undefined));
|
|
167
178
|
}
|
|
168
179
|
ui() {
|
|
169
180
|
return __classPrivateFieldGet(this, _NetworkProviderImpl_ui, "f");
|
|
@@ -176,7 +187,7 @@ async function createMnemonicProvider(client, ui) {
|
|
|
176
187
|
if (mnemonic.length === 0 || walletVersion.length === 0) {
|
|
177
188
|
throw new Error('Mnemonic deployer was chosen, but env variables WALLET_MNEMONIC and WALLET_VERSION are not set');
|
|
178
189
|
}
|
|
179
|
-
const keyPair = await (0,
|
|
190
|
+
const keyPair = await (0, crypto_1.mnemonicToPrivateKey)(mnemonic.split(' '));
|
|
180
191
|
return new MnemonicProvider_1.MnemonicProvider({
|
|
181
192
|
version: walletVersion.toLowerCase(),
|
|
182
193
|
client,
|
|
@@ -193,16 +204,24 @@ class NetworkProviderBuilder {
|
|
|
193
204
|
let network = (0, utils_1.oneOrZeroOf)({
|
|
194
205
|
mainnet: this.args['--mainnet'],
|
|
195
206
|
testnet: this.args['--testnet'],
|
|
207
|
+
custom: this.args['--custom'] !== undefined,
|
|
196
208
|
});
|
|
197
209
|
if (!network) {
|
|
198
|
-
network = await this.ui.choose('Which network do you want to use?', ['mainnet', 'testnet'], (c) => c);
|
|
210
|
+
network = await this.ui.choose('Which network do you want to use?', ['mainnet', 'testnet', 'custom'], (c) => c);
|
|
211
|
+
if (network === 'custom') {
|
|
212
|
+
const defaultCustomEndpoint = 'http://localhost:8081/';
|
|
213
|
+
this.args['--custom'] = (await this.ui.input(`Provide a custom API v2 endpoint (default is ${defaultCustomEndpoint})`)).trim();
|
|
214
|
+
if (this.args['--custom'] === '')
|
|
215
|
+
this.args['--custom'] = defaultCustomEndpoint;
|
|
216
|
+
this.args['--custom'] += 'jsonRPC';
|
|
217
|
+
}
|
|
199
218
|
}
|
|
200
219
|
return network;
|
|
201
220
|
}
|
|
202
221
|
chooseExplorer() {
|
|
203
222
|
return ((0, utils_1.oneOrZeroOf)({
|
|
204
223
|
tonscan: this.args['--tonscan'],
|
|
205
|
-
|
|
224
|
+
tonviewer: this.args['--tonviewer'],
|
|
206
225
|
toncx: this.args['--toncx'],
|
|
207
226
|
dton: this.args['--dton'],
|
|
208
227
|
}) ?? 'tonscan');
|
|
@@ -241,9 +260,13 @@ class NetworkProviderBuilder {
|
|
|
241
260
|
provider = new DeeplinkProvider_1.DeeplinkProvider(this.ui);
|
|
242
261
|
break;
|
|
243
262
|
case 'tonconnect':
|
|
263
|
+
if (network === 'custom')
|
|
264
|
+
throw new Error('Tonkeeper cannot work with custom network.');
|
|
244
265
|
provider = new TonConnectProvider_1.TonConnectProvider(new FSStorage_1.FSStorage(storagePath), this.ui);
|
|
245
266
|
break;
|
|
246
267
|
case 'tonhub':
|
|
268
|
+
if (network === 'custom')
|
|
269
|
+
throw new Error('TonHub cannot work with custom network.');
|
|
247
270
|
provider = new TonHubProvider_1.TonHubProvider(network, new FSStorage_1.FSStorage(storagePath), this.ui);
|
|
248
271
|
break;
|
|
249
272
|
case 'mnemonic':
|
|
@@ -257,9 +280,15 @@ class NetworkProviderBuilder {
|
|
|
257
280
|
async build() {
|
|
258
281
|
const network = await this.chooseNetwork();
|
|
259
282
|
const explorer = this.chooseExplorer();
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
283
|
+
let tc;
|
|
284
|
+
if (network === 'custom') {
|
|
285
|
+
tc = new ton_1.TonClient({ endpoint: this.args['--custom'] });
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
tc = new ton_1.TonClient4({
|
|
289
|
+
endpoint: await (0, ton_access_1.getHttpV4Endpoint)({ network }),
|
|
290
|
+
});
|
|
291
|
+
}
|
|
263
292
|
const sendProvider = await this.chooseSendProvider(network, tc);
|
|
264
293
|
try {
|
|
265
294
|
await sendProvider.connect();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Address, Cell, StateInit } from 'ton
|
|
1
|
+
import { Address, Cell, StateInit } from '@ton/core';
|
|
2
2
|
import { SendProvider } from './SendProvider';
|
|
3
3
|
import { UIProvider } from '../../ui/UIProvider';
|
|
4
4
|
export declare class DeeplinkProvider implements SendProvider {
|
|
@@ -16,7 +16,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
16
16
|
var _DeeplinkProvider_ui;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.DeeplinkProvider = void 0;
|
|
19
|
-
const
|
|
19
|
+
const core_1 = require("@ton/core");
|
|
20
20
|
const utils_1 = require("../../utils");
|
|
21
21
|
const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
|
|
22
22
|
class DeeplinkProvider {
|
|
@@ -28,7 +28,7 @@ class DeeplinkProvider {
|
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
30
|
async sendTransaction(address, amount, payload, stateInit) {
|
|
31
|
-
const deepLink = (0, utils_1.tonDeepLink)(address, amount, payload, stateInit ? (0,
|
|
31
|
+
const deepLink = (0, utils_1.tonDeepLink)(address, amount, payload, stateInit ? (0, core_1.beginCell)().storeWritable((0, core_1.storeStateInit)(stateInit)).endCell() : undefined);
|
|
32
32
|
__classPrivateFieldGet(this, _DeeplinkProvider_ui, "f").write('\n');
|
|
33
33
|
qrcode_terminal_1.default.generate(deepLink, { small: true }, (qr) => __classPrivateFieldGet(this, _DeeplinkProvider_ui, "f").write(qr));
|
|
34
34
|
__classPrivateFieldGet(this, _DeeplinkProvider_ui, "f").write('\n');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { TonClient4 } from 'ton';
|
|
3
|
-
import { Address, Cell, StateInit } from 'ton
|
|
2
|
+
import { TonClient, TonClient4 } from '@ton/ton';
|
|
3
|
+
import { Address, Cell, StateInit } from '@ton/core';
|
|
4
4
|
import { SendProvider } from './SendProvider';
|
|
5
5
|
import { UIProvider } from '../../ui/UIProvider';
|
|
6
6
|
export type WalletVersion = 'v1r1' | 'v1r2' | 'v1r3' | 'v2r1' | 'v2r2' | 'v3r1' | 'v3r2' | 'v4';
|
|
@@ -10,7 +10,7 @@ export declare class MnemonicProvider implements SendProvider {
|
|
|
10
10
|
version: WalletVersion;
|
|
11
11
|
workchain?: number;
|
|
12
12
|
secretKey: Buffer;
|
|
13
|
-
client: TonClient4;
|
|
13
|
+
client: TonClient4 | TonClient;
|
|
14
14
|
ui: UIProvider;
|
|
15
15
|
});
|
|
16
16
|
connect(): Promise<void>;
|
|
@@ -13,9 +13,9 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
13
13
|
var _MnemonicProvider_wallet, _MnemonicProvider_secretKey, _MnemonicProvider_client, _MnemonicProvider_ui;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.MnemonicProvider = void 0;
|
|
16
|
-
const ton_1 = require("ton");
|
|
17
|
-
const
|
|
18
|
-
const
|
|
16
|
+
const ton_1 = require("@ton/ton");
|
|
17
|
+
const core_1 = require("@ton/core");
|
|
18
|
+
const crypto_1 = require("@ton/crypto");
|
|
19
19
|
const wallets = {
|
|
20
20
|
v1r1: ton_1.WalletContractV1R1,
|
|
21
21
|
v1r2: ton_1.WalletContractV1R2,
|
|
@@ -35,9 +35,9 @@ class MnemonicProvider {
|
|
|
35
35
|
if (!(params.version in wallets)) {
|
|
36
36
|
throw new Error(`Unknown wallet version ${params.version}`);
|
|
37
37
|
}
|
|
38
|
-
const kp = (0,
|
|
38
|
+
const kp = (0, crypto_1.keyPairFromSecretKey)(params.secretKey);
|
|
39
39
|
__classPrivateFieldSet(this, _MnemonicProvider_client, params.client, "f");
|
|
40
|
-
__classPrivateFieldSet(this, _MnemonicProvider_wallet, (0,
|
|
40
|
+
__classPrivateFieldSet(this, _MnemonicProvider_wallet, (0, core_1.openContract)(wallets[params.version].create({
|
|
41
41
|
workchain: params.workchain ?? 0,
|
|
42
42
|
publicKey: kp.publicKey,
|
|
43
43
|
}), (params) => __classPrivateFieldGet(this, _MnemonicProvider_client, "f").provider(params.address, params.init)), "f");
|
|
@@ -54,7 +54,7 @@ class MnemonicProvider {
|
|
|
54
54
|
messages: [
|
|
55
55
|
{
|
|
56
56
|
init: stateInit,
|
|
57
|
-
body: payload ?? new
|
|
57
|
+
body: payload ?? new core_1.Cell(),
|
|
58
58
|
info: {
|
|
59
59
|
type: 'internal',
|
|
60
60
|
ihrDisabled: true,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Address, Cell, StateInit } from 'ton
|
|
1
|
+
import { Address, Cell, StateInit } from '@ton/core';
|
|
2
2
|
export interface SendProvider {
|
|
3
3
|
connect(): Promise<void>;
|
|
4
4
|
sendTransaction(address: Address, amount: bigint, payload?: Cell, stateInit?: StateInit): Promise<any>;
|
|
@@ -18,7 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.TonConnectProvider = void 0;
|
|
19
19
|
const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
|
|
20
20
|
const sdk_1 = __importDefault(require("@tonconnect/sdk"));
|
|
21
|
-
const
|
|
21
|
+
const core_1 = require("@ton/core");
|
|
22
22
|
class TonConnectStorage {
|
|
23
23
|
constructor(inner) {
|
|
24
24
|
_TonConnectStorage_inner.set(this, void 0);
|
|
@@ -50,12 +50,12 @@ class TonConnectProvider {
|
|
|
50
50
|
}
|
|
51
51
|
async connect() {
|
|
52
52
|
await this.connectWallet();
|
|
53
|
-
__classPrivateFieldGet(this, _TonConnectProvider_ui, "f").write(`Connected to wallet at address: ${
|
|
53
|
+
__classPrivateFieldGet(this, _TonConnectProvider_ui, "f").write(`Connected to wallet at address: ${core_1.Address.parse(__classPrivateFieldGet(this, _TonConnectProvider_connector, "f").wallet.account.address).toString()}\n`);
|
|
54
54
|
}
|
|
55
55
|
address() {
|
|
56
56
|
if (!__classPrivateFieldGet(this, _TonConnectProvider_connector, "f").wallet)
|
|
57
57
|
return undefined;
|
|
58
|
-
return
|
|
58
|
+
return core_1.Address.parse(__classPrivateFieldGet(this, _TonConnectProvider_connector, "f").wallet.account.address);
|
|
59
59
|
}
|
|
60
60
|
async connectWallet() {
|
|
61
61
|
const wallets = (await __classPrivateFieldGet(this, _TonConnectProvider_connector, "f").getWallets()).filter(isRemote);
|
|
@@ -94,7 +94,7 @@ class TonConnectProvider {
|
|
|
94
94
|
amount: amount.toString(),
|
|
95
95
|
payload: payload?.toBoc().toString('base64'),
|
|
96
96
|
stateInit: stateInit
|
|
97
|
-
? (0,
|
|
97
|
+
? (0, core_1.beginCell)().storeWritable((0, core_1.storeStateInit)(stateInit)).endCell().toBoc().toString('base64')
|
|
98
98
|
: undefined,
|
|
99
99
|
},
|
|
100
100
|
],
|
|
@@ -16,7 +16,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
16
16
|
var _TonHubProvider_connector, _TonHubProvider_storage, _TonHubProvider_ui, _TonHubProvider_session;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.TonHubProvider = void 0;
|
|
19
|
-
const
|
|
19
|
+
const core_1 = require("@ton/core");
|
|
20
20
|
const ton_x_1 = require("ton-x");
|
|
21
21
|
const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
|
|
22
22
|
const KEY_NAME = 'tonhub_session';
|
|
@@ -75,12 +75,12 @@ class TonHubProvider {
|
|
|
75
75
|
}
|
|
76
76
|
async connect() {
|
|
77
77
|
__classPrivateFieldSet(this, _TonHubProvider_session, await this.getSession(), "f");
|
|
78
|
-
__classPrivateFieldGet(this, _TonHubProvider_ui, "f").write(`Connected to wallet at address: ${
|
|
78
|
+
__classPrivateFieldGet(this, _TonHubProvider_ui, "f").write(`Connected to wallet at address: ${core_1.Address.parse(__classPrivateFieldGet(this, _TonHubProvider_session, "f").wallet.address).toString()}\n`);
|
|
79
79
|
}
|
|
80
80
|
address() {
|
|
81
81
|
if (!__classPrivateFieldGet(this, _TonHubProvider_session, "f"))
|
|
82
82
|
return undefined;
|
|
83
|
-
return
|
|
83
|
+
return core_1.Address.parse(__classPrivateFieldGet(this, _TonHubProvider_session, "f").wallet.address);
|
|
84
84
|
}
|
|
85
85
|
async sendTransaction(address, amount, payload, stateInit) {
|
|
86
86
|
if (!__classPrivateFieldGet(this, _TonHubProvider_session, "f"))
|
|
@@ -93,7 +93,7 @@ class TonHubProvider {
|
|
|
93
93
|
timeout: 5 * 60 * 1000,
|
|
94
94
|
payload: payload ? payload.toBoc().toString('base64') : undefined,
|
|
95
95
|
stateInit: stateInit
|
|
96
|
-
? (0,
|
|
96
|
+
? (0, core_1.beginCell)().storeWritable((0, core_1.storeStateInit)(stateInit)).endCell().toBoc().toString('base64')
|
|
97
97
|
: undefined,
|
|
98
98
|
};
|
|
99
99
|
__classPrivateFieldGet(this, _TonHubProvider_ui, "f").setActionPrompt('Sending transaction. Approve it in your wallet...');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
deploy{{name}}.ts
|
|
2
|
-
import { toNano } from 'ton
|
|
2
|
+
import { toNano } from '@ton/core';
|
|
3
3
|
import { {{name}} } from '../wrappers/{{name}}';
|
|
4
|
-
import { compile, NetworkProvider } from '@ton
|
|
4
|
+
import { compile, NetworkProvider } from '@ton/blueprint';
|
|
5
5
|
|
|
6
6
|
export async function run(provider: NetworkProvider) {
|
|
7
7
|
const {{loweredName}} = provider.open(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
increment{{name}}.ts
|
|
2
|
-
import { Address, toNano } from 'ton
|
|
2
|
+
import { Address, toNano } from '@ton/core';
|
|
3
3
|
import { {{name}} } from '../wrappers/{{name}}';
|
|
4
|
-
import { NetworkProvider, sleep } from '@ton
|
|
4
|
+
import { NetworkProvider, sleep } from '@ton/blueprint';
|
|
5
5
|
|
|
6
6
|
export async function run(provider: NetworkProvider, args: string[]) {
|
|
7
7
|
const ui = provider.ui();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{{name}}.spec.ts
|
|
2
|
-
import { Blockchain, SandboxContract } from '@ton
|
|
3
|
-
import { Cell, toNano } from 'ton
|
|
2
|
+
import { Blockchain, SandboxContract } from '@ton/sandbox';
|
|
3
|
+
import { Cell, toNano } from '@ton/core';
|
|
4
4
|
import { {{name}} } from '../wrappers/{{name}}';
|
|
5
|
-
import '@ton
|
|
6
|
-
import { compile } from '@ton
|
|
5
|
+
import '@ton/test-utils';
|
|
6
|
+
import { compile } from '@ton/blueprint';
|
|
7
7
|
|
|
8
8
|
describe('{{name}}', () => {
|
|
9
9
|
let code: Cell;
|
|
@@ -13,6 +13,7 @@ describe('{{name}}', () => {
|
|
|
13
13
|
});
|
|
14
14
|
|
|
15
15
|
let blockchain: Blockchain;
|
|
16
|
+
let deployer: SandboxContract<TreasuryContract>;
|
|
16
17
|
let {{loweredName}}: SandboxContract<{{name}}>;
|
|
17
18
|
|
|
18
19
|
beforeEach(async () => {
|
|
@@ -28,7 +29,7 @@ describe('{{name}}', () => {
|
|
|
28
29
|
)
|
|
29
30
|
);
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
deployer = await blockchain.treasury('deployer');
|
|
32
33
|
|
|
33
34
|
const deployResult = await {{loweredName}}.sendDeploy(deployer.getSender(), toNano('0.05'));
|
|
34
35
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{{name}}.ts
|
|
2
|
-
import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, SendMode } from 'ton
|
|
2
|
+
import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, SendMode } from '@ton/core';
|
|
3
3
|
|
|
4
4
|
export type {{name}}Config = {
|
|
5
5
|
id: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
deploy{{name}}.ts
|
|
2
|
-
import { toNano } from 'ton
|
|
2
|
+
import { toNano } from '@ton/core';
|
|
3
3
|
import { {{name}} } from '../wrappers/{{name}}';
|
|
4
|
-
import { compile, NetworkProvider } from '@ton
|
|
4
|
+
import { compile, NetworkProvider } from '@ton/blueprint';
|
|
5
5
|
|
|
6
6
|
export async function run(provider: NetworkProvider) {
|
|
7
7
|
const {{loweredName}} = provider.open({{name}}.createFromConfig({}, await compile('{{name}}')));
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{{name}}.spec.ts
|
|
2
|
-
import { Blockchain, SandboxContract } from '@ton
|
|
3
|
-
import { Cell, toNano } from 'ton
|
|
2
|
+
import { Blockchain, SandboxContract } from '@ton/sandbox';
|
|
3
|
+
import { Cell, toNano } from '@ton/core';
|
|
4
4
|
import { {{name}} } from '../wrappers/{{name}}';
|
|
5
|
-
import '@ton
|
|
6
|
-
import { compile } from '@ton
|
|
5
|
+
import '@ton/test-utils';
|
|
6
|
+
import { compile } from '@ton/blueprint';
|
|
7
7
|
|
|
8
8
|
describe('{{name}}', () => {
|
|
9
9
|
let code: Cell;
|
|
@@ -13,6 +13,7 @@ describe('{{name}}', () => {
|
|
|
13
13
|
});
|
|
14
14
|
|
|
15
15
|
let blockchain: Blockchain;
|
|
16
|
+
let deployer: SandboxContract<TreasuryContract>;
|
|
16
17
|
let {{loweredName}}: SandboxContract<{{name}}>;
|
|
17
18
|
|
|
18
19
|
beforeEach(async () => {
|
|
@@ -20,7 +21,7 @@ describe('{{name}}', () => {
|
|
|
20
21
|
|
|
21
22
|
{{loweredName}} = blockchain.openContract({{name}}.createFromConfig({}, code));
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
deployer = await blockchain.treasury('deployer');
|
|
24
25
|
|
|
25
26
|
const deployResult = await {{loweredName}}.sendDeploy(deployer.getSender(), toNano('0.05'));
|
|
26
27
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{{name}}.ts
|
|
2
|
-
import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, SendMode } from 'ton
|
|
2
|
+
import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, SendMode } from '@ton/core';
|
|
3
3
|
|
|
4
4
|
export type {{name}}Config = {};
|
|
5
5
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
deploy{{name}}.ts
|
|
2
|
-
import { toNano } from 'ton
|
|
2
|
+
import { toNano } from '@ton/core';
|
|
3
3
|
import { {{name}} } from '../wrappers/{{name}}';
|
|
4
|
-
import { NetworkProvider } from '@ton
|
|
4
|
+
import { NetworkProvider } from '@ton/blueprint';
|
|
5
5
|
|
|
6
6
|
export async function run(provider: NetworkProvider) {
|
|
7
7
|
const {{loweredName}} = provider.open(await {{name}}.fromInit(BigInt(Math.floor(Math.random() * 10000))));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
increment{{name}}.ts
|
|
2
|
-
import { Address, toNano } from 'ton
|
|
2
|
+
import { Address, toNano } from '@ton/core';
|
|
3
3
|
import { {{name}} } from '../wrappers/{{name}}';
|
|
4
|
-
import { NetworkProvider, sleep } from '@ton
|
|
4
|
+
import { NetworkProvider, sleep } from '@ton/blueprint';
|
|
5
5
|
|
|
6
6
|
export async function run(provider: NetworkProvider, args: string[]) {
|
|
7
7
|
const ui = provider.ui();
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{{name}}.spec.ts
|
|
2
|
-
import { Blockchain, SandboxContract } from '@ton
|
|
3
|
-
import { toNano } from 'ton
|
|
2
|
+
import { Blockchain, SandboxContract } from '@ton/sandbox';
|
|
3
|
+
import { toNano } from '@ton/core';
|
|
4
4
|
import { {{name}} } from '../wrappers/{{name}}';
|
|
5
|
-
import '@ton
|
|
5
|
+
import '@ton/test-utils';
|
|
6
6
|
|
|
7
7
|
describe('{{name}}', () => {
|
|
8
8
|
let blockchain: Blockchain;
|
|
9
|
+
let deployer: SandboxContract<TreasuryContract>;
|
|
9
10
|
let {{loweredName}}: SandboxContract<{{name}}>;
|
|
10
11
|
|
|
11
12
|
beforeEach(async () => {
|
|
@@ -13,7 +14,7 @@ describe('{{name}}', () => {
|
|
|
13
14
|
|
|
14
15
|
{{loweredName}} = blockchain.openContract(await {{name}}.fromInit(0n));
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
deployer = await blockchain.treasury('deployer');
|
|
17
18
|
|
|
18
19
|
const deployResult = await {{loweredName}}.send(
|
|
19
20
|
deployer.getSender(),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
deploy{{name}}.ts
|
|
2
|
-
import { toNano } from 'ton
|
|
2
|
+
import { toNano } from '@ton/core';
|
|
3
3
|
import { {{name}} } from '../wrappers/{{name}}';
|
|
4
|
-
import { NetworkProvider } from '@ton
|
|
4
|
+
import { NetworkProvider } from '@ton/blueprint';
|
|
5
5
|
|
|
6
6
|
export async function run(provider: NetworkProvider) {
|
|
7
7
|
const {{loweredName}} = provider.open(await {{name}}.fromInit());
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{{name}}.spec.ts
|
|
2
|
-
import { Blockchain, SandboxContract } from '@ton
|
|
3
|
-
import { toNano } from 'ton
|
|
2
|
+
import { Blockchain, SandboxContract } from '@ton/sandbox';
|
|
3
|
+
import { toNano } from '@ton/core';
|
|
4
4
|
import { {{name}} } from '../wrappers/{{name}}';
|
|
5
|
-
import '@ton
|
|
5
|
+
import '@ton/test-utils';
|
|
6
6
|
|
|
7
7
|
describe('{{name}}', () => {
|
|
8
8
|
let blockchain: Blockchain;
|
|
9
|
+
let deployer: SandboxContract<TreasuryContract>;
|
|
9
10
|
let {{loweredName}}: SandboxContract<{{name}}>;
|
|
10
11
|
|
|
11
12
|
beforeEach(async () => {
|
|
@@ -13,7 +14,7 @@ describe('{{name}}', () => {
|
|
|
13
14
|
|
|
14
15
|
{{loweredName}} = blockchain.openContract(await {{name}}.fromInit());
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
deployer = await blockchain.treasury('deployer');
|
|
17
18
|
|
|
18
19
|
const deployResult = await {{loweredName}}.send(
|
|
19
20
|
deployer.getSender(),
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Address, Cell } from 'ton
|
|
1
|
+
import { Address, Cell } from '@ton/core';
|
|
2
2
|
import { UIProvider } from './ui/UIProvider';
|
|
3
3
|
export declare const tonDeepLink: (address: Address, amount: bigint, body?: Cell, stateInit?: Cell) => string;
|
|
4
4
|
export declare function sleep(ms: number): Promise<unknown>;
|
package/dist/utils.js
CHANGED
|
@@ -109,8 +109,8 @@ function getExplorerLink(address, network, explorer) {
|
|
|
109
109
|
switch (explorer) {
|
|
110
110
|
case 'tonscan':
|
|
111
111
|
return `https://${networkPrefix}tonscan.org/address/${address}`;
|
|
112
|
-
case '
|
|
113
|
-
return `https://${networkPrefix}
|
|
112
|
+
case 'tonviewer':
|
|
113
|
+
return `https://${networkPrefix}tonviewer.com/${address}`;
|
|
114
114
|
case 'toncx':
|
|
115
115
|
return `https://${networkPrefix}ton.cx/address/${address}`;
|
|
116
116
|
case 'dton':
|