@bitgo-beta/sdk-coin-sui 3.0.3-beta.192 → 3.0.3-beta.1921

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 (197) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +7 -2
  4. package/dist/src/lib/compareTransactionBlocks.js +2 -3
  5. package/dist/src/lib/constants.d.ts +9 -2
  6. package/dist/src/lib/constants.d.ts.map +1 -1
  7. package/dist/src/lib/constants.js +18 -2
  8. package/dist/src/lib/customTransaction.js +3 -3
  9. package/dist/src/lib/customTransactionBuilder.js +5 -5
  10. package/dist/src/lib/iface.d.ts +80 -12
  11. package/dist/src/lib/iface.d.ts.map +1 -1
  12. package/dist/src/lib/iface.js +34 -5
  13. package/dist/src/lib/index.d.ts +6 -0
  14. package/dist/src/lib/index.d.ts.map +1 -1
  15. package/dist/src/lib/index.js +36 -10
  16. package/dist/src/lib/keyPair.js +24 -10
  17. package/dist/src/lib/mystenlab/builder/Inputs.d.ts +64 -11
  18. package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -1
  19. package/dist/src/lib/mystenlab/builder/Inputs.js +63 -19
  20. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +88 -355
  21. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -1
  22. package/dist/src/lib/mystenlab/builder/TransactionBlock.js +44 -25
  23. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +152 -77
  24. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -1
  25. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +54 -44
  26. package/dist/src/lib/mystenlab/builder/Transactions.d.ts +133 -188
  27. package/dist/src/lib/mystenlab/builder/Transactions.d.ts.map +1 -1
  28. package/dist/src/lib/mystenlab/builder/Transactions.js +52 -53
  29. package/dist/src/lib/mystenlab/builder/bcs.d.ts +1 -1
  30. package/dist/src/lib/mystenlab/builder/bcs.d.ts.map +1 -1
  31. package/dist/src/lib/mystenlab/builder/bcs.js +2 -2
  32. package/dist/src/lib/mystenlab/builder/index.js +6 -2
  33. package/dist/src/lib/mystenlab/builder/serializer.js +6 -8
  34. package/dist/src/lib/mystenlab/builder/utils.d.ts +1 -1
  35. package/dist/src/lib/mystenlab/builder/utils.d.ts.map +1 -1
  36. package/dist/src/lib/mystenlab/builder/utils.js +4 -4
  37. package/dist/src/lib/mystenlab/cryptography/hash.js +3 -4
  38. package/dist/src/lib/mystenlab/framework/framework.d.ts +6 -6
  39. package/dist/src/lib/mystenlab/framework/framework.d.ts.map +1 -1
  40. package/dist/src/lib/mystenlab/framework/framework.js +22 -25
  41. package/dist/src/lib/mystenlab/framework/index.js +6 -2
  42. package/dist/src/lib/mystenlab/framework/sui-system-state.js +2 -2
  43. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +2 -2
  44. package/dist/src/lib/mystenlab/types/coin.d.ts +13 -11
  45. package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -1
  46. package/dist/src/lib/mystenlab/types/coin.js +20 -19
  47. package/dist/src/lib/mystenlab/types/common.d.ts +8 -8
  48. package/dist/src/lib/mystenlab/types/common.d.ts.map +1 -1
  49. package/dist/src/lib/mystenlab/types/common.js +22 -22
  50. package/dist/src/lib/mystenlab/types/events.d.ts +15 -15
  51. package/dist/src/lib/mystenlab/types/events.d.ts.map +1 -1
  52. package/dist/src/lib/mystenlab/types/events.js +17 -17
  53. package/dist/src/lib/mystenlab/types/index.js +6 -2
  54. package/dist/src/lib/mystenlab/types/normalized.d.ts +21 -21
  55. package/dist/src/lib/mystenlab/types/normalized.d.ts.map +1 -1
  56. package/dist/src/lib/mystenlab/types/normalized.js +41 -41
  57. package/dist/src/lib/mystenlab/types/objects.d.ts +51 -51
  58. package/dist/src/lib/mystenlab/types/objects.d.ts.map +1 -1
  59. package/dist/src/lib/mystenlab/types/objects.js +96 -106
  60. package/dist/src/lib/mystenlab/types/option.d.ts +1 -1
  61. package/dist/src/lib/mystenlab/types/option.d.ts.map +1 -1
  62. package/dist/src/lib/mystenlab/types/option.js +2 -3
  63. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +55 -29
  64. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -1
  65. package/dist/src/lib/mystenlab/types/sui-bcs.js +29 -5
  66. package/dist/src/lib/mystenlab/types/transactions.d.ts +625 -625
  67. package/dist/src/lib/mystenlab/types/transactions.d.ts.map +1 -1
  68. package/dist/src/lib/mystenlab/types/transactions.js +178 -194
  69. package/dist/src/lib/mystenlab/types/validator.d.ts +13 -13
  70. package/dist/src/lib/mystenlab/types/validator.d.ts.map +1 -1
  71. package/dist/src/lib/mystenlab/types/validator.js +124 -124
  72. package/dist/src/lib/resources/walrusConfig.d.ts +22 -0
  73. package/dist/src/lib/resources/walrusConfig.d.ts.map +1 -0
  74. package/dist/src/lib/resources/walrusConfig.js +37 -0
  75. package/dist/src/lib/rpcClient.d.ts +5 -0
  76. package/dist/src/lib/rpcClient.d.ts.map +1 -0
  77. package/dist/src/lib/rpcClient.js +74 -0
  78. package/dist/src/lib/stakingBuilder.d.ts +10 -0
  79. package/dist/src/lib/stakingBuilder.d.ts.map +1 -1
  80. package/dist/src/lib/stakingBuilder.js +59 -7
  81. package/dist/src/lib/stakingTransaction.d.ts +0 -1
  82. package/dist/src/lib/stakingTransaction.d.ts.map +1 -1
  83. package/dist/src/lib/stakingTransaction.js +36 -18
  84. package/dist/src/lib/tokenTransferBuilder.d.ts +93 -0
  85. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  86. package/dist/src/lib/tokenTransferBuilder.js +266 -0
  87. package/dist/src/lib/tokenTransferTransaction.d.ts +59 -0
  88. package/dist/src/lib/tokenTransferTransaction.d.ts.map +1 -0
  89. package/dist/src/lib/tokenTransferTransaction.js +272 -0
  90. package/dist/src/lib/transaction.d.ts +21 -4
  91. package/dist/src/lib/transaction.d.ts.map +1 -1
  92. package/dist/src/lib/transaction.js +144 -17
  93. package/dist/src/lib/transactionBuilder.d.ts +13 -4
  94. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  95. package/dist/src/lib/transactionBuilder.js +34 -4
  96. package/dist/src/lib/transactionBuilderFactory.d.ts +11 -2
  97. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  98. package/dist/src/lib/transactionBuilderFactory.js +32 -1
  99. package/dist/src/lib/transferBuilder.d.ts +58 -1
  100. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  101. package/dist/src/lib/transferBuilder.js +310 -24
  102. package/dist/src/lib/transferTransaction.d.ts +6 -1
  103. package/dist/src/lib/transferTransaction.d.ts.map +1 -1
  104. package/dist/src/lib/transferTransaction.js +129 -12
  105. package/dist/src/lib/unstakingBuilder.js +6 -6
  106. package/dist/src/lib/unstakingTransaction.d.ts +0 -1
  107. package/dist/src/lib/unstakingTransaction.d.ts.map +1 -1
  108. package/dist/src/lib/unstakingTransaction.js +31 -17
  109. package/dist/src/lib/utils.d.ts +24 -3
  110. package/dist/src/lib/utils.d.ts.map +1 -1
  111. package/dist/src/lib/utils.js +295 -22
  112. package/dist/src/lib/walrusStakingBuilder.d.ts +77 -0
  113. package/dist/src/lib/walrusStakingBuilder.d.ts.map +1 -0
  114. package/dist/src/lib/walrusStakingBuilder.js +276 -0
  115. package/dist/src/lib/walrusStakingTransaction.d.ts +52 -0
  116. package/dist/src/lib/walrusStakingTransaction.d.ts.map +1 -0
  117. package/dist/src/lib/walrusStakingTransaction.js +289 -0
  118. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts +36 -0
  119. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts.map +1 -0
  120. package/dist/src/lib/walrusWithdrawStakeBuilder.js +173 -0
  121. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts +21 -0
  122. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts.map +1 -0
  123. package/dist/src/lib/walrusWithdrawStakeTransaction.js +190 -0
  124. package/dist/src/register.d.ts.map +1 -1
  125. package/dist/src/register.js +5 -1
  126. package/dist/src/sui.d.ts +46 -8
  127. package/dist/src/sui.d.ts.map +1 -1
  128. package/dist/src/sui.js +525 -37
  129. package/dist/src/suiToken.d.ts +22 -0
  130. package/dist/src/suiToken.d.ts.map +1 -0
  131. package/dist/src/suiToken.js +61 -0
  132. package/dist/src/tsui.js +1 -1
  133. package/dist/test/integration/index.d.ts +1 -0
  134. package/dist/test/integration/index.d.ts.map +1 -0
  135. package/dist/test/integration/index.js +1 -0
  136. package/dist/test/local_fullnode/RpcClient.d.ts +60 -0
  137. package/dist/test/local_fullnode/RpcClient.d.ts.map +1 -0
  138. package/dist/test/local_fullnode/RpcClient.js +111 -0
  139. package/dist/test/local_fullnode/faucet.d.ts +6 -0
  140. package/dist/test/local_fullnode/faucet.d.ts.map +1 -0
  141. package/dist/test/local_fullnode/faucet.js +17 -0
  142. package/dist/test/local_fullnode/transactions.d.ts +2 -0
  143. package/dist/test/local_fullnode/transactions.d.ts.map +1 -0
  144. package/dist/test/local_fullnode/transactions.js +190 -0
  145. package/dist/test/resources/sui.d.ts +458 -0
  146. package/dist/test/resources/sui.d.ts.map +1 -0
  147. package/dist/test/resources/sui.js +632 -0
  148. package/dist/test/unit/compareTransactionBlocks.d.ts +2 -0
  149. package/dist/test/unit/compareTransactionBlocks.d.ts.map +1 -0
  150. package/dist/test/unit/compareTransactionBlocks.js +64 -0
  151. package/dist/test/unit/getBuilderFactory.d.ts +3 -0
  152. package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
  153. package/dist/test/unit/getBuilderFactory.js +10 -0
  154. package/dist/test/unit/keyPair.d.ts +2 -0
  155. package/dist/test/unit/keyPair.d.ts.map +1 -0
  156. package/dist/test/unit/keyPair.js +72 -0
  157. package/dist/test/unit/sui.d.ts +2 -0
  158. package/dist/test/unit/sui.d.ts.map +1 -0
  159. package/dist/test/unit/sui.js +2423 -0
  160. package/dist/test/unit/suiToken.d.ts +2 -0
  161. package/dist/test/unit/suiToken.d.ts.map +1 -0
  162. package/dist/test/unit/suiToken.js +39 -0
  163. package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts +2 -0
  164. package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
  165. package/dist/test/unit/transactionBuilder/customTransactionBuilder.js +106 -0
  166. package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts +2 -0
  167. package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  168. package/dist/test/unit/transactionBuilder/stakingBuilder.js +294 -0
  169. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  170. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  171. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +431 -0
  172. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  173. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  174. package/dist/test/unit/transactionBuilder/transactionBuilder.js +639 -0
  175. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  176. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  177. package/dist/test/unit/transactionBuilder/transferBuilder.js +1181 -0
  178. package/dist/test/unit/transactionBuilder/unstakingBuilder.d.ts +2 -0
  179. package/dist/test/unit/transactionBuilder/unstakingBuilder.d.ts.map +1 -0
  180. package/dist/test/unit/transactionBuilder/unstakingBuilder.js +115 -0
  181. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.d.ts +2 -0
  182. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.d.ts.map +1 -0
  183. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.js +289 -0
  184. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.d.ts +2 -0
  185. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.d.ts.map +1 -0
  186. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.js +181 -0
  187. package/dist/test/unit/transferTransaction.d.ts +2 -0
  188. package/dist/test/unit/transferTransaction.d.ts.map +1 -0
  189. package/dist/test/unit/transferTransaction.js +94 -0
  190. package/dist/test/unit/utils.d.ts +2 -0
  191. package/dist/test/unit/utils.d.ts.map +1 -0
  192. package/dist/test/unit/utils.js +186 -0
  193. package/dist/tsconfig.tsbuildinfo +1 -0
  194. package/package.json +16 -12
  195. package/.eslintignore +0 -6
  196. package/.mocharc.yml +0 -7
  197. package/CHANGELOG.md +0 -450
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.TokenTransferTransaction = void 0;
40
+ const transaction_1 = require("./transaction");
41
+ const constants_1 = require("./constants");
42
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
43
+ const types_1 = require("./mystenlab/types");
44
+ const utils_1 = __importStar(require("./utils"));
45
+ const builder_1 = require("./mystenlab/builder");
46
+ const bcs_1 = require("@mysten/bcs");
47
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
48
+ class TokenTransferTransaction extends transaction_1.Transaction {
49
+ constructor(_coinConfig) {
50
+ super(_coinConfig);
51
+ }
52
+ get suiTransaction() {
53
+ return this._suiTransaction;
54
+ }
55
+ setSuiTransaction(tx) {
56
+ this._suiTransaction = tx;
57
+ }
58
+ /** @inheritDoc */
59
+ get id() {
60
+ return this._id || constants_1.UNAVAILABLE_TEXT;
61
+ }
62
+ addSignature(publicKey, signature) {
63
+ this._signatures.push(signature.toString('hex'));
64
+ this._signature = { publicKey, signature };
65
+ this.serialize();
66
+ }
67
+ get suiSignature() {
68
+ return this._signature;
69
+ }
70
+ /** @inheritdoc */
71
+ canSign(key) {
72
+ return true;
73
+ }
74
+ /** @inheritdoc */
75
+ toBroadcastFormat() {
76
+ if (!this._suiTransaction) {
77
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
78
+ }
79
+ return this.serialize();
80
+ }
81
+ /** @inheritdoc */
82
+ toJson() {
83
+ if (!this._suiTransaction) {
84
+ throw new sdk_core_1.ParseTransactionError('Empty transaction');
85
+ }
86
+ const tx = this._suiTransaction;
87
+ return {
88
+ id: this._id,
89
+ sender: tx.sender,
90
+ kind: { ProgrammableTransaction: tx.tx },
91
+ gasData: tx.gasData,
92
+ expiration: tx.expiration ?? { None: null },
93
+ inputObjects: this.getInputObjectsFromTx(tx.tx),
94
+ };
95
+ }
96
+ /** @inheritDoc */
97
+ explainTransaction() {
98
+ const result = this.toJson();
99
+ const displayOrder = ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'type'];
100
+ const outputs = [];
101
+ const explanationResult = {
102
+ displayOrder,
103
+ id: this.id,
104
+ outputs,
105
+ outputAmount: '0',
106
+ changeOutputs: [],
107
+ changeAmount: '0',
108
+ fee: { fee: this.suiTransaction.gasData.budget.toString() },
109
+ type: this.type,
110
+ };
111
+ switch (this.type) {
112
+ case sdk_core_1.TransactionType.Send:
113
+ return this.explainTokenTransferTransaction(result, explanationResult);
114
+ default:
115
+ throw new sdk_core_1.InvalidTransactionError('Transaction type not supported');
116
+ }
117
+ }
118
+ /**
119
+ * Set the transaction type.
120
+ *
121
+ * @param {TransactionType} transactionType The transaction type to be set.
122
+ */
123
+ transactionType(transactionType) {
124
+ this._type = transactionType;
125
+ }
126
+ /**
127
+ * Load the input and output data on this transaction.
128
+ */
129
+ loadInputsAndOutputs() {
130
+ if (!this.suiTransaction) {
131
+ return;
132
+ }
133
+ const recipients = utils_1.default.getRecipients(this._suiTransaction);
134
+ // Use BigNumber: token consolidation amounts can exceed 2^53 and a Number-based sum
135
+ // would lose precision.
136
+ const totalAmount = recipients.reduce((accumulator, current) => accumulator.plus(current.amount), new bignumber_js_1.default(0));
137
+ this._outputs = recipients.map((recipient) => ({
138
+ address: recipient.address,
139
+ value: recipient.amount,
140
+ coin: this._coinConfig.name,
141
+ }));
142
+ this._inputs = [
143
+ {
144
+ address: this.suiTransaction.sender,
145
+ value: totalAmount.toFixed(),
146
+ coin: this._coinConfig.name,
147
+ },
148
+ ];
149
+ }
150
+ /**
151
+ * Sets this transaction payload
152
+ *
153
+ * @param {string} rawTransaction
154
+ */
155
+ fromRawTransaction(rawTransaction) {
156
+ try {
157
+ utils_1.default.isValidRawTransaction(rawTransaction);
158
+ this._suiTransaction = transaction_1.Transaction.deserializeSuiTransaction(rawTransaction);
159
+ this._type = sdk_core_1.TransactionType.Send;
160
+ this._id = this._suiTransaction.id;
161
+ this.loadInputsAndOutputs();
162
+ }
163
+ catch (e) {
164
+ throw e;
165
+ }
166
+ }
167
+ /**
168
+ * Helper function for serialize() to get the correct txData with transaction type
169
+ *
170
+ * @return {TxData}
171
+ */
172
+ getTxData() {
173
+ if (!this._suiTransaction) {
174
+ throw new sdk_core_1.InvalidTransactionError('empty transaction');
175
+ }
176
+ const inputs = this._suiTransaction.tx.inputs.map((input) => {
177
+ if (input.hasOwnProperty('Object')) {
178
+ return input;
179
+ }
180
+ if (input.hasOwnProperty('Pure')) {
181
+ if (input.Pure.length === constants_1.SUI_ADDRESS_LENGTH) {
182
+ const address = (0, types_1.normalizeSuiAddress)(builder_1.builder.de(bcs_1.BCS.ADDRESS, Buffer.from(input.Pure).toString('base64'), 'base64'));
183
+ return builder_1.Inputs.Pure(address, bcs_1.BCS.ADDRESS);
184
+ }
185
+ else {
186
+ const amount = builder_1.builder.de(bcs_1.BCS.U64, Buffer.from(input.Pure).toString('base64'), 'base64');
187
+ return builder_1.Inputs.Pure(amount, bcs_1.BCS.U64);
188
+ }
189
+ }
190
+ if (input.hasOwnProperty('BalanceWithdrawal')) {
191
+ return input;
192
+ }
193
+ if (input.kind === 'Input' &&
194
+ (input.value.hasOwnProperty('Object') ||
195
+ input.value.hasOwnProperty('Pure') ||
196
+ input.value.hasOwnProperty('BalanceWithdrawal'))) {
197
+ return input.value;
198
+ }
199
+ return builder_1.Inputs.Pure(input.value, input.type === 'pure' ? bcs_1.BCS.U64 : bcs_1.BCS.ADDRESS);
200
+ });
201
+ const programmableTx = {
202
+ inputs,
203
+ transactions: this._suiTransaction.tx.transactions,
204
+ };
205
+ return {
206
+ sender: this._suiTransaction.sender,
207
+ expiration: this._suiTransaction.expiration ?? { None: null },
208
+ gasData: this._suiTransaction.gasData,
209
+ kind: {
210
+ ProgrammableTransaction: programmableTx,
211
+ },
212
+ };
213
+ }
214
+ /**
215
+ * Returns a complete explanation for a transfer transaction
216
+ * @param {TxData} json The transaction data in json format
217
+ * @param {TransactionExplanation} explanationResult The transaction explanation to be completed
218
+ * @returns {TransactionExplanation}
219
+ */
220
+ explainTokenTransferTransaction(json, explanationResult) {
221
+ const recipients = utils_1.default.getRecipients(this.suiTransaction);
222
+ const outputs = recipients.map((recipient) => recipient);
223
+ const outputAmount = recipients
224
+ .reduce((accumulator, current) => accumulator.plus(current.amount), new bignumber_js_1.default(0))
225
+ .toFixed();
226
+ return {
227
+ ...explanationResult,
228
+ outputAmount,
229
+ outputs,
230
+ };
231
+ }
232
+ /**
233
+ * Extracts the objects that were provided as inputs while building the transaction.
234
+ * Handles both the simple case (MergeCoins/SplitCoins first) and the address-balance
235
+ * case where MoveCall(redeem_funds) may precede MergeCoins/SplitCoins.
236
+ * @param tx
237
+ * @returns {SuiObjectRef[]} Objects that are inputs for the transaction
238
+ */
239
+ getInputObjectsFromTx(tx) {
240
+ const inputs = tx.inputs;
241
+ // Scan all transactions to find the first MergeCoins or SplitCoins,
242
+ // which holds references to the coin object inputs.
243
+ let args = [];
244
+ for (const txn of tx.transactions) {
245
+ const transaction = txn;
246
+ if (transaction.kind === 'MergeCoins') {
247
+ const { destination, sources } = transaction;
248
+ args = [destination, ...sources];
249
+ break;
250
+ }
251
+ else if (transaction.kind === 'SplitCoins') {
252
+ args = [transaction.coin];
253
+ break;
254
+ }
255
+ }
256
+ const inputObjects = [];
257
+ args.forEach((arg) => {
258
+ if (arg.kind === 'Input') {
259
+ let input = inputs[arg.index];
260
+ if ('value' in input) {
261
+ input = input.value;
262
+ }
263
+ if ('Object' in input && (0, utils_1.isImmOrOwnedObj)(input.Object)) {
264
+ inputObjects.push(input.Object.ImmOrOwned);
265
+ }
266
+ }
267
+ });
268
+ return inputObjects;
269
+ }
270
+ }
271
+ exports.TokenTransferTransaction = TokenTransferTransaction;
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2ZlclRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b2tlblRyYW5zZmVyVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsK0NBQTRDO0FBQzVDLDJDQUFtRTtBQUNuRSxtREFROEI7QUFDOUIsNkNBQStFO0FBQy9FLGlEQUFpRDtBQUNqRCxpREFNNkI7QUFDN0IscUNBQWtDO0FBQ2xDLGdFQUFxQztBQUVyQyxNQUFhLHdCQUF5QixTQUFRLHlCQUFpRDtJQUM3RixZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBd0Q7UUFDeEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksNEJBQWdCLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUF3QixFQUFFLFNBQWlCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDaEMsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNaLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTTtZQUNqQixJQUFJLEVBQUUsRUFBRSx1QkFBdUIsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTztZQUNuQixVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQ2hELENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQjtRQUNoQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2RyxNQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1FBRTNDLE1BQU0saUJBQWlCLEdBQTJCO1lBQ2hELFlBQVk7WUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxPQUFPO1lBQ1AsWUFBWSxFQUFFLEdBQUc7WUFDakIsYUFBYSxFQUFFLEVBQUU7WUFDakIsWUFBWSxFQUFFLEdBQUc7WUFDakIsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztRQUVGLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssMEJBQWUsQ0FBQyxJQUFJO2dCQUN2QixPQUFPLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUN6RTtnQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsZUFBZ0M7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3RCxvRkFBb0Y7UUFDcEYsd0JBQXdCO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLHNCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwSCxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO1lBQzFCLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTTtZQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1NBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiO2dCQUNFLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07Z0JBQ25DLEtBQUssRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFO2dCQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2FBQzVCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsY0FBc0I7UUFDdkMsSUFBSSxDQUFDO1lBQ0gsZUFBSyxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxlQUFlLEdBQUcseUJBQVcsQ0FBQyx5QkFBeUIsQ0FDMUQsY0FBYyxDQUN5QyxDQUFDO1lBQzFELElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksU0FBUztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUF3QyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDL0YsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLDhCQUFrQixFQUFFLENBQUM7b0JBQzdDLE1BQU0sT0FBTyxHQUFHLElBQUEsMkJBQW1CLEVBQ2pDLGlCQUFPLENBQUMsRUFBRSxDQUFDLFNBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUM5RSxDQUFDO29CQUNGLE9BQU8sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sTUFBTSxHQUFHLGlCQUFPLENBQUMsRUFBRSxDQUFDLFNBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUN6RixPQUFPLGdCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsSUFDRSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU87Z0JBQ3RCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUNuQyxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7b0JBQ2xDLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUMsRUFDbEQsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckIsQ0FBQztZQUNELE9BQU8sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pGLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQUc7WUFDckIsTUFBTTtZQUNOLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxZQUFZO1NBQ1gsQ0FBQztRQUUxQyxPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTTtZQUNuQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQzdELE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU87WUFDckMsSUFBSSxFQUFFO2dCQUNKLHVCQUF1QixFQUFFLGNBQWM7YUFDeEM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsK0JBQStCLENBQUMsSUFBWSxFQUFFLGlCQUF5QztRQUNyRixNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1RCxNQUFNLE9BQU8sR0FBMkIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakYsTUFBTSxZQUFZLEdBQUcsVUFBVTthQUM1QixNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLHNCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEYsT0FBTyxFQUFFLENBQUM7UUFFYixPQUFPO1lBQ0wsR0FBRyxpQkFBaUI7WUFDcEIsWUFBWTtZQUNaLE9BQU87U0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLHFCQUFxQixDQUFDLEVBQXdDO1FBQ3BFLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFFekIsb0VBQW9FO1FBQ3BFLG9EQUFvRDtRQUNwRCxJQUFJLElBQUksR0FBMEIsRUFBRSxDQUFDO1FBQ3JDLEtBQUssTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xDLE1BQU0sV0FBVyxHQUFHLEdBQThCLENBQUM7WUFDbkQsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUN0QyxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLFdBQVcsQ0FBQztnQkFDN0MsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7Z0JBQ2pDLE1BQU07WUFDUixDQUFDO2lCQUFNLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQixNQUFNO1lBQ1IsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFlBQVksR0FBbUIsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNuQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlCLElBQUksT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNyQixLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDdEIsQ0FBQztnQkFDRCxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUksSUFBQSx1QkFBZSxFQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUN2RCxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzdDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0NBQ0Y7QUExUEQsNERBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3VpVHJhbnNhY3Rpb24sIFRva2VuVHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgU1VJX0FERFJFU1NfTEVOR1RILCBVTkFWQUlMQUJMRV9URVhUIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgUHVibGljS2V5IGFzIEJhc2VQdWJsaWNLZXksXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQ2FsbEFyZywgbm9ybWFsaXplU3VpQWRkcmVzcywgU3VpT2JqZWN0UmVmIH0gZnJvbSAnLi9teXN0ZW5sYWIvdHlwZXMnO1xuaW1wb3J0IHV0aWxzLCB7IGlzSW1tT3JPd25lZE9iaiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgYnVpbGRlcixcbiAgSW5wdXRzLFxuICBUcmFuc2FjdGlvbkFyZ3VtZW50LFxuICBUcmFuc2FjdGlvbkJsb2NrSW5wdXQsXG4gIFRyYW5zYWN0aW9uVHlwZSBhcyBTdWlUcmFuc2FjdGlvbkJsb2NrVHlwZSxcbn0gZnJvbSAnLi9teXN0ZW5sYWIvYnVpbGRlcic7XG5pbXBvcnQgeyBCQ1MgfSBmcm9tICdAbXlzdGVuL2Jjcyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5cbmV4cG9ydCBjbGFzcyBUb2tlblRyYW5zZmVyVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbjxUb2tlblRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHN1aVRyYW5zYWN0aW9uKCk6IFN1aVRyYW5zYWN0aW9uPFRva2VuVHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldFN1aVRyYW5zYWN0aW9uKHR4OiBTdWlUcmFuc2FjdGlvbjxUb2tlblRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+KTogdm9pZCB7XG4gICAgdGhpcy5fc3VpVHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faWQgfHwgVU5BVkFJTEFCTEVfVEVYVDtcbiAgfVxuXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZS50b1N0cmluZygnaGV4JykpO1xuICAgIHRoaXMuX3NpZ25hdHVyZSA9IHsgcHVibGljS2V5LCBzaWduYXR1cmUgfTtcbiAgICB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IHN1aVNpZ25hdHVyZSgpOiBTaWduYXR1cmUge1xuICAgIHJldHVybiB0aGlzLl9zaWduYXR1cmU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9zdWlUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eCA9IHRoaXMuX3N1aVRyYW5zYWN0aW9uO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5faWQsXG4gICAgICBzZW5kZXI6IHR4LnNlbmRlcixcbiAgICAgIGtpbmQ6IHsgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246IHR4LnR4IH0sXG4gICAgICBnYXNEYXRhOiB0eC5nYXNEYXRhLFxuICAgICAgZXhwaXJhdGlvbjogdHguZXhwaXJhdGlvbiA/PyB7IE5vbmU6IG51bGwgfSxcbiAgICAgIGlucHV0T2JqZWN0czogdGhpcy5nZXRJbnB1dE9iamVjdHNGcm9tVHgodHgudHgpLFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAndHlwZSddO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXTtcblxuICAgIGNvbnN0IGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBvdXRwdXRzLFxuICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogdGhpcy5zdWlUcmFuc2FjdGlvbi5nYXNEYXRhLmJ1ZGdldC50b1N0cmluZygpIH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcblxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICByZXR1cm4gdGhpcy5leHBsYWluVG9rZW5UcmFuc2ZlclRyYW5zYWN0aW9uKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIG9uIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWNpcGllbnRzID0gdXRpbHMuZ2V0UmVjaXBpZW50cyh0aGlzLl9zdWlUcmFuc2FjdGlvbik7XG4gICAgLy8gVXNlIEJpZ051bWJlcjogdG9rZW4gY29uc29saWRhdGlvbiBhbW91bnRzIGNhbiBleGNlZWQgMl41MyBhbmQgYSBOdW1iZXItYmFzZWQgc3VtXG4gICAgLy8gd291bGQgbG9zZSBwcmVjaXNpb24uXG4gICAgY29uc3QgdG90YWxBbW91bnQgPSByZWNpcGllbnRzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yLnBsdXMoY3VycmVudC5hbW91bnQpLCBuZXcgQmlnTnVtYmVyKDApKTtcbiAgICB0aGlzLl9vdXRwdXRzID0gcmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4gKHtcbiAgICAgIGFkZHJlc3M6IHJlY2lwaWVudC5hZGRyZXNzLFxuICAgICAgdmFsdWU6IHJlY2lwaWVudC5hbW91bnQsXG4gICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgfSkpO1xuICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdGhpcy5zdWlUcmFuc2FjdGlvbi5zZW5kZXIsXG4gICAgICAgIHZhbHVlOiB0b3RhbEFtb3VudC50b0ZpeGVkKCksXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3VHJhbnNhY3Rpb25cbiAgICovXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIHV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgICB0aGlzLl9zdWlUcmFuc2FjdGlvbiA9IFRyYW5zYWN0aW9uLmRlc2VyaWFsaXplU3VpVHJhbnNhY3Rpb24oXG4gICAgICAgIHJhd1RyYW5zYWN0aW9uXG4gICAgICApIGFzIFN1aVRyYW5zYWN0aW9uPFRva2VuVHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj47XG4gICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gICAgICB0aGlzLl9pZCA9IHRoaXMuX3N1aVRyYW5zYWN0aW9uLmlkO1xuICAgICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiBmb3Igc2VyaWFsaXplKCkgdG8gZ2V0IHRoZSBjb3JyZWN0IHR4RGF0YSB3aXRoIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHJldHVybiB7VHhEYXRhfVxuICAgKi9cbiAgcHVibGljIGdldFR4RGF0YSgpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignZW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgaW5wdXRzOiBDYWxsQXJnW10gfCBUcmFuc2FjdGlvbkJsb2NrSW5wdXRbXSA9IHRoaXMuX3N1aVRyYW5zYWN0aW9uLnR4LmlucHV0cy5tYXAoKGlucHV0KSA9PiB7XG4gICAgICBpZiAoaW5wdXQuaGFzT3duUHJvcGVydHkoJ09iamVjdCcpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dC5oYXNPd25Qcm9wZXJ0eSgnUHVyZScpKSB7XG4gICAgICAgIGlmIChpbnB1dC5QdXJlLmxlbmd0aCA9PT0gU1VJX0FERFJFU1NfTEVOR1RIKSB7XG4gICAgICAgICAgY29uc3QgYWRkcmVzcyA9IG5vcm1hbGl6ZVN1aUFkZHJlc3MoXG4gICAgICAgICAgICBidWlsZGVyLmRlKEJDUy5BRERSRVNTLCBCdWZmZXIuZnJvbShpbnB1dC5QdXJlKS50b1N0cmluZygnYmFzZTY0JyksICdiYXNlNjQnKVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIElucHV0cy5QdXJlKGFkZHJlc3MsIEJDUy5BRERSRVNTKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBhbW91bnQgPSBidWlsZGVyLmRlKEJDUy5VNjQsIEJ1ZmZlci5mcm9tKGlucHV0LlB1cmUpLnRvU3RyaW5nKCdiYXNlNjQnKSwgJ2Jhc2U2NCcpO1xuICAgICAgICAgIHJldHVybiBJbnB1dHMuUHVyZShhbW91bnQsIEJDUy5VNjQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXQuaGFzT3duUHJvcGVydHkoJ0JhbGFuY2VXaXRoZHJhd2FsJykpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBpbnB1dC5raW5kID09PSAnSW5wdXQnICYmXG4gICAgICAgIChpbnB1dC52YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnT2JqZWN0JykgfHxcbiAgICAgICAgICBpbnB1dC52YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnUHVyZScpIHx8XG4gICAgICAgICAgaW5wdXQudmFsdWUuaGFzT3duUHJvcGVydHkoJ0JhbGFuY2VXaXRoZHJhd2FsJykpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGlucHV0LnZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIElucHV0cy5QdXJlKGlucHV0LnZhbHVlLCBpbnB1dC50eXBlID09PSAncHVyZScgPyBCQ1MuVTY0IDogQkNTLkFERFJFU1MpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcHJvZ3JhbW1hYmxlVHggPSB7XG4gICAgICBpbnB1dHMsXG4gICAgICB0cmFuc2FjdGlvbnM6IHRoaXMuX3N1aVRyYW5zYWN0aW9uLnR4LnRyYW5zYWN0aW9ucyxcbiAgICB9IGFzIFRva2VuVHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbjtcblxuICAgIHJldHVybiB7XG4gICAgICBzZW5kZXI6IHRoaXMuX3N1aVRyYW5zYWN0aW9uLnNlbmRlcixcbiAgICAgIGV4cGlyYXRpb246IHRoaXMuX3N1aVRyYW5zYWN0aW9uLmV4cGlyYXRpb24gPz8geyBOb25lOiBudWxsIH0sXG4gICAgICBnYXNEYXRhOiB0aGlzLl9zdWlUcmFuc2FjdGlvbi5nYXNEYXRhLFxuICAgICAga2luZDoge1xuICAgICAgICBQcm9ncmFtbWFibGVUcmFuc2FjdGlvbjogcHJvZ3JhbW1hYmxlVHgsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvbXBsZXRlIGV4cGxhbmF0aW9uIGZvciBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7VHhEYXRhfSBqc29uIFRoZSB0cmFuc2FjdGlvbiBkYXRhIGluIGpzb24gZm9ybWF0XG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn0gZXhwbGFuYXRpb25SZXN1bHQgVGhlIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uIHRvIGJlIGNvbXBsZXRlZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn1cbiAgICovXG4gIGV4cGxhaW5Ub2tlblRyYW5zZmVyVHJhbnNhY3Rpb24oanNvbjogVHhEYXRhLCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHJlY2lwaWVudHMgPSB1dGlscy5nZXRSZWNpcGllbnRzKHRoaXMuc3VpVHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSByZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiByZWNpcGllbnQpO1xuICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IHJlY2lwaWVudHNcbiAgICAgIC5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50KSA9PiBhY2N1bXVsYXRvci5wbHVzKGN1cnJlbnQuYW1vdW50KSwgbmV3IEJpZ051bWJlcigwKSlcbiAgICAgIC50b0ZpeGVkKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBvdXRwdXRzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdHMgdGhlIG9iamVjdHMgdGhhdCB3ZXJlIHByb3ZpZGVkIGFzIGlucHV0cyB3aGlsZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24uXG4gICAqIEhhbmRsZXMgYm90aCB0aGUgc2ltcGxlIGNhc2UgKE1lcmdlQ29pbnMvU3BsaXRDb2lucyBmaXJzdCkgYW5kIHRoZSBhZGRyZXNzLWJhbGFuY2VcbiAgICogY2FzZSB3aGVyZSBNb3ZlQ2FsbChyZWRlZW1fZnVuZHMpIG1heSBwcmVjZWRlIE1lcmdlQ29pbnMvU3BsaXRDb2lucy5cbiAgICogQHBhcmFtIHR4XG4gICAqIEByZXR1cm5zIHtTdWlPYmplY3RSZWZbXX0gT2JqZWN0cyB0aGF0IGFyZSBpbnB1dHMgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBnZXRJbnB1dE9iamVjdHNGcm9tVHgodHg6IFRva2VuVHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbik6IFN1aU9iamVjdFJlZltdIHtcbiAgICBjb25zdCBpbnB1dHMgPSB0eC5pbnB1dHM7XG5cbiAgICAvLyBTY2FuIGFsbCB0cmFuc2FjdGlvbnMgdG8gZmluZCB0aGUgZmlyc3QgTWVyZ2VDb2lucyBvciBTcGxpdENvaW5zLFxuICAgIC8vIHdoaWNoIGhvbGRzIHJlZmVyZW5jZXMgdG8gdGhlIGNvaW4gb2JqZWN0IGlucHV0cy5cbiAgICBsZXQgYXJnczogVHJhbnNhY3Rpb25Bcmd1bWVudFtdID0gW107XG4gICAgZm9yIChjb25zdCB0eG4gb2YgdHgudHJhbnNhY3Rpb25zKSB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHR4biBhcyBTdWlUcmFuc2FjdGlvbkJsb2NrVHlwZTtcbiAgICAgIGlmICh0cmFuc2FjdGlvbi5raW5kID09PSAnTWVyZ2VDb2lucycpIHtcbiAgICAgICAgY29uc3QgeyBkZXN0aW5hdGlvbiwgc291cmNlcyB9ID0gdHJhbnNhY3Rpb247XG4gICAgICAgIGFyZ3MgPSBbZGVzdGluYXRpb24sIC4uLnNvdXJjZXNdO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAodHJhbnNhY3Rpb24ua2luZCA9PT0gJ1NwbGl0Q29pbnMnKSB7XG4gICAgICAgIGFyZ3MgPSBbdHJhbnNhY3Rpb24uY29pbl07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGlucHV0T2JqZWN0czogU3VpT2JqZWN0UmVmW10gPSBbXTtcbiAgICBhcmdzLmZvckVhY2goKGFyZykgPT4ge1xuICAgICAgaWYgKGFyZy5raW5kID09PSAnSW5wdXQnKSB7XG4gICAgICAgIGxldCBpbnB1dCA9IGlucHV0c1thcmcuaW5kZXhdO1xuICAgICAgICBpZiAoJ3ZhbHVlJyBpbiBpbnB1dCkge1xuICAgICAgICAgIGlucHV0ID0gaW5wdXQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdPYmplY3QnIGluIGlucHV0ICYmIGlzSW1tT3JPd25lZE9iaihpbnB1dC5PYmplY3QpKSB7XG4gICAgICAgICAgaW5wdXRPYmplY3RzLnB1c2goaW5wdXQuT2JqZWN0LkltbU9yT3duZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaW5wdXRPYmplY3RzO1xuICB9XG59XG4iXX0=
@@ -1,23 +1,27 @@
1
- /// <reference types="node" />
2
1
  import { BaseKey, BaseTransaction, PublicKey as BasePublicKey, Signature, TransactionType as BitGoTransactionType } from '@bitgo-beta/sdk-core';
