@ton/ton 16.0.0 → 16.2.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.
Files changed (133) hide show
  1. package/README.md +47 -11
  2. package/dist/client/TonClient.d.ts +6 -6
  3. package/dist/client/TonClient.js +105 -80
  4. package/dist/client/TonClient4.d.ts +1 -1
  5. package/dist/client/TonClient4.js +227 -138
  6. package/dist/client/api/HttpApi.d.ts +122 -122
  7. package/dist/client/api/HttpApi.js +103 -72
  8. package/dist/client/api/TonCache.js +3 -3
  9. package/dist/config/ConfigParser.d.ts +221 -409
  10. package/dist/config/ConfigParser.js +407 -89
  11. package/dist/elector/ElectorContract.js +46 -20
  12. package/dist/index.d.ts +22 -22
  13. package/dist/index.js +2 -1
  14. package/dist/jetton/JettonMaster.js +5 -3
  15. package/dist/jetton/JettonWallet.js +2 -2
  16. package/dist/multisig/MultisigOrder.d.ts +2 -2
  17. package/dist/multisig/MultisigOrder.js +1 -1
  18. package/dist/multisig/MultisigOrderBuilder.d.ts +2 -2
  19. package/dist/multisig/MultisigOrderBuilder.js +1 -1
  20. package/dist/multisig/MultisigWallet.d.ts +3 -3
  21. package/dist/multisig/MultisigWallet.js +8 -8
  22. package/dist/utils/createTestClient.d.ts +1 -1
  23. package/dist/utils/createTestClient.js +6 -2
  24. package/dist/utils/createTestClient4.d.ts +1 -1
  25. package/dist/utils/createTestClient4.js +5 -1
  26. package/dist/utils/fees.d.ts +2 -2
  27. package/dist/utils/fees.js +21 -6
  28. package/dist/utils/{randomTestKey.d.ts → testUtils.d.ts} +2 -0
  29. package/dist/utils/testUtils.js +21 -0
  30. package/dist/utils/testWallets.d.ts +10 -10
  31. package/dist/utils/time.js +5 -3
  32. package/dist/utils/toUrlSafe.js +6 -6
  33. package/dist/wallets/WalletContractV1R1.d.ts +1 -57
  34. package/dist/wallets/WalletContractV1R1.js +15 -99
  35. package/dist/wallets/WalletContractV1R2.d.ts +1 -57
  36. package/dist/wallets/WalletContractV1R2.js +15 -100
  37. package/dist/wallets/WalletContractV1R3.d.ts +1 -57
  38. package/dist/wallets/WalletContractV1R3.js +15 -99
  39. package/dist/wallets/WalletContractV2R1.d.ts +1 -59
  40. package/dist/wallets/WalletContractV2R1.js +15 -101
  41. package/dist/wallets/WalletContractV2R2.d.ts +1 -59
  42. package/dist/wallets/WalletContractV2R2.js +15 -101
  43. package/dist/wallets/WalletContractV3R1.d.ts +1 -56
  44. package/dist/wallets/WalletContractV3R1.js +15 -103
  45. package/dist/wallets/WalletContractV3R2.d.ts +1 -56
  46. package/dist/wallets/WalletContractV3R2.js +15 -103
  47. package/dist/wallets/WalletContractV4.d.ts +2 -2
  48. package/dist/wallets/WalletContractV5Beta.d.ts +3 -3
  49. package/dist/wallets/WalletContractV5R1.d.ts +3 -3
  50. package/dist/wallets/signing/createWalletTransfer.d.ts +11 -3
  51. package/dist/wallets/signing/createWalletTransfer.js +18 -15
  52. package/dist/wallets/signing/singer.d.ts +2 -1
  53. package/dist/wallets/signing/singer.js +11 -5
  54. package/dist/wallets/v1/r1.d.ts +59 -0
  55. package/dist/wallets/v1/r1.js +103 -0
  56. package/dist/wallets/v1/r2.d.ts +59 -0
  57. package/dist/wallets/v1/r2.js +104 -0
  58. package/dist/wallets/v1/r3.d.ts +59 -0
  59. package/dist/wallets/v1/r3.js +103 -0
  60. package/dist/wallets/v2/r1.d.ts +61 -0
  61. package/dist/wallets/v2/r1.js +107 -0
  62. package/dist/wallets/v2/r2.d.ts +61 -0
  63. package/dist/wallets/v2/r2.js +107 -0
  64. package/dist/wallets/v3/r1.d.ts +58 -0
  65. package/dist/wallets/v3/r1.js +109 -0
  66. package/dist/wallets/v3/r2.d.ts +58 -0
  67. package/dist/wallets/v3/r2.js +109 -0
  68. package/dist/wallets/v4/WalletContractV4.d.ts +4 -2
  69. package/dist/wallets/v4/WalletContractV4.js +36 -32
  70. package/dist/wallets/v4/WalletContractV4Actions.d.ts +4 -4
  71. package/dist/wallets/v4/WalletContractV4Actions.js +10 -10
  72. package/dist/wallets/v5beta/WalletContractV5Beta.d.ts +7 -5
  73. package/dist/wallets/v5beta/WalletContractV5Beta.js +44 -28
  74. package/dist/wallets/v5beta/WalletV5BetaActions.d.ts +1 -1
  75. package/dist/wallets/v5beta/WalletV5BetaActions.js +25 -18
  76. package/dist/wallets/v5beta/WalletV5BetaWalletId.d.ts +2 -2
  77. package/dist/wallets/v5beta/WalletV5BetaWalletId.js +6 -4
  78. package/dist/wallets/v5beta/WalletV5OutActions.d.ts +4 -4
  79. package/dist/wallets/v5beta/WalletV5OutActions.js +3 -1
  80. package/dist/wallets/v5r1/WalletContractV5R1.d.ts +10 -6
  81. package/dist/wallets/v5r1/WalletContractV5R1.js +55 -36
  82. package/dist/wallets/v5r1/WalletV5R1Actions.d.ts +3 -3
  83. package/dist/wallets/v5r1/WalletV5R1Actions.js +32 -25
  84. package/dist/wallets/v5r1/WalletV5R1WalletId.d.ts +2 -2
  85. package/dist/wallets/v5r1/WalletV5R1WalletId.js +16 -10
  86. package/package.json +62 -65
  87. package/dist/client/TonClient.spec.d.ts +0 -1
  88. package/dist/client/TonClient.spec.js +0 -59
  89. package/dist/client/TonClient4.spec.d.ts +0 -1
  90. package/dist/client/TonClient4.spec.js +0 -67
  91. package/dist/config/ConfigParser.spec.d.ts +0 -8
  92. package/dist/config/ConfigParser.spec.js +0 -137
  93. package/dist/elector/ElectorContract.spec.d.ts +0 -8
  94. package/dist/elector/ElectorContract.spec.js +0 -104
  95. package/dist/jetton/JettonMaster.spec.d.ts +0 -8
  96. package/dist/jetton/JettonMaster.spec.js +0 -27
  97. package/dist/multisig/MultisigOrder.spec.d.ts +0 -1
  98. package/dist/multisig/MultisigOrder.spec.js +0 -139
  99. package/dist/multisig/MultisigWallet.spec.d.ts +0 -1
  100. package/dist/multisig/MultisigWallet.spec.js +0 -248
  101. package/dist/utils/fees.spec.d.ts +0 -1
  102. package/dist/utils/fees.spec.js +0 -83
  103. package/dist/utils/randomTestKey.js +0 -23
  104. package/dist/wallets/WalletContractV1R1.spec.d.ts +0 -8
  105. package/dist/wallets/WalletContractV1R1.spec.js +0 -67
  106. package/dist/wallets/WalletContractV1R2.spec.d.ts +0 -8
  107. package/dist/wallets/WalletContractV1R2.spec.js +0 -67
  108. package/dist/wallets/WalletContractV1R3.spec.d.ts +0 -8
  109. package/dist/wallets/WalletContractV1R3.spec.js +0 -44
  110. package/dist/wallets/WalletContractV2R1.spec.d.ts +0 -8
  111. package/dist/wallets/WalletContractV2R1.spec.js +0 -67
  112. package/dist/wallets/WalletContractV2R2.spec.d.ts +0 -8
  113. package/dist/wallets/WalletContractV2R2.spec.js +0 -67
  114. package/dist/wallets/WalletContractV3R1.spec.d.ts +0 -8
  115. package/dist/wallets/WalletContractV3R1.spec.js +0 -67
  116. package/dist/wallets/WalletContractV3R2.spec.d.ts +0 -8
  117. package/dist/wallets/WalletContractV3R2.spec.js +0 -67
  118. package/dist/wallets/v4/WalletContractV4.spec.d.ts +0 -8
  119. package/dist/wallets/v4/WalletContractV4.spec.js +0 -157
  120. package/dist/wallets/v4/WalletContractV4Actions.spec.d.ts +0 -1
  121. package/dist/wallets/v4/WalletContractV4Actions.spec.js +0 -74
  122. package/dist/wallets/v5beta/WalletContractV5Beta.spec.d.ts +0 -8
  123. package/dist/wallets/v5beta/WalletContractV5Beta.spec.js +0 -317
  124. package/dist/wallets/v5beta/WalletV5BetaActions.spec.d.ts +0 -1
  125. package/dist/wallets/v5beta/WalletV5BetaActions.spec.js +0 -166
  126. package/dist/wallets/v5beta/WalletV5BetaWalletId.spec.d.ts +0 -1
  127. package/dist/wallets/v5beta/WalletV5BetaWalletId.spec.js +0 -68
  128. package/dist/wallets/v5r1/WalletContractV5R1.spec.d.ts +0 -8
  129. package/dist/wallets/v5r1/WalletContractV5R1.spec.js +0 -340
  130. package/dist/wallets/v5r1/WalletV5R1Actions.spec.d.ts +0 -1
  131. package/dist/wallets/v5r1/WalletV5R1Actions.spec.js +0 -262
  132. package/dist/wallets/v5r1/WalletV5R1WalletId.spec.d.ts +0 -1
  133. package/dist/wallets/v5r1/WalletV5R1WalletId.spec.js +0 -103
