@bitgo/account-lib 2.20.0-rc.28 → 2.20.0-rc.30

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 (191) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/browser/bitgo-account-lib.js +2 -0
  3. package/dist/browser/bitgo-account-lib.js.LICENSE.txt +337 -0
  4. package/dist/resources/hbar/protobuf/BasicTypes.proto +424 -0
  5. package/dist/resources/hbar/protobuf/CryptoCreate.proto +47 -0
  6. package/dist/resources/hbar/protobuf/CryptoTransfer.proto +33 -0
  7. package/dist/resources/hbar/protobuf/Duration.proto +28 -0
  8. package/dist/resources/hbar/protobuf/Timestamp.proto +34 -0
  9. package/dist/resources/hbar/protobuf/Transaction.proto +35 -0
  10. package/dist/resources/hbar/protobuf/TransactionBody.proto +24 -0
  11. package/dist/resources/hbar/protobuf/TransactionContents.proto +33 -0
  12. package/dist/resources/hbar/protobuf/hedera.d.ts +4612 -0
  13. package/dist/resources/hbar/protobuf/hedera.js +12192 -0
  14. package/dist/src/coin/algo/assetTransferBuilder.d.ts +42 -0
  15. package/dist/src/coin/algo/assetTransferBuilder.d.ts.map +1 -0
  16. package/dist/src/coin/algo/assetTransferBuilder.js +105 -0
  17. package/dist/src/coin/algo/errors.d.ts +11 -0
  18. package/dist/src/coin/algo/errors.d.ts.map +1 -0
  19. package/dist/src/coin/algo/errors.js +27 -0
  20. package/dist/src/coin/algo/ifaces.d.ts +46 -0
  21. package/dist/src/coin/algo/ifaces.d.ts.map +1 -0
  22. package/dist/src/coin/algo/ifaces.js +3 -0
  23. package/dist/src/coin/algo/index.d.ts +13 -0
  24. package/dist/src/coin/algo/index.d.ts.map +1 -0
  25. package/dist/src/coin/algo/index.js +47 -0
  26. package/dist/src/coin/algo/keyPair.d.ts +25 -0
  27. package/dist/src/coin/algo/keyPair.d.ts.map +1 -0
  28. package/dist/src/coin/algo/keyPair.js +77 -0
  29. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +104 -0
  30. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +1 -0
  31. package/dist/src/coin/algo/keyRegistrationBuilder.js +239 -0
  32. package/dist/src/coin/algo/seedEncoding.d.ts +25 -0
  33. package/dist/src/coin/algo/seedEncoding.d.ts.map +1 -0
  34. package/dist/src/coin/algo/seedEncoding.js +97 -0
  35. package/dist/src/coin/algo/transaction.d.ts +75 -0
  36. package/dist/src/coin/algo/transaction.d.ts.map +1 -0
  37. package/dist/src/coin/algo/transaction.js +251 -0
  38. package/dist/src/coin/algo/transactionBuilder.d.ts +204 -0
  39. package/dist/src/coin/algo/transactionBuilder.d.ts.map +1 -0
  40. package/dist/src/coin/algo/transactionBuilder.js +373 -0
  41. package/dist/src/coin/algo/transactionBuilderFactory.d.ts +16 -0
  42. package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +1 -0
  43. package/dist/src/coin/algo/transactionBuilderFactory.js +52 -0
  44. package/dist/src/coin/algo/transferBuilder.d.ts +40 -0
  45. package/dist/src/coin/algo/transferBuilder.d.ts.map +1 -0
  46. package/dist/src/coin/algo/transferBuilder.js +89 -0
  47. package/dist/src/coin/algo/txnSchema.d.ts +7 -0
  48. package/dist/src/coin/algo/txnSchema.d.ts.map +1 -0
  49. package/dist/src/coin/algo/txnSchema.js +68 -0
  50. package/dist/src/coin/algo/utils.d.ts +249 -0
  51. package/dist/src/coin/algo/utils.d.ts.map +1 -0
  52. package/dist/src/coin/algo/utils.js +539 -0
  53. package/dist/src/coin/avaxc/index.d.ts +2 -3
  54. package/dist/src/coin/avaxc/index.d.ts.map +1 -1
  55. package/dist/src/coin/avaxc/index.js +5 -6
  56. package/dist/src/coin/avaxc/transactionBuilder.js +3 -3
  57. package/dist/src/coin/avaxc/transferBuilder.d.ts +1 -1
  58. package/dist/src/coin/avaxc/transferBuilder.d.ts.map +1 -1
  59. package/dist/src/coin/avaxc/transferBuilder.js +3 -3
  60. package/dist/src/coin/avaxc/utils.d.ts +1 -2
  61. package/dist/src/coin/avaxc/utils.d.ts.map +1 -1
  62. package/dist/src/coin/avaxc/utils.js +3 -3
  63. package/dist/src/coin/celo/index.d.ts +2 -3
  64. package/dist/src/coin/celo/index.d.ts.map +1 -1
  65. package/dist/src/coin/celo/index.js +5 -6
  66. package/dist/src/coin/celo/stakingBuilder.d.ts.map +1 -1
  67. package/dist/src/coin/celo/stakingBuilder.js +21 -22
  68. package/dist/src/coin/celo/stakingCall.d.ts +1 -1
  69. package/dist/src/coin/celo/stakingCall.js +3 -3
  70. package/dist/src/coin/celo/transaction.d.ts +2 -3
  71. package/dist/src/coin/celo/transaction.d.ts.map +1 -1
  72. package/dist/src/coin/celo/transaction.js +3 -3
  73. package/dist/src/coin/celo/transactionBuilder.d.ts +2 -3
  74. package/dist/src/coin/celo/transactionBuilder.d.ts.map +1 -1
  75. package/dist/src/coin/celo/transactionBuilder.js +4 -24
  76. package/dist/src/coin/celo/transferBuilder.d.ts +1 -1
  77. package/dist/src/coin/celo/transferBuilder.d.ts.map +1 -1
  78. package/dist/src/coin/celo/transferBuilder.js +3 -3
  79. package/dist/src/coin/celo/types.d.ts +1 -2
  80. package/dist/src/coin/celo/types.d.ts.map +1 -1
  81. package/dist/src/coin/celo/types.js +5 -5
  82. package/dist/src/coin/celo/utils.d.ts +1 -1
  83. package/dist/src/coin/celo/utils.d.ts.map +1 -1
  84. package/dist/src/coin/celo/utils.js +3 -3
  85. package/dist/src/coin/cspr/constants.d.ts +19 -0
  86. package/dist/src/coin/cspr/constants.d.ts.map +1 -0
  87. package/dist/src/coin/cspr/constants.js +28 -0
  88. package/dist/src/coin/cspr/delegateBuilder.d.ts +49 -0
  89. package/dist/src/coin/cspr/delegateBuilder.d.ts.map +1 -0
  90. package/dist/src/coin/cspr/delegateBuilder.js +111 -0
  91. package/dist/src/coin/cspr/ifaces.d.ts +69 -0
  92. package/dist/src/coin/cspr/ifaces.d.ts.map +1 -0
  93. package/dist/src/coin/cspr/ifaces.js +3 -0
  94. package/dist/src/coin/cspr/index.d.ts +6 -0
  95. package/dist/src/coin/cspr/index.d.ts.map +1 -0
  96. package/dist/src/coin/cspr/index.js +31 -0
  97. package/dist/src/coin/cspr/keyPair.d.ts +18 -0
  98. package/dist/src/coin/cspr/keyPair.d.ts.map +1 -0
  99. package/dist/src/coin/cspr/keyPair.js +75 -0
  100. package/dist/src/coin/cspr/transaction.d.ts +55 -0
  101. package/dist/src/coin/cspr/transaction.d.ts.map +1 -0
  102. package/dist/src/coin/cspr/transaction.js +227 -0
  103. package/dist/src/coin/cspr/transactionBuilder.d.ts +124 -0
  104. package/dist/src/coin/cspr/transactionBuilder.d.ts.map +1 -0
  105. package/dist/src/coin/cspr/transactionBuilder.js +312 -0
  106. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +46 -0
  107. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +1 -0
  108. package/dist/src/coin/cspr/transactionBuilderFactory.js +98 -0
  109. package/dist/src/coin/cspr/transferBuilder.d.ts +39 -0
  110. package/dist/src/coin/cspr/transferBuilder.d.ts.map +1 -0
  111. package/dist/src/coin/cspr/transferBuilder.js +106 -0
  112. package/dist/src/coin/cspr/undelegateBuilder.d.ts +49 -0
  113. package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +1 -0
  114. package/dist/src/coin/cspr/undelegateBuilder.js +111 -0
  115. package/dist/src/coin/cspr/utils.d.ts +188 -0
  116. package/dist/src/coin/cspr/utils.d.ts.map +1 -0
  117. package/dist/src/coin/cspr/utils.js +477 -0
  118. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +27 -0
  119. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +1 -0
  120. package/dist/src/coin/cspr/walletInitializationBuilder.js +95 -0
  121. package/dist/src/coin/etc/index.d.ts +2 -4
  122. package/dist/src/coin/etc/index.d.ts.map +1 -1
  123. package/dist/src/coin/etc/index.js +6 -8
  124. package/dist/src/coin/etc/transactionBuilder.js +3 -3
  125. package/dist/src/coin/etc/transferBuilder.d.ts +1 -1
  126. package/dist/src/coin/etc/transferBuilder.d.ts.map +1 -1
  127. package/dist/src/coin/etc/transferBuilder.js +3 -3
  128. package/dist/src/coin/etc/utils.d.ts +1 -2
  129. package/dist/src/coin/etc/utils.d.ts.map +1 -1
  130. package/dist/src/coin/etc/utils.js +3 -3
  131. package/dist/src/coin/hbar/coinTransferBuilder.d.ts +46 -0
  132. package/dist/src/coin/hbar/coinTransferBuilder.d.ts.map +1 -0
  133. package/dist/src/coin/hbar/coinTransferBuilder.js +143 -0
  134. package/dist/src/coin/hbar/constants.d.ts +8 -0
  135. package/dist/src/coin/hbar/constants.d.ts.map +1 -0
  136. package/dist/src/coin/hbar/constants.js +12 -0
  137. package/dist/src/coin/hbar/iface.d.ts +6 -0
  138. package/dist/src/coin/hbar/iface.d.ts.map +1 -1
  139. package/dist/src/coin/hbar/iface.js +1 -1
  140. package/dist/src/coin/hbar/ifaces.d.ts +26 -0
  141. package/dist/src/coin/hbar/ifaces.d.ts.map +1 -0
  142. package/dist/src/coin/hbar/ifaces.js +3 -0
  143. package/dist/src/coin/hbar/keyPair.js +2 -2
  144. package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts +35 -0
  145. package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts.map +1 -0
  146. package/dist/src/coin/hbar/tokenAssociateBuilder.js +118 -0
  147. package/dist/src/coin/hbar/tokenTransferBuilder.d.ts +25 -0
  148. package/dist/src/coin/hbar/tokenTransferBuilder.d.ts.map +1 -0
  149. package/dist/src/coin/hbar/tokenTransferBuilder.js +115 -0
  150. package/dist/src/coin/hbar/transaction.d.ts +8 -1
  151. package/dist/src/coin/hbar/transaction.d.ts.map +1 -1
  152. package/dist/src/coin/hbar/transaction.js +46 -10
  153. package/dist/src/coin/hbar/transactionBuilder.d.ts +2 -3
  154. package/dist/src/coin/hbar/transactionBuilder.d.ts.map +1 -1
  155. package/dist/src/coin/hbar/transactionBuilder.js +7 -21
  156. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +13 -3
  157. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +1 -1
  158. package/dist/src/coin/hbar/transactionBuilderFactory.js +28 -17
  159. package/dist/src/coin/hbar/transferBuilder.d.ts +6 -26
  160. package/dist/src/coin/hbar/transferBuilder.d.ts.map +1 -1
  161. package/dist/src/coin/hbar/transferBuilder.js +13 -72
  162. package/dist/src/coin/hbar/utils.d.ts +54 -3
  163. package/dist/src/coin/hbar/utils.d.ts.map +1 -1
  164. package/dist/src/coin/hbar/utils.js +101 -5
  165. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +1 -1
  166. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +1 -1
  167. package/dist/src/coin/hbar/walletInitializationBuilder.js +7 -7
  168. package/dist/src/coin/polygon/index.d.ts +2 -4
  169. package/dist/src/coin/polygon/index.d.ts.map +1 -1
  170. package/dist/src/coin/polygon/index.js +6 -8
  171. package/dist/src/coin/polygon/transferBuilder.d.ts +1 -1
  172. package/dist/src/coin/polygon/transferBuilder.d.ts.map +1 -1
  173. package/dist/src/coin/polygon/transferBuilder.js +3 -3
  174. package/dist/src/coin/polygon/utils.d.ts +1 -2
  175. package/dist/src/coin/polygon/utils.d.ts.map +1 -1
  176. package/dist/src/coin/polygon/utils.js +3 -3
  177. package/dist/src/coin/rbtc/index.d.ts +2 -4
  178. package/dist/src/coin/rbtc/index.d.ts.map +1 -1
  179. package/dist/src/coin/rbtc/index.js +6 -8
  180. package/dist/src/coin/rbtc/transactionBuilder.js +3 -3
  181. package/dist/src/coin/rbtc/transferBuilder.d.ts +1 -1
  182. package/dist/src/coin/rbtc/transferBuilder.d.ts.map +1 -1
  183. package/dist/src/coin/rbtc/transferBuilder.js +3 -3
  184. package/dist/src/coin/rbtc/utils.d.ts +1 -2
  185. package/dist/src/coin/rbtc/utils.d.ts.map +1 -1
  186. package/dist/src/coin/rbtc/utils.js +3 -3
  187. package/dist/src/index.d.ts +1 -1
  188. package/dist/src/index.d.ts.map +1 -1
  189. package/dist/src/index.js +2 -2
  190. package/dist/tsconfig.tsbuildinfo +4718 -2445
  191. package/package.json +9 -8
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.KeyRegistrationBuilder = void 0;
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
+ const algosdk_1 = __importDefault(require("algosdk"));
9
+ const sdk_core_1 = require("@bitgo/sdk-core");
10
+ const transactionBuilder_1 = require("./transactionBuilder");
11
+ const txnSchema_1 = require("./txnSchema");
12
+ const utils_1 = __importDefault(require("./utils"));
13
+ class KeyRegistrationBuilder extends transactionBuilder_1.TransactionBuilder {
14
+ constructor(coinConfig) {
15
+ super(coinConfig);
16
+ }
17
+ /**
18
+ * Sets the vote key
19
+ *
20
+ * @returns {KeyRegistrationBuilder} This Key Registration builder.
21
+ *
22
+ * @param {string} key The root participation public key. See Generate a Participation Key to learn more.
23
+ * https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
24
+ */
25
+ voteKey(key) {
26
+ this._voteKey = key;
27
+ return this;
28
+ }
29
+ /**
30
+ * Sets the selection key
31
+ *
32
+ * @returns {KeyRegistrationBuilder} This Key Registration builder.
33
+ *
34
+ * @param {string} key The VRF public key for the account.
35
+ * https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
36
+ */
37
+ selectionKey(key) {
38
+ this._selectionKey = key;
39
+ return this;
40
+ }
41
+ /**
42
+ * Sets the stateProof key
43
+ *
44
+ * @returns {KeyRegistrationBuilder} This Key Registration builder.
45
+ *
46
+ * @param {string} key The stateproof key. See consensus for more information.
47
+ * https://developer.algorand.org/docs/get-details/algorand_consensus/?from_query=state#state-proof-keys
48
+ */
49
+ stateProofKey(key) {
50
+ utils_1.default.validateBase64(key);
51
+ this._stateProofKey = key;
52
+ return this;
53
+ }
54
+ /**
55
+ *Sets the vote first round
56
+ *
57
+ * @returns {KeyRegistrationBuilder} This Key Registration builder.
58
+ *
59
+ * @param {number} round The first round that the participation key is valid. Not to be confused with the FirstValid round of the keyreg transaction.
60
+ * https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
61
+ */
62
+ voteFirst(round) {
63
+ this.validateValue(new bignumber_js_1.default(round));
64
+ this._voteFirst = round;
65
+ return this;
66
+ }
67
+ /**
68
+ * Sets the vote last round
69
+ *
70
+ * @returns {KeyRegistrationBuilder} This Key Registration builder.
71
+ *
72
+ * A recommended range is 3,000,000 rounds.
73
+ *
74
+ * @param {number} round No theoretical limit.
75
+ * https://developer.algorand.org/docs/run-a-node/participate/generate_keys/
76
+ */
77
+ voteLast(round) {
78
+ this.validateValue(new bignumber_js_1.default(round));
79
+ this._voteLast = round;
80
+ return this;
81
+ }
82
+ /**
83
+ * Sets the vote key dilution
84
+ *
85
+ * @returns {KeyRegistrationBuilder} This Key Registration builder.
86
+ *
87
+ * Defaults to 10,000
88
+ *
89
+ * @param {number} size [10000]. To reduce the size of the participation key, set the key dilution value to roughly the square root of the range that the partkey is valid for.
90
+ * https://developer.algorand.org/docs/run-a-node/participate/generate_keys/#generate-the-participation-key-with-goal
91
+ * @param size
92
+ */
93
+ voteKeyDilution(size = 10000) {
94
+ this.validateValue(new bignumber_js_1.default(size));
95
+ this._voteKeyDilution = size;
96
+ return this;
97
+ }
98
+ /**
99
+ * Sets the non participation flag
100
+ *
101
+ * @returns {KeyRegistrationBuilder} This Key Registration builder.
102
+ *
103
+ * @param {boolean} nonParticipation All new Algorand accounts are participating by default.
104
+ * This means that they earn rewards. Mark an account nonparticipating by setting this value to true and this account
105
+ * will no longer earn rewards NEVER.
106
+ * https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
107
+ */
108
+ nonParticipation(nonParticipation) {
109
+ this._nonParticipation = nonParticipation;
110
+ return this;
111
+ }
112
+ buildAlgoTxn() {
113
+ return this.isOfflineKeyRegAccountLibTransaction()
114
+ ? this.buildOfflineKeyRegTransaction()
115
+ : this.isNonParticipationKeyRegAccountLibTransaction()
116
+ ? this.buildNonParticipationKeyRegTransaction()
117
+ : this.buildOnlineKeyRegTransaction();
118
+ }
119
+ buildOfflineKeyRegTransaction() {
120
+ return algosdk_1.default.makeKeyRegistrationTxnWithSuggestedParams(this._sender, this._note, undefined, // voteKey param
121
+ undefined, // selectionKey param
122
+ undefined, // voteFirst param
123
+ undefined, // voteLast param
124
+ undefined, // voteKeyDilution param
125
+ this.suggestedParams);
126
+ }
127
+ buildOnlineKeyRegTransaction() {
128
+ return algosdk_1.default.makeKeyRegistrationTxnWithSuggestedParams(this._sender, this._note, this._voteKey, this._selectionKey, this._voteFirst, this._voteLast, this._voteKeyDilution, this.suggestedParams, undefined, // reKeyTo param
129
+ undefined, // nonParticipation param
130
+ this._stateProofKey);
131
+ }
132
+ buildNonParticipationKeyRegTransaction() {
133
+ return algosdk_1.default.makeKeyRegistrationTxnWithSuggestedParams(this._sender, this._note, undefined, // voteKey param
134
+ undefined, // selectionKey param
135
+ undefined, // voteFirst param
136
+ undefined, // voteLast param
137
+ undefined, // voteKeyDilution param
138
+ this.suggestedParams, this._reKeyTo, true);
139
+ }
140
+ get transactionType() {
141
+ return sdk_core_1.TransactionType.WalletInitialization;
142
+ }
143
+ /** @inheritdoc */
144
+ fromImplementation(rawTransaction) {
145
+ const tx = super.fromImplementation(rawTransaction);
146
+ const algoTxn = tx.getAlgoTransaction();
147
+ if (algoTxn) {
148
+ if (this.isNonParticipationKeyRegAlgoSDKTransaction(algoTxn)) {
149
+ this.nonParticipation(!!algoTxn.nonParticipation);
150
+ }
151
+ else if (this.isOnlineKeyRegAlgoSDKTransaction(algoTxn)) {
152
+ this.voteKey(algoTxn.voteKey.toString('base64'));
153
+ this.selectionKey(algoTxn.selectionKey.toString('base64'));
154
+ this.voteFirst(algoTxn.voteFirst);
155
+ this.voteLast(algoTxn.voteLast);
156
+ this.voteKeyDilution(algoTxn.voteKeyDilution);
157
+ if (algoTxn.stateProofKey) {
158
+ this.stateProofKey(algoTxn.stateProofKey.toString('base64'));
159
+ }
160
+ }
161
+ }
162
+ return tx;
163
+ }
164
+ /** @inheritdoc */
165
+ validateRawTransaction(rawTransaction) {
166
+ const decodeTxn = utils_1.default.decodeAlgoTxn(rawTransaction);
167
+ const algoTxn = decodeTxn.txn;
168
+ if (algoTxn.type !== algosdk_1.default.TransactionType.keyreg) {
169
+ throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${algoTxn.type}. Expected ${algosdk_1.default.TransactionType.keyreg}`);
170
+ }
171
+ if (this.isOnlineKeyRegAlgoSDKTransaction(algoTxn)) {
172
+ this.validateFields(algoTxn.voteKey.toString('base64'), algoTxn.selectionKey.toString('base64'), algoTxn.voteFirst, algoTxn.voteLast, algoTxn.voteKeyDilution, algoTxn.stateProofKey && algoTxn.stateProofKey.toString('base64'));
173
+ }
174
+ }
175
+ isNonParticipationKeyRegAlgoSDKTransaction(algoTxn) {
176
+ return !!algoTxn.nonParticipation;
177
+ }
178
+ isNonParticipationKeyRegAccountLibTransaction() {
179
+ return !!this._nonParticipation;
180
+ }
181
+ isOnlineKeyRegAlgoSDKTransaction(algoTxn) {
182
+ return !(this.isOfflineKeyRegAlgoSDKTransaction(algoTxn) || this.isNonParticipationKeyRegAlgoSDKTransaction(algoTxn));
183
+ }
184
+ isOnlineKeyRegAccountLibTransaction() {
185
+ return !(this.isOfflineKeyRegAccountLibTransaction() || this.isNonParticipationKeyRegAccountLibTransaction());
186
+ }
187
+ isOfflineKeyRegAlgoSDKTransaction(algoTxn) {
188
+ return (!algoTxn.voteKey &&
189
+ !algoTxn.selectionKey &&
190
+ !algoTxn.voteFirst &&
191
+ !algoTxn.voteLast &&
192
+ !algoTxn.voteKeyDilution &&
193
+ !algoTxn.stateProofKey &&
194
+ !algoTxn.nonParticipation);
195
+ }
196
+ isOfflineKeyRegAccountLibTransaction() {
197
+ return (!this._voteKey &&
198
+ !this._selectionKey &&
199
+ !this._voteFirst &&
200
+ !this._voteLast &&
201
+ !this._voteKeyDilution &&
202
+ !this._stateProofKey &&
203
+ !this._nonParticipation);
204
+ }
205
+ /** @inheritdoc */
206
+ validateTransaction(transaction) {
207
+ super.validateTransaction(transaction);
208
+ if (this.isOnlineKeyRegAccountLibTransaction()) {
209
+ // invalid offline will reach here
210
+ this.validateFields(this._voteKey, this._selectionKey, this._voteFirst, this._voteLast, this._voteKeyDilution, this._stateProofKey);
211
+ }
212
+ else {
213
+ // offline or nonparticipation transaction
214
+ if (this._voteKey ||
215
+ this._selectionKey ||
216
+ this._voteFirst ||
217
+ this._voteLast ||
218
+ this._voteKeyDilution ||
219
+ this._stateProofKey) {
220
+ throw new sdk_core_1.InvalidTransactionError('VoteKey, SelectionKey, VoteFirst, VoteLast, VoteKeyDilution, StateProofKey fields cannot be set when offline or nonparticipation is set');
221
+ }
222
+ }
223
+ }
224
+ validateFields(voteKey, selectionKey, voteFirst, voteLast, voteKeyDilution, stateProofKey) {
225
+ const validationResult = txnSchema_1.KeyRegTxnSchema.validate({
226
+ voteKey,
227
+ selectionKey,
228
+ voteFirst,
229
+ voteLast,
230
+ voteKeyDilution,
231
+ stateProofKey,
232
+ });
233
+ if (validationResult.error) {
234
+ throw new sdk_core_1.InvalidTransactionError(`Transaction validation failed: ${validationResult.error.message}`);
235
+ }
236
+ }
237
+ }
238
+ exports.KeyRegistrationBuilder = KeyRegistrationBuilder;
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UmVnaXN0cmF0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL2FsZ28va2V5UmVnaXN0cmF0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnRUFBcUM7QUFDckMsc0RBQThCO0FBRTlCLDhDQUEyRTtBQUMzRSw2REFBMEQ7QUFFMUQsMkNBQThDO0FBQzlDLG9EQUE0QjtBQUU1QixNQUFhLHNCQUF1QixTQUFRLHVDQUFrQjtJQVM1RCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsYUFBYSxDQUFDLEdBQVc7UUFDdkIsZUFBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLHNCQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxRQUFRLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsYUFBYSxD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QUMsa0NBQWtDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZHO0lBQ0gsQ0FBQztDQUNGO0FBeFRELHdEQXdUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCBhbGdvc2RrIGZyb20gJ2FsZ29zZGsnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEtleVJlZ1R4blNjaGVtYSB9IGZyb20gJy4vdHhuU2NoZW1hJztcbmltcG9ydCBVdGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEtleVJlZ2lzdHJhdGlvbkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3ZvdGVLZXk6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zZWxlY3Rpb25LZXk6IHN0cmluZztcbiAgcHJvdGVjdGVkIF92b3RlRmlyc3Q6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF92b3RlTGFzdDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3ZvdGVLZXlEaWx1dGlvbjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX25vblBhcnRpY2lwYXRpb246IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfc3RhdGVQcm9vZktleTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdm90ZSBrZXlcbiAgICpcbiAgICogQHJldHVybnMge0tleVJlZ2lzdHJhdGlvbkJ1aWxkZXJ9IFRoaXMgS2V5IFJlZ2lzdHJhdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByb290IHBhcnRpY2lwYXRpb24gcHVibGljIGtleS4gU2VlIEdlbmVyYXRlIGEgUGFydGljaXBhdGlvbiBLZXkgdG8gbGVhcm4gbW9yZS5cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvcmVmZXJlbmNlL3RyYW5zYWN0aW9ucy8ja2V5LXJlZ2lzdHJhdGlvbi10cmFuc2FjdGlvblxuICAgKi9cbiAgdm90ZUtleShrZXk6IHN0cmluZyk6IEtleVJlZ2lzdHJhdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMuX3ZvdGVLZXkgPSBrZXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0aW9uIGtleVxuICAgKlxuICAgKiBAcmV0dXJucyB7S2V5UmVnaXN0cmF0aW9uQnVpbGRlcn0gVGhpcyBLZXkgUmVnaXN0cmF0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIFZSRiBwdWJsaWMga2V5IGZvciB0aGUgYWNjb3VudC5cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvcmVmZXJlbmNlL3RyYW5zYWN0aW9ucy8ja2V5LXJlZ2lzdHJhdGlvbi10cmFuc2FjdGlvblxuICAgKi9cbiAgc2VsZWN0aW9uS2V5KGtleTogc3RyaW5nKTogS2V5UmVnaXN0cmF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy5fc2VsZWN0aW9uS2V5ID0ga2V5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXRlUHJvb2Yga2V5XG4gICAqXG4gICAqIEByZXR1cm5zIHtLZXlSZWdpc3RyYXRpb25CdWlsZGVyfSBUaGlzIEtleSBSZWdpc3RyYXRpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgc3RhdGVwcm9vZiBrZXkuIFNlZSBjb25zZW5zdXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL2dldC1kZXRhaWxzL2FsZ29yYW5kX2NvbnNlbnN1cy8/ZnJvbV9xdWVyeT1zdGF0ZSNzdGF0ZS1wcm9vZi1rZXlzXG4gICAqL1xuICBzdGF0ZVByb29mS2V5KGtleTogc3RyaW5nKTogS2V5UmVnaXN0cmF0aW9uQnVpbGRlciB7XG4gICAgVXRpbHMudmFsaWRhdGVCYXNlNjQoa2V5KTtcbiAgICB0aGlzLl9zdGF0ZVByb29mS2V5ID0ga2V5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqU2V0cyB0aGUgdm90ZSBmaXJzdCByb3VuZFxuICAgKlxuICAgKiBAcmV0dXJucyB7S2V5UmVnaXN0cmF0aW9uQnVpbGRlcn0gVGhpcyBLZXkgUmVnaXN0cmF0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByb3VuZCBUaGUgZmlyc3Qgcm91bmQgdGhhdCB0aGUgcGFydGljaXBhdGlvbiBrZXkgaXMgdmFsaWQuIE5vdCB0byBiZSBjb25mdXNlZCB3aXRoIHRoZSBGaXJzdFZhbGlkIHJvdW5kIG9mIHRoZSBrZXlyZWcgdHJhbnNhY3Rpb24uXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL3JlZmVyZW5jZS90cmFuc2FjdGlvbnMvI2tleS1yZWdpc3RyYXRpb24tdHJhbnNhY3Rpb25cbiAgICovXG4gIHZvdGVGaXJzdChyb3VuZDogbnVtYmVyKTogS2V5UmVnaXN0cmF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIocm91bmQpKTtcbiAgICB0aGlzLl92b3RlRmlyc3QgPSByb3VuZDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZvdGUgbGFzdCByb3VuZFxuICAgKlxuICAgKiBAcmV0dXJucyB7S2V5UmVnaXN0cmF0aW9uQnVpbGRlcn0gVGhpcyBLZXkgUmVnaXN0cmF0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEEgcmVjb21tZW5kZWQgcmFuZ2UgaXMgMywwMDAsMDAwIHJvdW5kcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJvdW5kIE5vIHRoZW9yZXRpY2FsIGxpbWl0LlxuICAgKiBodHRwczovL2RldmVsb3Blci5hbGdvcmFuZC5vcmcvZG9jcy9ydW4tYS1ub2RlL3BhcnRpY2lwYXRlL2dlbmVyYXRlX2tleXMvXG4gICAqL1xuICB2b3RlTGFzdChyb3VuZDogbnVtYmVyKTogS2V5UmVnaXN0cmF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIocm91bmQpKTtcbiAgICB0aGlzLl92b3RlTGFzdCA9IHJvdW5kO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdm90ZSBrZXkgZGlsdXRpb25cbiAgICpcbiAgICogQHJldHVybnMge0tleVJlZ2lzdHJhdGlvbkJ1aWxkZXJ9IFRoaXMgS2V5IFJlZ2lzdHJhdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byAxMCwwMDBcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUgWzEwMDAwXS4gVG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBwYXJ0aWNpcGF0aW9uIGtleSwgc2V0IHRoZSBrZXkgZGlsdXRpb24gdmFsdWUgdG8gcm91Z2hseSB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIHJhbmdlIHRoYXQgdGhlIHBhcnRrZXkgaXMgdmFsaWQgZm9yLlxuICAgKiBodHRwczovL2RldmVsb3Blci5hbGdvcmFuZC5vcmcvZG9jcy9ydW4tYS1ub2RlL3BhcnRpY2lwYXRlL2dlbmVyYXRlX2tleXMvI2dlbmVyYXRlLXRoZS1wYXJ0aWNpcGF0aW9uLWtleS13aXRoLWdvYWxcbiAgICogQHBhcmFtIHNpemVcbiAgICovXG4gIHZvdGVLZXlEaWx1dGlvbihzaXplID0gMTAwMDApOiBLZXlSZWdpc3RyYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihzaXplKSk7XG4gICAgdGhpcy5fdm90ZUtleURpbHV0aW9uID0gc2l6ZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG5vbiBwYXJ0aWNpcGF0aW9uIGZsYWdcbiAgICpcbiAgICogQHJldHVybnMge0tleVJlZ2lzdHJhdGlvbkJ1aWxkZXJ9IFRoaXMgS2V5IFJlZ2lzdHJhdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vblBhcnRpY2lwYXRpb24gQWxsIG5ldyBBbGdvcmFuZCBhY2NvdW50cyBhcmUgcGFydGljaXBhdGluZyBieSBkZWZhdWx0LlxuICAgKiBUaGlzIG1lYW5zIHRoYXQgdGhleSBlYXJuIHJld2FyZHMuIE1hcmsgYW4gYWNjb3VudCBub25wYXJ0aWNpcGF0aW5nIGJ5IHNldHRpbmcgdGhpcyB2YWx1ZSB0byB0cnVlIGFuZCB0aGlzIGFjY291bnRcbiAgICogd2lsbCBubyBsb25nZXIgZWFybiByZXdhcmRzIE5FVkVSLlxuICAgKiBodHRwczovL2RldmVsb3Blci5hbGdvcmFuZC5vcmcvZG9jcy9yZWZlcmVuY2UvdHJhbnNhY3Rpb25zLyNrZXktcmVnaXN0cmF0aW9uLXRyYW5zYWN0aW9uXG4gICAqL1xuICBub25QYXJ0aWNpcGF0aW9uKG5vblBhcnRpY2lwYXRpb246IGJvb2xlYW4pOiBLZXlSZWdpc3RyYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLl9ub25QYXJ0aWNpcGF0aW9uID0gbm9uUGFydGljaXBhdGlvbjtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQWxnb1R4bigpOiBhbGdvc2RrLlRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5pc09mZmxpbmVLZXlSZWdBY2NvdW50TGliVHJhbnNhY3Rpb24oKVxuICAgICAgPyB0aGlzLmJ1aWxkT2ZmbGluZUtleVJlZ1RyYW5zYWN0aW9uKClcbiAgICAgIDogdGhpcy5pc05vblBhcnRpY2lwYXRpb25LZXlSZWdBY2NvdW50TGliVHJhbnNhY3Rpb24oKVxuICAgICAgPyB0aGlzLmJ1aWxkTm9uUGFydGljaXBhdGlvbktleVJlZ1RyYW5zYWN0aW9uKClcbiAgICAgIDogdGhpcy5idWlsZE9ubGluZUtleVJlZ1RyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkT2ZmbGluZUtleVJlZ1RyYW5zYWN0aW9uKCk6IGFsZ29zZGsuVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBhbGdvc2RrLm1ha2VLZXlSZWdpc3RyYXRpb25UeG5XaXRoU3VnZ2VzdGVkUGFyYW1zKFxuICAgICAgdGhpcy5fc2VuZGVyLFxuICAgICAgdGhpcy5fbm90ZSxcbiAgICAgIHVuZGVmaW5lZCwgLy8gdm90ZUtleSBwYXJhbVxuICAgICAgdW5kZWZpbmVkLCAvLyBzZWxlY3Rpb25LZXkgcGFyYW1cbiAgICAgIHVuZGVmaW5lZCwgLy8gdm90ZUZpcnN0IHBhcmFtXG4gICAgICB1bmRlZmluZWQsIC8vIHZvdGVMYXN0IHBhcmFtXG4gICAgICB1bmRlZmluZWQsIC8vIHZvdGVLZXlEaWx1dGlvbiBwYXJhbVxuICAgICAgdGhpcy5zdWdnZXN0ZWRQYXJhbXMsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRPbmxpbmVLZXlSZWdUcmFuc2FjdGlvbigpOiBhbGdvc2RrLlRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gYWxnb3Nkay5tYWtlS2V5UmVnaXN0cmF0aW9uVHhuV2l0aFN1Z2dlc3RlZFBhcmFtcyhcbiAgICAgIHRoaXMuX3NlbmRlcixcbiAgICAgIHRoaXMuX25vdGUsXG4gICAgICB0aGlzLl92b3RlS2V5LFxuICAgICAgdGhpcy5fc2VsZWN0aW9uS2V5LFxuICAgICAgdGhpcy5fdm90ZUZpcnN0LFxuICAgICAgdGhpcy5fdm90ZUxhc3QsXG4gICAgICB0aGlzLl92b3RlS2V5RGlsdXRpb24sXG4gICAgICB0aGlzLnN1Z2dlc3RlZFBhcmFtcyxcbiAgICAgIHVuZGVmaW5lZCwgLy8gcmVLZXlUbyBwYXJhbVxuICAgICAgdW5kZWZpbmVkLCAvLyBub25QYXJ0aWNpcGF0aW9uIHBhcmFtXG4gICAgICB0aGlzLl9zdGF0ZVByb29mS2V5LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTm9uUGFydGljaXBhdGlvbktleVJlZ1RyYW5zYWN0aW9uKCk6IGFsZ29zZGsuVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBhbGdvc2RrLm1ha2VLZXlSZWdpc3RyYXRpb25UeG5XaXRoU3VnZ2VzdGVkUGFyYW1zKFxuICAgICAgdGhpcy5fc2VuZGVyLFxuICAgICAgdGhpcy5fbm90ZSxcbiAgICAgIHVuZGVmaW5lZCwgLy8gdm90ZUtleSBwYXJhbVxuICAgICAgdW5kZWZpbmVkLCAvLyBzZWxlY3Rpb25LZXkgcGFyYW1cbiAgICAgIHVuZGVmaW5lZCwgLy8gdm90ZUZpcnN0IHBhcmFtXG4gICAgICB1bmRlZmluZWQsIC8vIHZvdGVMYXN0IHBhcmFtXG4gICAgICB1bmRlZmluZWQsIC8vIHZvdGVLZXlEaWx1dGlvbiBwYXJhbVxuICAgICAgdGhpcy5zdWdnZXN0ZWRQYXJhbXMsXG4gICAgICB0aGlzLl9yZUtleVRvLFxuICAgICAgdHJ1ZSwgLy8gbm9uUGFydGljaXBhdGlvbiBwYXJhbVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogVWludDhBcnJheSB8IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IHN1cGVyLmZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgY29uc3QgYWxnb1R4biA9IHR4LmdldEFsZ29UcmFuc2FjdGlvbigpO1xuXG4gICAgaWYgKGFsZ29UeG4pIHtcbiAgICAgIGlmICh0aGlzLmlzTm9uUGFydGljaXBhdGlvbktleVJlZ0FsZ29TREtUcmFuc2FjdGlvbihhbGdvVHhuKSkge1xuICAgICAgICB0aGlzLm5vblBhcnRpY2lwYXRpb24oISFhbGdvVHhuLm5vblBhcnRpY2lwYXRpb24pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzT25saW5lS2V5UmVnQWxnb1NES1RyYW5zYWN0aW9uKGFsZ29UeG4pKSB7XG4gICAgICAgIHRoaXMudm90ZUtleShhbGdvVHhuLnZvdGVLZXkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25LZXkoYWxnb1R4bi5zZWxlY3Rpb25LZXkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgICAgdGhpcy52b3RlRmlyc3QoYWxnb1R4bi52b3RlRmlyc3QpO1xuICAgICAgICB0aGlzLnZvdGVMYXN0KGFsZ29UeG4udm90ZUxhc3QpO1xuICAgICAgICB0aGlzLnZvdGVLZXlEaWx1dGlvbihhbGdvVHhuLnZvdGVLZXlEaWx1dGlvbik7XG4gICAgICAgIGlmIChhbGdvVHhuLnN0YXRlUHJvb2ZLZXkpIHtcbiAgICAgICAgICB0aGlzLnN0YXRlUHJvb2ZLZXkoYWxnb1R4bi5zdGF0ZVByb29mS2V5LnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkZWNvZGVUeG4gPSBVdGlscy5kZWNvZGVBbGdvVHhuKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBjb25zdCBhbGdvVHhuID0gZGVjb2RlVHhuLnR4bjtcbiAgICBpZiAoYWxnb1R4bi50eXBlICE9PSBhbGdvc2RrLlRyYW5zYWN0aW9uVHlwZS5rZXlyZWcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgVHJhbnNhY3Rpb24gVHlwZTogJHthbGdvVHhuLnR5cGV9LiBFeHBlY3RlZCAke2FsZ29zZGsuVHJhbnNhY3Rpb25UeXBlLmtleXJlZ31gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc09ubGluZUtleVJlZ0FsZ29TREtUcmFuc2FjdGlvbihhbGdvVHhuKSkge1xuICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkcyhcbiAgICAgICAgYWxnb1R4bi52b3RlS2V5LnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgYWxnb1R4bi5zZWxlY3Rpb25LZXkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICBhbGdvVHhuLnZvdGVGaXJzdCxcbiAgICAgICAgYWxnb1R4bi52b3RlTGFzdCxcbiAgICAgICAgYWxnb1R4bi52b3RlS2V5RGlsdXRpb24sXG4gICAgICAgIGFsZ29UeG4uc3RhdGVQcm9vZktleSAmJiBhbGdvVHhuLnN0YXRlUHJvb2ZLZXkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzTm9uUGFydGljaXBhdGlvbktleVJlZ0FsZ29TREtUcmFuc2FjdGlvbihhbGdvVHhuOiBhbGdvc2RrLlRyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhYWxnb1R4bi5ub25QYXJ0aWNpcGF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05vblBhcnRpY2lwYXRpb25LZXlSZWdBY2NvdW50TGliVHJhbnNhY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fbm9uUGFydGljaXBhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgaXNPbmxpbmVLZXlSZWdBbGdvU0RLVHJhbnNhY3Rpb24oYWxnb1R4bjogYWxnb3Nkay5UcmFuc2FjdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKFxuICAgICAgdGhpcy5pc09mZmxpbmVLZXlSZWdBbGdvU0RLVHJhbnNhY3Rpb24oYWxnb1R4bikgfHwgdGhpcy5pc05vblBhcnRpY2lwYXRpb25LZXlSZWdBbGdvU0RLVHJhbnNhY3Rpb24oYWxnb1R4bilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09ubGluZUtleVJlZ0FjY291bnRMaWJUcmFuc2FjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0aGlzLmlzT2ZmbGluZUtleVJlZ0FjY291bnRMaWJUcmFuc2FjdGlvbigpIHx8IHRoaXMuaXNOb25QYXJ0aWNpcGF0aW9uS2V5UmVnQWNjb3VudExpYlRyYW5zYWN0aW9uKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09mZmxpbmVLZXlSZWdBbGdvU0RLVHJhbnNhY3Rpb24oYWxnb1R4bjogYWxnb3Nkay5UcmFuc2FjdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhYWxnb1R4bi52b3RlS2V5ICYmXG4gICAgICAhYWxnb1R4bi5zZWxlY3Rpb25LZXkgJiZcbiAgICAgICFhbGdvVHhuLnZvdGVGaXJzdCAmJlxuICAgICAgIWFsZ29UeG4udm90ZUxhc3QgJiZcbiAgICAgICFhbGdvVHhuLnZvdGVLZXlEaWx1dGlvbiAmJlxuICAgICAgIWFsZ29UeG4uc3RhdGVQcm9vZktleSAmJlxuICAgICAgIWFsZ29UeG4ubm9uUGFydGljaXBhdGlvblxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzT2ZmbGluZUtleVJlZ0FjY291bnRMaWJUcmFuc2FjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMuX3ZvdGVLZXkgJiZcbiAgICAgICF0aGlzLl9zZWxlY3Rpb25LZXkgJiZcbiAgICAgICF0aGlzLl92b3RlRmlyc3QgJiZcbiAgICAgICF0aGlzLl92b3RlTGFzdCAmJlxuICAgICAgIXRoaXMuX3ZvdGVLZXlEaWx1dGlvbiAmJlxuICAgICAgIXRoaXMuX3N0YXRlUHJvb2ZLZXkgJiZcbiAgICAgICF0aGlzLl9ub25QYXJ0aWNpcGF0aW9uXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgIGlmICh0aGlzLmlzT25saW5lS2V5UmVnQWNjb3VudExpYlRyYW5zYWN0aW9uKCkpIHtcbiAgICAgIC8vIGludmFsaWQgb2ZmbGluZSB3aWxsIHJlYWNoIGhlcmVcbiAgICAgIHRoaXMudmFsaWRhdGVGaWVsZHMoXG4gICAgICAgIHRoaXMuX3ZvdGVLZXksXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbktleSxcbiAgICAgICAgdGhpcy5fdm90ZUZpcnN0LFxuICAgICAgICB0aGlzLl92b3RlTGFzdCxcbiAgICAgICAgdGhpcy5fdm90ZUtleURpbHV0aW9uLFxuICAgICAgICB0aGlzLl9zdGF0ZVByb29mS2V5LFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gb2ZmbGluZSBvciBub25wYXJ0aWNpcGF0aW9uIHRyYW5zYWN0aW9uXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX3ZvdGVLZXkgfHxcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uS2V5IHx8XG4gICAgICAgIHRoaXMuX3ZvdGVGaXJzdCB8fFxuICAgICAgICB0aGlzLl92b3RlTGFzdCB8fFxuICAgICAgICB0aGlzLl92b3RlS2V5RGlsdXRpb24gfHxcbiAgICAgICAgdGhpcy5fc3RhdGVQcm9vZktleVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICAnVm90ZUtleSwgU2VsZWN0aW9uS2V5LCBWb3RlRmlyc3QsIFZvdGVMYXN0LCBWb3RlS2V5RGlsdXRpb24sIFN0YXRlUHJvb2ZLZXkgZmllbGRzIGNhbm5vdCBiZSBzZXQgd2hlbiBvZmZsaW5lIG9yIG5vbnBhcnRpY2lwYXRpb24gaXMgc2V0JyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRmllbGRzKFxuICAgIHZvdGVLZXk6IHN0cmluZyxcbiAgICBzZWxlY3Rpb25LZXk6IHN0cmluZyxcbiAgICB2b3RlRmlyc3Q6IG51bWJlcixcbiAgICB2b3RlTGFzdDogbnVtYmVyLFxuICAgIHZvdGVLZXlEaWx1dGlvbjogbnVtYmVyLFxuICAgIHN0YXRlUHJvb2ZLZXk/OiBzdHJpbmcsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBLZXlSZWdUeG5TY2hlbWEudmFsaWRhdGUoe1xuICAgICAgdm90ZUtleSxcbiAgICAgIHNlbGVjdGlvbktleSxcbiAgICAgIHZvdGVGaXJzdCxcbiAgICAgIHZvdGVMYXN0LFxuICAgICAgdm90ZUtleURpbHV0aW9uLFxuICAgICAgc3RhdGVQcm9vZktleSxcbiAgICB9KTtcblxuICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYFRyYW5zYWN0aW9uIHZhbGlkYXRpb24gZmFpbGVkOiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { Seed } from './ifaces';
2
+ export declare class SeedEncoding {
3
+ private static genericHash;
4
+ /**
5
+ * Checks if a seed is valid
6
+ * @param {String} seed - encoded Algorand seed
7
+ * @returns {Boolean} true if valid, false otherwise
8
+ */
9
+ static isValidSeed(seed: string): boolean;
10
+ /**
11
+ * Decode a seed
12
+ *
13
+ * @param seed
14
+ * @return {{checksum: Uint8Array, seed: Uint8Array}}
15
+ */
16
+ static decode(seed: string): Seed;
17
+ /**
18
+ * Encode a secret key into a seed
19
+ *
20
+ * @param secretKey
21
+ * @return {String} encoded seed
22
+ */
23
+ static encode(secretKey: Uint8Array): string;
24
+ }
25
+ //# sourceMappingURL=seedEncoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seedEncoding.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/seedEncoding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAOhC,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IA0BzC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAajC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM;CAe7C"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.SeedEncoding = void 0;
26
+ const base32 = __importStar(require("hi-base32"));
27
+ const js_sha512_1 = __importDefault(require("js-sha512"));
28
+ const SEED_BYTES_LENGTH = 32;
29
+ const ALGORAND_SEED_BYTE_LENGTH = 36;
30
+ const ALGORAND_CHECKSUM_BYTE_LENGTH = 4;
31
+ const ALGORAND_SEED_LENGTH = 58;
32
+ class SeedEncoding {
33
+ static genericHash(arr) {
34
+ return js_sha512_1.default.sha512_256.array(arr);
35
+ }
36
+ /**
37
+ * Checks if a seed is valid
38
+ * @param {String} seed - encoded Algorand seed
39
+ * @returns {Boolean} true if valid, false otherwise
40
+ */
41
+ static isValidSeed(seed) {
42
+ if (seed.length !== ALGORAND_SEED_LENGTH) {
43
+ return false;
44
+ }
45
+ // Try to decode
46
+ let decoded;
47
+ try {
48
+ decoded = SeedEncoding.decode(seed);
49
+ }
50
+ catch (e) {
51
+ return false;
52
+ }
53
+ // Compute checksum
54
+ const checksum = SeedEncoding.genericHash(decoded.seed).slice(SEED_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, SEED_BYTES_LENGTH);
55
+ // Check if the checksum and the seed are equal
56
+ if (checksum.length !== decoded.checksum.length) {
57
+ return false;
58
+ }
59
+ return checksum.every((val, i) => val === decoded.checksum[i]);
60
+ }
61
+ /**
62
+ * Decode a seed
63
+ *
64
+ * @param seed
65
+ * @return {{checksum: Uint8Array, seed: Uint8Array}}
66
+ */
67
+ static decode(seed) {
68
+ // try to decode
69
+ const decoded = base32.decode.asBytes(seed);
70
+ // Sanity check
71
+ if (decoded.length !== ALGORAND_SEED_BYTE_LENGTH)
72
+ throw new Error('seed seems to be malformed');
73
+ return {
74
+ seed: new Uint8Array(decoded.slice(0, ALGORAND_SEED_BYTE_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH)),
75
+ checksum: new Uint8Array(decoded.slice(SEED_BYTES_LENGTH, ALGORAND_SEED_BYTE_LENGTH)),
76
+ };
77
+ }
78
+ /**
79
+ * Encode a secret key into a seed
80
+ *
81
+ * @param secretKey
82
+ * @return {String} encoded seed
83
+ */
84
+ static encode(secretKey) {
85
+ // get seed
86
+ const seed = secretKey.slice(0, SEED_BYTES_LENGTH);
87
+ // compute checksum
88
+ const checksum = SeedEncoding.genericHash(seed).slice(SEED_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, SEED_BYTES_LENGTH);
89
+ const arraySeed = new Uint8Array(seed.length + checksum.length);
90
+ arraySeed.set(seed);
91
+ arraySeed.set(checksum, seed.length);
92
+ const encodedSeed = base32.encode(arraySeed);
93
+ return encodedSeed.toString().slice(0, ALGORAND_SEED_LENGTH); // removing the extra '===='
94
+ }
95
+ }
96
+ exports.SeedEncoding = SeedEncoding;
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VlZEVuY29kaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vYWxnby9zZWVkRW5jb2RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFvQztBQUNwQywwREFBK0I7QUFHL0IsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFDN0IsTUFBTSx5QkFBeUIsR0FBRyxFQUFFLENBQUM7QUFDckMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUM7QUFDeEMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFFaEMsTUFBYSxZQUFZO0lBQ2YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFlO1FBQ3hDLE9BQU8sbUJBQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFZO1FBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxvQkFBb0IsRUFBRTtZQUN4QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsZ0JBQWdCO1FBQ2hCLElBQUksT0FBYSxDQUFDO1FBQ2xCLElBQUk7WUFDRixPQUFPLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyQztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELG1CQUFtQjtRQUNuQixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQzNELGlCQUFpQixHQUFHLDZCQUE2QixFQUNqRCxpQkFBaUIsQ0FDbEIsQ0FBQztRQUVGLCtDQUErQztRQUMvQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDL0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFZO1FBQ3hCLGdCQUFnQjtRQUNoQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QyxlQUFlO1FBQ2YsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLHlCQUF5QjtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUVoRyxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHlCQUF5QixHQUFHLDZCQUE2QixDQUFDLENBQUM7WUFDakcsUUFBUSxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUseUJBQXlCLENBQUMsQ0FBQztTQUN0RixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFxQjtRQUNqQyxXQUFXO1FBQ1gsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNuRCxtQkFBbUI7UUFDbkIsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQ25ELGlCQUFpQixHQUFHLDZCQUE2QixFQUNqRCxpQkFBaUIsQ0FDbEIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0MsT0FBTyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsNEJBQTRCO0lBQzVGLENBQUM7Q0FDRjtBQTVFRCxvQ0E0RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlMzIgZnJvbSAnaGktYmFzZTMyJztcbmltcG9ydCBzaGE1MTIgZnJvbSAnanMtc2hhNTEyJztcbmltcG9ydCB7IFNlZWQgfSBmcm9tICcuL2lmYWNlcyc7XG5cbmNvbnN0IFNFRURfQllURVNfTEVOR1RIID0gMzI7XG5jb25zdCBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIID0gMzY7XG5jb25zdCBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCA9IDQ7XG5jb25zdCBBTEdPUkFORF9TRUVEX0xFTkdUSCA9IDU4O1xuXG5leHBvcnQgY2xhc3MgU2VlZEVuY29kaW5nIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJpY0hhc2goYXJyOiBVaW50OEFycmF5KTogbnVtYmVyW10ge1xuICAgIHJldHVybiBzaGE1MTIuc2hhNTEyXzI1Ni5hcnJheShhcnIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHNlZWQgaXMgdmFsaWRcbiAgICogQHBhcmFtIHtTdHJpbmd9IHNlZWQgLSBlbmNvZGVkIEFsZ29yYW5kIHNlZWRcbiAgICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgdmFsaWQsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgc3RhdGljIGlzVmFsaWRTZWVkKHNlZWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChzZWVkLmxlbmd0aCAhPT0gQUxHT1JBTkRfU0VFRF9MRU5HVEgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUcnkgdG8gZGVjb2RlXG4gICAgbGV0IGRlY29kZWQ6IFNlZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGRlY29kZWQgPSBTZWVkRW5jb2RpbmcuZGVjb2RlKHNlZWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb21wdXRlIGNoZWNrc3VtXG4gICAgY29uc3QgY2hlY2tzdW0gPSBTZWVkRW5jb2RpbmcuZ2VuZXJpY0hhc2goZGVjb2RlZC5zZWVkKS5zbGljZShcbiAgICAgIFNFRURfQllURVNfTEVOR1RIIC0gQUxHT1JBTkRfQ0hFQ0tTVU1fQllURV9MRU5HVEgsXG4gICAgICBTRUVEX0JZVEVTX0xFTkdUSCxcbiAgICApO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGNoZWNrc3VtIGFuZCB0aGUgc2VlZCBhcmUgZXF1YWxcbiAgICBpZiAoY2hlY2tzdW0ubGVuZ3RoICE9PSBkZWNvZGVkLmNoZWNrc3VtLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gY2hlY2tzdW0uZXZlcnkoKHZhbCwgaSkgPT4gdmFsID09PSBkZWNvZGVkLmNoZWNrc3VtW2ldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGUgYSBzZWVkXG4gICAqXG4gICAqIEBwYXJhbSBzZWVkXG4gICAqIEByZXR1cm4ge3tjaGVja3N1bTogVWludDhBcnJheSwgc2VlZDogVWludDhBcnJheX19XG4gICAqL1xuICBzdGF0aWMgZGVjb2RlKHNlZWQ6IHN0cmluZyk6IFNlZWQge1xuICAgIC8vIHRyeSB0byBkZWNvZGVcbiAgICBjb25zdCBkZWNvZGVkID0gYmFzZTMyLmRlY29kZS5hc0J5dGVzKHNlZWQpO1xuXG4gICAgLy8gU2FuaXR5IGNoZWNrXG4gICAgaWYgKGRlY29kZWQubGVuZ3RoICE9PSBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIKSB0aHJvdyBuZXcgRXJyb3IoJ3NlZWQgc2VlbXMgdG8gYmUgbWFsZm9ybWVkJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VlZDogbmV3IFVpbnQ4QXJyYXkoZGVjb2RlZC5zbGljZSgwLCBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIIC0gQUxHT1JBTkRfQ0hFQ0tTVU1fQllURV9MRU5HVEgpKSxcbiAgICAgIGNoZWNrc3VtOiBuZXcgVWludDhBcnJheShkZWNvZGVkLnNsaWNlKFNFRURfQllURVNfTEVOR1RILCBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIKSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGUgYSBzZWNyZXQga2V5IGludG8gYSBzZWVkXG4gICAqXG4gICAqIEBwYXJhbSBzZWNyZXRLZXlcbiAgICogQHJldHVybiB7U3RyaW5nfSBlbmNvZGVkIHNlZWRcbiAgICovXG4gIHN0YXRpYyBlbmNvZGUoc2VjcmV0S2V5OiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICAvLyBnZXQgc2VlZFxuICAgIGNvbnN0IHNlZWQgPSBzZWNyZXRLZXkuc2xpY2UoMCwgU0VFRF9CWVRFU19MRU5HVEgpO1xuICAgIC8vIGNvbXB1dGUgY2hlY2tzdW1cbiAgICBjb25zdCBjaGVja3N1bSA9IFNlZWRFbmNvZGluZy5nZW5lcmljSGFzaChzZWVkKS5zbGljZShcbiAgICAgIFNFRURfQllURVNfTEVOR1RIIC0gQUxHT1JBTkRfQ0hFQ0tTVU1fQllURV9MRU5HVEgsXG4gICAgICBTRUVEX0JZVEVTX0xFTkdUSCxcbiAgICApO1xuICAgIGNvbnN0IGFycmF5U2VlZCA9IG5ldyBVaW50OEFycmF5KHNlZWQubGVuZ3RoICsgY2hlY2tzdW0ubGVuZ3RoKTtcbiAgICBhcnJheVNlZWQuc2V0KHNlZWQpO1xuICAgIGFycmF5U2VlZC5zZXQoY2hlY2tzdW0sIHNlZWQubGVuZ3RoKTtcbiAgICBjb25zdCBlbmNvZGVkU2VlZCA9IGJhc2UzMi5lbmNvZGUoYXJyYXlTZWVkKTtcblxuICAgIHJldHVybiBlbmNvZGVkU2VlZC50b1N0cmluZygpLnNsaWNlKDAsIEFMR09SQU5EX1NFRURfTEVOR1RIKTsgLy8gcmVtb3ZpbmcgdGhlIGV4dHJhICc9PT09J1xuICB9XG59XG4iXX0=
@@ -0,0 +1,75 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import algosdk from 'algosdk';
3
+ import { BaseTransaction, TransactionType, BaseKey } from '@bitgo/sdk-core';
4
+ import { KeyPair } from './keyPair';
5
+ import { TxData } from './ifaces';
6
+ export declare class Transaction extends BaseTransaction {
7
+ private _algoTransaction?;
8
+ private _signedTransaction?;
9
+ private _numberOfRequiredSigners;
10
+ private _sender;
11
+ private _signers;
12
+ private _signedBy;
13
+ constructor(coinConfig: Readonly<CoinConfig>);
14
+ /** @inheritdoc */
15
+ canSign({ key }: BaseKey): boolean;
16
+ sender(address: string): void;
17
+ /**
18
+ * Signs transaction.
19
+ *
20
+ * @param {KeyPair} keyPair Signer keys.
21
+ */
22
+ sign(keyPair: KeyPair[]): void;
23
+ /**
24
+ * Signs transaction.
25
+ *
26
+ * @param {KeyPair} keyPair Signer keys.
27
+ */
28
+ private signSingle;
29
+ /**
30
+ * Signs multisig transaction.
31
+ *
32
+ * @param {KeyPair} keyPair Signers keys.
33
+ */
34
+ private signMultiSig;
35
+ set signedTransaction(txn: Uint8Array);
36
+ get numberOfRequiredSigners(): number;
37
+ /**
38
+ * Sets the number of signers required for signing this transaction.
39
+ *
40
+ * @param {number} num Threshold number of signers.
41
+ */
42
+ setNumberOfRequiredSigners(num: number): void;
43
+ set signers(addrs: string[]);
44
+ get signers(): string[];
45
+ set signedBy(signer: string[]);
46
+ get signedBy(): string[];
47
+ /**
48
+ * Sets algo transaction.
49
+ *
50
+ * @param {algosdk.Transaction} tx
51
+ */
52
+ setAlgoTransaction(tx: algosdk.Transaction): void;
53
+ /**
54
+ * Get underlaying algo transaction.
55
+ *
56
+ * @returns {algosdk.Transaction}
57
+ */
58
+ getAlgoTransaction(): algosdk.Transaction | undefined;
59
+ /**
60
+ * Set the transaction type.
61
+ *
62
+ * @param {TransactionType} transactionType The transaction type to be set.
63
+ */
64
+ setTransactionType(transactionType: TransactionType): void;
65
+ estimateSize(): number;
66
+ /** @inheritdoc */
67
+ toBroadcastFormat(): Uint8Array;
68
+ /** @inheritdoc */
69
+ toJson(): TxData;
70
+ /**
71
+ * Load the input and output data on this transaction.
72
+ */
73
+ loadInputsAndOutputs(): void;
74
+ }
75
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,eAAe,EACf,OAAO,EAIR,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,gBAAgB,CAAC,CAAsB;IAC/C,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAW;gBAEhB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM5C,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IAiBlC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI7B;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI;IAW9B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA+BpB,IAAI,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAEpC;IAED,IAAI,uBAAuB,IAAI,MAAM,CAEpC;IAED;;;;OAIG;IACH,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7C,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAE1B;IAED,IAAI,OAAO,IAAI,MAAM,EAAE,CAEtB;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAE5B;IAED,IAAI,QAAQ,IAAI,MAAM,EAAE,CAEvB;IAED;;;;OAIG;IAEH,kBAAkB,CAAC,EAAE,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI;IAIjD;;;;OAIG;IAEH,kBAAkB,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS;IAIrD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,YAAY,IAAI,MAAM;IAQtB,kBAAkB;IAClB,iBAAiB,IAAI,UAAU;IAW/B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAoDhB;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAsB7B"}