@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,227 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.Transaction = void 0;
23
+ const _ = __importStar(require("lodash"));
24
+ const casper_js_sdk_1 = require("casper-js-sdk");
25
+ const sdk_core_1 = require("@bitgo/sdk-core");
26
+ const keyPair_1 = require("./keyPair");
27
+ const constants_1 = require("./constants");
28
+ const utils_1 = require("./utils");
29
+ class Transaction extends sdk_core_1.BaseTransaction {
30
+ constructor(_coinConfig) {
31
+ super(_coinConfig);
32
+ }
33
+ /** @inheritdoc */
34
+ canSign(key) {
35
+ return true;
36
+ }
37
+ sign(keyPair) {
38
+ const keys = keyPair.getKeys();
39
+ if (!keys.prv) {
40
+ throw new sdk_core_1.SigningError('Missing private key');
41
+ }
42
+ if (this._deploy.approvals.some((ap) => !ap.signer.startsWith(constants_1.SECP256K1_PREFIX) || !utils_1.isValidPublicKey(utils_1.removeAlgoPrefixFromHexValue(ap.signer)))) {
43
+ throw new sdk_core_1.SigningError('Invalid deploy. Already signed with an invalid key');
44
+ }
45
+ const secpKeys = new casper_js_sdk_1.Keys.Secp256K1(Uint8Array.from(Buffer.from(keys.pub, 'hex')), Uint8Array.from(Buffer.from(keys.prv, 'hex')));
46
+ const signedDeploy = casper_js_sdk_1.DeployUtil.signDeploy(this._deploy, secpKeys);
47
+ this._signatures.push(signedDeploy.approvals[signedDeploy.approvals.length - 1].signature);
48
+ }
49
+ /**
50
+ * Add a signature to this transaction and to and its deploy
51
+ *
52
+ * @param {string} signature The signature to add, in string hex format
53
+ * @param {KeyPair} keyPair The key pair that created the signature
54
+ */
55
+ addSignature(signature, keyPair) {
56
+ const pub = keyPair.getKeys().pub;
57
+ const signatureBuffer = Uint8Array.from(Buffer.from(signature, 'hex'));
58
+ const pubKeyBuffer = Uint8Array.from(Buffer.from(pub, 'hex'));
59
+ const parsedPublicKey = casper_js_sdk_1.Keys.Secp256K1.parsePublicKey(pubKeyBuffer, 'raw');
60
+ const pubKeyHex = casper_js_sdk_1.Keys.Secp256K1.accountHex(parsedPublicKey);
61
+ if (utils_1.removeAlgoPrefixFromHexValue(pubKeyHex) !== pub) {
62
+ throw new sdk_core_1.SigningError('Signer does not match signature');
63
+ }
64
+ const signedDeploy = casper_js_sdk_1.DeployUtil.setSignature(this._deploy, signatureBuffer, casper_js_sdk_1.CLPublicKey.fromSecp256K1(parsedPublicKey));
65
+ const approval = _.last(signedDeploy.approvals);
66
+ if (utils_1.removeAlgoPrefixFromHexValue(approval.signature) !== signature) {
67
+ throw new sdk_core_1.SigningError('Invalid signature');
68
+ }
69
+ this._signatures.push(signature);
70
+ }
71
+ /** @inheritdoc */
72
+ toBroadcastFormat() {
73
+ if (!this.casperTx) {
74
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
75
+ }
76
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
77
+ const txJson = casper_js_sdk_1.DeployUtil.deployToJson(this.casperTx);
78
+ // The new casper lib is converting the TTL from miliseconds to another date format, in this case 1 day
79
+ // we need to leave it as ms for the HSM to be able to parse it
80
+ txJson.deploy.header.ttl = `${this.casperTx.header.ttl}ms`;
81
+ this.setOwnersInJson(txJson);
82
+ this.setTransfersFieldsInJson(txJson);
83
+ this.setDelegateFieldsInJson(txJson);
84
+ return JSON.stringify(txJson);
85
+ }
86
+ /** @inheritdoc */
87
+ toJson() {
88
+ var _a;
89
+ const deployPayment = (_a = this._deploy.payment.asModuleBytes()) === null || _a === void 0 ? void 0 : _a.getArgByName('amount');
90
+ if (!deployPayment) {
91
+ throw new sdk_core_1.InvalidTransactionError('Undefined fee');
92
+ }
93
+ const owner1Index = 0;
94
+ const owner2Index = 1;
95
+ const owner3Index = 2;
96
+ const sourcePublicKey = Buffer.from(this._deploy.header.account.value()).toString('hex');
97
+ const sourceAddress = new keyPair_1.KeyPair({ pub: sourcePublicKey }).getAddress();
98
+ const result = {
99
+ hash: Buffer.from(this._deploy.hash).toString('hex'),
100
+ fee: { gasLimit: deployPayment.value().toString(), gasPrice: this._deploy.header.gasPrice.toString() },
101
+ from: sourceAddress,
102
+ startTime: new Date(this._deploy.header.timestamp).toISOString(),
103
+ expiration: this._deploy.header.ttl,
104
+ deployType: this._deploy.session.getArgByName(constants_1.TRANSACTION_TYPE).value(),
105
+ };
106
+ const transactionType = utils_1.getDeployType(this._deploy.session);
107
+ switch (transactionType) {
108
+ case sdk_core_1.TransactionType.Send:
109
+ result.to = utils_1.getTransferDestinationAddress(this._deploy.session);
110
+ result.amount = utils_1.getTransferAmount(this._deploy.session);
111
+ result.transferId = utils_1.getTransferId(this._deploy.session);
112
+ break;
113
+ case sdk_core_1.TransactionType.WalletInitialization:
114
+ result.owner1 = this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + owner1Index).value();
115
+ result.owner2 = this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + owner2Index).value();
116
+ result.owner3 = this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + owner3Index).value();
117
+ break;
118
+ case sdk_core_1.TransactionType.StakingLock:
119
+ result.fromDelegate = utils_1.getDelegatorAddress(this.casperTx.session);
120
+ result.validator = utils_1.getValidatorAddress(this.casperTx.session);
121
+ result.amount = utils_1.getDelegateAmount(this.casperTx.session);
122
+ break;
123
+ case sdk_core_1.TransactionType.StakingUnlock:
124
+ result.fromDelegate = utils_1.getDelegatorAddress(this.casperTx.session);
125
+ result.validator = utils_1.getValidatorAddress(this.casperTx.session);
126
+ result.amount = utils_1.getDelegateAmount(this.casperTx.session);
127
+ break;
128
+ }
129
+ return result;
130
+ }
131
+ /**
132
+ * Set the transaction type
133
+ *
134
+ * @param {TransactionType} transactionType The transaction type to be set
135
+ */
136
+ setTransactionType(transactionType) {
137
+ this._type = transactionType;
138
+ }
139
+ /**
140
+ * Retrieve signatures from the deploy instance and load them into the signatures list
141
+ */
142
+ loadPreviousSignatures() {
143
+ if (this._deploy.approvals && this._deploy.approvals.length > 0) {
144
+ this._deploy.approvals.forEach((approval) => {
145
+ this._signatures.push(approval.signature);
146
+ });
147
+ }
148
+ }
149
+ /**
150
+ * Set owners inside a json representing a wallet initialization tx.
151
+ *
152
+ * @param {Record<string, any>} txJson json to modify
153
+ */
154
+ setOwnersInJson(txJson) {
155
+ if (utils_1.getDeployType(this.casperTx.session) === sdk_core_1.TransactionType.WalletInitialization) {
156
+ const argName = 0;
157
+ const argValue = 1;
158
+ const owner0 = 0;
159
+ const owner1 = 1;
160
+ const owner2 = 2;
161
+ const ownersValues = new Map();
162
+ ownersValues.set(constants_1.TRANSACTION_TYPE, this.casperTx.session.getArgByName(constants_1.TRANSACTION_TYPE).value());
163
+ [owner0, owner1, owner2].forEach((index) => {
164
+ ownersValues.set(constants_1.OWNER_PREFIX + index, this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + index).value());
165
+ });
166
+ txJson['deploy']['session']['ModuleBytes']['args'].forEach((arg) => {
167
+ if (ownersValues.has(arg[argName])) {
168
+ arg[argValue]['parsed'] = ownersValues.get(arg[argName]);
169
+ }
170
+ });
171
+ }
172
+ }
173
+ /**
174
+ * Set transfer fields inside a json representing a transfer tx.
175
+ *
176
+ * @param {Record<string, any>} txJson json to modify
177
+ */
178
+ setTransfersFieldsInJson(txJson) {
179
+ if (utils_1.getDeployType(this.casperTx.session) === sdk_core_1.TransactionType.Send) {
180
+ const argName = 0;
181
+ const argValue = 1;
182
+ const transferValues = new Map();
183
+ transferValues.set(constants_1.TRANSACTION_TYPE, this.casperTx.session.getArgByName(constants_1.TRANSACTION_TYPE).value());
184
+ transferValues.set('amount', utils_1.getTransferAmount(this.casperTx.session));
185
+ transferValues.set('to_address', utils_1.getTransferDestinationAddress(this.casperTx.session));
186
+ const transferId = utils_1.getTransferId(this.casperTx.session);
187
+ if (transferId !== undefined) {
188
+ transferValues.set('id', transferId.toString());
189
+ }
190
+ txJson['deploy']['session']['Transfer']['args'].forEach((arg) => {
191
+ if (transferValues.has(arg[argName])) {
192
+ arg[argValue]['parsed'] = transferValues.get(arg[argName]);
193
+ }
194
+ });
195
+ }
196
+ }
197
+ /**
198
+ * Set delegate / undelegate fields inside a json representing the tx.
199
+ *
200
+ * @param {Record<string, any>} txJson json to modify
201
+ */
202
+ setDelegateFieldsInJson(txJson) {
203
+ if (utils_1.getDeployType(this.casperTx.session) === sdk_core_1.TransactionType.StakingLock ||
204
+ utils_1.getDeployType(this.casperTx.session) === sdk_core_1.TransactionType.StakingUnlock) {
205
+ const argName = 0;
206
+ const argValue = 1;
207
+ const delegateValues = new Map();
208
+ delegateValues.set(constants_1.TRANSACTION_TYPE, this.casperTx.session.getArgByName(constants_1.TRANSACTION_TYPE).value());
209
+ delegateValues.set('amount', utils_1.getDelegateAmount(this.casperTx.session));
210
+ delegateValues.set(constants_1.DELEGATE_FROM_ADDRESS, utils_1.getDelegatorAddress(this.casperTx.session));
211
+ delegateValues.set(constants_1.DELEGATE_VALIDATOR, utils_1.getValidatorAddress(this.casperTx.session));
212
+ txJson.deploy.session.ModuleBytes.args.forEach((arg) => {
213
+ if (delegateValues.has(arg[argName])) {
214
+ arg[argValue]['parsed'] = delegateValues.get(arg[argName]);
215
+ }
216
+ });
217
+ }
218
+ }
219
+ get casperTx() {
220
+ return this._deploy;
221
+ }
222
+ set casperTx(deploy) {
223
+ this._deploy = deploy;
224
+ }
225
+ }
226
+ exports.Transaction = Transaction;
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9jc3ByL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBNEI7QUFFNUIsaURBQTZGO0FBQzdGLDhDQUFtSDtBQUNuSCx1Q0FBb0M7QUFFcEMsMkNBTXFCO0FBQ3JCLG1DQVVpQjtBQUVqQixNQUFhLFdBQVksU0FBUSwwQkFBZTtJQUk5QyxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFnQjtRQUNuQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDYixNQUFNLElBQUksdUJBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsSUFDRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ3pCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLDRCQUFnQixDQUFDLElBQUksQ0FBQyx3QkFBZ0IsQ0FBQyxvQ0FBNEIsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDOUcsRUFDRDtZQUNBLE1BQU0sSUFBSSx1QkFBWSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7U0FDOUU7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLG9CQUFJLENBQUMsU0FBUyxDQUNqQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUM3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QUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLE1BQXlCO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7Q0FHRjtBQWhQRCxrQ0FnUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQ0xQdWJsaWNLZXkgYXMgUHVibGljS2V5LCBEZXBsb3lVdGlsLCBLZXlzLCBDTFN0cmluZywgQ0xVNTEyIH0gZnJvbSAnY2FzcGVyLWpzLXNkayc7XG5pbXBvcnQgeyBCYXNlS2V5LCBCYXNlVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uVHlwZSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFNpZ25pbmdFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IENhc3BlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi9pZmFjZXMnO1xuaW1wb3J0IHtcbiAgREVMRUdBVEVfRlJPTV9BRERSRVNTLFxuICBERUxFR0FURV9WQUxJREFUT1IsXG4gIE9XTkVSX1BSRUZJWCxcbiAgU0VDUDI1NksxX1BSRUZJWCxcbiAgVFJBTlNBQ1RJT05fVFlQRSxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgZ2V0VHJhbnNmZXJBbW91bnQsXG4gIGdldFRyYW5zZmVyRGVzdGluYXRpb25BZGRyZXNzLFxuICBnZXRUcmFuc2ZlcklkLFxuICBpc1ZhbGlkUHVibGljS2V5LFxuICByZW1vdmVBbGdvUHJlZml4RnJvbUhleFZhbHVlLFxuICBnZXREZXBsb3lUeXBlLFxuICBnZXREZWxlZ2F0b3JBZGRyZXNzLFxuICBnZXRWYWxpZGF0b3JBZGRyZXNzLFxuICBnZXREZWxlZ2F0ZUFtb3VudCxcbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX2RlcGxveTogRGVwbG95VXRpbC5EZXBsb3k7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzaWduKGtleVBhaXI6IEtleVBhaXIpOiB2b2lkIHtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLl9kZXBsb3kuYXBwcm92YWxzLnNvbWUoXG4gICAgICAgIChhcCkgPT4gIWFwLnNpZ25lci5zdGFydHNXaXRoKFNFQ1AyNTZLMV9QUkVGSVgpIHx8ICFpc1ZhbGlkUHVibGljS2V5KHJlbW92ZUFsZ29QcmVmaXhGcm9tSGV4VmFsdWUoYXAuc2lnbmVyKSksXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdJbnZhbGlkIGRlcGxveS4gQWxyZWFkeSBzaWduZWQgd2l0aCBhbiBpbnZhbGlkIGtleScpO1xuICAgIH1cbiAgICBjb25zdCBzZWNwS2V5cyA9IG5ldyBLZXlzLlNlY3AyNTZLMShcbiAgICAgIFVpbnQ4QXJyYXkuZnJvbShCdWZmZXIuZnJvbShrZXlzLnB1YiwgJ2hleCcpKSxcbiAgICAgIFVpbnQ4QXJyYXkuZnJvbShCdWZmZXIuZnJvbShrZXlzLnBydiwgJ2hleCcpKSxcbiAgICApO1xuICAgIGNvbnN0IHNpZ25lZERlcGxveSA9IERlcGxveVV0aWwuc2lnbkRlcGxveSh0aGlzLl9kZXBsb3ksIHNlY3BLZXlzKTtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmVkRGVwbG95LmFwcHJvdmFsc1tzaWduZWREZXBsb3kuYXBwcm92YWxzLmxlbmd0aCAtIDFdLnNpZ25hdHVyZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgc2lnbmF0dXJlIHRvIHRoaXMgdHJhbnNhY3Rpb24gYW5kIHRvIGFuZCBpdHMgZGVwbG95XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgVGhlIHNpZ25hdHVyZSB0byBhZGQsIGluIHN0cmluZyBoZXggZm9ybWF0XG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBUaGUga2V5IHBhaXIgdGhhdCBjcmVhdGVkIHRoZSBzaWduYXR1cmVcbiAgICovXG4gIGFkZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZywga2V5UGFpcjogS2V5UGFpcik6IHZvaWQge1xuICAgIGNvbnN0IHB1YiA9IGtleVBhaXIuZ2V0S2V5cygpLnB1YjtcbiAgICBjb25zdCBzaWduYXR1cmVCdWZmZXIgPSBVaW50OEFycmF5LmZyb20oQnVmZmVyLmZyb20oc2lnbmF0dXJlLCAnaGV4JykpO1xuICAgIGNvbnN0IHB1YktleUJ1ZmZlciA9IFVpbnQ4QXJyYXkuZnJvbShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gICAgY29uc3QgcGFyc2VkUHVibGljS2V5ID0gS2V5cy5TZWNwMjU2SzEucGFyc2VQdWJsaWNLZXkocHViS2V5QnVmZmVyLCAncmF3Jyk7XG4gICAgY29uc3QgcHViS2V5SGV4ID0gS2V5cy5TZWNwMjU2SzEuYWNjb3VudEhleChwYXJzZWRQdWJsaWNLZXkpO1xuICAgIGlmIChyZW1vdmVBbGdvUHJlZml4RnJvbUhleFZhbHVlKHB1YktleUhleCkgIT09IHB1Yikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignU2lnbmVyIGRvZXMgbm90IG1hdGNoIHNpZ25hdHVyZScpO1xuICAgIH1cbiAgICBjb25zdCBzaWduZWREZXBsb3kgPSBEZXBsb3lVdGlsLnNldFNpZ25hdHVyZShcbiAgICAgIHRoaXMuX2RlcGxveSxcbiAgICAgIHNpZ25hdHVyZUJ1ZmZlcixcbiAgICAgIFB1YmxpY0tleS5mcm9tU2VjcDI1NksxKHBhcnNlZFB1YmxpY0tleSksXG4gICAgKTtcbiAgICBjb25zdCBhcHByb3ZhbCA9IF8ubGFzdChzaWduZWREZXBsb3kuYXBwcm92YWxzKSBhcyBEZXBsb3lVdGlsLkFwcHJvdmFsO1xuICAgIGlmIChyZW1vdmVBbGdvUHJlZml4RnJvbUhleFZhbHVlKGFwcHJvdmFsLnNpZ25hdHVyZSkgIT09IHNpZ25hdHVyZSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignSW52YWxpZCBzaWduYXR1cmUnKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY2FzcGVyVHgpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCB0eEpzb246IGFueSA9IERlcGxveVV0aWwuZGVwbG95VG9Kc29uKHRoaXMuY2FzcGVyVHgpO1xuICAgIC8vIFRoZSBuZXcgY2FzcGVyIGxpYiBpcyBjb252ZXJ0aW5nIHRoZSBUVEwgZnJvbSBtaWxpc2Vjb25kcyB0byBhbm90aGVyIGRhdGUgZm9ybWF0LCBpbiB0aGlzIGNhc2UgMSBkYXlcbiAgICAvLyB3ZSBuZWVkIHRvIGxlYXZlIGl0IGFzIG1zIGZvciB0aGUgSFNNIHRvIGJlIGFibGUgdG8gcGFyc2UgaXRcbiAgICB0eEpzb24uZGVwbG95LmhlYWRlci50dGwgPSBgJHt0aGlzLmNhc3BlclR4LmhlYWRlci50dGx9bXNgO1xuICAgIHRoaXMuc2V0T3duZXJzSW5Kc29uKHR4SnNvbik7XG4gICAgdGhpcy5zZXRUcmFuc2ZlcnNGaWVsZHNJbkpzb24odHhKc29uKTtcbiAgICB0aGlzLnNldERlbGVnYXRlRmllbGRzSW5Kc29uKHR4SnNvbik7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHR4SnNvbik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IENhc3BlclRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBkZXBsb3lQYXltZW50ID0gdGhpcy5fZGVwbG95LnBheW1lbnQuYXNNb2R1bGVCeXRlcygpPy5nZXRBcmdCeU5hbWUoJ2Ftb3VudCcpIGFzIENMVTUxMjtcbiAgICBpZiAoIWRlcGxveVBheW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVW5kZWZpbmVkIGZlZScpO1xuICAgIH1cblxuICAgIGNvbnN0IG93bmVyMUluZGV4ID0gMDtcbiAgICBjb25zdCBvd25lcjJJbmRleCA9IDE7XG4gICAgY29uc3Qgb3duZXIzSW5kZXggPSAyO1xuICAgIGNvbnN0IHNvdXJjZVB1YmxpY0tleSA9IEJ1ZmZlci5mcm9tKHRoaXMuX2RlcGxveS5oZWFkZXIuYWNjb3VudC52YWx1ZSgpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3Qgc291cmNlQWRkcmVzcyA9IG5ldyBLZXlQYWlyKHsgcHViOiBzb3VyY2VQdWJsaWNLZXkgfSkuZ2V0QWRkcmVzcygpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBDYXNwZXJUcmFuc2FjdGlvbiA9IHtcbiAgICAgIGhhc2g6IEJ1ZmZlci5mcm9tKHRoaXMuX2RlcGxveS5oYXNoKS50b1N0cmluZygnaGV4JyksXG4gICAgICBmZWU6IHsgZ2FzTGltaXQ6IGRlcGxveVBheW1lbnQudmFsdWUoKS50b1N0cmluZygpLCBnYXNQcmljZTogdGhpcy5fZGVwbG95LmhlYWRlci5nYXNQcmljZS50b1N0cmluZygpIH0sXG4gICAgICBmcm9tOiBzb3VyY2VBZGRyZXNzLFxuICAgICAgc3RhcnRUaW1lOiBuZXcgRGF0ZSh0aGlzLl9kZXBsb3kuaGVhZGVyLnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGV4cGlyYXRpb246IHRoaXMuX2RlcGxveS5oZWFkZXIudHRsLFxuICAgICAgZGVwbG95VHlwZTogKHRoaXMuX2RlcGxveS5zZXNzaW9uLmdldEFyZ0J5TmFtZShUUkFOU0FDVElPTl9UWVBFKSBhcyBDTFN0cmluZykudmFsdWUoKSxcbiAgICB9O1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb25UeXBlID0gZ2V0RGVwbG95VHlwZSh0aGlzLl9kZXBsb3kuc2Vzc2lvbik7XG5cbiAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uVHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgcmVzdWx0LnRvID0gZ2V0VHJhbnNmZXJEZXN0aW5hdGlvbkFkZHJlc3ModGhpcy5fZGVwbG95LnNlc3Npb24pO1xuICAgICAgICByZXN1bHQuYW1vdW50ID0gZ2V0VHJhbnNmZXJBbW91bnQodGhpcy5fZGVwbG95LnNlc3Npb24pO1xuICAgICAgICByZXN1bHQudHJhbnNmZXJJZCA9IGdldFRyYW5zZmVySWQodGhpcy5fZGVwbG95LnNlc3Npb24pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgICByZXN1bHQub3duZXIxID0gKHRoaXMuY2FzcGVyVHguc2Vzc2lvbi5nZXRBcmdCeU5hbWUoT1dORVJfUFJFRklYICsgb3duZXIxSW5kZXgpIGFzIENMU3RyaW5nKS52YWx1ZSgpO1xuICAgICAgICByZXN1bHQub3duZXIyID0gKHRoaXMuY2FzcGVyVHguc2Vzc2lvbi5nZXRBcmdCeU5hbWUoT1dORVJfUFJFRklYICsgb3duZXIySW5kZXgpIGFzIENMU3RyaW5nKS52YWx1ZSgpO1xuICAgICAgICByZXN1bHQub3duZXIzID0gKHRoaXMuY2FzcGVyVHguc2Vzc2lvbi5nZXRBcmdCeU5hbWUoT1dORVJfUFJFRklYICsgb3duZXIzSW5kZXgpIGFzIENMU3RyaW5nKS52YWx1ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdMb2NrOlxuICAgICAgICByZXN1bHQuZnJvbURlbGVnYXRlID0gZ2V0RGVsZWdhdG9yQWRkcmVzcyh0aGlzLmNhc3BlclR4LnNlc3Npb24pO1xuICAgICAgICByZXN1bHQudmFsaWRhdG9yID0gZ2V0VmFsaWRhdG9yQWRkcmVzcyh0aGlzLmNhc3BlclR4LnNlc3Npb24pO1xuICAgICAgICByZXN1bHQuYW1vdW50ID0gZ2V0RGVsZWdhdGVBbW91bnQodGhpcy5jYXNwZXJUeC5zZXNzaW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrOlxuICAgICAgICByZXN1bHQuZnJvbURlbGVnYXRlID0gZ2V0RGVsZWdhdG9yQWRkcmVzcyh0aGlzLmNhc3BlclR4LnNlc3Npb24pO1xuICAgICAgICByZXN1bHQudmFsaWRhdG9yID0gZ2V0VmFsaWRhdG9yQWRkcmVzcyh0aGlzLmNhc3BlclR4LnNlc3Npb24pO1xuICAgICAgICByZXN1bHQuYW1vdW50ID0gZ2V0RGVsZWdhdGVBbW91bnQodGhpcy5jYXNwZXJUeC5zZXNzaW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0XG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHNpZ25hdHVyZXMgZnJvbSB0aGUgZGVwbG95IGluc3RhbmNlIGFuZCBsb2FkIHRoZW0gaW50byB0aGUgc2lnbmF0dXJlcyBsaXN0XG4gICAqL1xuICBsb2FkUHJldmlvdXNTaWduYXR1cmVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kZXBsb3kuYXBwcm92YWxzICYmIHRoaXMuX2RlcGxveS5hcHByb3ZhbHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fZGVwbG95LmFwcHJvdmFscy5mb3JFYWNoKChhcHByb3ZhbCkgPT4ge1xuICAgICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goYXBwcm92YWwuc2lnbmF0dXJlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgb3duZXJzIGluc2lkZSBhIGpzb24gcmVwcmVzZW50aW5nIGEgd2FsbGV0IGluaXRpYWxpemF0aW9uIHR4LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHR4SnNvbiBqc29uIHRvIG1vZGlmeVxuICAgKi9cbiAgc2V0T3duZXJzSW5Kc29uKHR4SnNvbjogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIGlmIChnZXREZXBsb3lUeXBlKHRoaXMuY2FzcGVyVHguc2Vzc2lvbikgPT09IFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbikge1xuICAgICAgY29uc3QgYXJnTmFtZSA9IDA7XG4gICAgICBjb25zdCBhcmdWYWx1ZSA9IDE7XG4gICAgICBjb25zdCBvd25lcjAgPSAwO1xuICAgICAgY29uc3Qgb3duZXIxID0gMTtcbiAgICAgIGNvbnN0IG93bmVyMiA9IDI7XG5cbiAgICAgIGNvbnN0IG93bmVyc1ZhbHVlcyA9IG5ldyBNYXAoKTtcblxuICAgICAgb3duZXJzVmFsdWVzLnNldChUUkFOU0FDVElPTl9UWVBFLCAodGhpcy5jYXNwZXJUeC5zZXNzaW9uLmdldEFyZ0J5TmFtZShUUkFOU0FDVElPTl9UWVBFKSBhcyBDTFN0cmluZykudmFsdWUoKSk7XG5cbiAgICAgIFtvd25lcjAsIG93bmVyMSwgb3duZXIyXS5mb3JFYWNoKChpbmRleCkgPT4ge1xuICAgICAgICBvd25lcnNWYWx1ZXMuc2V0KFxuICAgICAgICAgIE9XTkVSX1BSRUZJWCArIGluZGV4LFxuICAgICAgICAgICh0aGlzLmNhc3BlclR4LnNlc3Npb24uZ2V0QXJnQnlOYW1lKE9XTkVSX1BSRUZJWCArIGluZGV4KSBhcyBDTFN0cmluZykudmFsdWUoKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICB0eEpzb25bJ2RlcGxveSddWydzZXNzaW9uJ11bJ01vZHVsZUJ5dGVzJ11bJ2FyZ3MnXS5mb3JFYWNoKChhcmcpID0+IHtcbiAgICAgICAgaWYgKG93bmVyc1ZhbHVlcy5oYXMoYXJnW2FyZ05hbWVdKSkge1xuICAgICAgICAgIGFyZ1thcmdWYWx1ZV1bJ3BhcnNlZCddID0gb3duZXJzVmFsdWVzLmdldChhcmdbYXJnTmFtZV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRyYW5zZmVyIGZpZWxkcyBpbnNpZGUgYSBqc29uIHJlcHJlc2VudGluZyBhIHRyYW5zZmVyIHR4LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHR4SnNvbiBqc29uIHRvIG1vZGlmeVxuICAgKi9cbiAgc2V0VHJhbnNmZXJzRmllbGRzSW5Kc29uKHR4SnNvbjogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIGlmIChnZXREZXBsb3lUeXBlKHRoaXMuY2FzcGVyVHguc2Vzc2lvbikgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kKSB7XG4gICAgICBjb25zdCBhcmdOYW1lID0gMDtcbiAgICAgIGNvbnN0IGFyZ1ZhbHVlID0gMTtcblxuICAgICAgY29uc3QgdHJhbnNmZXJWYWx1ZXMgPSBuZXcgTWFwKCk7XG4gICAgICB0cmFuc2ZlclZhbHVlcy5zZXQoVFJBTlNBQ1RJT05fVFlQRSwgKHRoaXMuY2FzcGVyVHguc2Vzc2lvbi5nZXRBcmdCeU5hbWUoVFJBTlNBQ1RJT05fVFlQRSkgYXMgQ0xTdHJpbmcpLnZhbHVlKCkpO1xuICAgICAgdHJhbnNmZXJWYWx1ZXMuc2V0KCdhbW91bnQnLCBnZXRUcmFuc2ZlckFtb3VudCh0aGlzLmNhc3BlclR4LnNlc3Npb24pKTtcbiAgICAgIHRyYW5zZmVyVmFsdWVzLnNldCgndG9fYWRkcmVzcycsIGdldFRyYW5zZmVyRGVzdGluYXRpb25BZGRyZXNzKHRoaXMuY2FzcGVyVHguc2Vzc2lvbikpO1xuICAgICAgY29uc3QgdHJhbnNmZXJJZCA9IGdldFRyYW5zZmVySWQodGhpcy5jYXNwZXJUeC5zZXNzaW9uKTtcbiAgICAgIGlmICh0cmFuc2ZlcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdHJhbnNmZXJWYWx1ZXMuc2V0KCdpZCcsIHRyYW5zZmVySWQudG9TdHJpbmcoKSk7XG4gICAgICB9XG5cbiAgICAgIHR4SnNvblsnZGVwbG95J11bJ3Nlc3Npb24nXVsnVHJhbnNmZXInXVsnYXJncyddLmZvckVhY2goKGFyZykgPT4ge1xuICAgICAgICBpZiAodHJhbnNmZXJWYWx1ZXMuaGFzKGFyZ1thcmdOYW1lXSkpIHtcbiAgICAgICAgICBhcmdbYXJnVmFsdWVdWydwYXJzZWQnXSA9IHRyYW5zZmVyVmFsdWVzLmdldChhcmdbYXJnTmFtZV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRlbGVnYXRlIC8gdW5kZWxlZ2F0ZSBmaWVsZHMgaW5zaWRlIGEganNvbiByZXByZXNlbnRpbmcgdGhlIHR4LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHR4SnNvbiBqc29uIHRvIG1vZGlmeVxuICAgKi9cbiAgc2V0RGVsZWdhdGVGaWVsZHNJbkpzb24odHhKc29uOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgZ2V0RGVwbG95VHlwZSh0aGlzLmNhc3BlclR4LnNlc3Npb24pID09PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0xvY2sgfHxcbiAgICAgIGdldERlcGxveVR5cGUodGhpcy5jYXNwZXJUeC5zZXNzaW9uKSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2tcbiAgICApIHtcbiAgICAgIGNvbnN0IGFyZ05hbWUgPSAwO1xuICAgICAgY29uc3QgYXJnVmFsdWUgPSAxO1xuXG4gICAgICBjb25zdCBkZWxlZ2F0ZVZhbHVlcyA9IG5ldyBNYXAoKTtcbiAgICAgIGRlbGVnYXRlVmFsdWVzLnNldChUUkFOU0FDVElPTl9UWVBFLCAodGhpcy5jYXNwZXJUeC5zZXNzaW9uLmdldEFyZ0J5TmFtZShUUkFOU0FDVElPTl9UWVBFKSBhcyBDTFN0cmluZykudmFsdWUoKSk7XG4gICAgICBkZWxlZ2F0ZVZhbHVlcy5zZXQoJ2Ftb3VudCcsIGdldERlbGVnYXRlQW1vdW50KHRoaXMuY2FzcGVyVHguc2Vzc2lvbikpO1xuICAgICAgZGVsZWdhdGVWYWx1ZXMuc2V0KERFTEVHQVRFX0ZST01fQUREUkVTUywgZ2V0RGVsZWdhdG9yQWRkcmVzcyh0aGlzLmNhc3BlclR4LnNlc3Npb24pKTtcbiAgICAgIGRlbGVnYXRlVmFsdWVzLnNldChERUxFR0FURV9WQUxJREFUT1IsIGdldFZhbGlkYXRvckFkZHJlc3ModGhpcy5jYXNwZXJUeC5zZXNzaW9uKSk7XG5cbiAgICAgIHR4SnNvbi5kZXBsb3kuc2Vzc2lvbi5Nb2R1bGVCeXRlcy5hcmdzLmZvckVhY2goKGFyZykgPT4ge1xuICAgICAgICBpZiAoZGVsZWdhdGVWYWx1ZXMuaGFzKGFyZ1thcmdOYW1lXSkpIHtcbiAgICAgICAgICBhcmdbYXJnVmFsdWVdWydwYXJzZWQnXSA9IGRlbGVnYXRlVmFsdWVzLmdldChhcmdbYXJnTmFtZV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgY2FzcGVyVHgoKTogRGVwbG95VXRpbC5EZXBsb3kge1xuICAgIHJldHVybiB0aGlzLl9kZXBsb3k7XG4gIH1cblxuICBzZXQgY2FzcGVyVHgoZGVwbG95OiBEZXBsb3lVdGlsLkRlcGxveSkge1xuICAgIHRoaXMuX2RlcGxveSA9IGRlcGxveTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
@@ -0,0 +1,124 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
+ import { BaseAddress, BaseKey, BaseTransactionBuilder } from '@bitgo/sdk-core';
4
+ import { Transaction } from './transaction';
5
+ import { KeyPair } from './keyPair';
6
+ import { Fee, CasperModuleBytesTransaction, CasperTransferTransaction, CasperDelegateTransaction, SignatureData } from './ifaces';
7
+ export declare const DEFAULT_M = 3;
8
+ export declare const DEFAULT_N = 2;
9
+ export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
10
+ protected _source: BaseAddress;
11
+ protected _fee: Fee;
12
+ private _transaction;
13
+ protected _session: CasperTransferTransaction | CasperModuleBytesTransaction | CasperDelegateTransaction;
14
+ protected _expiration: number;
15
+ protected _multiSignerKeyPairs: KeyPair[];
16
+ protected _signatures: SignatureData[];
17
+ protected _chainName: string;
18
+ constructor(_coinConfig: Readonly<CoinConfig>);
19
+ /** @inheritdoc */
20
+ protected buildImplementation(): Promise<Transaction>;
21
+ /** @inheritdoc */
22
+ protected fromImplementation(rawTransaction: string): Transaction;
23
+ /** @inheritdoc */
24
+ protected signImplementation(key: BaseKey): Transaction;
25
+ /**
26
+ * Initialize the transaction builder fields using the decoded transaction data
27
+ *
28
+ * @param {Transaction} tx the transaction data
29
+ */
30
+ initBuilder(tx: Transaction): void;
31
+ /**
32
+ * Set the transaction fees
33
+ *
34
+ * @param {BaseFee} fee The maximum gas to pay
35
+ * @returns {TransactionBuilder} This transaction builder
36
+ */
37
+ fee(fee: Fee): this;
38
+ /**
39
+ * Set the transaction source
40
+ *
41
+ * @param {BaseAddress} address The source account
42
+ * @returns {TransactionBuilder} This transaction builder
43
+ */
44
+ source(address: BaseAddress): this;
45
+ /**
46
+ * Set the transaction expirationTime
47
+ *
48
+ * @param {string} expirationTime The transaction expirationTime
49
+ * @returns {TransactionBuilder} This transaction builder
50
+ */
51
+ expiration(expirationTime: number): this;
52
+ /**
53
+ * Set an external transaction signature
54
+ *
55
+ * @param {string} signature Hex encoded signature string
56
+ * @param {KeyPair} keyPair The public key keypair that was used to create the signature
57
+ * @returns {TransactionBuilder} This transaction builder
58
+ */
59
+ signature(signature: string, keyPair: KeyPair): this;
60
+ nodeChainName(chainName: string): this;
61
+ /** @inheritdoc */
62
+ validateAddress(address: BaseAddress): void;
63
+ /** @inheritdoc */
64
+ validateKey(key: BaseKey): void;
65
+ /** @inheritdoc */
66
+ validateRawTransaction(rawTransaction: string): void;
67
+ /** @inheritdoc */
68
+ validateTransaction(transaction?: Transaction): void;
69
+ /** @inheritdoc */
70
+ validateValue(value: BigNumber): void;
71
+ /**
72
+ * Validates that the mandatory fields are defined
73
+ */
74
+ validateMandatoryFields(): void;
75
+ /**
76
+ * Validates that the fee field is defined
77
+ */
78
+ private validateFee;
79
+ /**
80
+ * Validates that the source field is defined
81
+ */
82
+ private validateSource;
83
+ /**
84
+ * Validates that the given key is not already in this._multiSignerKeyPairs
85
+ *
86
+ * @param {BaseKey} key - The key to check
87
+ */
88
+ private checkDuplicatedKeys;
89
+ /** @inheritdoc */
90
+ protected get transaction(): Transaction;
91
+ /** @inheritdoc */
92
+ protected set transaction(transaction: Transaction);
93
+ /**
94
+ * Get the chain name for the coin environment
95
+ */
96
+ get chainName(): string;
97
+ /**
98
+ * Generate a DeployParams instance with the transaction data
99
+ *
100
+ * @returns {DeployUtil.DeployParams}
101
+ */
102
+ private getDeployParams;
103
+ /**
104
+ * Generate the session for the Deploy according to the transactionType.
105
+ *
106
+ * @returns {DeployUtil.ExecutableDeployItem}
107
+ */
108
+ private getSession;
109
+ /**
110
+ * Checks whether the transaction has the owner signature
111
+ *
112
+ * @param {string} pub - public key of the signer
113
+ * @returns {boolean} true if the pub key already signed th transaction
114
+ * @private
115
+ */
116
+ private isTransactionSignedByPub;
117
+ /**
118
+ * Add signatures to the transaction
119
+ *
120
+ * @private
121
+ */
122
+ private processSigning;
123
+ }
124
+ //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/cspr/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAMvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,GAAG,EACH,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACd,MAAM,UAAU,CAAC;AAIlB,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC;IAC/B,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;IACpB,OAAO,CAAC,YAAY,CAAc;IAClC,SAAS,CAAC,QAAQ,EAAE,yBAAyB,GAAG,4BAA4B,GAAG,yBAAyB,CAAC;IACzG,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,oBAAoB,EAAE,OAAO,EAAE,CAAC;IAC1C,SAAS,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC;IACvC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEjB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAS7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAwB3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAQjE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAUvD;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAalC;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAMnB;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAMlC;;;;;OAKG;IACH,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAUxC;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAcpD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQtC,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAM3C,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAM/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAWpD,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAIpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC;;OAEG;IACH,uBAAuB,IAAI,IAAI;IAK/B;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAqB3B,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAID;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IA2BlB;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAShC;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAevB"}