@tatumio/flow 2.0.1-alpha.237

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,443 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flowTxService = exports.FLOW_MAINNET_ADDRESSES = exports.FLOW_TESTNET_ADDRESSES = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const elliptic = (0, tslib_1.__importStar)(require("elliptic"));
6
+ const fcl = (0, tslib_1.__importStar)(require("@onflow/fcl"));
7
+ const types = (0, tslib_1.__importStar)(require("@onflow/types"));
8
+ const util_encode_key_1 = require("@onflow/util-encode-key");
9
+ const sha3_1 = (0, tslib_1.__importDefault)(require("sha3"));
10
+ const shared_core_1 = require("@tatumio/shared-core");
11
+ const flow_tx_templates_1 = require("./flow.tx.templates");
12
+ const flow_sdk_wallet_1 = require("./flow.sdk.wallet");
13
+ const flow_blockchain_1 = require("./flow.blockchain");
14
+ const flow_sdk_errors_1 = require("../flow.sdk.errors");
15
+ const shared_abstract_sdk_1 = require("@tatumio/shared-abstract-sdk");
16
+ exports.FLOW_TESTNET_ADDRESSES = {
17
+ FlowToken: '0x7e60df042a9c0868',
18
+ FungibleToken: '0x9a0766d93b6608b7',
19
+ FUSD: '0xe223d8a629e49c68',
20
+ TatumMultiNFT: '0x87fe4ebd0cddde06',
21
+ };
22
+ exports.FLOW_MAINNET_ADDRESSES = {
23
+ FlowToken: '0x1654653399040a61',
24
+ FungibleToken: '0xf233dcee88fe0abe',
25
+ FUSD: '0x3c5959b568896393',
26
+ TatumMultiNFT: '0x354e6721564ccd2c',
27
+ };
28
+ const flowTxService = (args) => {
29
+ const flowSdkWallet = (0, flow_sdk_wallet_1.flowWallet)();
30
+ const flowSdkBlockchain = (0, flow_blockchain_1.flowBlockchain)(args);
31
+ const txTemplates = (0, flow_tx_templates_1.flowTxTemplates)();
32
+ const sign = (pk, msg) => {
33
+ const keyPair = new elliptic.ec('secp256k1').keyFromPrivate(pk);
34
+ const signature = keyPair.sign(new sha3_1.default(256).update(msg).digest());
35
+ const r = signature.r.toArrayLike(Buffer, 'be', 32);
36
+ const s = signature.s.toArrayLike(Buffer, 'be', 32);
37
+ return Buffer.concat([r, s]).toString('hex');
38
+ };
39
+ const getSigner = (pk, address, keyId = 0) => {
40
+ return {
41
+ signer: (account) => {
42
+ return Object.assign(Object.assign({}, account), { tempId: `${address}-${keyId}`, addr: fcl.sansPrefix(address), keyId: Number(keyId), signingFunction: (data) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
43
+ return {
44
+ addr: fcl.withPrefix(address),
45
+ keyId: Number(keyId),
46
+ signature: sign(pk, Buffer.from(data.message, 'hex')),
47
+ };
48
+ }) });
49
+ },
50
+ };
51
+ };
52
+ const getApiSigner = (isPayer) => {
53
+ const keyHash = Date.now();
54
+ const signer = (account) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
55
+ const { address, keyId } = yield flowSdkBlockchain.getSignKey(isPayer);
56
+ if (!isPayer) {
57
+ process.env[`FLOW_PROPOSAL_KEY_${keyHash}`] = `${keyId}`;
58
+ }
59
+ return Object.assign(Object.assign({}, account), { tempId: `${address}-${keyId}`, addr: fcl.sansPrefix(address), keyId, signingFunction: (data) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
60
+ return {
61
+ addr: fcl.withPrefix(address),
62
+ keyId: Number(keyId),
63
+ signature: (yield flowSdkBlockchain.signWithKey(data.message, isPayer)).signature,
64
+ };
65
+ }) });
66
+ });
67
+ return { signer, keyHash: `FLOW_PROPOSAL_KEY_${keyHash}` };
68
+ };
69
+ return {
70
+ sign,
71
+ getSigner,
72
+ getApiSigner,
73
+ /**
74
+ * Create account on the FLOW network. It automatically creates 100 0-weight proposal keys, which are managed by Tatum API - index 1-100.
75
+ * Main 1000 weight authorizer key is stored as a first one on index 0.
76
+ * @param testnet if we use testnet or not
77
+ * @param publicKey public key to assign to address as authorizer (1000 weight) key
78
+ * @param signerAddress address of the authorizer creator of the address on the chain
79
+ * @param signerPrivateKey private key of the authorizer creator of the address on the chain
80
+ * @param proposer function to obtain proposer key from
81
+ * @param payer function to obtain payer key from
82
+ */
83
+ createAccountFromPublicKey: (testnet, publicKey, signerAddress, signerPrivateKey, proposer, payer) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
84
+ var _a;
85
+ const code = txTemplates.prepareCreateAccountWithFUSDFromPublicKeyTxTemplate(testnet);
86
+ const encodedPublicKey = (0, util_encode_key_1.encodeKey)(publicKey, util_encode_key_1.ECDSA_secp256k1, util_encode_key_1.SHA3_256, 1000);
87
+ const args = [{ type: 'String', value: encodedPublicKey }];
88
+ const auth = getSigner(signerPrivateKey, signerAddress).signer;
89
+ const { signer: proposalSigner, keyHash } = proposer ? proposer(false) : getApiSigner(false);
90
+ const result = yield _sendTransaction(testnet, {
91
+ code,
92
+ args,
93
+ proposer: proposer ? proposer(false) : proposalSigner,
94
+ authorizations: [auth],
95
+ payer: payer ? payer(true) : getApiSigner(true).signer,
96
+ keyHash,
97
+ });
98
+ return {
99
+ txId: result.id,
100
+ address: (_a = result.events.find((e) => e.type === 'flow.AccountCreated')) === null || _a === void 0 ? void 0 : _a.data.address,
101
+ };
102
+ }),
103
+ /**
104
+ * Add public key to existing blockchain address with defined weight
105
+ * @param testnet
106
+ * @param publicKey key to add
107
+ * @param signerAddress address of the authorizer key
108
+ * @param signerPrivateKey key of the authorize key
109
+ * @param weight defaults to 1000 - weight of the key
110
+ * @param proposer function to obtain proposer key from
111
+ * @param payer function to obtain payer key from
112
+ */
113
+ addPublicKeyToAccount: (testnet, publicKey, signerAddress, signerPrivateKey, weight = 0, proposer, payer) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
114
+ const code = txTemplates.prepareAddPublicKeyToAccountTxTemplate();
115
+ const encodedPublicKey = (0, util_encode_key_1.encodeKey)(publicKey, util_encode_key_1.ECDSA_secp256k1, util_encode_key_1.SHA3_256, weight);
116
+ const args = [{ type: 'String', value: encodedPublicKey }];
117
+ const auth = getSigner(signerPrivateKey, signerAddress).signer;
118
+ const { signer: proposalSigner, keyHash } = proposer ? proposer(false) : getApiSigner(false);
119
+ const result = yield _sendTransaction(testnet, {
120
+ code,
121
+ args,
122
+ proposer: proposer ? proposer(false) : proposalSigner,
123
+ authorizations: [auth],
124
+ keyHash,
125
+ payer: payer ? payer(true) : getApiSigner(true).signer,
126
+ });
127
+ return { txId: result.id, address: result.events[0].data.address };
128
+ }),
129
+ getNftMetadata: (testnet, account, id, contractAddress) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
130
+ const code = txTemplates.metadataNftTokenScript(testnet);
131
+ const args = [
132
+ { type: 'Address', value: account },
133
+ { type: 'UInt64', value: id },
134
+ { type: 'String', value: contractAddress },
135
+ ];
136
+ return sendScript(testnet, code, args);
137
+ }),
138
+ getNftTokenByAddress: (testnet, account, tokenType) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
139
+ const code = txTemplates.tokenByAddressNftTokenScript(testnet);
140
+ const args = [
141
+ { type: 'Address', value: account },
142
+ { type: 'String', value: tokenType },
143
+ ];
144
+ return sendScript(testnet, code, args);
145
+ }),
146
+ /**
147
+ * Send Flow NFT mint token transaction to the blockchain. This method broadcasts signed transaction to the blockchain.
148
+ * This operation is irreversible.
149
+ * @param testnet
150
+ * @param body content of the transaction to broadcast
151
+ * @param proposer function to obtain proposer key from
152
+ * @param payer function to obtain payer key from
153
+ * @returns txId id of the transaction in the blockchain
154
+ */
155
+ sendNftMintToken: (testnet, body, proposer, payer) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
156
+ var _b;
157
+ const bodyWithChain = Object.assign(Object.assign({}, body), { chain: shared_core_1.Blockchain.FLOW });
158
+ const code = txTemplates.mintNftTokenTxTemplate(testnet);
159
+ const { url, contractAddress: tokenType, to, account } = bodyWithChain;
160
+ const args = [
161
+ { type: 'Address', value: to },
162
+ { type: 'String', value: url },
163
+ { type: 'String', value: tokenType },
164
+ ];
165
+ const pk = yield getPrivateKey(bodyWithChain);
166
+ if (!pk)
167
+ throw new flow_sdk_errors_1.FlowSdkError(shared_abstract_sdk_1.SdkErrorCode.FLOW_MISSING_PRIVATE_KEY);
168
+ const auth = getSigner(pk, account).signer;
169
+ const { signer: proposalSigner, keyHash } = proposer ? proposer(false) : getApiSigner(false);
170
+ const result = yield _sendTransaction(testnet, {
171
+ code,
172
+ args,
173
+ proposer: proposer ? proposer(false) : proposalSigner,
174
+ authorizations: [auth],
175
+ keyHash,
176
+ payer: payer ? payer(true) : getApiSigner(true).signer,
177
+ });
178
+ return {
179
+ txId: result.id,
180
+ tokenId: `${(_b = result.events.find((e) => e.type.includes('TatumMultiNFT.Minted'))) === null || _b === void 0 ? void 0 : _b.data.id}`,
181
+ };
182
+ }),
183
+ /**
184
+ * Send Flow NFT mint multiple tokens transaction to the blockchain. This method broadcasts signed transaction to the blockchain.
185
+ * This operation is irreversible.
186
+ * @param testnet
187
+ * @param body content of the transaction to broadcast
188
+ * @param proposer function to obtain proposer key from
189
+ * @param payer function to obtain payer key from
190
+ * @returns txId id of the transaction in the blockchain
191
+ */
192
+ sendNftMintMultipleToken: (testnet, body, proposer, payer) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
193
+ const bodyWithChain = Object.assign(Object.assign({}, body), { chain: shared_core_1.Blockchain.FLOW });
194
+ const code = txTemplates.mintMultipleNftTokenTxTemplate(testnet);
195
+ const { url, contractAddress: tokenType, to, account } = bodyWithChain;
196
+ const args = [
197
+ { type: 'Array', subType: 'Address', value: to },
198
+ {
199
+ type: 'Array',
200
+ subType: 'String',
201
+ value: url,
202
+ },
203
+ { type: 'String', value: tokenType },
204
+ ];
205
+ const pk = yield getPrivateKey(bodyWithChain);
206
+ if (!pk)
207
+ throw new flow_sdk_errors_1.FlowSdkError(shared_abstract_sdk_1.SdkErrorCode.FLOW_MISSING_PRIVATE_KEY);
208
+ const { signer: proposalSigner, keyHash } = proposer ? proposer(false) : getApiSigner(false);
209
+ const auth = getSigner(pk, account).signer;
210
+ const result = yield _sendTransaction(testnet, {
211
+ code,
212
+ args,
213
+ proposer: proposer ? proposer(false) : proposalSigner,
214
+ authorizations: [auth],
215
+ payer: payer ? payer(true) : getApiSigner(true).signer,
216
+ keyHash,
217
+ });
218
+ return {
219
+ txId: result.id,
220
+ tokenId: result.events
221
+ .filter((e) => e.type.includes('TatumMultiNFT.Minted'))
222
+ .map((e) => e.data.id),
223
+ };
224
+ }),
225
+ /**
226
+ * Send Flow NFT transfer token transaction to the blockchain. This method broadcasts signed transaction to the blockchain.
227
+ * This operation is irreversible.
228
+ * @param testnet
229
+ * @param body content of the transaction to broadcast
230
+ * @param proposer function to obtain proposer key from
231
+ * @param payer function to obtain payer key from
232
+ * @returns {txId: string, events: any[]} id of the transaction in the blockchain and events this tx produced
233
+ */
234
+ sendNftTransferToken: (testnet, body, proposer, payer) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
235
+ const bodyWithChain = Object.assign(Object.assign({}, body), { chain: shared_core_1.Blockchain.FLOW });
236
+ const code = txTemplates.transferNftTokenTxTemplate(testnet);
237
+ const { tokenId, to, account } = bodyWithChain;
238
+ const args = [
239
+ { type: 'Address', value: to },
240
+ { type: 'UInt64', value: tokenId },
241
+ ];
242
+ const pk = yield getPrivateKey(bodyWithChain);
243
+ if (!pk)
244
+ throw new flow_sdk_errors_1.FlowSdkError(shared_abstract_sdk_1.SdkErrorCode.FLOW_MISSING_PRIVATE_KEY);
245
+ const { signer: proposalSigner, keyHash } = proposer ? proposer(false) : getApiSigner(false);
246
+ const auth = getSigner(pk, account).signer;
247
+ const result = yield _sendTransaction(testnet, {
248
+ code,
249
+ args,
250
+ proposer: proposer ? proposer(false) : proposalSigner,
251
+ authorizations: [auth],
252
+ payer: payer ? payer(true) : getApiSigner(true).signer,
253
+ keyHash,
254
+ });
255
+ return { txId: result.id };
256
+ }),
257
+ /**
258
+ * Send Flow NFT burn token transaction to the blockchain. This method broadcasts signed transaction to the blockchain.
259
+ * This operation is irreversible.
260
+ * @param testnet
261
+ * @param body content of the transaction to broadcast
262
+ * @param proposer function to obtain proposer key from
263
+ * @param payer function to obtain payer key from
264
+ * @returns txId id of the transaction in the blockchain
265
+ */
266
+ sendNftBurnToken: (testnet, body, proposer, payer) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
267
+ const bodyWithChain = Object.assign(Object.assign({}, body), { chain: shared_core_1.Blockchain.FLOW });
268
+ const code = txTemplates.burnNftTokenTxTemplate(testnet);
269
+ const { tokenId, contractAddress: tokenType, account } = bodyWithChain;
270
+ const args = [
271
+ { type: 'UInt64', value: tokenId },
272
+ { type: 'String', value: tokenType },
273
+ ];
274
+ const pk = yield getPrivateKey(bodyWithChain);
275
+ if (!pk)
276
+ throw new flow_sdk_errors_1.FlowSdkError(shared_abstract_sdk_1.SdkErrorCode.FLOW_MISSING_PRIVATE_KEY);
277
+ const { signer: proposalSigner, keyHash } = proposer ? proposer(false) : getApiSigner(false);
278
+ const auth = getSigner(pk, account).signer;
279
+ const result = yield _sendTransaction(testnet, {
280
+ code,
281
+ args,
282
+ proposer: proposer ? proposer(false) : proposalSigner,
283
+ authorizations: [auth],
284
+ payer: payer ? payer(true) : getApiSigner(true).signer,
285
+ keyHash,
286
+ });
287
+ return { txId: result.id };
288
+ }),
289
+ /**
290
+ * Send custom transaction to the FLOW network
291
+ * @param testnet
292
+ * @param body content of the transaction to broadcast
293
+ * @param proposer function to obtain proposer key from
294
+ * @param payer function to obtain payer key from
295
+ * @returns txId id of the transaction in the blockchain
296
+ */
297
+ sendCustomTransaction: (testnet, body, proposer, payer) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
298
+ const pk = yield getPrivateKey(body);
299
+ if (!pk)
300
+ throw new flow_sdk_errors_1.FlowSdkError(shared_abstract_sdk_1.SdkErrorCode.FLOW_MISSING_PRIVATE_KEY);
301
+ const auth = getSigner(pk, body.account).signer;
302
+ const { signer: proposalSigner, keyHash } = proposer ? proposer(false) : getApiSigner(false);
303
+ const result = yield _sendTransaction(testnet, {
304
+ code: body.transaction,
305
+ args: body.args,
306
+ proposer: proposer ? proposer(false) : proposalSigner,
307
+ authorizations: [auth],
308
+ keyHash,
309
+ payer: payer ? payer(true) : getApiSigner(true).signer,
310
+ });
311
+ return { txId: result.id, events: result.events };
312
+ }),
313
+ /**
314
+ * Send FLOW or FUSD from account to account.
315
+ * @param testnet
316
+ * @param body content of the transaction to broadcast
317
+ * @param proposer function to obtain proposer key from
318
+ * @param payer function to obtain payer key from
319
+ * @returns txId id of the transaction in the blockchain
320
+ */
321
+ sendTransaction: (testnet, body, proposer, payer) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
322
+ let tokenAddress;
323
+ let tokenName;
324
+ let tokenStorage;
325
+ if (body.currency === shared_core_1.Blockchain.FLOW) {
326
+ tokenAddress = testnet ? exports.FLOW_TESTNET_ADDRESSES.FlowToken : exports.FLOW_MAINNET_ADDRESSES.FlowToken;
327
+ tokenName = 'FlowToken';
328
+ tokenStorage = 'flowToken';
329
+ }
330
+ else {
331
+ tokenAddress = testnet ? exports.FLOW_TESTNET_ADDRESSES.FUSD : exports.FLOW_MAINNET_ADDRESSES.FUSD;
332
+ tokenName = 'FUSD';
333
+ tokenStorage = 'fusd';
334
+ }
335
+ const code = txTemplates.prepareTransferTxTemplate(testnet, tokenAddress, tokenName, tokenStorage);
336
+ const args = [
337
+ { value: parseFloat(body.amount).toFixed(8), type: 'UFix64' },
338
+ { value: body.to, type: 'Address' },
339
+ ];
340
+ const pk = yield getPrivateKey(body);
341
+ if (!pk)
342
+ throw new flow_sdk_errors_1.FlowSdkError(shared_abstract_sdk_1.SdkErrorCode.FLOW_MISSING_PRIVATE_KEY);
343
+ const { signer: proposalSigner, keyHash } = proposer ? proposer(false) : getApiSigner(false);
344
+ const auth = getSigner(pk, body.account).signer;
345
+ const result = yield _sendTransaction(testnet, {
346
+ code,
347
+ args,
348
+ proposer: proposer ? proposer(false) : proposalSigner,
349
+ authorizations: [auth],
350
+ payer: payer ? payer(true) : getApiSigner(true).signer,
351
+ keyHash,
352
+ });
353
+ return { txId: result.id };
354
+ }),
355
+ };
356
+ function _sendTransaction(testnet, { code, args, proposer, authorizations, payer, keyHash }) {
357
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
358
+ fcl.config().put('accessNode.api', networkUrl(testnet));
359
+ let response;
360
+ try {
361
+ response = yield fcl.send([
362
+ fcl.transaction(code),
363
+ fcl.args(args.map((arg) => fcl.arg(UInt64ArgValue(arg), ArrayArgValue(arg)))),
364
+ fcl.proposer(proposer),
365
+ fcl.authorizations(authorizations),
366
+ fcl.payer(payer),
367
+ fcl.limit(1000),
368
+ ]);
369
+ }
370
+ catch (e) {
371
+ try {
372
+ if (keyHash) {
373
+ yield flowSdkBlockchain.broadcast('', undefined, proposalKey(keyHash));
374
+ delete process.env[keyHash];
375
+ }
376
+ }
377
+ catch (_) {
378
+ throw new flow_sdk_errors_1.FlowSdkError(_);
379
+ }
380
+ throw new flow_sdk_errors_1.FlowSdkError(e);
381
+ }
382
+ const { transactionId } = response;
383
+ try {
384
+ const { error, events } = yield fcl.tx(response).onceSealed();
385
+ if (error) {
386
+ throw new flow_sdk_errors_1.FlowSdkError(error);
387
+ }
388
+ return {
389
+ id: transactionId,
390
+ events,
391
+ };
392
+ }
393
+ catch (e) {
394
+ throw new flow_sdk_errors_1.FlowSdkError(e);
395
+ }
396
+ finally {
397
+ if (keyHash) {
398
+ yield flowSdkBlockchain.broadcast(transactionId, undefined, proposalKey(keyHash));
399
+ delete process.env[keyHash];
400
+ }
401
+ }
402
+ });
403
+ }
404
+ function getPrivateKey(body) {
405
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
406
+ const { mnemonic, index, privateKey } = body;
407
+ if (privateKey) {
408
+ return privateKey;
409
+ }
410
+ else {
411
+ if (mnemonic && index && index >= 0) {
412
+ return flowSdkWallet.generatePrivateKeyFromMnemonic(mnemonic, index);
413
+ }
414
+ else
415
+ throw new flow_sdk_errors_1.FlowSdkError(shared_abstract_sdk_1.SdkErrorCode.FLOW_MISSING_MNEMONIC);
416
+ }
417
+ });
418
+ }
419
+ function sendScript(testnet, code, args) {
420
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
421
+ fcl.config().put('accessNode.api', networkUrl(testnet));
422
+ const response = yield fcl.send([
423
+ fcl.script(code),
424
+ fcl.args(args.map((arg) => fcl.arg(UInt64ArgValue(arg), types[arg.type]))),
425
+ ]);
426
+ return fcl.decode(response);
427
+ });
428
+ }
429
+ function proposalKey(keyHash) {
430
+ return keyHash ? parseInt(process.env[keyHash] || '0') : undefined;
431
+ }
432
+ function networkUrl(testnet) {
433
+ return testnet ? 'https://access-testnet.onflow.org' : 'https://access-mainnet-beta.onflow.org';
434
+ }
435
+ function UInt64ArgValue(arg) {
436
+ return arg.type === 'UInt64' ? parseInt(arg.value) : arg.value;
437
+ }
438
+ function ArrayArgValue(arg) {
439
+ return arg.type === 'Array' ? types[arg.type](types[arg.subType]) : types[arg.type];
440
+ }
441
+ };
442
+ exports.flowTxService = flowTxService;
443
+ //# sourceMappingURL=flow.tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.tx.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/flow/src/lib/services/flow.tx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare const flowTxTemplates: () => {
2
+ deployNftTokenTypeWithMinterTxTemplate: (testnet: boolean) => string;
3
+ metadataNftTokenScript: (testnet: boolean) => string;
4
+ tokenByAddressNftTokenScript: (testnet: boolean) => string;
5
+ mintNftTokenTxTemplate: (testnet: boolean) => string;
6
+ mintMultipleNftTokenTxTemplate: (testnet: boolean) => string;
7
+ burnNftTokenTxTemplate: (testnet: boolean) => string;
8
+ transferNftTokenTxTemplate: (testnet: boolean) => string;
9
+ prepareAddPublicKeyToAccountTxTemplate: () => string;
10
+ prepareTransferTxTemplate: (testnet: boolean, tokenAddress: string, tokenName: string, tokenStorage: string) => string;
11
+ prepareCreateAccountWithFUSDFromPublicKeyTxTemplate: (testnet: boolean) => string;
12
+ };