wan-ton-sdk 0.0.18 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/Bridge.d.ts +1 -1
  2. package/dist/Bridge.js +22 -21
  3. package/dist/client/client.js +13 -5
  4. package/dist/code/encode-decode.d.ts +28 -0
  5. package/dist/code/encode-decode.js +84 -15
  6. package/dist/code/exports.d.ts +1 -0
  7. package/dist/code/exports.js +1 -0
  8. package/dist/code/smgRelease.d.ts +23 -0
  9. package/dist/code/smgRelease.js +74 -0
  10. package/dist/code/userLock.js +2 -0
  11. package/dist/config/config-ex.d.ts +1 -0
  12. package/dist/config/config-ex.js +13 -1
  13. package/dist/config/config-mainnet.d.ts +5 -0
  14. package/dist/config/config-mainnet.js +6 -0
  15. package/dist/config/config-testnet.d.ts +5 -0
  16. package/dist/config/config-testnet.js +6 -0
  17. package/dist/config/config.d.ts +2 -0
  18. package/dist/config/config.js +16 -0
  19. package/dist/db/DbAccess.d.ts +1 -1
  20. package/dist/db/DbAccess.js +16 -16
  21. package/dist/example/event/getAllEvents-ex.js +46 -14
  22. package/dist/example/event/getEventByHash-ex.js +37 -15
  23. package/dist/example/event/getEventsByRange-ex.js +37 -11
  24. package/dist/example/lock-release/userLock-ex.js +1 -1
  25. package/dist/example/token/addToken-ex.js +94 -0
  26. package/dist/example/token/addTokenPair-ex.js +39 -22
  27. package/dist/example/token/changeAdmin-ex.js +27 -8
  28. package/dist/example/token/delTokenPair-ex.js +28 -17
  29. package/dist/example/token/getAdmin-ex.js +18 -9
  30. package/dist/example/token/getTokenPair-ex.js +29 -12
  31. package/dist/example/token/mintToken-ex.js +33 -15
  32. package/package.json +1 -1
  33. package/dist/example/db/createDb-ex.d.ts +0 -1
  34. package/dist/example/db/createDb-ex.js +0 -7
  35. package/dist/example/db/dbFeedTrans-ex.js +0 -18
  36. package/dist/example/event/getAllSlimEvents-ex.d.ts +0 -1
  37. package/dist/example/event/getAllSlimEvents-ex.js +0 -73
  38. package/dist/example/token/AddToken-ex.d.ts +0 -1
  39. package/dist/example/token/AddToken-ex.js +0 -122
  40. /package/dist/example/{db/dbFeedTrans-ex.d.ts → token/addToken-ex.d.ts} +0 -0
@@ -1,18 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const client_1 = require("../../client/client");
3
4
  const config_ex_1 = require("../../config/config-ex");
4
5
  const walletContract_1 = require("../../wallet/walletContract");
5
- const client_1 = require("../../client/client");
6
- let args = process.argv.slice(2);
7
- let tokenPairId = args[0];
6
+ const bridgeAccess_1 = require("../../contractAccess/bridgeAccess");
8
7
  const prvList = require('../../testData/prvlist.json');
9
8
  let deployer = null, smgFeeProxy = null, oracleAdmin = null, robotAdmin = null;
10
9
  let client = null;
