@ton-wallet/create 14.0.4 → 14.0.6

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 (123) hide show
  1. package/package.json +1 -2
  2. package/dist/client/TonClient.d.ts +0 -228
  3. package/dist/client/TonClient.js +0 -441
  4. package/dist/client/TonClient.spec.d.ts +0 -1
  5. package/dist/client/TonClient.spec.js +0 -45
  6. package/dist/client/TonClient4.d.ts +0 -1130
  7. package/dist/client/TonClient4.js +0 -687
  8. package/dist/client/TonClient4.spec.d.ts +0 -1
  9. package/dist/client/TonClient4.spec.js +0 -42
  10. package/dist/client/api/HttpApi.d.ts +0 -764
  11. package/dist/client/api/HttpApi.js +0 -306
  12. package/dist/client/api/TonCache.d.ts +0 -16
  13. package/dist/client/api/TonCache.js +0 -33
  14. package/dist/config/ConfigParser.d.ts +0 -622
  15. package/dist/config/ConfigParser.js +0 -711
  16. package/dist/config/ConfigParser.spec.d.ts +0 -8
  17. package/dist/config/ConfigParser.spec.js +0 -97
  18. package/dist/elector/ElectorContract.d.ts +0 -51
  19. package/dist/elector/ElectorContract.js +0 -192
  20. package/dist/elector/ElectorContract.spec.d.ts +0 -8
  21. package/dist/elector/ElectorContract.spec.js +0 -104
  22. package/dist/index.d.ts +0 -33
  23. package/dist/index.js +0 -129
  24. package/dist/jetton/JettonMaster.d.ts +0 -21
  25. package/dist/jetton/JettonMaster.js +0 -39
  26. package/dist/jetton/JettonMaster.spec.d.ts +0 -8
  27. package/dist/jetton/JettonMaster.spec.js +0 -27
  28. package/dist/jetton/JettonWallet.d.ts +0 -14
  29. package/dist/jetton/JettonWallet.js +0 -27
  30. package/dist/multisig/MultisigOrder.d.ts +0 -17
  31. package/dist/multisig/MultisigOrder.js +0 -73
  32. package/dist/multisig/MultisigOrder.spec.d.ts +0 -1
  33. package/dist/multisig/MultisigOrder.spec.js +0 -139
  34. package/dist/multisig/MultisigOrderBuilder.d.ts +0 -13
  35. package/dist/multisig/MultisigOrderBuilder.js +0 -37
  36. package/dist/multisig/MultisigWallet.d.ts +0 -27
  37. package/dist/multisig/MultisigWallet.js +0 -134
  38. package/dist/multisig/MultisigWallet.spec.d.ts +0 -1
  39. package/dist/multisig/MultisigWallet.spec.js +0 -248
  40. package/dist/utils/createTestClient.d.ts +0 -9
  41. package/dist/utils/createTestClient.js +0 -18
  42. package/dist/utils/createTestClient4.d.ts +0 -9
  43. package/dist/utils/createTestClient4.js +0 -15
  44. package/dist/utils/fees.d.ts +0 -25
  45. package/dist/utils/fees.js +0 -105
  46. package/dist/utils/fees.spec.d.ts +0 -1
  47. package/dist/utils/fees.spec.js +0 -83
  48. package/dist/utils/maybe.d.ts +0 -8
  49. package/dist/utils/maybe.js +0 -9
  50. package/dist/utils/randomTestKey.d.ts +0 -8
  51. package/dist/utils/randomTestKey.js +0 -24
  52. package/dist/utils/time.d.ts +0 -15
  53. package/dist/utils/time.js +0 -63
  54. package/dist/utils/toUrlSafe.d.ts +0 -8
  55. package/dist/utils/toUrlSafe.js +0 -23
  56. package/dist/wallets/WalletContractV1R1.d.ts +0 -58
  57. package/dist/wallets/WalletContractV1R1.js +0 -100
  58. package/dist/wallets/WalletContractV1R1.spec.d.ts +0 -8
  59. package/dist/wallets/WalletContractV1R1.spec.js +0 -44
  60. package/dist/wallets/WalletContractV1R2.d.ts +0 -58
  61. package/dist/wallets/WalletContractV1R2.js +0 -101
  62. package/dist/wallets/WalletContractV1R2.spec.d.ts +0 -8
  63. package/dist/wallets/WalletContractV1R2.spec.js +0 -44
  64. package/dist/wallets/WalletContractV1R3.d.ts +0 -58
  65. package/dist/wallets/WalletContractV1R3.js +0 -101
  66. package/dist/wallets/WalletContractV1R3.spec.d.ts +0 -8
  67. package/dist/wallets/WalletContractV1R3.spec.js +0 -44
  68. package/dist/wallets/WalletContractV2R1.d.ts +0 -60
  69. package/dist/wallets/WalletContractV2R1.js +0 -102
  70. package/dist/wallets/WalletContractV2R1.spec.d.ts +0 -8
  71. package/dist/wallets/WalletContractV2R1.spec.js +0 -44
  72. package/dist/wallets/WalletContractV2R2.d.ts +0 -60
  73. package/dist/wallets/WalletContractV2R2.js +0 -102
  74. package/dist/wallets/WalletContractV2R2.spec.d.ts +0 -8
  75. package/dist/wallets/WalletContractV2R2.spec.js +0 -44
  76. package/dist/wallets/WalletContractV3R1.d.ts +0 -57
  77. package/dist/wallets/WalletContractV3R1.js +0 -104
  78. package/dist/wallets/WalletContractV3R1.spec.d.ts +0 -8
  79. package/dist/wallets/WalletContractV3R1.spec.js +0 -44
  80. package/dist/wallets/WalletContractV3R2.d.ts +0 -57
  81. package/dist/wallets/WalletContractV3R2.js +0 -104
  82. package/dist/wallets/WalletContractV3R2.spec.d.ts +0 -8
  83. package/dist/wallets/WalletContractV3R2.spec.js +0 -44
  84. package/dist/wallets/WalletContractV3Types.d.ts +0 -12
  85. package/dist/wallets/WalletContractV3Types.js +0 -2
  86. package/dist/wallets/WalletContractV4.d.ts +0 -65
  87. package/dist/wallets/WalletContractV4.js +0 -105
  88. package/dist/wallets/WalletContractV4.spec.d.ts +0 -8
  89. package/dist/wallets/WalletContractV4.spec.js +0 -48
  90. package/dist/wallets/WalletContractV5Beta.d.ts +0 -3
  91. package/dist/wallets/WalletContractV5Beta.js +0 -19
  92. package/dist/wallets/WalletContractV5R1.d.ts +0 -3
  93. package/dist/wallets/WalletContractV5R1.js +0 -19
  94. package/dist/wallets/signing/createWalletTransfer.d.ts +0 -48
  95. package/dist/wallets/signing/createWalletTransfer.js +0 -190
  96. package/dist/wallets/signing/singer.d.ts +0 -9
  97. package/dist/wallets/signing/singer.js +0 -21
  98. package/dist/wallets/v5beta/WalletContractV5Beta.d.ts +0 -130
  99. package/dist/wallets/v5beta/WalletContractV5Beta.js +0 -211
  100. package/dist/wallets/v5beta/WalletContractV5Beta.spec.d.ts +0 -8
  101. package/dist/wallets/v5beta/WalletContractV5Beta.spec.js +0 -298
  102. package/dist/wallets/v5beta/WalletV5BetaActions.d.ts +0 -6
  103. package/dist/wallets/v5beta/WalletV5BetaActions.js +0 -92
  104. package/dist/wallets/v5beta/WalletV5BetaActions.spec.d.ts +0 -1
  105. package/dist/wallets/v5beta/WalletV5BetaActions.spec.js +0 -166
  106. package/dist/wallets/v5beta/WalletV5BetaWalletId.d.ts +0 -13
  107. package/dist/wallets/v5beta/WalletV5BetaWalletId.js +0 -31
  108. package/dist/wallets/v5beta/WalletV5BetaWalletId.spec.d.ts +0 -1
  109. package/dist/wallets/v5beta/WalletV5BetaWalletId.spec.js +0 -68
  110. package/dist/wallets/v5beta/WalletV5OutActions.d.ts +0 -17
  111. package/dist/wallets/v5beta/WalletV5OutActions.js +0 -11
  112. package/dist/wallets/v5r1/WalletContractV5R1.d.ts +0 -125
  113. package/dist/wallets/v5r1/WalletContractV5R1.js +0 -207
  114. package/dist/wallets/v5r1/WalletContractV5R1.spec.d.ts +0 -8
  115. package/dist/wallets/v5r1/WalletContractV5R1.spec.js +0 -321
  116. package/dist/wallets/v5r1/WalletV5R1Actions.d.ts +0 -12
  117. package/dist/wallets/v5r1/WalletV5R1Actions.js +0 -128
  118. package/dist/wallets/v5r1/WalletV5R1Actions.spec.d.ts +0 -1
  119. package/dist/wallets/v5r1/WalletV5R1Actions.spec.js +0 -262
  120. package/dist/wallets/v5r1/WalletV5R1WalletId.d.ts +0 -47
  121. package/dist/wallets/v5r1/WalletV5R1WalletId.js +0 -69
  122. package/dist/wallets/v5r1/WalletV5R1WalletId.spec.d.ts +0 -1
  123. package/dist/wallets/v5r1/WalletV5R1WalletId.spec.js +0 -72
