@ton-wallet/create 14.0.6 → 14.0.7

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/dist/client/TonClient.d.ts +228 -0
  2. package/dist/client/TonClient.js +441 -0
  3. package/dist/client/TonClient.spec.d.ts +1 -0
  4. package/dist/client/TonClient.spec.js +45 -0
  5. package/dist/client/TonClient4.d.ts +1130 -0
  6. package/dist/client/TonClient4.js +687 -0
  7. package/dist/client/TonClient4.spec.d.ts +1 -0
  8. package/dist/client/TonClient4.spec.js +42 -0
  9. package/dist/client/api/HttpApi.d.ts +764 -0
  10. package/dist/client/api/HttpApi.js +306 -0
  11. package/dist/client/api/TonCache.d.ts +16 -0
  12. package/dist/client/api/TonCache.js +33 -0
  13. package/dist/config/ConfigParser.d.ts +622 -0
  14. package/dist/config/ConfigParser.js +711 -0
  15. package/dist/config/ConfigParser.spec.d.ts +8 -0
  16. package/dist/config/ConfigParser.spec.js +97 -0
  17. package/dist/elector/ElectorContract.d.ts +51 -0
  18. package/dist/elector/ElectorContract.js +192 -0
  19. package/dist/elector/ElectorContract.spec.d.ts +8 -0
  20. package/dist/elector/ElectorContract.spec.js +104 -0
  21. package/dist/index.d.ts +32 -0
  22. package/dist/index.js +129 -0
  23. package/dist/jetton/JettonMaster.d.ts +21 -0
  24. package/dist/jetton/JettonMaster.js +39 -0
  25. package/dist/jetton/JettonMaster.spec.d.ts +8 -0
  26. package/dist/jetton/JettonMaster.spec.js +27 -0
  27. package/dist/jetton/JettonWallet.d.ts +14 -0
  28. package/dist/jetton/JettonWallet.js +27 -0
  29. package/dist/multisig/MultisigOrder.d.ts +17 -0
  30. package/dist/multisig/MultisigOrder.js +73 -0
  31. package/dist/multisig/MultisigOrder.spec.d.ts +1 -0
  32. package/dist/multisig/MultisigOrder.spec.js +139 -0
  33. package/dist/multisig/MultisigOrderBuilder.d.ts +13 -0
  34. package/dist/multisig/MultisigOrderBuilder.js +37 -0
  35. package/dist/multisig/MultisigWallet.d.ts +27 -0
  36. package/dist/multisig/MultisigWallet.js +134 -0
  37. package/dist/multisig/MultisigWallet.spec.d.ts +1 -0
  38. package/dist/multisig/MultisigWallet.spec.js +248 -0
  39. package/dist/utils/createTestClient.d.ts +9 -0
  40. package/dist/utils/createTestClient.js +18 -0
  41. package/dist/utils/createTestClient4.d.ts +9 -0
  42. package/dist/utils/createTestClient4.js +15 -0
  43. package/dist/utils/fees.d.ts +25 -0
  44. package/dist/utils/fees.js +105 -0
  45. package/dist/utils/fees.spec.d.ts +1 -0
  46. package/dist/utils/fees.spec.js +83 -0
  47. package/dist/utils/maybe.d.ts +8 -0
  48. package/dist/utils/maybe.js +9 -0
  49. package/dist/utils/randomTestKey.d.ts +8 -0
  50. package/dist/utils/randomTestKey.js +24 -0
  51. package/dist/utils/time.d.ts +15 -0
  52. package/dist/utils/time.js +63 -0
  53. package/dist/utils/toUrlSafe.d.ts +8 -0
  54. package/dist/utils/toUrlSafe.js +23 -0
  55. package/dist/wallets/WalletContractV1R1.d.ts +58 -0
  56. package/dist/wallets/WalletContractV1R1.js +100 -0
  57. package/dist/wallets/WalletContractV1R1.spec.d.ts +8 -0
  58. package/dist/wallets/WalletContractV1R1.spec.js +44 -0
  59. package/dist/wallets/WalletContractV1R2.d.ts +58 -0
  60. package/dist/wallets/WalletContractV1R2.js +101 -0
  61. package/dist/wallets/WalletContractV1R2.spec.d.ts +8 -0
  62. package/dist/wallets/WalletContractV1R2.spec.js +44 -0
  63. package/dist/wallets/WalletContractV1R3.d.ts +58 -0
  64. package/dist/wallets/WalletContractV1R3.js +101 -0
  65. package/dist/wallets/WalletContractV1R3.spec.d.ts +8 -0
  66. package/dist/wallets/WalletContractV1R3.spec.js +44 -0
  67. package/dist/wallets/WalletContractV2R1.d.ts +60 -0
  68. package/dist/wallets/WalletContractV2R1.js +102 -0
  69. package/dist/wallets/WalletContractV2R1.spec.d.ts +8 -0
  70. package/dist/wallets/WalletContractV2R1.spec.js +44 -0
  71. package/dist/wallets/WalletContractV2R2.d.ts +60 -0
  72. package/dist/wallets/WalletContractV2R2.js +102 -0
  73. package/dist/wallets/WalletContractV2R2.spec.d.ts +8 -0
  74. package/dist/wallets/WalletContractV2R2.spec.js +44 -0
  75. package/dist/wallets/WalletContractV3R1.d.ts +57 -0
  76. package/dist/wallets/WalletContractV3R1.js +104 -0
  77. package/dist/wallets/WalletContractV3R1.spec.d.ts +8 -0
  78. package/dist/wallets/WalletContractV3R1.spec.js +44 -0
  79. package/dist/wallets/WalletContractV3R2.d.ts +57 -0
  80. package/dist/wallets/WalletContractV3R2.js +104 -0
  81. package/dist/wallets/WalletContractV3R2.spec.d.ts +8 -0
  82. package/dist/wallets/WalletContractV3R2.spec.js +44 -0
  83. package/dist/wallets/WalletContractV3Types.d.ts +12 -0
  84. package/dist/wallets/WalletContractV3Types.js +2 -0
  85. package/dist/wallets/WalletContractV4.d.ts +65 -0
  86. package/dist/wallets/WalletContractV4.js +105 -0
  87. package/dist/wallets/WalletContractV4.spec.d.ts +8 -0
  88. package/dist/wallets/WalletContractV4.spec.js +48 -0
  89. package/dist/wallets/WalletContractV5Beta.d.ts +3 -0
  90. package/dist/wallets/WalletContractV5Beta.js +19 -0
  91. package/dist/wallets/WalletContractV5R1.d.ts +3 -0
  92. package/dist/wallets/WalletContractV5R1.js +19 -0
  93. package/dist/wallets/signing/createWalletTransfer.d.ts +48 -0
  94. package/dist/wallets/signing/createWalletTransfer.js +190 -0
  95. package/dist/wallets/signing/singer.d.ts +9 -0
  96. package/dist/wallets/signing/singer.js +21 -0
  97. package/dist/wallets/v5beta/WalletContractV5Beta.d.ts +130 -0
  98. package/dist/wallets/v5beta/WalletContractV5Beta.js +211 -0
  99. package/dist/wallets/v5beta/WalletContractV5Beta.spec.d.ts +8 -0
  100. package/dist/wallets/v5beta/WalletContractV5Beta.spec.js +298 -0
  101. package/dist/wallets/v5beta/WalletV5BetaActions.d.ts +6 -0
  102. package/dist/wallets/v5beta/WalletV5BetaActions.js +92 -0
  103. package/dist/wallets/v5beta/WalletV5BetaActions.spec.d.ts +1 -0
  104. package/dist/wallets/v5beta/WalletV5BetaActions.spec.js +166 -0
  105. package/dist/wallets/v5beta/WalletV5BetaWalletId.d.ts +13 -0
  106. package/dist/wallets/v5beta/WalletV5BetaWalletId.js +31 -0
  107. package/dist/wallets/v5beta/WalletV5BetaWalletId.spec.d.ts +1 -0
  108. package/dist/wallets/v5beta/WalletV5BetaWalletId.spec.js +68 -0
  109. package/dist/wallets/v5beta/WalletV5OutActions.d.ts +17 -0
  110. package/dist/wallets/v5beta/WalletV5OutActions.js +11 -0
  111. package/dist/wallets/v5r1/WalletContractV5R1.d.ts +125 -0
  112. package/dist/wallets/v5r1/WalletContractV5R1.js +207 -0
  113. package/dist/wallets/v5r1/WalletContractV5R1.spec.d.ts +8 -0
  114. package/dist/wallets/v5r1/WalletContractV5R1.spec.js +321 -0
  115. package/dist/wallets/v5r1/WalletV5R1Actions.d.ts +12 -0
  116. package/dist/wallets/v5r1/WalletV5R1Actions.js +128 -0
  117. package/dist/wallets/v5r1/WalletV5R1Actions.spec.d.ts +1 -0
  118. package/dist/wallets/v5r1/WalletV5R1Actions.spec.js +262 -0
  119. package/dist/wallets/v5r1/WalletV5R1WalletId.d.ts +47 -0
  120. package/dist/wallets/v5r1/WalletV5R1WalletId.js +69 -0
  121. package/dist/wallets/v5r1/WalletV5R1WalletId.spec.d.ts +1 -0
  122. package/dist/wallets/v5r1/WalletV5R1WalletId.spec.js +72 -0
  123. package/package.json +1 -1