3
- import { StakingProgrammableTransaction, SuiTransaction, TransferProgrammableTransaction, TxData } from './iface';
2
+ import { SuiProgrammableTransaction, SuiTransaction, TxData } from './iface';
4
3
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
5
- import { GasData } from './mystenlab/types';
4
+ import { GasData, SuiObjectRef } from './mystenlab/types';
6
5
  import { Buffer } from 'buffer';
7
6
  import { KeyPair } from './keyPair';
8
7
  export declare abstract class Transaction<T> extends BaseTransaction {
9
8
  protected _suiTransaction: SuiTransaction<T>;
10
9
  protected _signature: Signature;
11
10
  private _serializedSig;
11
+ protected _feePayerSignature: Signature;
12
+ private _serializedFeePayerSig;
12
13
  protected constructor(_coinConfig: Readonly<CoinConfig>);
13
14
  get suiTransaction(): SuiTransaction<T>;
14
15
  setSuiTransaction(tx: SuiTransaction<T>): void;
15
16
  /** @inheritDoc **/
16
17
  get id(): string;
17
18
  addSignature(publicKey: BasePublicKey, signature: Buffer): void;
19
+ addFeePayerSignature(publicKey: BasePublicKey, signature: Buffer): void;
18
20
  get suiSignature(): Signature;
19
21
  get serializedSig(): Uint8Array;
22
+ get serializedFeePayerSig(): Uint8Array;
20
23
  setSerializedSig(publicKey: BasePublicKey, signature: Buffer): void;
24
+ setSerializedFeePayerSig(publicKey: BasePublicKey, signature: Buffer): void;
21
25
  /** @inheritdoc */
22
26
  canSign(key: BaseKey): boolean;
23
27
  /**
@@ -26,6 +30,12 @@ export declare abstract class Transaction<T> extends BaseTransaction {
26
30
  * @param {KeyPair} signer key
27
31
  */
28
32
  sign(signer: KeyPair): void;
33
+ /**
34
+ * Sign transaction as the gas owner (fee payer).
35
+ *
36
+ * @param {KeyPair} ownerKey - Key for gas owner.
37
+ */
38
+ signAsFeePayer(signer: KeyPair): void;
29
39
  /** @inheritdoc */
30
40
  toBroadcastFormat(): string;
31
41
  /** @inheritdoc */
@@ -56,10 +66,17 @@ export declare abstract class Transaction<T> extends BaseTransaction {
56
66
  private messageWithIntent;
57
67
  private intentWithScope;
58
68
  serialize(): string;
59
- static deserializeSuiTransaction(serializedTx: string): SuiTransaction<TransferProgrammableTransaction | StakingProgrammableTransaction>;
69
+ static deserializeSuiTransaction(serializedTx: string): SuiTransaction<SuiProgrammableTransaction>;
60
70
  private static getSuiTransactionType;
61
71
  static getProperGasData(k: any): GasData;
62
72
  private static normalizeCoins;
63
73
  private static normalizeSuiObjectRef;
74
+ /**
75
+ * When building transactions with > 255 input gas payment objects, we first use MergeCoins Tranasactions to merge the
76
+ * additional inputs into the gas coin & slice them from the payment in gasData. When initializing the builder using
77
+ * decoded tx data, we need to get these inputs from MergeCoins & add them back to the gas payment to be able to
78
+ * rebuild from a raw transaction.
79
+ */
80
+ protected getInputGasPaymentObjectsFromTx(tx: SuiProgrammableTransaction): SuiObjectRef[];
64
81
  }
65
82
  //# sourceMappingURL=transaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EACP,eAAe,EAEf,SAAS,IAAI,aAAa,EAC1B,SAAS,EACT,eAAe,IAAI,oBAAoB,EACxC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,8BAA8B,EAC9B,cAAc,EAEd,+BAA+B,EAC/B,MAAM,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,OAAO,EAA2D,MAAM,mBAAmB,CAAC;AAErG,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,8BAAsB,WAAW,CAAC,CAAC,CAAE,SAAQ,eAAe;IAC1D,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7C,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;IAChC,OAAO,CAAC,cAAc,CAAa;IAEnC,SAAS,aAAa,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAIvD,IAAI,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,CAEtC;IAED,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAI9C,mBAAmB;IACnB,IAAI,EAAE,IAAI,MAAM,CAKf;IAED,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,IAAI,aAAa,IAAI,UAAU,CAE9B;IAED,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IASnE,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B;;;;OAIG;IAEH,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAY3B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,QAAQ,CAAC,MAAM,IAAI,MAAM;IAEzB;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,oBAAoB,GAAG,IAAI;IAI5D;;OAEG;IACH,QAAQ,CAAC,SAAS,IAAI,MAAM;IAE5B;;OAEG;IACH,QAAQ,CAAC,oBAAoB,IAAI,IAAI;IAErC;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAEzD,YAAY,IAAI,UAAU;IAM1B,kBAAkB;IAClB,IAAI,eAAe,IAAI,MAAM,CAI5B;IAED,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,eAAe;IAIvB,SAAS,IAAI,MAAM;IAMnB,MAAM,CAAC,yBAAyB,CAC9B,YAAY,EAAE,MAAM,GACnB,cAAc,CAAC,+BAA+B,GAAG,8BAA8B,CAAC;IAuBnF,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAkBpC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO;IASxC,OAAO,CAAC,MAAM,CAAC,cAAc;IAM7B,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAOrC"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"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"}