@@ -1,39 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) Whales Corp.
4
- * All Rights Reserved.
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE file in the root directory of this source tree.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.JettonMaster = void 0;
11
- const core_1 = require("@ton/core");
12
- class JettonMaster {
13
- static create(address) {
14
- return new JettonMaster(address);
15
- }
16
- constructor(address) {
17
- this.address = address;
18
- }
19
- async getWalletAddress(provider, owner) {
20
- let res = await provider.get('get_wallet_address', [{ type: 'slice', cell: (0, core_1.beginCell)().storeAddress(owner).endCell() }]);
21
- return res.stack.readAddress();
22
- }
23
- async getJettonData(provider) {
24
- let res = await provider.get('get_jetton_data', []);
25
- let totalSupply = res.stack.readBigNumber();
26
- let mintable = res.stack.readBoolean();
27
- let adminAddress = res.stack.readAddress();
28
- let content = res.stack.readCell();
29
- let walletCode = res.stack.readCell();
30
- return {
31
- totalSupply,
32
- mintable,
33
- adminAddress,
34
- content,
35
- walletCode
36
- };
37
- }
38
- }
39
- exports.JettonMaster = JettonMaster;
@@ -1,8 +0,0 @@
1
- /**
2
- * Copyright (c) Whales Corp.
3
- * All Rights Reserved.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
8
- export {};
@@ -1,27 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) Whales Corp.
4
- * All Rights Reserved.
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE file in the root directory of this source tree.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- const core_1 = require("@ton/core");
11
- const createTestClient_1 = require("../utils/createTestClient");
12
- const JettonMaster_1 = require("./JettonMaster");
13
- const JettonWallet_1 = require("./JettonWallet");
14
- describe('JettonMaster', () => {
15
- it('should resolve jetton wallet address', async () => {
16
- let client = (0, createTestClient_1.createTestClient)('mainnet');
17
- let master = client.open(JettonMaster_1.JettonMaster.create(core_1.Address.parse('EQDQoc5M3Bh8eWFephi9bClhevelbZZvWhkqdo80XuY_0qXv')));
18
- let walletAddress = await master.getWalletAddress(core_1.Address.parse('EQCo6VT63H1vKJTiUo6W4M8RrTURCyk5MdbosuL5auEqpz-C'));
19
- let jettonData = await master.getJettonData();
20
- expect(walletAddress.equals(core_1.Address.parse('EQDslTlGmbLTFi0j4MPT7UVggWR7XRDI2bW6vmNG6Tc_FBDE'))).toBe(true);
21
- expect(jettonData.mintable).toBe(true);
22
- expect(jettonData.adminAddress.equals(core_1.Address.parse('EQCppzUtmGSMg3FIRlFLzhToqbaC0xjmjzOn0o7H4M8Aua1t'))).toBe(true);
23
- let wallet = client.open(JettonWallet_1.JettonWallet.create(walletAddress));
24
- let balance = await wallet.getBalance();
25
- expect(balance).toBe(0n);
26
- });
27
- });
@@ -1,14 +0,0 @@
1
- /**
2
- * Copyright (c) Whales Corp.
3
- * All Rights Reserved.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
8
- import { Address, Contract, ContractProvider } from "@ton/core";
9
- export declare class JettonWallet implements Contract {
10
- static create(address: Address): JettonWallet;
11
- readonly address: Address;
12
- private constructor();
13
- getBalance(provider: ContractProvider): Promise<bigint>;
14
- }
@@ -1,27 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) Whales Corp.
4
- * All Rights Reserved.
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE file in the root directory of this source tree.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.JettonWallet = void 0;
11
- class JettonWallet {
12
- static create(address) {
13
- return new JettonWallet(address);
14
- }
15
- constructor(address) {
16
- this.address = address;
17
- }
18
- async getBalance(provider) {
19
- let state = await provider.getState();
20
- if (state.state.type !== 'active') {
21
- return 0n;
22
- }
23
- let res = await provider.get('get_wallet_data', []);
24
- return res.stack.readBigNumber();
25
- }
26
- }
27
- exports.JettonWallet = JettonWallet;
@@ -1,17 +0,0 @@
1
- /// <reference types="node" />
2
- import { Cell } from '@ton/core';
3
- import { MultisigWallet } from './MultisigWallet';
4
- export declare class MultisigOrder {
5
- readonly payload: Cell;
6
- signatures: {
7
- [key: number]: Buffer;
8
- };
9
- private constructor();
10
- static fromCell(cell: Cell): MultisigOrder;
11
- static fromPayload(payload: Cell): MultisigOrder;
12
- addSignature(ownerId: number, signature: Buffer, multisig: MultisigWallet): void;
13
- sign(ownerId: number, secretKey: Buffer): Buffer;
14
- unionSignatures(other: MultisigOrder): void;
15
- clearSignatures(): void;
16
- toCell(ownerId: number): Cell;
17
- }
@@ -1,73 +0,0 @@
1
- "use strict";
2
- /* Made by @Gusarich and @Miandic */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.MultisigOrder = void 0;
5
- const crypto_1 = require("@ton/crypto");
6
- const core_1 = require("@ton/core");
7
- class MultisigOrder {
8
- constructor(payload) {
9
- this.signatures = {};
10
- this.payload = payload;
11
- }
12
- static fromCell(cell) {
13
- let s = cell.beginParse();
14
- let signatures = s.loadMaybeRef()?.beginParse();
15
- const messagesCell = s.asCell();
16
- let order = new MultisigOrder(messagesCell);
17
- if (signatures) {
18
- while (signatures.remainingBits > 0) {
19
- const signature = signatures.loadBuffer(64);
20
- const ownerId = signatures.loadUint(8);
21
- order.signatures[ownerId] = signature;
22
- if (signatures.remainingRefs > 0) {
23
- signatures = signatures.loadRef().asSlice();
24
- }
25
- else {
26
- signatures.skip(1);
27
- }
28
- }
29
- signatures.endParse();
30
- }
31
- return order;
32
- }
33
- static fromPayload(payload) {
34
- return new MultisigOrder(payload);
35
- }
36
- addSignature(ownerId, signature, multisig) {
37
- const signingHash = this.payload.hash();
38
- if (!(0, crypto_1.signVerify)(signingHash, signature, multisig.owners.get(ownerId).slice(0, -1))) {
39
- throw Error('invalid signature');
40
- }
41
- this.signatures[ownerId] = signature;
42
- }
43
- sign(ownerId, secretKey) {
44
- const signingHash = this.payload.hash();
45
- this.signatures[ownerId] = (0, crypto_1.sign)(signingHash, secretKey);
46
- return signingHash;
47
- }
48
- unionSignatures(other) {
49
- this.signatures = Object.assign({}, this.signatures, other.signatures);
50
- }
51
- clearSignatures() {
52
- this.signatures = {};
53
- }
54
- toCell(ownerId) {
55
- let b = (0, core_1.beginCell)().storeBit(0);
56
- for (const ownerId in this.signatures) {
57
- const signature = this.signatures[ownerId];
58
- b = (0, core_1.beginCell)()
59
- .storeBit(1)
60
- .storeRef((0, core_1.beginCell)()
61
- .storeBuffer(signature)
62
- .storeUint(parseInt(ownerId), 8)
63
- .storeBuilder(b)
64
- .endCell());
65
- }
66
- return (0, core_1.beginCell)()
67
- .storeUint(ownerId, 8)
68
- .storeBuilder(b)
69
- .storeBuilder(this.payload.asBuilder())
70
- .endCell();
71
- }
72
- }
73
- exports.MultisigOrder = MultisigOrder;
@@ -1 +0,0 @@
1
- export {};
@@ -1,139 +0,0 @@
1
- "use strict";
2
- /* Made by @Gusarich and @Miandic */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const core_1 = require("@ton/core");
5
- const crypto_1 = require("@ton/crypto");
6
- const emulator_1 = require("@ton/emulator");
7
- const MultisigOrderBuilder_1 = require("./MultisigOrderBuilder");
8
- const MultisigWallet_1 = require("./MultisigWallet");
9
- const MultisigOrder_1 = require("./MultisigOrder");
10
- function createInternalMessage(bounce, dest, value, body, mode = 3) {
11
- return {
12
- info: {
13
- bounce,
14
- bounced: false,
15
- createdAt: 0,
16
- createdLt: 0n,
17
- dest,
18
- forwardFee: 0n,
19
- ihrDisabled: true,
20
- ihrFee: 0n,
21
- type: 'internal',
22
- value: {
23
- coins: value,
24
- },
25
- },
26
- body,
27
- };
28
- }
29
- describe('MultisigOrder', () => {
30
- var publicKeys;
31
- var secretKeys;
32
- beforeAll(async () => {
33
- publicKeys = [];
34
- secretKeys = [];
35
- for (let i = 0; i < 10; i += 1) {
36
- let kp = (0, crypto_1.keyPairFromSeed)(await (0, crypto_1.getSecureRandomBytes)(32));
37
- publicKeys.push(kp.publicKey);
38
- secretKeys.push(kp.secretKey);
39
- }
40
- });
41
- it('should add messages', () => {
42
- let order = new MultisigOrderBuilder_1.MultisigOrderBuilder(123);
43
- order.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 1000000000n, core_1.Cell.EMPTY), 3);
44
- order.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address2'), 0n, (0, core_1.beginCell)().storeUint(3, 123).endCell()), 3);
45
- order.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 2000000000n, core_1.Cell.EMPTY), 3);
46
- expect(order.messages.endCell().refs.length).toEqual(3);
47
- });
48
- it('should add signatures', () => {
49
- let orderBuilder = new MultisigOrderBuilder_1.MultisigOrderBuilder(123);
50
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 1000000000n, core_1.Cell.EMPTY), 3);
51
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address2'), 0n, (0, core_1.beginCell)().storeUint(3, 123).endCell()), 3);
52
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 2000000000n, core_1.Cell.EMPTY), 3);
53
- let order = orderBuilder.build();
54
- order.sign(0, secretKeys[0]);
55
- order.sign(1, secretKeys[1]);
56
- order.sign(2, secretKeys[2]);
57
- expect(Object.keys(order.signatures)).toHaveLength(3);
58
- });
59
- it('should union signatures', () => {
60
- let order1Builder = new MultisigOrderBuilder_1.MultisigOrderBuilder(123);
61
- order1Builder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 1000000000n, core_1.Cell.EMPTY), 3);
62
- order1Builder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address2'), 0n, (0, core_1.beginCell)().storeUint(3, 123).endCell()), 3);
63
- order1Builder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 2000000000n, core_1.Cell.EMPTY), 3);
64
- let order1 = order1Builder.build();
65
- order1.sign(0, secretKeys[0]);
66
- order1.sign(1, secretKeys[1]);
67
- order1.sign(2, secretKeys[2]);
68
- let order2Builder = new MultisigOrderBuilder_1.MultisigOrderBuilder(123);
69
- order2Builder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 1000000000n, core_1.Cell.EMPTY), 3);
70
- order2Builder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address2'), 0n, (0, core_1.beginCell)().storeUint(3, 123).endCell()), 3);
71
- order2Builder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 2000000000n, core_1.Cell.EMPTY), 3);
72
- let order2 = order2Builder.build();
73
- order2.sign(3, secretKeys[3]);
74
- order2.sign(2, secretKeys[2]);
75
- order2.sign(5, secretKeys[5]);
76
- order1.unionSignatures(order2);
77
- expect(Object.keys(order1.signatures)).toHaveLength(5);
78
- });
79
- it('should clear signatures', () => {
80
- let orderBuilder = new MultisigOrderBuilder_1.MultisigOrderBuilder(123);
81
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 1000000000n, core_1.Cell.EMPTY), 3);
82
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address2'), 0n, (0, core_1.beginCell)().storeUint(3, 123).endCell()), 3);
83
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 2000000000n, core_1.Cell.EMPTY), 3);
84
- let order = orderBuilder.build();
85
- order.sign(0, secretKeys[0]);
86
- order.sign(1, secretKeys[1]);
87
- order.sign(2, secretKeys[2]);
88
- order.clearSignatures();
89
- expect(order.signatures).toBeNull;
90
- });
91
- it('should clear messages', () => {
92
- let orderBuilder = new MultisigOrderBuilder_1.MultisigOrderBuilder(123);
93
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 1000000000n, core_1.Cell.EMPTY), 3);
94
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address2'), 0n, (0, core_1.beginCell)().storeUint(3, 123).endCell()), 3);
95
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 2000000000n, core_1.Cell.EMPTY), 3);
96
- orderBuilder.clearMessages();
97
- expect(orderBuilder.messages).toEqual((0, core_1.beginCell)());
98
- });
99
- it('should add signatures without secret key', () => {
100
- let orderBuilder = new MultisigOrderBuilder_1.MultisigOrderBuilder(123);
101
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 1000000000n, core_1.Cell.EMPTY), 3);
102
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address2'), 0n, (0, core_1.beginCell)().storeUint(3, 123).endCell()), 3);
103
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 2000000000n, core_1.Cell.EMPTY), 3);
104
- let order = orderBuilder.build();
105
- order.sign(0, secretKeys[0]);
106
- order.addSignature(1, (0, crypto_1.sign)(order.payload.hash(), secretKeys[1]), new MultisigWallet_1.MultisigWallet(publicKeys, 0, 123, 2));
107
- expect(Object.keys(order.signatures)).toHaveLength(2);
108
- });
109
- it('should throw on more than 4 messages', () => {
110
- let orderBuilder = new MultisigOrderBuilder_1.MultisigOrderBuilder(123);
111
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 1000000000n, core_1.Cell.EMPTY), 3);
112
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address2'), 0n, (0, core_1.beginCell)().storeUint(3, 123).endCell()), 3);
113
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 2000000000n, core_1.Cell.EMPTY), 3);
114
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 2000000000n, core_1.Cell.EMPTY), 3);
115
- expect(() => orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 2000000000n, core_1.Cell.EMPTY), 3)).toThrow();
116
- });
117
- it('should throw on invalid signature', () => {
118
- let orderBuilder = new MultisigOrderBuilder_1.MultisigOrderBuilder(123);
119
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 1000000000n, core_1.Cell.EMPTY), 3);
120
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address2'), 0n, (0, core_1.beginCell)().storeUint(3, 123).endCell()), 3);
121
- orderBuilder.addMessage(createInternalMessage(true, (0, emulator_1.testAddress)('address1'), 2000000000n, core_1.Cell.EMPTY), 3);
122
- let order = orderBuilder.build();
123
- order.sign(0, secretKeys[0]);
124
- expect(() => order.addSignature(1, Buffer.alloc(64), new MultisigWallet_1.MultisigWallet(publicKeys, 0, 123, 2))).toThrow();
125
- });
126
- it('should export to cell', () => { });
127
- it('should load from cell', () => {
128
- const order1Cell = core_1.Cell.fromBoc(Buffer.from('B5EE9C7241010201004700011B0000000031FD2F910000000001C0010068620014811EF5893924A58891883AA5563EE83305B47E62061D349E4BDECD66D2F2B1A02FAF08000000000000000000000000000021E26136', 'hex'))[0];
129
- const order2Cell = core_1.Cell.fromBoc(Buffer.from('B5EE9C7241010301008C00021B8000000031FD2F910000000001C001020083E67410438C1007888D2CD45436502FBA877BECE26E7F384709B29B4A607181B8473CC4D45B44F7C47590740936231AE001727CCCA955DCDF959955D3889F4E0F00400068620014811EF5893924A58891883AA5563EE83305B47E62061D349E4BDECD66D2F2B1A02FAF080000000000000000000000000000621311E8', 'hex'))[0];
130
- const order3Cell = core_1.Cell.fromBoc(Buffer.from('B5EE9C724101040100D100021B8000000031FD2F910000000001C0010201836100CBF8BBD98C5FE999FB232678DF1CC06A3522DB55736B3FF846C65AD1619694B8BDEF50B8DCF390AD54A4076B7444600FE54CC2EBFA68ED07F3063437DF0501C0030068620014811EF5893924A58891883AA5563EE83305B47E62061D349E4BDECD66D2F2B1A02FAF0800000000000000000000000000000083E67410438C1007888D2CD45436502FBA877BECE26E7F384709B29B4A607181B8473CC4D45B44F7C47590740936231AE001727CCCA955DCDF959955D3889F4E0F0040A434CD60', 'hex'))[0];
131
- const order1 = MultisigOrder_1.MultisigOrder.fromCell(order1Cell);
132
- const order2 = MultisigOrder_1.MultisigOrder.fromCell(order2Cell);
133
- const order3 = MultisigOrder_1.MultisigOrder.fromCell(order3Cell);
134
- expect(order1.payload.refs).toHaveLength(1);
135
- expect(Object.keys(order1.signatures)).toHaveLength(0);
136
- expect(Object.keys(order2.signatures)).toHaveLength(1);
137
- expect(Object.keys(order3.signatures)).toHaveLength(2);
138
- });
139
- });
@@ -1,13 +0,0 @@
1
- import { Builder, MessageRelaxed } from '@ton/core';
2
- import { MultisigOrder } from './MultisigOrder';
3
- export declare class MultisigOrderBuilder {
4
- messages: Builder;
5
- queryId: bigint;
6
- private walletId;
7
- private queryOffset;
8
- constructor(walletId: number, offset?: number);
9
- addMessage(message: MessageRelaxed, mode: number): void;
10
- clearMessages(): void;
11
- build(): MultisigOrder;
12
- private updateQueryId;
13
- }
@@ -1,37 +0,0 @@
1
- "use strict";
2
- /* Made by @Gusarich and @Miandic */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.MultisigOrderBuilder = void 0;
5
- const core_1 = require("@ton/core");
6
- const MultisigOrder_1 = require("./MultisigOrder");
7
- class MultisigOrderBuilder {
8
- constructor(walletId, offset) {
9
- this.messages = (0, core_1.beginCell)();
10
- this.queryId = 0n;
11
- this.walletId = walletId;
12
- this.queryOffset = offset || 7200;
13
- }
14
- addMessage(message, mode) {
15
- if (this.messages.refs >= 4) {
16
- throw Error('only 4 refs are allowed');
17
- }
18
- this.updateQueryId();
19
- this.messages.storeUint(mode, 8);
20
- this.messages.storeRef((0, core_1.beginCell)().store((0, core_1.storeMessageRelaxed)(message)).endCell());
21
- }
22
- clearMessages() {
23
- this.messages = (0, core_1.beginCell)();
24
- }
25
- build() {
26
- return MultisigOrder_1.MultisigOrder.fromPayload((0, core_1.beginCell)()
27
- .storeUint(this.walletId, 32)
28
- .storeUint(this.queryId, 64)
29
- .storeBuilder(this.messages)
30
- .endCell());
31
- }
32
- updateQueryId() {
33
- const time = BigInt(Math.floor(Date.now() / 1000 + this.queryOffset));
34
- this.queryId = time << 32n;
35
- }
36
- }
37
- exports.MultisigOrderBuilder = MultisigOrderBuilder;
@@ -1,27 +0,0 @@
1
- /// <reference types="node" />
2
- import { TonClient } from '../index';
3
- import { Address, ContractProvider, Dictionary, Sender, StateInit } from '@ton/core';
4
- import { MultisigOrder } from './MultisigOrder';
5
- export declare class MultisigWallet {
6
- owners: Dictionary<number, Buffer>;
7
- workchain: number;
8
- walletId: number;
9
- k: number;
10
- address: Address;
11
- provider: ContractProvider | null;
12
- init: StateInit;
13
- constructor(publicKeys: Buffer[], workchain: number, walletId: number, k: number, opts?: {
14
- address?: Address;
15
- provider?: ContractProvider;
16
- client?: TonClient;
17
- });
18
- static fromAddress(address: Address, opts: {
19
- provider?: ContractProvider;
20
- client?: TonClient;
21
- }): Promise<MultisigWallet>;
22
- deployExternal(provider?: ContractProvider): Promise<void>;
23
- deployInternal(sender: Sender, value?: bigint): Promise<void>;
24
- sendOrder(order: MultisigOrder, secretKey: Buffer, provider?: ContractProvider): Promise<void>;
25
- sendOrderWithoutSecretKey(order: MultisigOrder, signature: Buffer, ownerId: number, provider?: ContractProvider): Promise<void>;
26
- getOwnerIdByPubkey(publicKey: Buffer): number;
27
- }
@@ -1,134 +0,0 @@
1
- "use strict";
2
- /* Made by @Gusarich and @Miandic */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.MultisigWallet = void 0;
5
- const crypto_1 = require("@ton/crypto");
6
- const core_1 = require("@ton/core");
7
- const MULTISIG_CODE = core_1.Cell.fromBase64('te6ccgECKwEABBgAART/APSkE/S88sgLAQIBIAIDAgFIBAUE2vIgxwCOgzDbPOCDCNcYIPkBAdMH2zwiwAAToVNxePQOb6Hyn9s8VBq6+RDyoAb0BCD5AQHTH1EYuvKq0z9wUwHwCgHCCAGDCryx8mhTFYBA9A5voSCYDqQgwgryZw7f+COqH1NAufJhVCOjU04gIyEiAgLMBgcCASAMDQIBIAgJAgFmCgsAA9GEAiPymAvHoHN9CYbZ5S7Z4BPHohwhJQAtAKkItdJEqCTItdKlwLUAdAT8ArobBKAATwhbpEx4CBukTDgAdAg10rDAJrUAvALyFjPFszJ4HHXI8gBzxb0AMmACASAODwIBIBQVARW77ZbVA0cFUg2zyCoCAUgQEQIBIBITAXOxHXQgwjXGCD5AQHTB4IB1MTtQ9hTIHj0Dm+h8p/XC/9eMfkQ8qCuAfQEIW6TW3Ey4PkBWNs8AaQBgJwA9rtqA6ADoAPoCAXoCEfyAgPyA3XlP+AXkegAA54tkwAAXrhlXP8EA1WZ2oexAAgEgFhcCASAYGQFRtyVbZ4YmRmpGEAgegc30McJNhFpAADMaYeYuAFrgJhwLb+4cC3d0bhAjAYm1WZtnhqvgb+2xxsoicAgej430pBHEoFpAADHDhBACGuQkuuBk9kUWE5kAOeLKhACQCB6IYFImHFImHFImXEA2YlzNijAjAgEgGhsAF7UGtc4QQDVZnah7EAIBIBwdAgOZOB4fARGsGm2eL4G2CUAjABWt+UEAzJV2oewYQAENqTbPBVfBYCMAFa3f3CCAarM7UPYgAiDbPALyZfgAUENxQxPbPO1UIyoACtP/0wcwBKDbPC+uUyCw8mISsQKkJbNTHLmwJYEA4aojoCi8sPJpggGGoPgBBZcCERACPj4wjo0REB/bPEDXePRDEL0F4lQWW1Rz51YQU9zbPFRxClR6vCQlKCYAIO1E0NMf0wfTB9M/9AT0BNEAXgGOGjDSAAHyo9MH0wdQA9cBIPkBBfkBFbrypFAD4GwhIddKqgIi10m68qtwVCATAAwByMv/ywcE1ts87VT4D3AlblOJvrGYEG4QLVDHXwePGzBUJANQTds8UFWgRlAQSRA6SwlTuds8UFQWf+L4AAeDJaGOLCaAQPSWb6UglDBTA7neII4WODk5CNIAAZfTBzAW8AcFkTDifwgHBZJsMeKz5jAGKicoKQBgcI4pA9CDCNcY0wf0BDBTFnj0Dm+h8qXXC/9URUT5EPKmrlIgsVIDvRShI27mbCIyAH5SML6OIF8D+ACTItdKmALTB9QC+wAC6DJwyMoAQBSAQPRDAvAHjhdxyMsAFMsHEssHWM8BWM8WQBOAQPRDAeIBII6KEEUQNEMA2zztVJJfBuIqABzIyx/LB8sHyz/0APQAyQ==');
8
- class MultisigWallet {
9
- constructor(publicKeys, workchain, walletId, k, opts) {
10
- this.provider = null;
11
- this.owners = core_1.Dictionary.empty();
12
- this.workchain = workchain;
13
- this.walletId = walletId;
14
- this.k = k;
15
- for (let i = 0; i < publicKeys.length; i += 1) {
16
- this.owners.set(i, Buffer.concat([publicKeys[i], Buffer.alloc(1)]));
17
- }
18
- this.init = {
19
- code: MULTISIG_CODE,
20
- data: (0, core_1.beginCell)()
21
- .storeUint(this.walletId, 32)
22
- .storeUint(this.owners.size, 8)
23
- .storeUint(this.k, 8)
24
- .storeUint(0, 64)
25
- .storeDict(this.owners, core_1.Dictionary.Keys.Uint(8), core_1.Dictionary.Values.Buffer(33))
26
- .storeBit(0)
27
- .endCell(),
28
- };
29
- this.address = opts?.address || (0, core_1.contractAddress)(workchain, this.init);
30
- if (opts?.provider) {
31
- this.provider = opts.provider;
32
- }
33
- else if (opts?.client) {
34
- this.provider = opts.client.provider(this.address, {
35
- code: this.init.code,
36
- data: this.init.data,
37
- });
38
- }
39
- }
40
- static async fromAddress(address, opts) {
41
- let provider;
42
- if (opts.provider) {
43
- provider = opts.provider;
44
- }
45
- else {
46
- if (!opts.client) {
47
- throw Error('Either provider or client must be specified');
48
- }
49
- provider = opts.client.provider(address, {
50
- code: null,
51
- data: null,
52
- });
53
- }
54
- const contractState = (await provider.getState()).state;
55
- if (contractState.type !== 'active') {
56
- throw Error('Contract must be active');
57
- }
58
- const data = core_1.Cell.fromBoc(contractState.data)[0].beginParse();
59
- const walletId = data.loadUint(32);
60
- data.skip(8);
61
- const k = data.loadUint(8);
62
- data.skip(64);
63
- const owners = data.loadDict(core_1.Dictionary.Keys.Uint(8), core_1.Dictionary.Values.Buffer(33));
64
- let publicKeys = [];
65
- for (const [key, value] of owners) {
66
- const publicKey = value.subarray(0, 32);
67
- publicKeys.push(publicKey);
68
- }
69
- return new MultisigWallet(publicKeys, address.workChain, walletId, k, {
70
- address,
71
- provider,
72
- client: opts.client,
73
- });
74
- }
75
- async deployExternal(provider) {
76
- if (!provider && !this.provider) {
77
- throw Error('you must specify provider if there is no such property in MultisigWallet instance');
78
- }
79
- if (!provider) {
80
- provider = this.provider;
81
- }
82
- await provider.external(core_1.Cell.EMPTY);
83
- }
84
- async deployInternal(sender, value = 1000000000n) {
85
- await sender.send({
86
- sendMode: core_1.SendMode.PAY_GAS_SEPARATELY + core_1.SendMode.IGNORE_ERRORS,
87
- to: this.address,
88
- value: value,
89
- init: this.init,
90
- body: core_1.Cell.EMPTY,
91
- bounce: true,
92
- });
93
- }
94
- async sendOrder(order, secretKey, provider) {
95
- if (!provider && !this.provider) {
96
- throw Error('you must specify provider if there is no such property in MultisigWallet instance');
97
- }
98
- if (!provider) {
99
- provider = this.provider;
100
- }
101
- let publicKey = (0, crypto_1.keyPairFromSecretKey)(secretKey).publicKey;
102
- let ownerId = this.getOwnerIdByPubkey(publicKey);
103
- let cell = order.toCell(ownerId);
104
- let signature = (0, crypto_1.sign)(cell.hash(), secretKey);
105
- cell = (0, core_1.beginCell)()
106
- .storeBuffer(signature)
107
- .storeSlice(cell.asSlice())
108
- .endCell();
109
- await provider.external(cell);
110
- }
111
- async sendOrderWithoutSecretKey(order, signature, ownerId, provider) {
112
- if (!provider && !this.provider) {
113
- throw Error('you must specify provider if there is no such property in MultisigWallet instance');
114
- }
115
- if (!provider) {
116
- provider = this.provider;
117
- }
118
- let cell = order.toCell(ownerId);
119
- cell = (0, core_1.beginCell)()
120
- .storeBuffer(signature)
121
- .storeSlice(cell.asSlice())
122
- .endCell();
123
- await provider.external(cell);
124
- }
125
- getOwnerIdByPubkey(publicKey) {
126
- for (const [key, value] of this.owners) {
127
- if (value.subarray(0, 32).equals(publicKey)) {
128
- return key;
129
- }
130
- }
131
- throw Error('public key is not an owner');
132
- }
133
- }
134
- exports.MultisigWallet = MultisigWallet;
@@ -1 +0,0 @@
1
- export {};