@@ -5,7 +5,7 @@
5
5
  * This source code is licensed under the MIT license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
- import { Builder, Cell, MessageRelaxed, OutActionSendMsg } from "@ton/core";
8
+ import { Builder, Cell, MessageRelaxed, OutActionSendMsg, SignatureDomain } from "@ton/core";
9
9
  import { Maybe } from "../../utils/maybe";
10
10
  import { WalletV5BetaPackedCell, WalletV5BetaSendArgs, WalletV5BetaSendArgsExtensionAuth } from "../v5beta/WalletContractV5Beta";
11
11
  import { WalletV3SendArgsSignable, WalletV3SendArgsSigned } from "../WalletContractV3Types";
@@ -17,6 +17,7 @@ export declare function createWalletTransferV1(args: {
17
17
  sendMode: number;
18
18
  message: Maybe<MessageRelaxed>;
19
19
  secretKey: Buffer;
20
+ domain?: SignatureDomain;
20
21
  }): Cell;
21
22
  export declare function createWalletTransferV2(args: {
22
23
  seqno: number;
@@ -24,25 +25,32 @@ export declare function createWalletTransferV2(args: {
24
25
  messages: MessageRelaxed[];
25
26
  secretKey: Buffer;
26
27
  timeout?: Maybe<number>;
28
+ domain?: SignatureDomain;
27
29
  }): Cell;
28
30
  export declare function createWalletTransferV3<T extends WalletV3SendArgsSignable | WalletV3SendArgsSigned>(args: T & {
29
31
  sendMode: number;
30
32
  walletId: number;
33
+ domain?: SignatureDomain;
31
34
  }): T extends WalletV3SendArgsSignable ? Promise<Cell> : Cell;
32
35
  export declare function createWalletTransferV4<T extends WalletV4SendArgs & {
33
36
  action: OutActionWalletV4;
34
37
  }>(args: T & {
35
38
  walletId: number;
39
+ domain?: SignatureDomain;
36
40
  }): T extends WalletV4SendArgsSignable ? Promise<Cell> : Cell;
37
- export declare function createWalletTransferV5Beta<T extends WalletV5BetaSendArgs>(args: T extends WalletV5BetaSendArgsExtensionAuth ? T & {
41
+ export declare function createWalletTransferV5Beta<T extends WalletV5BetaSendArgs>(args: (T extends WalletV5BetaSendArgsExtensionAuth ? T & {
38
42
  actions: (OutActionSendMsg | OutActionExtended)[];
39
43
  } : T & {
40
44
  actions: (OutActionSendMsg | OutActionExtended)[];
41
45
  walletId: (builder: Builder) => void;
46
+ }) & {
47
+ domain?: SignatureDomain;
42
48
  }): WalletV5BetaPackedCell<T>;
43
- export declare function createWalletTransferV5R1<T extends WalletV5R1SendArgs>(args: T extends Wallet5VR1SendArgsExtensionAuth ? T & {
49
+ export declare function createWalletTransferV5R1<T extends WalletV5R1SendArgs>(args: (T extends Wallet5VR1SendArgsExtensionAuth ? T & {
44
50
  actions: (OutActionSendMsg | OutActionExtended)[];
45
51
  } : T & {
46
52
  actions: (OutActionSendMsg | OutActionExtended)[];
47
53
  walletId: (builder: Builder) => void;
54
+ }) & {
55
+ domain?: SignatureDomain;
48
56
  }): WalletV5R1PackedCell<T>;
@@ -14,7 +14,6 @@ exports.createWalletTransferV4 = createWalletTransferV4;
14
14
  exports.createWalletTransferV5Beta = createWalletTransferV5Beta;
15
15
  exports.createWalletTransferV5R1 = createWalletTransferV5R1;
16
16
  const core_1 = require("@ton/core");
17
- const crypto_1 = require("@ton/crypto");
18
17
  const WalletContractV5Beta_1 = require("../v5beta/WalletContractV5Beta");
19
18
  const WalletV5BetaActions_1 = require("../v5beta/WalletV5BetaActions");
20
19
  const singer_1 = require("./singer");
@@ -37,14 +36,17 @@ function packSignatureToTail(signature, signingMessage) {
37
36
  }
38
37
  function createWalletTransferV1(args) {
39
38
  // Create message
40
- let signingMessage = (0, core_1.beginCell)()
41
- .storeUint(args.seqno, 32);
39
+ let signingMessage = (0, core_1.beginCell)().storeUint(args.seqno, 32);
42
40
  if (args.message) {
43
41
  signingMessage.storeUint(args.sendMode, 8);
44
42
  signingMessage.storeRef((0, core_1.beginCell)().store((0, core_1.storeMessageRelaxed)(args.message)));
45
43
  }
46
44
  // Sign message
47
- let signature = (0, crypto_1.sign)(signingMessage.endCell().hash(), args.secretKey);
45
+ let signature = (0, core_1.domainSign)({
46
+ data: signingMessage.endCell().hash(),
47
+ secretKey: args.secretKey,
48
+ domain: args.domain,
49
+ });
48
50
  // Body
49
51
  const body = (0, core_1.beginCell)()
50
52
  .storeBuffer(signature)
@@ -58,8 +60,7 @@ function createWalletTransferV2(args) {
58
60
  throw Error("Maximum number of messages in a single transfer is 4");
59
61
  }
60
62
  // Create message
61
- let signingMessage = (0, core_1.beginCell)()
62
- .storeUint(args.seqno, 32);
63
+ let signingMessage = (0, core_1.beginCell)().storeUint(args.seqno, 32);
63
64
  if (args.seqno === 0) {
64
65
  for (let i = 0; i < 32; i++) {
65
66
  signingMessage.storeBit(1);
@@ -73,7 +74,11 @@ function createWalletTransferV2(args) {
73
74
  signingMessage.storeRef((0, core_1.beginCell)().store((0, core_1.storeMessageRelaxed)(m)));
74
75
  }
75
76
  // Sign message
76
- let signature = (0, crypto_1.sign)(signingMessage.endCell().hash(), args.secretKey);
77
+ let signature = (0, core_1.domainSign)({
78
+ data: signingMessage.endCell().hash(),
79
+ secretKey: args.secretKey,
80
+ domain: args.domain,
81
+ });
77
82
  // Body
78
83
  const body = (0, core_1.beginCell)()
79
84
  .storeBuffer(signature)
@@ -87,8 +92,7 @@ function createWalletTransferV3(args) {
87
92
  throw Error("Maximum number of messages in a single transfer is 4");
88
93
  }
89
94
  // Create message to sign
90
- let signingMessage = (0, core_1.beginCell)()
91
- .storeUint(args.walletId, 32);
95
+ let signingMessage = (0, core_1.beginCell)().storeUint(args.walletId, 32);
92
96
  if (args.seqno === 0) {
93
97
  for (let i = 0; i < 32; i++) {
94
98
  signingMessage.storeBit(1);
@@ -105,8 +109,7 @@ function createWalletTransferV3(args) {
105
109
  return (0, singer_1.signPayload)(args, signingMessage, packSignatureToFront);
106
110
  }
107
111
  function createWalletTransferV4(args) {
108
- let signingMessage = (0, core_1.beginCell)()
109
- .storeUint(args.walletId, 32);
112
+ let signingMessage = (0, core_1.beginCell)().storeUint(args.walletId, 32);
110
113
  if (args.seqno === 0) {
111
114
  for (let i = 0; i < 32; i++) {
112
115
  signingMessage.storeBit(1);
@@ -124,14 +127,14 @@ function createWalletTransferV5Beta(args) {
124
127
  if (args.actions.length > 255) {
125
128
  throw Error("Maximum number of OutActions in a single request is 255");
126
129
  }
127
- if (args.authType === 'extension') {
130
+ if (args.authType === "extension") {
128
131
  return (0, core_1.beginCell)()
129
132
  .storeUint(WalletContractV5Beta_1.WalletContractV5Beta.OpCodes.auth_extension, 32)
130
133
  .store((0, WalletV5BetaActions_1.storeOutListExtendedV5Beta)(args.actions))
131
134
  .endCell();
132
135
  }
133
136
  const signingMessage = (0, core_1.beginCell)()
134
- .storeUint(args.authType === 'internal'
137
+ .storeUint(args.authType === "internal"
135
138
  ? WalletContractV5Beta_1.WalletContractV5Beta.OpCodes.auth_signed_internal
136
139
  : WalletContractV5Beta_1.WalletContractV5Beta.OpCodes.auth_signed_external, 32)
137
140
  .store(args.walletId);
@@ -154,7 +157,7 @@ function createWalletTransferV5R1(args) {
154
157
  throw Error("Maximum number of OutActions in a single request is 255");
155
158
  }
156
159
  args = { ...args };
157
- if (args.authType === 'extension') {
160
+ if (args.authType === "extension") {
158
161
  return (0, core_1.beginCell)()
159
162
  .storeUint(WalletContractV5R1_1.WalletContractV5R1.OpCodes.auth_extension, 32)
160
163
  .storeUint(args.queryId ?? 0, 64)
@@ -163,7 +166,7 @@ function createWalletTransferV5R1(args) {
163
166
  }
164
167
  args.actions = (0, WalletV5R1Actions_1.patchV5R1ActionsSendMode)(args.actions, args.authType);
165
168
  const signingMessage = (0, core_1.beginCell)()
166
- .storeUint(args.authType === 'internal'
169
+ .storeUint(args.authType === "internal"
167
170
  ? WalletContractV5R1_1.WalletContractV5R1.OpCodes.auth_signed_internal
168
171
  : WalletContractV5R1_1.WalletContractV5R1.OpCodes.auth_signed_external, 32)
169
172
  .store(args.walletId);
@@ -1,6 +1,7 @@
1
- import { Builder, Cell } from "@ton/core";
1
+ import { Builder, Cell, SignatureDomain } from "@ton/core";
2
2
  export type SendArgsSigned = {
3
3
  secretKey: Buffer;
4
+ domain?: SignatureDomain;
4
5
  };
5
6
  export type SendArgsSignable = {
6
7
  signer: (message: Cell) => Promise<Buffer>;
@@ -1,20 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.signPayload = signPayload;
4
- const crypto_1 = require("@ton/crypto");
4
+ const core_1 = require("@ton/core");
5
5
  function signPayload(args, signingMessage, packMessage) {
6
- if ('secretKey' in args) {
6
+ if ("secretKey" in args) {
7
7
  /**
8
8
  * Client provider an secretKey to sign transaction.
9
9
  */
10
- return packMessage((0, crypto_1.sign)(signingMessage.endCell().hash(), args.secretKey), signingMessage);
10
+ const signature = (0, core_1.domainSign)({
11
+ data: signingMessage.endCell().hash(),
12
+ secretKey: args.secretKey,
13
+ domain: args.domain,
14
+ });
15
+ return packMessage(signature, signingMessage);
11
16
  }
12
17
  else {
13
18
  /**
14
19
  * Client use external storage for secretKey.
15
20
  * In this case lib could create a request to external resource to sign transaction.
16
21
  */
17
- return args.signer(signingMessage.endCell())
18
- .then(signature => packMessage(signature, signingMessage));
22
+ return args
23
+ .signer(signingMessage.endCell())
24
+ .then((signature) => packMessage(signature, signingMessage));
19
25
  }
20
26
  }
@@ -0,0 +1,59 @@
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, Cell, Contract, ContractProvider, MessageRelaxed, Sender, SendMode, SignatureDomain } from "@ton/core";
9
+ import { Maybe } from "../../utils/maybe";
10
+ export declare class WalletContractV1R1 implements Contract {
11
+ static create(args: {
12
+ workchain: number;
13
+ publicKey: Buffer;
14
+ domain?: SignatureDomain;
15
+ }): WalletContractV1R1;
16
+ readonly workchain: number;
17
+ readonly publicKey: Buffer;
18
+ readonly address: Address;
19
+ readonly init: {
20
+ data: Cell;
21
+ code: Cell;
22
+ };
23
+ domain?: SignatureDomain;
24
+ constructor(workchain: number, publicKey: Buffer, domain?: SignatureDomain);
25
+ /**
26
+ * Get Wallet Balance
27
+ */
28
+ getBalance(provider: ContractProvider): Promise<bigint>;
29
+ /**
30
+ * Get Wallet Seqno
31
+ */
32
+ getSeqno(provider: ContractProvider): Promise<number>;
33
+ /**
34
+ * Send signed transfer
35
+ */
36
+ send(provider: ContractProvider, message: Cell): Promise<void>;
37
+ /**
38
+ * Sign and send transfer
39
+ */
40
+ sendTransfer(provider: ContractProvider, args: {
41
+ seqno: number;
42
+ secretKey: Buffer;
43
+ message?: Maybe<MessageRelaxed>;
44
+ sendMode?: Maybe<SendMode>;
45
+ }): Promise<void>;
46
+ /**
47
+ * Create signed transfer
48
+ */
49
+ createTransfer(args: {
50
+ seqno: number;
51
+ secretKey: Buffer;
52
+ message?: Maybe<MessageRelaxed>;
53
+ sendMode?: Maybe<SendMode>;
54
+ }): Cell;
55
+ /**
56
+ * Create sender
57
+ */
58
+ sender(provider: ContractProvider, secretKey: Buffer): Sender;
59
+ }
@@ -0,0 +1,103 @@
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.WalletContractV1R1 = void 0;
11
+ const core_1 = require("@ton/core");
12
+ const createWalletTransfer_1 = require("../signing/createWalletTransfer");
13
+ class WalletContractV1R1 {
14
+ static create(args) {
15
+ return new WalletContractV1R1(args.workchain, args.publicKey, args.domain);
16
+ }
17
+ constructor(workchain, publicKey, domain) {
18
+ this.workchain = workchain;
19
+ this.publicKey = publicKey;
20
+ this.domain = domain;
21
+ // Build initial code and data
22
+ let code = core_1.Cell.fromBoc(Buffer.from("te6cckEBAQEARAAAhP8AIN2k8mCBAgDXGCDXCx/tRNDTH9P/0VESuvKhIvkBVBBE+RDyovgAAdMfMSDXSpbTB9QC+wDe0aTIyx/L/8ntVEH98Ik=", "base64"))[0];
23
+ let data = (0, core_1.beginCell)()
24
+ .storeUint(0, 32) // Seqno
25
+ .storeBuffer(publicKey)
26
+ .endCell();
27
+ this.init = { code, data };
28
+ this.address = (0, core_1.contractAddress)(workchain, { code, data });
29
+ }
30
+ /**
31
+ * Get Wallet Balance
32
+ */
33
+ async getBalance(provider) {
34
+ let state = await provider.getState();
35
+ return state.balance;
36
+ }
37
+ /**
38
+ * Get Wallet Seqno
39
+ */
40
+ async getSeqno(provider) {
41
+ let state = await provider.getState();
42
+ if (state.state.type === "active") {
43
+ return core_1.Cell.fromBoc(state.state.data)[0].beginParse().loadUint(32);
44
+ }
45
+ else {
46
+ return 0;
47
+ }
48
+ }
49
+ /**
50
+ * Send signed transfer
51
+ */
52
+ async send(provider, message) {
53
+ await provider.external(message);
54
+ }
55
+ /**
56
+ * Sign and send transfer
57
+ */
58
+ async sendTransfer(provider, args) {
59
+ let transfer = this.createTransfer(args);
60
+ await this.send(provider, transfer);
61
+ }
62
+ /**
63
+ * Create signed transfer
64
+ */
65
+ createTransfer(args) {
66
+ let sendMode = core_1.SendMode.PAY_GAS_SEPARATELY;
67
+ if (args.sendMode !== null && args.sendMode !== undefined) {
68
+ sendMode = args.sendMode;
69
+ }
70
+ return (0, createWalletTransfer_1.createWalletTransferV1)({
71
+ seqno: args.seqno,
72
+ sendMode,
73
+ secretKey: args.secretKey,
74
+ message: args.message,
75
+ domain: this.domain,
76
+ });
77
+ }
78
+ /**
79
+ * Create sender
80
+ */
81
+ sender(provider, secretKey) {
82
+ return {
83
+ send: async (args) => {
84
+ let seqno = await this.getSeqno(provider);
85
+ let transfer = this.createTransfer({
86
+ seqno,
87
+ secretKey,
88
+ sendMode: args.sendMode,
89
+ message: (0, core_1.internal)({
90
+ to: args.to,
91
+ value: args.value,
92
+ extracurrency: args.extracurrency,
93
+ init: args.init,
94
+ body: args.body,
95
+ bounce: args.bounce,
96
+ }),
97
+ });
98
+ await this.send(provider, transfer);
99
+ },
100
+ };
101
+ }
102
+ }
103
+ exports.WalletContractV1R1 = WalletContractV1R1;
@@ -0,0 +1,59 @@
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, Cell, Contract, ContractProvider, MessageRelaxed, Sender, SendMode, SignatureDomain } from "@ton/core";
9
+ import { Maybe } from "../../utils/maybe";
10
+ export declare class WalletContractV1R2 implements Contract {
11
+ static create(args: {
12
+ workchain: number;
13
+ publicKey: Buffer;
14
+ domain?: SignatureDomain;
15
+ }): WalletContractV1R2;
16
+ readonly workchain: number;
17
+ readonly publicKey: Buffer;
18
+ readonly address: Address;
19
+ readonly init: {
20
+ data: Cell;
21
+ code: Cell;
22
+ };
23
+ domain?: SignatureDomain;
24
+ constructor(workchain: number, publicKey: Buffer, domain?: SignatureDomain);
25
+ /**
26
+ * Get Wallet Balance
27
+ */
28
+ getBalance(provider: ContractProvider): Promise<bigint>;
29
+ /**
30
+ * Get Wallet Seqno
31
+ */
32
+ getSeqno(provider: ContractProvider): Promise<number>;
33
+ /**
34
+ * Send signed transfer
35
+ */
36
+ send(provider: ContractProvider, message: Cell): Promise<void>;
37
+ /**
38
+ * Sign and send transfer
39
+ */
40
+ sendTransfer(provider: ContractProvider, args: {
41
+ seqno: number;
42
+ secretKey: Buffer;
43
+ message?: Maybe<MessageRelaxed>;
44
+ sendMode?: Maybe<SendMode>;
45
+ }): Promise<void>;
46
+ /**
47
+ * Create signed transfer
48
+ */
49
+ createTransfer(args: {
50
+ seqno: number;
51
+ secretKey: Buffer;
52
+ message?: Maybe<MessageRelaxed>;
53
+ sendMode?: Maybe<SendMode>;
54
+ }): Cell;
55
+ /**
56
+ * Create sender
57
+ */
58
+ sender(provider: ContractProvider, secretKey: Buffer): Sender;
59
+ }
@@ -0,0 +1,104 @@
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.WalletContractV1R2 = void 0;
11
+ const core_1 = require("@ton/core");
12
+ const createWalletTransfer_1 = require("../signing/createWalletTransfer");
13
+ class WalletContractV1R2 {
14
+ static create(args) {
15
+ return new WalletContractV1R2(args.workchain, args.publicKey, args.domain);
16
+ }
17
+ constructor(workchain, publicKey, domain) {
18
+ this.workchain = workchain;
19
+ this.publicKey = publicKey;
20
+ this.domain = domain;
21
+ // Build initial code and data
22
+ let code = core_1.Cell.fromBoc(Buffer.from("te6cckEBAQEAUwAAov8AIN0gggFMl7qXMO1E0NcLH+Ck8mCBAgDXGCDXCx/tRNDTH9P/0VESuvKhIvkBVBBE+RDyovgAAdMfMSDXSpbTB9QC+wDe0aTIyx/L/8ntVNDieG8=", "base64"))[0];
23
+ let data = (0, core_1.beginCell)()
24
+ .storeUint(0, 32) // Seqno
25
+ .storeBuffer(publicKey)
26
+ .endCell();
27
+ this.init = { code, data };
28
+ this.address = (0, core_1.contractAddress)(workchain, { code, data });
29
+ }
30
+ /**
31
+ * Get Wallet Balance
32
+ */
33
+ async getBalance(provider) {
34
+ let state = await provider.getState();
35
+ return state.balance;
36
+ }
37
+ /**
38
+ * Get Wallet Seqno
39
+ */
40
+ async getSeqno(provider) {
41
+ let state = await provider.getState();
42
+ if (state.state.type === "active") {
43
+ let res = await provider.get("seqno", []);
44
+ return res.stack.readNumber();
45
+ }
46
+ else {
47
+ return 0;
48
+ }
49
+ }
50
+ /**
51
+ * Send signed transfer
52
+ */
53
+ async send(provider, message) {
54
+ await provider.external(message);
55
+ }
56
+ /**
57
+ * Sign and send transfer
58
+ */
59
+ async sendTransfer(provider, args) {
60
+ let transfer = this.createTransfer(args);
61
+ await this.send(provider, transfer);
62
+ }
63
+ /**
64
+ * Create signed transfer
65
+ */
66
+ createTransfer(args) {
67
+ let sendMode = core_1.SendMode.PAY_GAS_SEPARATELY;
68
+ if (args.sendMode !== null && args.sendMode !== undefined) {
69
+ sendMode = args.sendMode;
70
+ }
71
+ return (0, createWalletTransfer_1.createWalletTransferV1)({
72
+ seqno: args.seqno,
73
+ sendMode,
74
+ secretKey: args.secretKey,
75
+ message: args.message,
76
+ domain: this.domain,
77
+ });
78
+ }
79
+ /**
80
+ * Create sender
81
+ */
82
+ sender(provider, secretKey) {
83
+ return {
84
+ send: async (args) => {
85
+ let seqno = await this.getSeqno(provider);
86
+ let transfer = this.createTransfer({
87
+ seqno,
88
+ secretKey,
89
+ sendMode: args.sendMode,
90
+ message: (0, core_1.internal)({
91
+ to: args.to,
92
+ value: args.value,
93
+ extracurrency: args.extracurrency,
94
+ init: args.init,
95
+ body: args.body,
96
+ bounce: args.bounce,
97
+ }),
98
+ });
99
+ await this.send(provider, transfer);
100
+ },
101
+ };
102
+ }
103
+ }
104
+ exports.WalletContractV1R2 = WalletContractV1R2;
@@ -0,0 +1,59 @@
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, Cell, Contract, ContractProvider, MessageRelaxed, Sender, SendMode, SignatureDomain } from "@ton/core";
9
+ import { Maybe } from "../../utils/maybe";
10
+ export declare class WalletContractV1R3 implements Contract {
11
+ static create(args: {
12
+ workchain: number;
13
+ publicKey: Buffer;
14
+ domain?: SignatureDomain;
15
+ }): WalletContractV1R3;
16
+ readonly workchain: number;
17
+ readonly publicKey: Buffer;
18
+ readonly address: Address;
19
+ readonly init: {
20
+ data: Cell;
21
+ code: Cell;
22
+ };
23
+ domain?: SignatureDomain;
24
+ constructor(workchain: number, publicKey: Buffer, domain?: SignatureDomain);
25
+ /**
26
+ * Get Wallet Balance
27
+ */
28
+ getBalance(provider: ContractProvider): Promise<bigint>;
29
+ /**
30
+ * Get Wallet Seqno
31
+ */
32
+ getSeqno(provider: ContractProvider): Promise<number>;
33
+ /**
34
+ * Send signed transfer
35
+ */
36
+ send(executor: ContractProvider, message: Cell): Promise<void>;
37
+ /**
38
+ * Sign and send transfer
39
+ */
40
+ sendTransfer(provider: ContractProvider, args: {
41
+ seqno: number;
42
+ secretKey: Buffer;
43
+ message?: Maybe<MessageRelaxed>;
44
+ sendMode?: Maybe<SendMode>;
45
+ }): Promise<void>;
46
+ /**
47
+ * Create signed transfer
48
+ */
49
+ createTransfer(args: {
50
+ seqno: number;
51
+ secretKey: Buffer;
52
+ message?: Maybe<MessageRelaxed>;
53
+ sendMode?: Maybe<SendMode>;
54
+ }): Cell;
55
+ /**
56
+ * Create sender
57
+ */
58
+ sender(provider: ContractProvider, secretKey: Buffer): Sender;
59
+ }
@@ -0,0 +1,103 @@
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.WalletContractV1R3 = void 0;
11
+ const core_1 = require("@ton/core");
12
+ const createWalletTransfer_1 = require("../signing/createWalletTransfer");
13
+ class WalletContractV1R3 {
14
+ static create(args) {
15
+ return new WalletContractV1R3(args.workchain, args.publicKey, args.domain);
16
+ }
17
+ constructor(workchain, publicKey, domain) {
18
+ this.workchain = workchain;
19
+ this.publicKey = publicKey;
20
+ this.domain = domain;
21
+ // Build initial code and data
22
+ let code = core_1.Cell.fromBoc(Buffer.from("te6cckEBAQEAXwAAuv8AIN0gggFMl7ohggEznLqxnHGw7UTQ0x/XC//jBOCk8mCBAgDXGCDXCx/tRNDTH9P/0VESuvKhIvkBVBBE+RDyovgAAdMfMSDXSpbTB9QC+wDe0aTIyx/L/8ntVLW4bkI=", "base64"))[0];
23
+ let data = (0, core_1.beginCell)()
24
+ .storeUint(0, 32) // Seqno
25
+ .storeBuffer(publicKey)
26
+ .endCell();
27
+ this.init = { code, data };
28
+ this.address = (0, core_1.contractAddress)(workchain, { code, data });
29
+ }
30
+ /**
31
+ * Get Wallet Balance
32
+ */
33
+ async getBalance(provider) {
34
+ let state = await provider.getState();
35
+ return state.balance;
36
+ }
37
+ /**
38
+ * Get Wallet Seqno
39
+ */
40
+ async getSeqno(provider) {
41
+ let state = await provider.getState();
42
+ if (state.state.type === "active") {
43
+ let res = await provider.get("seqno", []);
44
+ return res.stack.readNumber();
45
+ }
46
+ else {
47
+ return 0;
48
+ }
49
+ }
50
+ /**
51
+ * Send signed transfer
52
+ */
53
+ async send(executor, message) {
54
+ await executor.external(message);
55
+ }
56
+ /**
57
+ * Sign and send transfer
58
+ */
59
+ async sendTransfer(provider, args) {
60
+ let transfer = this.createTransfer(args);
61
+ await this.send(provider, transfer);
62
+ }
63
+ /**
64
+ * Create signed transfer
65
+ */
66
+ createTransfer(args) {
67
+ let sendMode = core_1.SendMode.PAY_GAS_SEPARATELY;
68
+ if (args.sendMode !== null && args.sendMode !== undefined) {
69
+ sendMode = args.sendMode;
70
+ }
71
+ return (0, createWalletTransfer_1.createWalletTransferV1)({
72
+ seqno: args.seqno,
73
+ sendMode: sendMode,
74
+ secretKey: args.secretKey,
75
+ message: args.message,
76
+ domain: this.domain,
77
+ });
78
+ }
79
+ /**
80
+ * Create sender
81
+ */
82
+ sender(provider, secretKey) {
83
+ return {
84
+ send: async (args) => {
85
+ let seqno = await this.getSeqno(provider);
86
+ let transfer = this.createTransfer({
87
+ seqno,
88
+ secretKey,
89
+ sendMode: args.sendMode,
90
+ message: (0, core_1.internal)({
91
+ to: args.to,
92
+ value: args.value,
93
+ init: args.init,
94
+ body: args.body,
95
+ bounce: args.bounce,
96
+ }),
97
+ });
98
+ await this.send(provider, transfer);
99
+ },
100
+ };
101
+ }
102
+ }
103
+ exports.WalletContractV1R3 = WalletContractV1R3;