11
- const scAddresses = require('../../testData/contractAddress.json');
12
- const bridgeAccess_1 = require("../../contractAccess/bridgeAccess");
10
+ const optimist = require('optimist');
11
+ let argv = optimist
12
+ .usage("Usage: $0")
13
+ .alias('h', 'help')
14
+ .describe('network', 'network name testnet|mainnet')
15
+ .describe('tpId', 'tokenPairId')
16
+ .argv;
17
+ console.log(optimist.argv);
18
+ console.log((Object.getOwnPropertyNames(optimist.argv)).length);
19
+ if ((Object.getOwnPropertyNames(optimist.argv)).length < 4) {
20
+ optimist.showHelp();
21
+ process.exit(0);
22
+ }
23
+ global.network = argv["network"];
24
+ const config = require('../../config/config');
13
25
  async function init() {
14
- //await wanTonSdkInit(configMainnet);
15
- await (0, client_1.wanTonSdkInit)(config_ex_1.configTestTonApiNoDb);
26
+ if (global.network == 'testnet') {
27
+ await (0, client_1.wanTonSdkInit)(config_ex_1.configTestTonApiNoDb);
28
+ }
29
+ else {
30
+ await (0, client_1.wanTonSdkInit)(config_ex_1.configMainnet);
31
+ }
16
32
  deployer = await (0, walletContract_1.getWalletByPrvKey)(Buffer.from(prvList[0], 'hex'));
17
33
  smgFeeProxy = deployer;
18
34
  oracleAdmin = deployer;
@@ -21,10 +37,14 @@ async function init() {
21
37
  //console.log("client=>", typeof(client));
22
38
  }
23
39
  async function getTokenPair() {
40
+ const tpId = argv["tpId"];
41
+ console.log("tpId = ", tpId);
42
+ let scAddresses = require(config.contractOutput);
43
+ console.log("scAddresses=>", scAddresses);
24
44
  // read contract
25
45
  let ba = bridgeAccess_1.BridgeAccess.create(client, scAddresses.bridgeAddress);
26
46
  console.log("bridgeAddess =>", scAddresses.bridgeAddress);
27
- let ret = await ba.readContract('getTokenPair', [tokenPairId]);
47
+ let ret = await ba.readContract('getTokenPair', [tpId]);
28
48
  console.log("getTokenPair=>", ret);
29
49
  }
30
50
  async function main() {
@@ -32,8 +52,5 @@ async function main() {
32
52
  await init();
33
53
  await getTokenPair();
34
54
  }
35
- ;
36
55
  main();
37
- // ts-node getTokenPair-ex.ts 941
38
- // ts-node getTokenPair-ex.ts 939
39
- // ts-node getTokenPair-ex.ts 940
56
+ // ts-node getTokenPair-ex --network testnet --tpId 1030
@@ -8,13 +8,35 @@ const JettonMinter_1 = require("../../JettonMinter");
8
8
  const balance_1 = require("../../wallet/balance");
9
9
  const fee_1 = require("../../fee/fee");
10
10
  const utils_1 = require("../../utils/utils");
11
- const args = process.argv.slice(2);
12
11
  const prvList = require('../../testData/prvlist.json');
13
12
  let deployer, client;
13
+ const optimist = require('optimist');
14
+ let argv = optimist
15
+ .usage("Usage: $0")
16
+ .alias('h', 'help')
17
+ .describe('network', 'network name testnet|mainnet')
18
+ .describe('tokenAddr', 'tokenAddr')
19
+ .describe('decimal', 'decimal')
20
+ .describe('decimal', 'decimal')
21
+ .describe('toAddr', 'address recieve token')
22
+ .describe('amount', 'amount')
23
+ .argv;
24
+ console.log(optimist.argv);
25
+ console.log((Object.getOwnPropertyNames(optimist.argv)).length);
26
+ if ((Object.getOwnPropertyNames(optimist.argv)).length < 4) {
27
+ optimist.showHelp();
28
+ process.exit(0);
29
+ }
30
+ global.network = argv["network"];
31
+ const config = require('../../config/config');
14
32
  let contractProvider = null;
15
33
  async function init() {
16
- //await wanTonSdkInit(configMainnet);
17
- await (0, client_1.wanTonSdkInit)(config_ex_1.configTestTonApiNoDb);
34
+ if (global.network == 'testnet') {
35
+ await (0, client_1.wanTonSdkInit)(config_ex_1.configTestTonApiNoDb);
36
+ }
37
+ else {
38
+ await (0, client_1.wanTonSdkInit)(config_ex_1.configMainnet);
39
+ }
18
40
  client = await (0, client_1.getClient)();
19
41
  deployer = await (0, walletContract_1.getSenderByPrvKey)(client, Buffer.from(prvList[0], 'hex'));
20
42
  }
@@ -25,8 +47,8 @@ async function mintToken(client, tokenAddress, to, amount) {
25
47
  let via = deployer;
26
48
  let jettonMinter = JettonMinter_1.JettonMinter.createFromAddress(jettonTokenAddr);
27
49
  let contractProvider = client.provider(jettonMinter.address);
28
- //let mintResult = await jettonMinter.sendMint(contractProvider, via, to, amount, TON_FEE.FWD_FEE_MINT_JETTON, TON_FEE.TOTAL_FEE_MINT_JETTON)
29
- let mintResult = await jettonMinter.sendMint(contractProvider, via, to, amount, BigInt(0), fee_1.TON_FEE.TOTAL_FEE_MINT_JETTON);
50
+ let mintResult = await jettonMinter.sendMint(contractProvider, via, to, amount, fee_1.TON_FEE.FWD_FEE_MINT_JETTON, fee_1.TON_FEE.TOTAL_FEE_MINT_JETTON);
51
+ //let mintResult = await jettonMinter.sendMint(contractProvider, via, to, amount, BigInt(0), TON_FEE.TOTAL_FEE_MINT_JETTON)
30
52
  console.log("mintResult", mintResult);
31
53
  console.log("after mintToken to:%s, coin:%d,token:%d", to.toString(), await (0, balance_1.CoinBalance)(client, to), await (0, balance_1.TokenBalance)(client, jettonTokenAddr, to));
32
54
  }
@@ -34,19 +56,15 @@ async function main() {
34
56
  console.log("argv", process.argv);
35
57
  console.log("Entering main function");
36
58
  await init();
37
- let tokenAddr = core_1.Address.parse(args[0]);
38
- let decimal = parseInt(args[1]);
39
- let rcvAddress = core_1.Address.parse(args[2]);
40
- let amount = ((0, utils_1.toNumberByDecimal)(BigInt(args[3]), decimal));
59
+ let tokenAddr = core_1.Address.parse(argv['tokenAddr']);
60
+ let decimal = argv['decimal'];
61
+ let rcvAddress = core_1.Address.parse(argv['toAddr']);
62
+ let amount = ((0, utils_1.toNumberByDecimal)(BigInt(argv['amount']), decimal));
41
63
  await mintToken(client, tokenAddr, rcvAddress, amount);
42
64
  }
43
- ;
44
65
  main();
45
- // ts-node mintToken-ex.ts tokenWrapped 1.0
46
- // ts-node mintToken-ex.ts tokenOrg 1.0
47
66
  // ts-node mintToken-ex.ts <tokenAddress> <decimal> <rcvAddress> <amount>
48
67
  //usdt
49
- // ts-node mintToken-ex.ts kQDPFoyEUdur7g9c0nNn8rGX08TedRsvc_aik0nohFn8v-wP 6 EQCGOHmrNm3u_ilZ5qdtpIDmfVfkQsWsqxyvPywT_7_fOzZh 1000
50
- // ts-node mintToken-ex.ts kQDPFoyEUdur7g9c0nNn8rGX08TedRsvc_aik0nohFn8v-wP 6 kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 1000
68
+ // ts-node mintToken-ex.ts --network testnet --tokenAddr kQDPFoyEUdur7g9c0nNn8rGX08TedRsvc_aik0nohFn8v-wP --decimal 6 --toAddr EQCGOHmrNm3u_ilZ5qdtpIDmfVfkQsWsqxyvPywT_7_fOzZh --amount 1000
51
69
  //wan
52
- // ts-node mintToken-ex.ts kQA_L8-V29GTQwfi9LruGuQf9JwqLggBIB3ByDC8KLReK0x3 18 kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 210000000
70
+ // ts-node mintToken-ex.ts --network testnet --tokenAddr kQA_L8-V29GTQwfi9LruGuQf9JwqLggBIB3ByDC8KLReK0x3 --decimal 18 --toAddr kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr --amount 210000000
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wan-ton-sdk",
3
- "version": "0.0.18",
3
+ "version": "0.0.19",
4
4
  "scripts": {
5
5
  "build": "rm -rf ./dist && tsc",
6
6
  "test": "jest --verbose"
@@ -1 +0,0 @@
1
- declare function main(): Promise<void>;
@@ -1,7 +0,0 @@
1
- async function main() {
2
- const DB = require('../../db/Db').DB;
3
- console.log("Entering main function");
4
- let db = new DB('test');
5
- await db.init('test');
6
- }
7
- main();
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const DBAccess = require("../../db/DbAccess").DBAccess;
4
- const scAddress = require('../../testData/contractAddress.json');
5
- let scBridgeAddr = scAddress.bridgeAddress;
6
- async function main() {
7
- console.log("Entering main function");
8
- let dbAccess = await DBAccess.getDBAccess();
9
- if (!dbAccess) {
10
- console.error("not using db cache.");
11
- return;
12
- }
13
- await dbAccess.addDbByName(scBridgeAddr);
14
- await dbAccess.addDbByName("EQCABVjsQnmRELMK6vjwGbYNRzHXoTd2hvSX6v_VmVrrJNjW");
15
- }
16
- ;
17
- main();
18
- // ts-node dbFeedTrans-ex.ts
@@ -1 +0,0 @@
1
- export {};
@@ -1,73 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const utils_1 = require("../../utils/utils");
4
- const config_ex_1 = require("../../config/config-ex");
5
- const client_1 = require("../../client/client");
6
- const getEvents_1 = require("../../event/getEvents");
7
- const DbAccess_1 = require("../../db/DbAccess");
8
- const core_1 = require("@ton/core");
9
- const common_1 = require("../../db/common");
10
- const args = process.argv.slice(2);
11
- async function main() {
12
- //await wanTonSdkInit(configMainnet);
13
- //await wanTonSdkInit(configTestnet);
14
- await (0, client_1.wanTonSdkInit)(config_ex_1.configTestTonApi);
15
- //await wanTonSdkInit(configTestTonApiNoDb);
16
- let scBridgeAddr = args[0];
17
- let dbAcces = await DbAccess_1.DBAccess.getDBAccess();
18
- if (!dbAcces) {
19
- console.error("not using db cache");
20
- return;
21
- }
22
- console.log("scBridgeAddr", scBridgeAddr);
23
- console.log("scBridgeAddr final address", core_1.Address.parse(scBridgeAddr).toString());
24
- let client = await (0, client_1.getClient)();
25
- let scanSlimEvent = async () => {
26
- console.log("\n\n\n===================================getAllEvents===================================\n");
27
- console.log("\n===================================getAllEvents===================================\n\n\n");
28
- let tonTrans = [];
29
- if (!dbAcces?.has(scBridgeAddr)) {
30
- await dbAcces.addDbByName(scBridgeAddr);
31
- await (0, utils_1.sleep)(2000);
32
- }
33
- try {
34
- tonTrans = await dbAcces.getAllTransNotHandled(args[0]);
35
- //tonTrans = await dbAcces.getAllTrans(args[0])
36
- console.log("getAllTransNotHandled tonTrans.length", tonTrans.length);
37
- }
38
- catch (err) {
39
- console.error(err.code, err.response?.data?.error);
40
- }
41
- if (!tonTrans) {
42
- return;
43
- }
44
- for (let tonTran of tonTrans) {
45
- try {
46
- console.log("begin getSlimEventByTranHash", "scBridgeAddr", scBridgeAddr, "lt", tonTran.lt.toString(10), "tranHash", tonTran.hash().toString('hex'));
47
- let ret = await (0, getEvents_1.getSlimEventByTranHash)(client, scBridgeAddr, tonTran.lt.toString(10), tonTran.hash().toString('hex'));
48
- console.log("end getSlimEventByTranHash JacobEvent ret = ", ret);
49
- }
50
- catch (err) {
51
- console.error(err.code, err.response?.data?.error);
52
- await (0, utils_1.sleep)(1000);
53
- continue;
54
- }
55
- let tranTonTemp = (0, common_1.convertTranToTonTrans)([tonTran]);
56
- console.log("begin setTranHandleFlag", "scBridgeAddr", scBridgeAddr, "lt", tonTran.lt.toString(10), "tranHash", tonTran.hash().toString('hex'));
57
- await dbAcces.setTranHandleFlag(scBridgeAddr, tranTonTemp[0], true);
58
- await (0, utils_1.sleep)(1000);
59
- }
60
- };
61
- let round = 1;
62
- let busy = false;
63
- setInterval(async () => {
64
- if (!busy) {
65
- busy = true;
66
- console.log("round = ", round++);
67
- await scanSlimEvent();
68
- busy = false;
69
- }
70
- }, 10000);
71
- }
72
- main();
73
- // ts-node getAllSlimEvents-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr
@@ -1 +0,0 @@
1
- export {};
@@ -1,122 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs = require("fs");
4
- let jettonTokenInfo = require('../../testData/jettonTokenInfo.json');
5
- const jettonTokenInfoPath = "../../testData/jettonTokenInfo.json";
6
- let tokenInfo = require('../../testData/tokenInfo.json');
7
- const tokenInfoPath = "../../testData/tokenInfo.json";
8
- const config_ex_1 = require("../../config/config-ex");
9
- const jetton_1 = require("../../wallet/jetton");
10
- const compileContract_1 = require("../../utils/compileContract");
11
- const JettonMinter_1 = require("../../JettonMinter");
12
- let args = process.argv.slice(2);
13
- let jettonName = args[0];
14
- const JettonCofig = jettonTokenInfo[jettonName];
15
- const walletContract_1 = require("../../wallet/walletContract");
16
- const client_1 = require("../../client/client");
17
- const JettonMinter_compile_func_1 = require("../../testData/JettonMinter.compile.func");
18
- const JettonWallet_compile_func_1 = require("../../testData/JettonWallet.compile.func");
19
- const prvList = require('../../testData/prvlist.json');
20
- let deployer = null, smgFeeProxy = null, oracleAdmin = null, robotAdmin = null;
21
- let nonDeployer = null;
22
- let client = null;
23
- let via;
24
- async function writeJettonTokenInfo(path, jettonTokenInfo) {
25
- fs.writeFileSync(path, jettonTokenInfo);
26
- }
27
- async function writeTokenInfo(path, jettonTokenInfo, jettonName) {
28
- console.log("tokenInfo=>", tokenInfo);
29
- tokenInfo[jettonName].dstTokenAcc = jettonTokenInfo[jettonName].tokenAddress;
30
- tokenInfo[jettonName].walletCodeBase64 = jettonTokenInfo[jettonName].walletCodeBase64;
31
- fs.writeFileSync(path, JSON.stringify(tokenInfo, null, 2));
32
- }
33
- async function init() {
34
- //await wanTonSdkInit(configMainnet);
35
- //await wanTonSdkInit(configTestnet);
36
- await (0, client_1.wanTonSdkInit)(config_ex_1.configTestTonApiNoDb);
37
- client = await (0, client_1.getClient)();
38
- deployer = await (0, walletContract_1.getWalletByPrvKey)(Buffer.from(prvList[0], 'hex'));
39
- nonDeployer = await (0, walletContract_1.getWalletByPrvKey)(Buffer.from(prvList[1], 'hex'));
40
- via = await (0, walletContract_1.getSenderByPrvKey)(client, Buffer.from(prvList[0], 'hex'));
41
- smgFeeProxy = deployer;
42
- oracleAdmin = deployer;
43
- robotAdmin = deployer;
44
- }
45
- const walletContract_2 = require("../../wallet/walletContract");
46
- const fee_1 = require("../../fee/fee");
47
- async function DisplayJettonInfo(client, addr) {
48
- let ret = await (0, jetton_1.getJettonData)(client, addr);
49
- console.log("getJettonData=>", ret);
50
- let retJettonContent = await (0, jetton_1.getJettonDataContent)(client, addr);
51
- console.log("getJettonDataContent=>", await (0, jetton_1.parseWrappedJettonContent)(retJettonContent));
52
- }
53
- const fwdAmount = fee_1.TON_FEE.FWD_FEE_MINT_JETTON;
54
- const totalAmount = fee_1.TON_FEE.TOTAL_FEE_MINT_JETTON;
55
- async function Mint(client, via, jettonMasterAddr, addr, amount) {
56
- let jettMasterSc = await JettonMinter_1.JettonMinter.createFromAddress(jettonMasterAddr);
57
- let jettMasterScOpened = await client.open(jettMasterSc);
58
- let ret = await jettMasterScOpened.sendMint(via, addr, amount, fwdAmount, totalAmount);
59
- }
60
- async function main() {
61
- console.log("Entering main function");
62
- await init();
63
- let jettonContent = await (0, jetton_1.buildWrappedJettonContent)(JettonCofig);
64
- let retMinter = await (0, compileContract_1.doCompile)(JettonMinter_compile_func_1.conf);
65
- let retWallet = await (0, compileContract_1.doCompile)(JettonWallet_compile_func_1.conf);
66
- let jettonMinterOpened = await client.open(JettonMinter_1.JettonMinter.createFromConfig({
67
- admin: deployer.address, // set admin and deploy token in one step.
68
- content: jettonContent,
69
- wallet_code: retWallet.codeCell,
70
- }, retMinter.codeCell));
71
- jettonTokenInfo[jettonName].tokenAddress = jettonMinterOpened.address.toString();
72
- jettonTokenInfo[jettonName].walletCodeBase64 = retWallet.codeCell.toBoc().toString('base64');
73
- await writeJettonTokenInfo(jettonTokenInfoPath, JSON.stringify(jettonTokenInfo, null, 2));
74
- await writeTokenInfo(tokenInfoPath, jettonTokenInfo, jettonName);
75
- if (await (0, walletContract_2.isAddrDepolyed)(client, jettonMinterOpened.address.toString())) {
76
- console.log("jettonMinter address :", jettonMinterOpened.address.toString(), "has already deployed");
77
- return;
78
- }
79
- else {
80
- let retDeploy = await jettonMinterOpened.sendDeploy(via, fee_1.TON_FEE.TRANS_FEE_NORMAL);
81
- console.log("jettonMinter address :", jettonMinterOpened.address.toString());
82
- console.log(retDeploy);
83
- }
84
- /*
85
- let jwAddrDeployer = await getJettonAddress(client,jettonMinterOpened.address,deployer.address);
86
- console.log("deployer.jettonAddress=>",jwAddrDeployer.toString());
87
- let b = await getJettonBalance(client,jettonMinterOpened.address,deployer.address);
88
- console.log("Before mint balance = %s",b.toString(10));
89
- console.log("Begin Mint.....");
90
- await Mint(client,via,jettonMinterOpened.address,deployer.address,toNano('2'))
91
- console.log("End Mint.....");
92
-
93
- await sleep(5000)
94
- await DisplayJettonInfo(client,jettonMinterOpened.address);
95
-
96
- b = await getJettonBalance(client,jettonMinterOpened.address,deployer.address);
97
- console.log("After mint balance = %s",b.toString(10));
98
-
99
-
100
-
101
- let jwAddrNonDeployer = await getJettonAddress(client,jettonMinterOpened.address,nonDeployer.address);
102
- console.log("nonDeployer.address=>",nonDeployer.address.toString());
103
- console.log("nonDeployer.jettonAddress=>",jwAddrNonDeployer.toString());
104
- b = await getJettonBalance(client,jettonMinterOpened.address,nonDeployer.address);
105
- console.log("nonDeployer Before mint balance = %s",b.toString(10));
106
- console.log("Begin Mint to nonDeployer.....");
107
- await Mint(client,via,jettonMinterOpened.address,nonDeployer.address,toNano('3'))
108
- console.log("End Mint to nonDeployer.....");
109
-
110
- await sleep(5000)
111
-
112
- */
113
- await DisplayJettonInfo(client, jettonMinterOpened.address);
114
- /*
115
- b = await getJettonBalance(client,jettonMinterOpened.address,nonDeployer.address);
116
- console.log("nonDeployer After mint balance = %s",b.toString(10));
117
- */
118
- // await DisplayJettonInfo(client, Address.parse('EQCsALeDy_a3dzj21ZGMz-tuG9KIZVLmNUapfNtqGia8oqLk'));
119
- }
120
- main();
121
- // ts-node AddToken-ex.ts usdt
122
- // ts-node AddToken-ex.ts wan