@@ -0,0 +1,190 @@
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.createWalletTransferV5R1 = exports.createWalletTransferV5Beta = exports.createWalletTransferV4 = exports.createWalletTransferV3 = exports.createWalletTransferV2 = exports.createWalletTransferV1 = void 0;
11
+ const core_1 = require("@ton/core");
12
+ const crypto_1 = require("@ton/crypto");
13
+ const WalletContractV5Beta_1 = require("../v5beta/WalletContractV5Beta");
14
+ const WalletV5BetaActions_1 = require("../v5beta/WalletV5BetaActions");
15
+ const singer_1 = require("./singer");
16
+ const WalletContractV5R1_1 = require("../v5r1/WalletContractV5R1");
17
+ const WalletV5R1Actions_1 = require("../v5r1/WalletV5R1Actions");
18
+ function packSignatureToFront(signature, signingMessage) {
19
+ const body = (0, core_1.beginCell)()
20
+ .storeBuffer(signature)
21
+ .storeBuilder(signingMessage)
22
+ .endCell();
23
+ return body;
24
+ }
25
+ function packSignatureToTail(signature, signingMessage) {
26
+ const body = (0, core_1.beginCell)()
27
+ .storeBuilder(signingMessage)
28
+ .storeBuffer(signature)
29
+ .endCell();
30
+ return body;
31
+ }
32
+ function createWalletTransferV1(args) {
33
+ // Create message
34
+ let signingMessage = (0, core_1.beginCell)()
35
+ .storeUint(args.seqno, 32);
36
+ if (args.message) {
37
+ signingMessage.storeUint(args.sendMode, 8);
38
+ signingMessage.storeRef((0, core_1.beginCell)().store((0, core_1.storeMessageRelaxed)(args.message)));
39
+ }
40
+ // Sign message
41
+ let signature = (0, crypto_1.sign)(signingMessage.endCell().hash(), args.secretKey);
42
+ // Body
43
+ const body = (0, core_1.beginCell)()
44
+ .storeBuffer(signature)
45
+ .storeBuilder(signingMessage)
46
+ .endCell();
47
+ return body;
48
+ }
49
+ exports.createWalletTransferV1 = createWalletTransferV1;
50
+ function createWalletTransferV2(args) {
51
+ // Check number of messages
52
+ if (args.messages.length > 4) {
53
+ throw Error("Maximum number of messages in a single transfer is 4");
54
+ }
55
+ // Create message
56
+ let signingMessage = (0, core_1.beginCell)()
57
+ .storeUint(args.seqno, 32);
58
+ if (args.seqno === 0) {
59
+ for (let i = 0; i < 32; i++) {
60
+ signingMessage.storeBit(1);
61
+ }
62
+ }
63
+ else {
64
+ signingMessage.storeUint(args.timeout || Math.floor(Date.now() / 1e3) + 60, 32); // Default timeout: 60 seconds
65
+ }
66
+ for (let m of args.messages) {
67
+ signingMessage.storeUint(args.sendMode, 8);
68
+ signingMessage.storeRef((0, core_1.beginCell)().store((0, core_1.storeMessageRelaxed)(m)));
69
+ }
70
+ // Sign message
71
+ let signature = (0, crypto_1.sign)(signingMessage.endCell().hash(), args.secretKey);
72
+ // Body
73
+ const body = (0, core_1.beginCell)()
74
+ .storeBuffer(signature)
75
+ .storeBuilder(signingMessage)
76
+ .endCell();
77
+ return body;
78
+ }
79
+ exports.createWalletTransferV2 = createWalletTransferV2;
80
+ function createWalletTransferV3(args) {
81
+ // Check number of messages
82
+ if (args.messages.length > 4) {
83
+ throw Error("Maximum number of messages in a single transfer is 4");
84
+ }
85
+ // Create message to sign
86
+ let signingMessage = (0, core_1.beginCell)()
87
+ .storeUint(args.walletId, 32);
88
+ if (args.seqno === 0) {
89
+ for (let i = 0; i < 32; i++) {
90
+ signingMessage.storeBit(1);
91
+ }
92
+ }
93
+ else {
94
+ signingMessage.storeUint(args.timeout || Math.floor(Date.now() / 1e3) + 60, 32); // Default timeout: 60 seconds
95
+ }
96
+ signingMessage.storeUint(args.seqno, 32);
97
+ for (let m of args.messages) {
98
+ signingMessage.storeUint(args.sendMode, 8);
99
+ signingMessage.storeRef((0, core_1.beginCell)().store((0, core_1.storeMessageRelaxed)(m)));
100
+ }
101
+ return (0, singer_1.signPayload)(args, signingMessage, packSignatureToFront);
102
+ }
103
+ exports.createWalletTransferV3 = createWalletTransferV3;
104
+ function createWalletTransferV4(args) {
105
+ // Check number of messages
106
+ if (args.messages.length > 4) {
107
+ throw Error("Maximum number of messages in a single transfer is 4");
108
+ }
109
+ let signingMessage = (0, core_1.beginCell)()
110
+ .storeUint(args.walletId, 32);
111
+ if (args.seqno === 0) {
112
+ for (let i = 0; i < 32; i++) {
113
+ signingMessage.storeBit(1);
114
+ }
115
+ }
116
+ else {
117
+ signingMessage.storeUint(args.timeout || Math.floor(Date.now() / 1e3) + 60, 32); // Default timeout: 60 seconds
118
+ }
119
+ signingMessage.storeUint(args.seqno, 32);
120
+ signingMessage.storeUint(0, 8); // Simple order
121
+ for (let m of args.messages) {
122
+ signingMessage.storeUint(args.sendMode, 8);
123
+ signingMessage.storeRef((0, core_1.beginCell)().store((0, core_1.storeMessageRelaxed)(m)));
124
+ }
125
+ return (0, singer_1.signPayload)(args, signingMessage, packSignatureToFront);
126
+ }
127
+ exports.createWalletTransferV4 = createWalletTransferV4;
128
+ function createWalletTransferV5Beta(args) {
129
+ // Check number of actions
130
+ if (args.actions.length > 255) {
131
+ throw Error("Maximum number of OutActions in a single request is 255");
132
+ }
133
+ if (args.authType === 'extension') {
134
+ return (0, core_1.beginCell)()
135
+ .storeUint(WalletContractV5Beta_1.WalletContractV5Beta.OpCodes.auth_extension, 32)
136
+ .store((0, WalletV5BetaActions_1.storeOutListExtendedV5Beta)(args.actions))
137
+ .endCell();
138
+ }
139
+ const signingMessage = (0, core_1.beginCell)()
140
+ .storeUint(args.authType === 'internal'
141
+ ? WalletContractV5Beta_1.WalletContractV5Beta.OpCodes.auth_signed_internal
142
+ : WalletContractV5Beta_1.WalletContractV5Beta.OpCodes.auth_signed_external, 32)
143
+ .store(args.walletId);
144
+ if (args.seqno === 0) {
145
+ for (let i = 0; i < 32; i++) {
146
+ signingMessage.storeBit(1);
147
+ }
148
+ }
149
+ else {
150
+ signingMessage.storeUint(args.timeout || Math.floor(Date.now() / 1e3) + 60, 32); // Default timeout: 60 seconds
151
+ }
152
+ signingMessage
153
+ .storeUint(args.seqno, 32)
154
+ .store((0, WalletV5BetaActions_1.storeOutListExtendedV5Beta)(args.actions));
155
+ return (0, singer_1.signPayload)(args, signingMessage, packSignatureToTail);
156
+ }
157
+ exports.createWalletTransferV5Beta = createWalletTransferV5Beta;
158
+ function createWalletTransferV5R1(args) {
159
+ // Check number of actions
160
+ if (args.actions.length > 255) {
161
+ throw Error("Maximum number of OutActions in a single request is 255");
162
+ }
163
+ args = { ...args };
164
+ if (args.authType === 'extension') {
165
+ return (0, core_1.beginCell)()
166
+ .storeUint(WalletContractV5R1_1.WalletContractV5R1.OpCodes.auth_extension, 32)
167
+ .storeUint(args.queryId ?? 0, 64)
168
+ .store((0, WalletV5R1Actions_1.storeOutListExtendedV5R1)(args.actions))
169
+ .endCell();
170
+ }
171
+ args.actions = (0, WalletV5R1Actions_1.patchV5R1ActionsSendMode)(args.actions, args.authType);
172
+ const signingMessage = (0, core_1.beginCell)()
173
+ .storeUint(args.authType === 'internal'
174
+ ? WalletContractV5R1_1.WalletContractV5R1.OpCodes.auth_signed_internal
175
+ : WalletContractV5R1_1.WalletContractV5R1.OpCodes.auth_signed_external, 32)
176
+ .store(args.walletId);
177
+ if (args.seqno === 0) {
178
+ for (let i = 0; i < 32; i++) {
179
+ signingMessage.storeBit(1);
180
+ }
181
+ }
182
+ else {
183
+ signingMessage.storeUint(args.timeout || Math.floor(Date.now() / 1e3) + 60, 32); // Default timeout: 60 seconds
184
+ }
185
+ signingMessage
186
+ .storeUint(args.seqno, 32)
187
+ .store((0, WalletV5R1Actions_1.storeOutListExtendedV5R1)(args.actions));
188
+ return (0, singer_1.signPayload)(args, signingMessage, packSignatureToTail);
189
+ }
190
+ exports.createWalletTransferV5R1 = createWalletTransferV5R1;
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import { Builder, Cell } from "@ton/core";
3
+ export type SendArgsSigned = {
4
+ secretKey: Buffer;
5
+ };
6
+ export type SendArgsSignable = {
7
+ signer: (message: Cell) => Promise<Buffer>;
8
+ };
9
+ export declare function signPayload<T extends SendArgsSigned | SendArgsSignable>(args: T, signingMessage: Builder, packMessage: (signature: Buffer, signingMessage: Builder) => Cell): T extends SendArgsSignable ? Promise<Cell> : Cell;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signPayload = void 0;
4
+ const crypto_1 = require("@ton/crypto");
5
+ function signPayload(args, signingMessage, packMessage) {
6
+ if ('secretKey' in args) {
7
+ /**
8
+ * Client provider an secretKey to sign transaction.
9
+ */
10
+ return packMessage((0, crypto_1.sign)(signingMessage.endCell().hash(), args.secretKey), signingMessage);
11
+ }
12
+ else {
13
+ /**
14
+ * Client use external storage for secretKey.
15
+ * In this case lib could create a request to external resource to sign transaction.
16
+ */
17
+ return args.signer(signingMessage.endCell())
18
+ .then(signature => packMessage(signature, signingMessage));
19
+ }
20
+ }
21
+ exports.signPayload = signPayload;
@@ -0,0 +1,130 @@
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
+ /// <reference types="node" />
9
+ import { Address, Cell, Contract, ContractProvider, MessageRelaxed, Sender, SendMode } from "@ton/core";
10
+ import { Maybe } from "../../utils/maybe";
11
+ import { SendArgsSignable, SendArgsSigned } from "../signing/singer";
12
+ import { OutActionWalletV5 } from "./WalletV5OutActions";
13
+ import { WalletIdV5Beta } from "./WalletV5BetaWalletId";
14
+ export type WalletV5BetaBasicSendArgs = {
15
+ seqno: number;
16
+ timeout?: Maybe<number>;
17
+ };
18
+ export type WalletV5BetaSendArgsSigned = WalletV5BetaBasicSendArgs & SendArgsSigned & {
19
+ authType?: 'external' | 'internal';
20
+ };
21
+ export type WalletV5BetaSendArgsSignable = WalletV5BetaBasicSendArgs & SendArgsSignable & {
22
+ authType?: 'external' | 'internal';
23
+ };
24
+ export type WalletV5BetaSendArgsExtensionAuth = WalletV5BetaBasicSendArgs & {
25
+ authType: 'extension';
26
+ };
27
+ export type WalletV5BetaSendArgs = WalletV5BetaSendArgsSigned | WalletV5BetaSendArgsSignable | WalletV5BetaSendArgsExtensionAuth;
28
+ export type WalletV5BetaPackedCell<T> = T extends WalletV5BetaSendArgsSignable ? Promise<Cell> : Cell;
29
+ /**
30
+ * @deprecated
31
+ * use WalletContractV5R1 instead
32
+ */
33
+ export declare class WalletContractV5Beta implements Contract {
34
+ readonly walletId: WalletIdV5Beta;
35
+ readonly publicKey: Buffer;
36
+ static OpCodes: {
37
+ auth_extension: number;
38
+ auth_signed_external: number;
39
+ auth_signed_internal: number;
40
+ };
41
+ static create(args: {
42
+ walletId?: Partial<WalletIdV5Beta>;
43
+ publicKey: Buffer;
44
+ }): WalletContractV5Beta;
45
+ readonly address: Address;
46
+ readonly init: {
47
+ data: Cell;
48
+ code: Cell;
49
+ };
50
+ private constructor();
51
+ /**
52
+ * Get Wallet Balance
53
+ */
54
+ getBalance(provider: ContractProvider): Promise<bigint>;
55
+ /**
56
+ * Get Wallet Seqno
57
+ */
58
+ getSeqno(provider: ContractProvider): Promise<number>;
59
+ /**
60
+ * Get Wallet Extensions
61
+ */
62
+ getExtensions(provider: ContractProvider): Promise<Cell | null>;
63
+ /**
64
+ * Get Wallet Extensions
65
+ */
66
+ getExtensionsArray(provider: ContractProvider): Promise<Address[]>;
67
+ /**
68
+ * Get is secret-key authentication enabled
69
+ */
70
+ getIsSecretKeyAuthEnabled(provider: ContractProvider): Promise<boolean>;
71
+ /**
72
+ * Send signed transfer
73
+ */
74
+ send(provider: ContractProvider, message: Cell): Promise<void>;
75
+ /**
76
+ * Sign and send transfer
77
+ */
78
+ sendTransfer(provider: ContractProvider, args: WalletV5BetaSendArgs & {
79
+ messages: MessageRelaxed[];
80
+ sendMode: SendMode;
81
+ }): Promise<void>;
82
+ /**
83
+ * Sign and send add extension request
84
+ */
85
+ sendAddExtension(provider: ContractProvider, args: WalletV5BetaSendArgs & {
86
+ extensionAddress: Address;
87
+ }): Promise<void>;
88
+ /**
89
+ * Sign and send remove extension request
90
+ */
91
+ sendRemoveExtension(provider: ContractProvider, args: WalletV5BetaSendArgs & {
92
+ extensionAddress: Address;
93
+ }): Promise<void>;
94
+ /**
95
+ * Sign and send actions batch
96
+ */
97
+ sendActionsBatch(provider: ContractProvider, args: WalletV5BetaSendArgs & {
98
+ actions: OutActionWalletV5[];
99
+ }): Promise<void>;
100
+ private createActions;
101
+ /**
102
+ * Create signed transfer
103
+ */
104
+ createTransfer<T extends WalletV5BetaSendArgs>(args: T & {
105
+ messages: MessageRelaxed[];
106
+ sendMode: SendMode;
107
+ }): WalletV5BetaPackedCell<T>;
108
+ /**
109
+ * Create signed add extension request
110
+ */
111
+ createAddExtension<T extends WalletV5BetaSendArgs>(args: T & {
112
+ extensionAddress: Address;
113
+ }): WalletV5BetaPackedCell<T>;
114
+ /**
115
+ * Create signed remove extension request
116
+ */
117
+ createRemoveExtension<T extends WalletV5BetaSendArgs>(args: T & {
118
+ extensionAddress: Address;
119
+ }): WalletV5BetaPackedCell<T>;
120
+ /**
121
+ * Create signed request or extension auth request
122
+ */
123
+ createRequest<T extends WalletV5BetaSendArgs>(args: T & {
124
+ actions: OutActionWalletV5[];
125
+ }): WalletV5BetaPackedCell<T>;
126
+ /**
127
+ * Create sender
128
+ */
129
+ sender(provider: ContractProvider, secretKey: Buffer): Sender;
130
+ }
@@ -0,0 +1,211 @@
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.WalletContractV5Beta = void 0;
11
+ const core_1 = require("@ton/core");
12
+ const createWalletTransfer_1 = require("../signing/createWalletTransfer");
13
+ const WalletV5BetaWalletId_1 = require("./WalletV5BetaWalletId");
14
+ /**
15
+ * @deprecated
16
+ * use WalletContractV5R1 instead
17
+ */
18
+ class WalletContractV5Beta {
19
+ static create(args) {
20
+ const walletId = {
21
+ networkGlobalId: args.walletId?.networkGlobalId ?? -239,
22
+ workchain: args?.walletId?.workchain ?? 0,
23
+ subwalletNumber: args?.walletId?.subwalletNumber ?? 0,
24
+ walletVersion: args?.walletId?.walletVersion ?? 'v5'
25
+ };
26
+ return new WalletContractV5Beta(walletId, args.publicKey);
27
+ }
28
+ constructor(walletId, publicKey) {
29
+ this.walletId = walletId;
30
+ this.publicKey = publicKey;
31
+ this.walletId = walletId;
32
+ // https://github.com/tonkeeper/w5/commit/fa1b372a417a32af104fe1b949b6b31d29cee349 code with library
33
+ let code = core_1.Cell.fromBoc(Buffer.from('te6cckEBAQEAIwAIQgLkzzsvTG1qYeoPK1RH0mZ4WyavNjfbLe7mvNGqgm80Eg3NjhE=', 'base64'))[0];
34
+ let data = (0, core_1.beginCell)()
35
+ .storeInt(0, 33) // Seqno
36
+ .store((0, WalletV5BetaWalletId_1.storeWalletIdV5Beta)(this.walletId))
37
+ .storeBuffer(this.publicKey, 32)
38
+ .storeBit(0) // Empty plugins dict
39
+ .endCell();
40
+ this.init = { code, data };
41
+ this.address = (0, core_1.contractAddress)(this.walletId.workchain, { code, data });
42
+ }
43
+ /**
44
+ * Get Wallet Balance
45
+ */
46
+ async getBalance(provider) {
47
+ let state = await provider.getState();
48
+ return state.balance;
49
+ }
50
+ /**
51
+ * Get Wallet Seqno
52
+ */
53
+ async getSeqno(provider) {
54
+ let state = await provider.getState();
55
+ if (state.state.type === 'active') {
56
+ let res = await provider.get('seqno', []);
57
+ return res.stack.readNumber();
58
+ }
59
+ else {
60
+ return 0;
61
+ }
62
+ }
63
+ /**
64
+ * Get Wallet Extensions
65
+ */
66
+ async getExtensions(provider) {
67
+ let state = await provider.getState();
68
+ if (state.state.type === 'active') {
69
+ const result = await provider.get('get_extensions', []);
70
+ return result.stack.readCellOpt();
71
+ }
72
+ else {
73
+ return null;
74
+ }
75
+ }
76
+ /**
77
+ * Get Wallet Extensions
78
+ */
79
+ async getExtensionsArray(provider) {
80
+ const extensions = await this.getExtensions(provider);
81
+ if (!extensions) {
82
+ return [];
83
+ }
84
+ const dict = core_1.Dictionary.loadDirect(core_1.Dictionary.Keys.BigUint(256), core_1.Dictionary.Values.BigInt(8), extensions);
85
+ return dict.keys().map(key => {
86
+ const wc = dict.get(key);
87
+ const addressHex = key ^ (wc + 1n);
88
+ return core_1.Address.parseRaw(`${wc}:${addressHex.toString(16).padStart(64, "0")}`);
89
+ });
90
+ }
91
+ /**
92
+ * Get is secret-key authentication enabled
93
+ */
94
+ async getIsSecretKeyAuthEnabled(provider) {
95
+ let res = await provider.get('get_is_signature_auth_allowed', []);
96
+ const result = res.stack.readNumber();
97
+ return result !== 0;
98
+ }
99
+ /**
100
+ * Send signed transfer
101
+ */
102
+ async send(provider, message) {
103
+ await provider.external(message);
104
+ }
105
+ /**
106
+ * Sign and send transfer
107
+ */
108
+ async sendTransfer(provider, args) {
109
+ const transfer = await this.createTransfer(args);
110
+ await this.send(provider, transfer);
111
+ }
112
+ /**
113
+ * Sign and send add extension request
114
+ */
115
+ async sendAddExtension(provider, args) {
116
+ const request = await this.createAddExtension(args);
117
+ await this.send(provider, request);
118
+ }
119
+ /**
120
+ * Sign and send remove extension request
121
+ */
122
+ async sendRemoveExtension(provider, args) {
123
+ const request = await this.createRemoveExtension(args);
124
+ await this.send(provider, request);
125
+ }
126
+ /**
127
+ * Sign and send actions batch
128
+ */
129
+ async sendActionsBatch(provider, args) {
130
+ const request = await this.createRequest(args);
131
+ await this.send(provider, request);
132
+ }
133
+ createActions(args) {
134
+ const actions = args.messages.map(message => ({ type: 'sendMsg', mode: args.sendMode, outMsg: message }));
135
+ return actions;
136
+ }
137
+ /**
138
+ * Create signed transfer
139
+ */
140
+ createTransfer(args) {
141
+ return this.createRequest({
142
+ ...args,
143
+ actions: this.createActions({ messages: args.messages, sendMode: args.sendMode })
144
+ });
145
+ }
146
+ /**
147
+ * Create signed add extension request
148
+ */
149
+ createAddExtension(args) {
150
+ return this.createRequest({
151
+ ...args,
152
+ actions: [{
153
+ type: 'addExtension',
154
+ address: args.extensionAddress
155
+ }]
156
+ });
157
+ }
158
+ /**
159
+ * Create signed remove extension request
160
+ */
161
+ createRemoveExtension(args) {
162
+ return this.createRequest({
163
+ ...args,
164
+ actions: [{
165
+ type: 'removeExtension',
166
+ address: args.extensionAddress
167
+ }]
168
+ });
169
+ }
170
+ /**
171
+ * Create signed request or extension auth request
172
+ */
173
+ createRequest(args) {
174
+ if (args.authType === 'extension') {
175
+ return (0, createWalletTransfer_1.createWalletTransferV5Beta)(args);
176
+ }
177
+ return (0, createWalletTransfer_1.createWalletTransferV5Beta)({
178
+ ...args,
179
+ walletId: (0, WalletV5BetaWalletId_1.storeWalletIdV5Beta)(this.walletId)
180
+ });
181
+ }
182
+ /**
183
+ * Create sender
184
+ */
185
+ sender(provider, secretKey) {
186
+ return {
187
+ send: async (args) => {
188
+ let seqno = await this.getSeqno(provider);
189
+ let transfer = this.createTransfer({
190
+ seqno,
191
+ secretKey,
192
+ sendMode: args.sendMode ?? core_1.SendMode.PAY_GAS_SEPARATELY + core_1.SendMode.IGNORE_ERRORS,
193
+ messages: [(0, core_1.internal)({
194
+ to: args.to,
195
+ value: args.value,
196
+ init: args.init,
197
+ body: args.body,
198
+ bounce: args.bounce
199
+ })]
200
+ });
201
+ await this.send(provider, transfer);
202
+ }
203
+ };
204
+ }
205
+ }
206
+ exports.WalletContractV5Beta = WalletContractV5Beta;
207
+ WalletContractV5Beta.OpCodes = {
208
+ auth_extension: 0x6578746e,
209
+ auth_signed_external: 0x7369676e,
210
+ auth_signed_internal: 0x73696e74
211
+ };
@@ -0,0 +1,8 @@
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 {};