@bitgo/sdk-coin-sui 2.0.1 → 3.0.1

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 (122) hide show
  1. package/.eslintignore +1 -0
  2. package/CHANGELOG.md +37 -0
  3. package/dist/src/lib/constants.d.ts +3 -15
  4. package/dist/src/lib/constants.d.ts.map +1 -1
  5. package/dist/src/lib/constants.js +7 -20
  6. package/dist/src/lib/iface.d.ts +35 -181
  7. package/dist/src/lib/iface.d.ts.map +1 -1
  8. package/dist/src/lib/iface.js +11 -38
  9. package/dist/src/lib/index.d.ts +2 -0
  10. package/dist/src/lib/index.d.ts.map +1 -1
  11. package/dist/src/lib/index.js +6 -2
  12. package/dist/src/lib/keyPair.d.ts +4 -0
  13. package/dist/src/lib/keyPair.d.ts.map +1 -1
  14. package/dist/src/lib/keyPair.js +7 -10
  15. package/dist/src/lib/mystenlab/builder/Inputs.d.ts +66 -0
  16. package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -0
  17. package/dist/src/lib/mystenlab/builder/Inputs.js +56 -0
  18. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +616 -0
  19. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -0
  20. package/dist/src/lib/mystenlab/builder/TransactionBlock.js +260 -0
  21. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +566 -0
  22. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -0
  23. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +171 -0
  24. package/dist/src/lib/mystenlab/builder/Transactions.d.ts +992 -0
  25. package/dist/src/lib/mystenlab/builder/Transactions.d.ts.map +1 -0
  26. package/dist/src/lib/mystenlab/builder/Transactions.js +119 -0
  27. package/dist/src/lib/mystenlab/builder/bcs.d.ts +25 -0
  28. package/dist/src/lib/mystenlab/builder/bcs.d.ts.map +1 -0
  29. package/dist/src/lib/mystenlab/builder/bcs.js +141 -0
  30. package/dist/src/lib/mystenlab/builder/index.d.ts +5 -0
  31. package/dist/src/lib/mystenlab/builder/index.d.ts.map +1 -0
  32. package/dist/src/lib/mystenlab/builder/index.js +17 -0
  33. package/dist/src/lib/mystenlab/builder/serializer.d.ts +4 -0
  34. package/dist/src/lib/mystenlab/builder/serializer.d.ts.map +1 -0
  35. package/dist/src/lib/mystenlab/builder/serializer.js +101 -0
  36. package/dist/src/lib/mystenlab/builder/utils.d.ts +10 -0
  37. package/dist/src/lib/mystenlab/builder/utils.d.ts.map +1 -0
  38. package/dist/src/lib/mystenlab/builder/utils.js +10 -0
  39. package/dist/src/lib/mystenlab/cryptography/hash.d.ts +8 -0
  40. package/dist/src/lib/mystenlab/cryptography/hash.d.ts.map +1 -0
  41. package/dist/src/lib/mystenlab/cryptography/hash.js +22 -0
  42. package/dist/src/lib/mystenlab/framework/framework.d.ts +93 -0
  43. package/dist/src/lib/mystenlab/framework/framework.d.ts.map +1 -0
  44. package/dist/src/lib/mystenlab/framework/framework.js +138 -0
  45. package/dist/src/lib/mystenlab/framework/index.d.ts +3 -0
  46. package/dist/src/lib/mystenlab/framework/index.d.ts.map +1 -0
  47. package/dist/src/lib/mystenlab/framework/index.js +15 -0
  48. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts +12 -0
  49. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts.map +1 -0
  50. package/dist/src/lib/mystenlab/framework/sui-system-state.js +19 -0
  51. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.d.ts +7 -0
  52. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.d.ts.map +1 -0
  53. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +119 -0
  54. package/dist/src/lib/mystenlab/types/coin.d.ts +89 -0
  55. package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -0
  56. package/dist/src/lib/mystenlab/types/coin.js +32 -0
  57. package/dist/src/lib/mystenlab/types/common.d.ts +45 -0
  58. package/dist/src/lib/mystenlab/types/common.d.ts.map +1 -0
  59. package/dist/src/lib/mystenlab/types/common.js +84 -0
  60. package/dist/src/lib/mystenlab/types/events.d.ts +198 -0
  61. package/dist/src/lib/mystenlab/types/events.d.ts.map +1 -0
  62. package/dist/src/lib/mystenlab/types/events.js +46 -0
  63. package/dist/src/lib/mystenlab/types/index.d.ts +9 -0
  64. package/dist/src/lib/mystenlab/types/index.d.ts.map +1 -0
  65. package/dist/src/lib/mystenlab/types/index.js +21 -0
  66. package/dist/src/lib/mystenlab/types/normalized.d.ts +254 -0
  67. package/dist/src/lib/mystenlab/types/normalized.d.ts.map +1 -0
  68. package/dist/src/lib/mystenlab/types/normalized.js +111 -0
  69. package/dist/src/lib/mystenlab/types/objects.d.ts +806 -0
  70. package/dist/src/lib/mystenlab/types/objects.d.ts.map +1 -0
  71. package/dist/src/lib/mystenlab/types/objects.js +302 -0
  72. package/dist/src/lib/mystenlab/types/option.d.ts +8 -0
  73. package/dist/src/lib/mystenlab/types/option.d.ts.map +1 -0
  74. package/dist/src/lib/mystenlab/types/option.js +14 -0
  75. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +111 -0
  76. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -0
  77. package/dist/src/lib/mystenlab/types/sui-bcs.js +107 -0
  78. package/dist/src/lib/mystenlab/types/transactions.d.ts +6703 -0
  79. package/dist/src/lib/mystenlab/types/transactions.d.ts.map +1 -0
  80. package/dist/src/lib/mystenlab/types/transactions.js +405 -0
  81. package/dist/src/lib/mystenlab/types/validator.d.ts +641 -0
  82. package/dist/src/lib/mystenlab/types/validator.d.ts.map +1 -0
  83. package/dist/src/lib/mystenlab/types/validator.js +156 -0
  84. package/dist/src/lib/stakingBuilder.d.ts +24 -35
  85. package/dist/src/lib/stakingBuilder.d.ts.map +1 -1
  86. package/dist/src/lib/stakingBuilder.js +93 -129
  87. package/dist/src/lib/stakingTransaction.d.ts +5 -21
  88. package/dist/src/lib/stakingTransaction.d.ts.map +1 -1
  89. package/dist/src/lib/stakingTransaction.js +77 -219
  90. package/dist/src/lib/transaction.d.ts +8 -6
  91. package/dist/src/lib/transaction.d.ts.map +1 -1
  92. package/dist/src/lib/transaction.js +74 -124
  93. package/dist/src/lib/transactionBuilder.d.ts +9 -9
  94. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  95. package/dist/src/lib/transactionBuilder.js +27 -16
  96. package/dist/src/lib/transactionBuilderFactory.d.ts +8 -5
  97. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  98. package/dist/src/lib/transactionBuilderFactory.js +17 -11
  99. package/dist/src/lib/transferBuilder.d.ts +15 -10
  100. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  101. package/dist/src/lib/transferBuilder.js +38 -101
  102. package/dist/src/lib/transferTransaction.d.ts +5 -4
  103. package/dist/src/lib/transferTransaction.d.ts.map +1 -1
  104. package/dist/src/lib/transferTransaction.js +45 -96
  105. package/dist/src/lib/unstakingBuilder.d.ts +55 -0
  106. package/dist/src/lib/unstakingBuilder.d.ts.map +1 -0
  107. package/dist/src/lib/unstakingBuilder.js +148 -0
  108. package/dist/src/lib/unstakingTransaction.d.ts +51 -0
  109. package/dist/src/lib/unstakingTransaction.d.ts.map +1 -0
  110. package/dist/src/lib/unstakingTransaction.js +206 -0
  111. package/dist/src/lib/utils.d.ts +30 -92
  112. package/dist/src/lib/utils.d.ts.map +1 -1
  113. package/dist/src/lib/utils.js +115 -177
  114. package/dist/src/sui.d.ts.map +1 -1
  115. package/dist/src/sui.js +23 -13
  116. package/package.json +9 -9
  117. package/dist/src/lib/bcs.d.ts +0 -3
  118. package/dist/src/lib/bcs.d.ts.map +0 -1
  119. package/dist/src/lib/bcs.js +0 -109
  120. package/dist/src/lib/txnSchema.d.ts +0 -7
  121. package/dist/src/lib/txnSchema.d.ts.map +0 -1
  122. package/dist/src/lib/txnSchema.js +0 -81
@@ -5,10 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.StakingTransaction = void 0;
7
7
  const sdk_core_1 = require("@bitgo/sdk-core");
8
- const iface_1 = require("./iface");
9
8
  const utils_1 = __importDefault(require("./utils"));
10
- const constants_1 = require("./constants");
9
+ const buffer_1 = require("buffer");
11
10
  const transaction_1 = require("./transaction");
11
+ const builder_1 = require("./mystenlab/builder");
12
+ const types_1 = require("./mystenlab/types");
13
+ const bcs_1 = require("@mysten/bcs");
14
+ const constants_1 = require("./constants");
12
15
  class StakingTransaction extends transaction_1.Transaction {
13
16
  constructor(_coinConfig) {
14
17
  super(_coinConfig);
@@ -43,52 +46,13 @@ class StakingTransaction extends transaction_1.Transaction {
43
46
  if (!this._suiTransaction) {
44
47
  throw new sdk_core_1.ParseTransactionError('Empty transaction');
45
48
  }
46
- const suiTx = this._suiTransaction;
47
- let txDetails;
48
- switch (suiTx.type) {
49
- case iface_1.SuiTransactionType.AddDelegation:
50
- txDetails = {
51
- Call: {
52
- package: suiTx.tx.package || constants_1.SUI_PACKAGE,
53
- module: suiTx.tx.module || iface_1.ModulesNames.SuiSystem,
54
- function: suiTx.tx.function || iface_1.MethodNames.RequestAddDelegationMulCoin,
55
- typeArguments: suiTx.tx.typeArguments,
56
- arguments: suiTx.tx.arguments,
57
- },
58
- };
59
- break;
60
- case iface_1.SuiTransactionType.WithdrawDelegation:
61
- txDetails = {
62
- Call: {
63
- package: suiTx.tx.package || constants_1.SUI_PACKAGE,
64
- module: suiTx.tx.module || iface_1.ModulesNames.SuiSystem,
65
- function: suiTx.tx.function || iface_1.MethodNames.RequestWithdrawDelegation,
66
- typeArguments: suiTx.tx.typeArguments,
67
- arguments: suiTx.tx.arguments,
68
- },
69
- };
70
- break;
71
- case iface_1.SuiTransactionType.SwitchDelegation:
72
- txDetails = {
73
- Call: {
74
- package: suiTx.tx.package || constants_1.SUI_PACKAGE,
75
- module: suiTx.tx.module || iface_1.ModulesNames.SuiSystem,
76
- function: suiTx.tx.function || iface_1.MethodNames.RequestSwitchDelegation,
77
- typeArguments: suiTx.tx.typeArguments,
78
- arguments: suiTx.tx.arguments,
79
- },
80
- };
81
- break;
82
- default:
83
- throw new sdk_core_1.InvalidTransactionError('SuiTransactionType not supported');
84
- }
49
+ const tx = this._suiTransaction;
85
50
  return {
86
51
  id: this._id,
87
- kind: { Single: txDetails },
88
- sender: suiTx.sender,
89
- gasPayment: suiTx.gasPayment,
90
- gasBudget: suiTx.gasBudget,
91
- gasPrice: constants_1.SUI_GAS_PRICE,
52
+ sender: tx.sender,
53
+ kind: { ProgrammableTransaction: tx.tx },
54
+ gasData: tx.gasData,
55
+ expiration: { None: null },
92
56
  };
93
57
  }
94
58
  /** @inheritDoc */
@@ -114,16 +78,12 @@ class StakingTransaction extends transaction_1.Transaction {
114
78
  outputAmount: '0',
115
79
  changeOutputs: [],
116
80
  changeAmount: '0',
117
- fee: { fee: this.suiTransaction.gasBudget.toString() },
81
+ fee: { fee: this.suiTransaction.gasData.budget.toString() },
118
82
  type: this.type,
119
83
  };
120
84
  switch (this.type) {
121
- case sdk_core_1.TransactionType.AddDelegator:
85
+ case sdk_core_1.TransactionType.StakingAdd:
122
86
  return this.explainAddDelegationTransaction(result, explanationResult);
123
- case sdk_core_1.TransactionType.StakingWithdraw:
124
- return this.explainWithdrawDelegationTransaction(result, explanationResult);
125
- case sdk_core_1.TransactionType.StakingSwitch:
126
- return this.explainSwitchDelegationTransaction(result, explanationResult);
127
87
  default:
128
88
  throw new sdk_core_1.InvalidTransactionError('Transaction type not supported');
129
89
  }
@@ -143,59 +103,24 @@ class StakingTransaction extends transaction_1.Transaction {
143
103
  if (!this.suiTransaction) {
144
104
  return;
145
105
  }
146
- switch (this.suiTransaction.type) {
147
- case iface_1.SuiTransactionType.AddDelegation:
148
- const staking_amount = this.suiTransaction.tx.arguments[2].toString();
149
- this._inputs = [
150
- {
151
- address: this.suiTransaction.sender,
152
- value: staking_amount,
153
- coin: this._coinConfig.name,
154
- },
155
- ];
156
- this._outputs = [
157
- {
158
- address: utils_1.default.normalizeHexId(this.suiTransaction.tx.arguments[3].toString()),
159
- value: staking_amount,
160
- coin: this._coinConfig.name,
161
- },
162
- ];
163
- break;
164
- case iface_1.SuiTransactionType.WithdrawDelegation:
165
- this._inputs = [
166
- {
167
- address: utils_1.default.normalizeHexId(this.suiTransaction.tx.arguments[1].objectId),
168
- value: constants_1.TRANSFER_AMOUNT_UNKNOWN_TEXT,
169
- coin: this._coinConfig.name,
170
- },
171
- ];
172
- this._outputs = [
173
- {
174
- address: this.suiTransaction.sender,
175
- value: constants_1.TRANSFER_AMOUNT_UNKNOWN_TEXT,
176
- coin: this._coinConfig.name,
177
- },
178
- ];
179
- break;
180
- case iface_1.SuiTransactionType.SwitchDelegation:
181
- this._inputs = [
182
- {
183
- address: this.suiTransaction.sender,
184
- value: constants_1.TRANSFER_AMOUNT_UNKNOWN_TEXT,
185
- coin: this._coinConfig.name,
186
- },
187
- ];
188
- this._outputs = [
189
- {
190
- address: utils_1.default.normalizeHexId(this.suiTransaction.tx.arguments[3].toString()),
191
- value: constants_1.TRANSFER_AMOUNT_UNKNOWN_TEXT,
192
- coin: this._coinConfig.name,
193
- },
194
- ];
195
- break;
196
- default:
197
- return;
198
- }
106
+ const amountInputIdx = this.suiTransaction.tx.transactions[0].amounts[0].index;
107
+ const amount = utils_1.default.getAmount(this.suiTransaction.tx.inputs[amountInputIdx]);
108
+ const validatorAddressInputIdx = this.suiTransaction.tx.transactions[1].arguments[2].index;
109
+ const validatorAddress = utils_1.default.getAddress(this.suiTransaction.tx.inputs[validatorAddressInputIdx]);
110
+ this._outputs = [
111
+ {
112
+ address: validatorAddress,
113
+ value: Number(amount).toString(),
114
+ coin: this._coinConfig.name,
115
+ },
116
+ ];
117
+ this._inputs = [
118
+ {
119
+ address: this.suiTransaction.sender,
120
+ value: Number(amount).toString(),
121
+ coin: this._coinConfig.name,
122
+ },
123
+ ];
199
124
  }
200
125
  /**
201
126
  * Sets this transaction payload
@@ -206,7 +131,8 @@ class StakingTransaction extends transaction_1.Transaction {
206
131
  try {
207
132
  utils_1.default.isValidRawTransaction(rawTransaction);
208
133
  this._suiTransaction = transaction_1.Transaction.deserializeSuiTransaction(rawTransaction);
209
- this._type = utils_1.default.getTransactionType(this._suiTransaction.tx.function);
134
+ this._type = utils_1.default.getTransactionType(this._suiTransaction.type);
135
+ this._id = this._suiTransaction.id;
210
136
  this.loadInputsAndOutputs();
211
137
  }
212
138
  catch (e) {
@@ -219,135 +145,67 @@ class StakingTransaction extends transaction_1.Transaction {
219
145
  * @return {TxData}
220
146
  */
221
147
  getTxData() {
222
- const suiTx = this._suiTransaction;
223
- let tx;
224
- switch (suiTx.type) {
225
- case iface_1.SuiTransactionType.AddDelegation:
226
- tx = {
227
- Call: {
228
- package: suiTx.tx.package || constants_1.SUI_FRAMEWORK_ADDRESS,
229
- module: suiTx.tx.module || iface_1.ModulesNames.SuiSystem,
230
- function: suiTx.tx.function || iface_1.MethodNames.RequestAddDelegationMulCoin,
231
- typeArguments: suiTx.tx.typeArguments,
232
- arguments: [
233
- utils_1.default.mapSharedObjectToCallArg(suiTx.tx.arguments[0]),
234
- utils_1.default.mapCoinsToCallArg(suiTx.tx.arguments[1]),
235
- utils_1.default.mapAmountToCallArg(Number(suiTx.tx.arguments[2])),
236
- utils_1.default.mapAddressToCallArg(suiTx.tx.arguments[3].toString()),
237
- ],
238
- },
239
- };
240
- break;
241
- case iface_1.SuiTransactionType.WithdrawDelegation:
242
- tx = {
243
- Call: {
244
- package: suiTx.tx.package || constants_1.SUI_FRAMEWORK_ADDRESS,
245
- module: suiTx.tx.module || iface_1.ModulesNames.SuiSystem,
246
- function: suiTx.tx.function || iface_1.MethodNames.RequestWithdrawDelegation,
247
- typeArguments: suiTx.tx.typeArguments,
248
- arguments: [
249
- utils_1.default.mapSharedObjectToCallArg(suiTx.tx.arguments[0]),
250
- utils_1.default.mapSuiObjectRefToCallArg(suiTx.tx.arguments[1]),
251
- utils_1.default.mapSuiObjectRefToCallArg(suiTx.tx.arguments[2]),
252
- ],
253
- },
254
- };
255
- break;
256
- case iface_1.SuiTransactionType.SwitchDelegation:
257
- tx = {
258
- Call: {
259
- package: suiTx.tx.package || constants_1.SUI_FRAMEWORK_ADDRESS,
260
- module: suiTx.tx.module || iface_1.ModulesNames.SuiSystem,
261
- function: suiTx.tx.function || iface_1.MethodNames.RequestSwitchDelegation,
262
- typeArguments: suiTx.tx.typeArguments,
263
- arguments: [
264
- utils_1.default.mapSharedObjectToCallArg(suiTx.tx.arguments[0]),
265
- utils_1.default.mapSuiObjectRefToCallArg(suiTx.tx.arguments[1]),
266
- utils_1.default.mapSuiObjectRefToCallArg(suiTx.tx.arguments[2]),
267
- utils_1.default.mapAddressToCallArg(suiTx.tx.arguments[3].toString()),
268
- ],
269
- },
270
- };
271
- break;
272
- default:
273
- throw new sdk_core_1.InvalidTransactionError(`Sui StakingTransaction type ${suiTx.type} not supported`);
148
+ if (!this._suiTransaction) {
149
+ throw new sdk_core_1.InvalidTransactionError('empty transaction');
274
150
  }
275
- return {
276
- kind: { Single: tx },
277
- gasPayment: suiTx.gasPayment,
278
- gasPrice: constants_1.SUI_GAS_PRICE,
279
- gasBudget: suiTx.gasBudget,
280
- sender: suiTx.sender,
151
+ const inputs = this._suiTransaction.tx.inputs.map((input, index) => {
152
+ if (input.hasOwnProperty('Object')) {
153
+ return input;
154
+ }
155
+ if (input.hasOwnProperty('Pure')) {
156
+ if (input.Pure.length === constants_1.SUI_ADDRESS_LENGTH) {
157
+ const address = types_1.normalizeSuiAddress(builder_1.builder.de(bcs_1.BCS.ADDRESS, buffer_1.Buffer.from(input.Pure).toString('base64'), 'base64'));
158
+ return builder_1.Inputs.Pure(address, bcs_1.BCS.ADDRESS);
159
+ }
160
+ else {
161
+ const amount = builder_1.builder.de(bcs_1.BCS.U64, buffer_1.Buffer.from(input.Pure).toString('base64'), 'base64');
162
+ return builder_1.Inputs.Pure(amount, bcs_1.BCS.U64);
163
+ }
164
+ }
165
+ if (input.kind === 'Input' && (input.value.hasOwnProperty('Object') || input.value.hasOwnProperty('Pure'))) {
166
+ return input.value;
167
+ }
168
+ // what's left is the pure number or address string
169
+ return builder_1.Inputs.Pure(input.value, input.type === 'pure' ? bcs_1.BCS.U64 : bcs_1.BCS.ADDRESS);
170
+ });
171
+ const programmableTx = {
172
+ inputs: inputs,
173
+ transactions: this._suiTransaction.tx.transactions,
281
174
  };
282
- }
283
- /**
284
- * Returns a complete explanation for a transfer transaction
285
- *
286
- * @param {TxData} json The transaction data in json format
287
- * @param {TransactionExplanation} explanationResult The transaction explanation to be completed
288
- * @returns {TransactionExplanation}
289
- */
290
- explainAddDelegationTransaction(json, explanationResult) {
291
- const amount = this.suiTransaction.tx.arguments[2];
292
175
  return {
293
- ...explanationResult,
294
- fee: {
295
- fee: this.suiTransaction.gasBudget.toString(),
176
+ sender: this._suiTransaction.sender,
177
+ expiration: { None: null },
178
+ gasData: this._suiTransaction.gasData,
179
+ kind: {
180
+ ProgrammableTransaction: programmableTx,
296
181
  },
297
- type: sdk_core_1.TransactionType.AddDelegator,
298
- outputs: [
299
- {
300
- address: json.sender,
301
- amount: Number(amount),
302
- },
303
- ],
304
- outputAmount: amount,
305
182
  };
306
183
  }
307
184
  /**
308
- * Returns a complete explanation for a withdraw delegation transaction
185
+ * Returns a complete explanation for a staking transaction
309
186
  *
310
187
  * @param {TxData} json The transaction data in json format
311
188
  * @param {TransactionExplanation} explanationResult The transaction explanation to be completed
312
189
  * @returns {TransactionExplanation}
313
190
  */
314
- explainWithdrawDelegationTransaction(json, explanationResult) {
315
- return {
316
- ...explanationResult,
317
- fee: {
318
- fee: this.suiTransaction.gasBudget.toString(),
191
+ explainAddDelegationTransaction(json, explanationResult) {
192
+ const amountInputIdx = this.suiTransaction.tx.transactions[0].amounts[0].index;
193
+ const amount = this.suiTransaction.tx.inputs[amountInputIdx].value;
194
+ const validatorAddressInputIdx = this.suiTransaction.tx.transactions[1].arguments[2].index;
195
+ const validatorAddress = utils_1.default.getAddress(this.suiTransaction.tx.inputs[validatorAddressInputIdx]);
196
+ const outputs = [
197
+ {
198
+ address: validatorAddress,
199
+ amount: Number(amount).toString(),
319
200
  },
320
- type: sdk_core_1.TransactionType.StakingWithdraw,
321
- outputs: [
322
- {
323
- address: json.sender,
324
- amount: constants_1.TRANSFER_AMOUNT_UNKNOWN_TEXT,
325
- },
326
- ],
327
- };
328
- }
329
- /**
330
- * Returns a complete explanation for a switch delegation transaction
331
- *
332
- * @param {TxData} json The transaction data in json format
333
- * @param {TransactionExplanation} explanationResult The transaction explanation to be completed
334
- * @returns {TransactionExplanation}
335
- */
336
- explainSwitchDelegationTransaction(json, explanationResult) {
201
+ ];
202
+ const outputAmount = amount;
337
203
  return {
338
204
  ...explanationResult,
339
- fee: {
340
- fee: this.suiTransaction.gasBudget.toString(),
341
- },
342
- type: sdk_core_1.TransactionType.StakingSwitch,
343
- outputs: [
344
- {
345
- address: json.sender,
346
- amount: constants_1.TRANSFER_AMOUNT_UNKNOWN_TEXT,
347
- },
348
- ],
205
+ outputAmount,
206
+ outputs,
349
207
  };
350
208
  }
351
209
  }
352
210
  exports.StakingTransaction = StakingTransaction;
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1RyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zdGFraW5nVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBUXlCO0FBQ3pCLG1DQVdpQjtBQUVqQixvREFBNEI7QUFDNUIsMkNBQThHO0FBRTlHLCtDQUE0QztBQUU1QyxNQUFhLGtCQUFtQixTQUFRLHlCQUF1QjtJQUM3RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBOEI7UUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUF3QixFQUFFLFNBQWlCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIs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TUFBTTtvQkFDcEIsTUFBTSxFQUFFLHdDQUE0QjtpQkFDckM7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsa0NBQWtDLENBQUMsSUFBWSxFQUFFLGlCQUF5QztRQUN4RixPQUFPO1lBQ0wsR0FBRyxpQkFBaUI7WUFDcEIsR0FBRyxFQUFFO2dCQUNILEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7YUFDOUM7WUFDRCxJQUFJLEVBQUUsMEJBQWUsQ0FBQyxhQUFhO1lBQ25DLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ3BCLE1BQU0sRUFBRSx3Q0FBNEI7aUJBQ3JDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBeldELGdEQXlXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFB1YmxpY0tleSBhcyBCYXNlUHVibGljS2V5LFxuICBTaWduYXR1cmUsXG4gIFRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQge1xuICBNZXRob2ROYW1lcyxcbiAgTW9kdWxlc05hbWVzLFxuICBNb3ZlQ2FsbFR4LFxuICBTaGFyZWRPYmplY3RSZWYsXG4gIFN1aU9iamVjdFJlZixcbiAgU3VpVHJhbnNhY3Rpb24sXG4gIFN1aVRyYW5zYWN0aW9uVHlwZSxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHhEYXRhLFxuICBUeERldGFpbHMsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFNVSV9GUkFNRVdPUktfQUREUkVTUywgU1VJX0dBU19QUklDRSwgU1VJX1BBQ0tBR0UsIFRSQU5TRkVSX0FNT1VOVF9VTktOT1dOX1RFWFQgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFN0YWtpbmdUcmFuc2FjdGlvbiBleHRlbmRzIFRyYW5zYWN0aW9uPE1vdmVDYWxsVHg+IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHN1aVRyYW5zYWN0aW9uKCk6IFN1aVRyYW5zYWN0aW9uPE1vdmVDYWxsVHg+IHtcbiAgICByZXR1cm4gdGhpcy5fc3VpVHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXRTdWlUcmFuc2FjdGlvbih0eDogU3VpVHJhbnNhY3Rpb248TW92ZUNhbGxUeD4pOiB2b2lkIHtcbiAgICB0aGlzLl9zdWlUcmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0geyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9O1xuICAgIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICBnZXQgc3VpU2lnbmF0dXJlKCk6IFNpZ25hdHVyZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9zdWlUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3N1aVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBzdWlUeCA9IHRoaXMuX3N1aVRyYW5zYWN0aW9uO1xuICAgIGxldCB0eERldGFpbHM6IFR4RGV0YWlscztcbiAgICBzd2l0Y2ggKHN1aVR4LnR5cGUpIHtcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLkFkZERlbGVnYXRpb246XG4gICAgICAgIHR4RGV0YWlscyA9IHtcbiAgICAgICAgICBDYWxsOiB7XG4gICAgICAgICAgICBwYWNrYWdlOiBzdWlUeC50eC5wYWNrYWdlIHx8IFNVSV9QQUNLQUdFLFxuICAgICAgICAgICAgbW9kdWxlOiBzdWlUeC50eC5tb2R1bGUgfHwgTW9kdWxlc05hbWVzLlN1aVN5c3RlbSxcbiAgICAgICAgICAgIGZ1bmN0aW9uOiBzdWlUeC50eC5mdW5jdGlvbiB8fCBNZXRob2ROYW1lcy5SZXF1ZXN0QWRkRGVsZWdhdGlvbk11bENvaW4sXG4gICAgICAgICAgICB0eXBlQXJndW1lbnRzOiBzdWlUeC50eC50eXBlQXJndW1lbnRzLFxuICAgICAgICAgICAgYXJndW1lbnRzOiBzdWlUeC50eC5hcmd1bWVudHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5XaXRoZHJhd0RlbGVnYXRpb246XG4gICAgICAgIHR4RGV0YWlscyA9IHtcbiAgICAgICAgICBDYWxsOiB7XG4gICAgICAgICAgICBwYWNrYWdlOiBzdWlUeC50eC5wYWNrYWdlIHx8IFNVSV9QQUNLQUdFLFxuICAgICAgICAgICAgbW9kdWxlOiBzdWlUeC50eC5tb2R1bGUgfHwgTW9kdWxlc05hbWVzLlN1aVN5c3RlbSxcbiAgICAgICAgICAgIGZ1bmN0aW9uOiBzdWlUeC50eC5mdW5jdGlvbiB8fCBNZXRob2ROYW1lcy5SZXF1ZXN0V2l0aGRyYXdEZWxlZ2F0aW9uLFxuICAgICAgICAgICAgdHlwZUFyZ3VtZW50czogc3VpVHgudHgudHlwZUFyZ3VtZW50cyxcbiAgICAgICAgICAgIGFyZ3VtZW50czogc3VpVHgudHguYXJndW1lbnRzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuU3dpdGNoRGVsZWdhdGlvbjpcbiAgICAgICAgdHhEZXRhaWxzID0ge1xuICAgICAgICAgIENhbGw6IHtcbiAgICAgICAgICAgIHBhY2thZ2U6IHN1aVR4LnR4LnBhY2thZ2UgfHwgU1VJX1BBQ0tBR0UsXG4gICAgICAgICAgICBtb2R1bGU6IHN1aVR4LnR4Lm1vZHVsZSB8fCBNb2R1bGVzTmFtZXMuU3VpU3lzdGVtLFxuICAgICAgICAgICAgZnVuY3Rpb246IHN1aVR4LnR4LmZ1bmN0aW9uIHx8IE1ldGhvZE5hbWVzLlJlcXVlc3RTd2l0Y2hEZWxlZ2F0aW9uLFxuICAgICAgICAgICAgdHlwZUFyZ3VtZW50czogc3VpVHgudHgudHlwZUFyZ3VtZW50cyxcbiAgICAgICAgICAgIGFyZ3VtZW50czogc3VpVHgudHguYXJndW1lbnRzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdTdWlUcmFuc2FjdGlvblR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5faWQsXG4gICAgICBraW5kOiB7IFNpbmdsZTogdHhEZXRhaWxzIH0sXG4gICAgICBzZW5kZXI6IHN1aVR4LnNlbmRlcixcbiAgICAgIGdhc1BheW1lbnQ6IHN1aVR4Lmdhc1BheW1lbnQsXG4gICAgICBnYXNCdWRnZXQ6IHN1aVR4Lmdhc0J1ZGdldCxcbiAgICAgIGdhc1ByaWNlOiBTVUlfR0FTX1BSSUNFLFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gW1xuICAgICAgJ2lkJyxcbiAgICAgICdvdXRwdXRzJyxcbiAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAnZmVlJyxcbiAgICAgICd0eXBlJyxcbiAgICAgICdtb2R1bGUnLFxuICAgICAgJ2Z1bmN0aW9uJyxcbiAgICAgICd2YWxpZGF0b3JBZGRyZXNzJyxcbiAgICBdO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXTtcblxuICAgIGNvbnN0IGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBvdXRwdXRzLFxuICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogdGhpcy5zdWlUcmFuc2FjdGlvbi5nYXNCdWRnZXQudG9TdHJpbmcoKSB9LFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkRGVsZWdhdG9yOlxuICAgICAgICByZXR1cm4gdGhpcy5leHBsYWluQWRkRGVsZWdhdGlvblRyYW5zYWN0aW9uKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICByZXR1cm4gdGhpcy5leHBsYWluV2l0aGRyYXdEZWxlZ2F0aW9uVHJhbnNhY3Rpb24ocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nU3dpdGNoOlxuICAgICAgICByZXR1cm4gdGhpcy5leHBsYWluU3dpdGNoRGVsZWdhdGlvblRyYW5zYWN0aW9uKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIG9uIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoICh0aGlzLnN1aVRyYW5zYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLkFkZERlbGVnYXRpb246XG4gICAgICAgIGNvbnN0IHN0YWtpbmdfYW1vdW50ID0gdGhpcy5zdWlUcmFuc2FjdGlvbi50eC5hcmd1bWVudHNbMl0udG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5faW5wdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMuc3VpVHJhbnNhY3Rpb24uc2VuZGVyLFxuICAgICAgICAgICAgdmFsdWU6IHN0YWtpbmdfYW1vdW50LCAvLyBzdGFraW5nX2Ftb3VudFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdXRpbHMubm9ybWFsaXplSGV4SWQodGhpcy5zdWlUcmFuc2FjdGlvbi50eC5hcmd1bWVudHNbM10udG9TdHJpbmcoKSksIC8vIHZhbGlkYXRvciBhZGRyZXNzXG4gICAgICAgICAgICB2YWx1ZTogc3Rha2luZ19hbW91bnQsIC8vIHN0YWtpbmdfYW1vdW50XG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5XaXRoZHJhd0RlbGVnYXRpb246XG4gICAgICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB1dGlscy5ub3JtYWxpemVIZXhJZCgodGhpcy5zdWlUcmFuc2FjdGlvbi50eC5hcmd1bWVudHNbMV0gYXMgU3VpT2JqZWN0UmVmKS5vYmplY3RJZCksIC8vIGRlbGVnYXRvciBhZGRyZXNzXG4gICAgICAgICAgICB2YWx1ZTogVFJBTlNGRVJfQU1PVU5UX1VOS05PV05fVEVYVCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLl9vdXRwdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMuc3VpVHJhbnNhY3Rpb24uc2VuZGVyLFxuICAgICAgICAgICAgdmFsdWU6IFRSQU5TRkVSX0FNT1VOVF9VTktOT1dOX1RFWFQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5Td2l0Y2hEZWxlZ2F0aW9uOlxuICAgICAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdGhpcy5zdWlUcmFuc2FjdGlvbi5zZW5kZXIsXG4gICAgICAgICAgICB2YWx1ZTogVFJBTlNGRVJfQU1PVU5UX1VOS05PV05fVEVYVCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLl9vdXRwdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHV0aWxzLm5vcm1hbGl6ZUhleElkKHRoaXMuc3VpVHJhbnNhY3Rpb24udHguYXJndW1lbnRzWzNdLnRvU3RyaW5nKCkpLCAvLyB2YWxpZGF0b3IgYWRkcmVzc1xuICAgICAgICAgICAgdmFsdWU6IFRSQU5TRkVSX0FNT1VOVF9VTktOT1dOX1RFWFQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvbiBwYXlsb2FkXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByYXdUcmFuc2FjdGlvblxuICAgKi9cbiAgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgdXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHRoaXMuX3N1aVRyYW5zYWN0aW9uID0gVHJhbnNhY3Rpb24uZGVzZXJpYWxpemVTdWlUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbikgYXMgU3VpVHJhbnNhY3Rpb248TW92ZUNhbGxUeD47XG4gICAgICB0aGlzLl90eXBlID0gdXRpbHMuZ2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMuX3N1aVRyYW5zYWN0aW9uLnR4LmZ1bmN0aW9uKTtcbiAgICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNlcmlhbGl6ZSgpIHRvIGdldCB0aGUgY29ycmVjdCB0eERhdGEgd2l0aCB0cmFuc2FjdGlvbiB0eXBlXG4gICAqXG4gICAqIEByZXR1cm4ge1R4RGF0YX1cbiAgICovXG4gIGdldFR4RGF0YSgpOiBUeERhdGEge1xuICAgIGNvbnN0IHN1aVR4ID0gdGhpcy5fc3VpVHJhbnNhY3Rpb247XG4gICAgbGV0IHR4OiBUeERldGFpbHM7XG5cbiAgICBzd2l0Y2ggKHN1aVR4LnR5cGUpIHtcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLkFkZERlbGVnYXRpb246XG4gICAgICAgIHR4ID0ge1xuICAgICAgICAgIENhbGw6IHtcbiAgICAgICAgICAgIHBhY2thZ2U6IHN1aVR4LnR4LnBhY2thZ2UgfHwgU1VJX0ZSQU1FV09SS19BRERSRVNTLFxuICAgICAgICAgICAgbW9kdWxlOiBzdWlUeC50eC5tb2R1bGUgfHwgTW9kdWxlc05hbWVzLlN1aVN5c3RlbSxcbiAgICAgICAgICAgIGZ1bmN0aW9uOiBzdWlUeC50eC5mdW5jdGlvbiB8fCBNZXRob2ROYW1lcy5SZXF1ZXN0QWRkRGVsZWdhdGlvbk11bENvaW4sXG4gICAgICAgICAgICB0eXBlQXJndW1lbnRzOiBzdWlUeC50eC50eXBlQXJndW1lbnRzLFxuICAgICAgICAgICAgYXJndW1lbnRzOiBbXG4gICAgICAgICAgICAgIHV0aWxzLm1hcFNoYXJlZE9iamVjdFRvQ2FsbEFyZyhzdWlUeC50eC5hcmd1bWVudHNbMF0gYXMgU2hhcmVkT2JqZWN0UmVmKSxcbiAgICAgICAgICAgICAgdXRpbHMubWFwQ29pbnNUb0NhbGxBcmcoc3VpVHgudHguYXJndW1lbnRzWzFdIGFzIFN1aU9iamVjdFJlZltdKSxcbiAgICAgICAgICAgICAgdXRpbHMubWFwQW1vdW50VG9DYWxsQXJnKE51bWJlcihzdWlUeC50eC5hcmd1bWVudHNbMl0pKSxcbiAgICAgICAgICAgICAgdXRpbHMubWFwQWRkcmVzc1RvQ2FsbEFyZyhzdWlUeC50eC5hcmd1bWVudHNbM10udG9TdHJpbmcoKSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuV2l0aGRyYXdEZWxlZ2F0aW9uOlxuICAgICAgICB0eCA9IHtcbiAgICAgICAgICBDYWxsOiB7XG4gICAgICAgICAgICBwYWNrYWdlOiBzdWlUeC50eC5wYWNrYWdlIHx8IFNVSV9GUkFNRVdPUktfQUREUkVTUyxcbiAgICAgICAgICAgIG1vZHVsZTogc3VpVHgudHgubW9kdWxlIHx8IE1vZHVsZXNOYW1lcy5TdWlTeXN0ZW0sXG4gICAgICAgICAgICBmdW5jdGlvbjogc3VpVHgudHguZnVuY3Rpb24gfHwgTWV0aG9kTmFtZXMuUmVxdWVzdFdpdGhkcmF3RGVsZWdhdGlvbixcbiAgICAgICAgICAgIHR5cGVBcmd1bWVudHM6IHN1aVR4LnR4LnR5cGVBcmd1bWVudHMsXG4gICAgICAgICAgICBhcmd1bWVudHM6IFtcbiAgICAgICAgICAgICAgdXRpbHMubWFwU2hhcmVkT2JqZWN0VG9DYWxsQXJnKHN1aVR4LnR4LmFyZ3VtZW50c1swXSBhcyBTaGFyZWRPYmplY3RSZWYpLFxuICAgICAgICAgICAgICB1dGlscy5tYXBTdWlPYmplY3RSZWZUb0NhbGxBcmcoc3VpVHgudHguYXJndW1lbnRzWzFdIGFzIFN1aU9iamVjdFJlZiksXG4gICAgICAgICAgICAgIHV0aWxzLm1hcFN1aU9iamVjdFJlZlRvQ2FsbEFyZyhzdWlUeC50eC5hcmd1bWVudHNbMl0gYXMgU3VpT2JqZWN0UmVmKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5Td2l0Y2hEZWxlZ2F0aW9uOlxuICAgICAgICB0eCA9IHtcbiAgICAgICAgICBDYWxsOiB7XG4gICAgICAgICAgICBwYWNrYWdlOiBzdWlUeC50eC5wYWNrYWdlIHx8IFNVSV9GUkFNRVdPUktfQUREUkVTUyxcbiAgICAgICAgICAgIG1vZHVsZTogc3VpVHgudHgubW9kdWxlIHx8IE1vZHVsZXNOYW1lcy5TdWlTeXN0ZW0sXG4gICAgICAgICAgICBmdW5jdGlvbjogc3VpVHgudHguZnVuY3Rpb24gfHwgTWV0aG9kTmFtZXMuUmVxdWVzdFN3aXRjaERlbGVnYXRpb24sXG4gICAgICAgICAgICB0eXBlQXJndW1lbnRzOiBzdWlUeC50eC50eXBlQXJndW1lbnRzLFxuICAgICAgICAgICAgYXJndW1lbnRzOiBbXG4gICAgICAgICAgICAgIHV0aWxzLm1hcFNoYXJlZE9iamVjdFRvQ2FsbEFyZyhzdWlUeC50eC5hcmd1bWVudHNbMF0gYXMgU2hhcmVkT2JqZWN0UmVmKSxcbiAgICAgICAgICAgICAgdXRpbHMubWFwU3VpT2JqZWN0UmVmVG9DYWxsQXJnKHN1aVR4LnR4LmFyZ3VtZW50c1sxXSBhcyBTdWlPYmplY3RSZWYpLFxuICAgICAgICAgICAgICB1dGlscy5tYXBTdWlPYmplY3RSZWZUb0NhbGxBcmcoc3VpVHgudHguYXJndW1lbnRzWzJdIGFzIFN1aU9iamVjdFJlZiksXG4gICAgICAgICAgICAgIHV0aWxzLm1hcEFkZHJlc3NUb0NhbGxBcmcoc3VpVHgudHguYXJndW1lbnRzWzNdLnRvU3RyaW5nKCkpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgU3VpIFN0YWtpbmdUcmFuc2FjdGlvbiB0eXBlICR7c3VpVHgudHlwZX0gbm90IHN1cHBvcnRlZGApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBraW5kOiB7IFNpbmdsZTogdHggfSxcbiAgICAgIGdhc1BheW1lbnQ6IHN1aVR4Lmdhc1BheW1lbnQsXG4gICAgICBnYXNQcmljZTogU1VJX0dBU19QUklDRSxcbiAgICAgIGdhc0J1ZGdldDogc3VpVHguZ2FzQnVkZ2V0LFxuICAgICAgc2VuZGVyOiBzdWlUeC5zZW5kZXIsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29tcGxldGUgZXhwbGFuYXRpb24gZm9yIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUeERhdGF9IGpzb24gVGhlIHRyYW5zYWN0aW9uIGRhdGEgaW4ganNvbiBmb3JtYXRcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYW5hdGlvblJlc3VsdCBUaGUgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb24gdG8gYmUgY29tcGxldGVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufVxuICAgKi9cbiAgZXhwbGFpbkFkZERlbGVnYXRpb25UcmFuc2FjdGlvbihqc29uOiBUeERhdGEsIGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgYW1vdW50ID0gdGhpcy5zdWlUcmFuc2FjdGlvbi50eC5hcmd1bWVudHNbMl07XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4cGxhbmF0aW9uUmVzdWx0LFxuICAgICAgZmVlOiB7XG4gICAgICAgIGZlZTogdGhpcy5zdWlUcmFuc2FjdGlvbi5nYXNCdWRnZXQudG9TdHJpbmcoKSxcbiAgICAgIH0sXG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGUuQWRkRGVsZWdhdG9yLFxuICAgICAgb3V0cHV0czogW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczoganNvbi5zZW5kZXIsXG4gICAgICAgICAgYW1vdW50OiBOdW1iZXIoYW1vdW50KSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBvdXRwdXRBbW91bnQ6IGFtb3VudCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb21wbGV0ZSBleHBsYW5hdGlvbiBmb3IgYSB3aXRoZHJhdyBkZWxlZ2F0aW9uIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7VHhEYXRhfSBqc29uIFRoZSB0cmFuc2FjdGlvbiBkYXRhIGluIGpzb24gZm9ybWF0XG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn0gZXhwbGFuYXRpb25SZXN1bHQgVGhlIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uIHRvIGJlIGNvbXBsZXRlZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn1cbiAgICovXG4gIGV4cGxhaW5XaXRoZHJhd0RlbGVnYXRpb25UcmFuc2FjdGlvbihcbiAgICBqc29uOiBUeERhdGEsXG4gICAgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25cbiAgKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4cGxhbmF0aW9uUmVzdWx0LFxuICAgICAgZmVlOiB7XG4gICAgICAgIGZlZTogdGhpcy5zdWlUcmFuc2FjdGlvbi5nYXNCdWRnZXQudG9TdHJpbmcoKSxcbiAgICAgIH0sXG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3LFxuICAgICAgb3V0cHV0czogW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczoganNvbi5zZW5kZXIsXG4gICAgICAgICAgYW1vdW50OiBUUkFOU0ZFUl9BTU9VTlRfVU5LTk9XTl9URVhULFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb21wbGV0ZSBleHBsYW5hdGlvbiBmb3IgYSBzd2l0Y2ggZGVsZWdhdGlvbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1R4RGF0YX0ganNvbiBUaGUgdHJhbnNhY3Rpb24gZGF0YSBpbiBqc29uIGZvcm1hdFxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259IGV4cGxhbmF0aW9uUmVzdWx0IFRoZSB0cmFuc2FjdGlvbiBleHBsYW5hdGlvbiB0byBiZSBjb21wbGV0ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259XG4gICAqL1xuICBleHBsYWluU3dpdGNoRGVsZWdhdGlvblRyYW5zYWN0aW9uKGpzb246IFR4RGF0YSwgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBmZWU6IHtcbiAgICAgICAgZmVlOiB0aGlzLnN1aVRyYW5zYWN0aW9uLmdhc0J1ZGdldC50b1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nU3dpdGNoLFxuICAgICAgb3V0cHV0czogW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczoganNvbi5zZW5kZXIsXG4gICAgICAgICAgYW1vdW50OiBUUkFOU0ZFUl9BTU9VTlRfVU5LTk9XTl9URVhULFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1RyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zdGFraW5nVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBUXlCO0FBR3pCLG9EQUE0QjtBQUM1QixtQ0FBZ0M7QUFDaEMsK0NBQTRDO0FBQzVDLGlEQU02QjtBQUM3Qiw2Q0FBaUU7QUFDakUscUNBQWtDO0FBQ2xDLDJDQUFpRDtBQUVqRCxNQUFhLGtCQUFtQixTQUFRLHlCQUEyQztJQUNqRixZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBa0Q7UUFDbEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUF3QixFQUFFLFNBQWlCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3hEO1FB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Q0FBQyxDQUFDLFFBQVEsRUFBRTthQUNsQztTQUNGLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUM7UUFFNUIsT0FBTztZQUNMLEdBQUcsaUJBQWlCO1lBQ3BCLFlBQVk7WUFDWixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXpPRCxnREF5T0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uLCBTdWlUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQge1xuICBidWlsZGVyLFxuICBJbnB1dHMsXG4gIE1vdmVDYWxsVHJhbnNhY3Rpb24sXG4gIFNwbGl0Q29pbnNUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25CbG9ja0lucHV0LFxufSBmcm9tICcuL215c3RlbmxhYi9idWlsZGVyJztcbmltcG9ydCB7IENhbGxBcmcsIG5vcm1hbGl6ZVN1aUFkZHJlc3MgfSBmcm9tICcuL215c3RlbmxhYi90eXBlcyc7XG5pbXBvcnQgeyBCQ1MgfSBmcm9tICdAbXlzdGVuL2Jjcyc7XG5pbXBvcnQgeyBTVUlfQUREUkVTU19MRU5HVEggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBTdGFraW5nVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbjxTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHN1aVRyYW5zYWN0aW9uKCk6IFN1aVRyYW5zYWN0aW9uPFN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldFN1aVRyYW5zYWN0aW9uKHR4OiBTdWlUcmFuc2FjdGlvbjxTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+KTogdm9pZCB7XG4gICAgdGhpcy5fc3VpVHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZS50b1N0cmluZygnaGV4JykpO1xuICAgIHRoaXMuX3NpZ25hdHVyZSA9IHsgcHVibGljS2V5LCBzaWduYXR1cmUgfTtcbiAgICB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IHN1aVNpZ25hdHVyZSgpOiBTaWduYXR1cmUge1xuICAgIHJldHVybiB0aGlzLl9zaWduYXR1cmU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9zdWlUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eCA9IHRoaXMuX3N1aVRyYW5zYWN0aW9uO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5faWQsXG4gICAgICBzZW5kZXI6IHR4LnNlbmRlcixcbiAgICAgIGtpbmQ6IHsgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246IHR4LnR4IH0sXG4gICAgICBnYXNEYXRhOiB0eC5nYXNEYXRhLFxuICAgICAgZXhwaXJhdGlvbjogeyBOb25lOiBudWxsIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbXG4gICAgICAnaWQnLFxuICAgICAgJ291dHB1dHMnLFxuICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICdmZWUnLFxuICAgICAgJ3R5cGUnLFxuICAgICAgJ21vZHVsZScsXG4gICAgICAnZnVuY3Rpb24nLFxuICAgICAgJ3ZhbGlkYXRvckFkZHJlc3MnLFxuICAgIF07XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiB0aGlzLnN1aVRyYW5zYWN0aW9uLmdhc0RhdGEuYnVkZ2V0LnRvU3RyaW5nKCkgfSxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBZGQ6XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5BZGREZWxlZ2F0aW9uVHJhbnNhY3Rpb24ocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgdHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24gdGhpcyB0cmFuc2FjdGlvbi5cbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdWlUcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFtb3VudElucHV0SWR4ID0gKFxuICAgICAgKHRoaXMuc3VpVHJhbnNhY3Rpb24udHgudHJhbnNhY3Rpb25zWzBdIGFzIFNwbGl0Q29pbnNUcmFuc2FjdGlvbikuYW1vdW50c1swXSBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXRcbiAgICApLmluZGV4O1xuICAgIGNvbnN0IGFtb3VudCA9IHV0aWxzLmdldEFtb3VudCh0aGlzLnN1aVRyYW5zYWN0aW9uLnR4LmlucHV0c1thbW91bnRJbnB1dElkeF0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0KTtcblxuICAgIGNvbnN0IHZhbGlkYXRvckFkZHJlc3NJbnB1dElkeCA9IChcbiAgICAgICh0aGlzLnN1aVRyYW5zYWN0aW9uLnR4LnRyYW5zYWN0aW9uc1sxXSBhcyBNb3ZlQ2FsbFRyYW5zYWN0aW9uKS5hcmd1bWVudHNbMl0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0XG4gICAgKS5pbmRleDtcbiAgICBjb25zdCB2YWxpZGF0b3JBZGRyZXNzID0gdXRpbHMuZ2V0QWRkcmVzcyhcbiAgICAgIHRoaXMuc3VpVHJhbnNhY3Rpb24udHguaW5wdXRzW3ZhbGlkYXRvckFkZHJlc3NJbnB1dElkeF0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0XG4gICAgKTtcblxuICAgIHRoaXMuX291dHB1dHMgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHZhbGlkYXRvckFkZHJlc3MsXG4gICAgICAgIHZhbHVlOiBOdW1iZXIoYW1vdW50KS50b1N0cmluZygpLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9LFxuICAgIF07XG4gICAgdGhpcy5faW5wdXRzID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiB0aGlzLnN1aVRyYW5zYWN0aW9uLnNlbmRlcixcbiAgICAgICAgdmFsdWU6IE51bWJlcihhbW91bnQpLnRvU3RyaW5nKCksXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3VHJhbnNhY3Rpb25cbiAgICovXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIHV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgICB0aGlzLl9zdWlUcmFuc2FjdGlvbiA9IFRyYW5zYWN0aW9uLmRlc2VyaWFsaXplU3VpVHJhbnNhY3Rpb24oXG4gICAgICAgIHJhd1RyYW5zYWN0aW9uXG4gICAgICApIGFzIFN1aVRyYW5zYWN0aW9uPFN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj47XG4gICAgICB0aGlzLl90eXBlID0gdXRpbHMuZ2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMuX3N1aVRyYW5zYWN0aW9uLnR5cGUpO1xuICAgICAgdGhpcy5faWQgPSB0aGlzLl9zdWlUcmFuc2FjdGlvbi5pZDtcbiAgICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNlcmlhbGl6ZSgpIHRvIGdldCB0aGUgY29ycmVjdCB0eERhdGEgd2l0aCB0cmFuc2FjdGlvbiB0eXBlXG4gICAqXG4gICAqIEByZXR1cm4ge1R4RGF0YX1cbiAgICovXG4gIGdldFR4RGF0YSgpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignZW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgaW5wdXRzOiBDYWxsQXJnW10gfCBUcmFuc2FjdGlvbkJsb2NrSW5wdXRbXSA9IHRoaXMuX3N1aVRyYW5zYWN0aW9uLnR4LmlucHV0cy5tYXAoKGlucHV0LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGlucHV0Lmhhc093blByb3BlcnR5KCdPYmplY3QnKSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXQuaGFzT3duUHJvcGVydHkoJ1B1cmUnKSkge1xuICAgICAgICBpZiAoaW5wdXQuUHVyZS5sZW5ndGggPT09IFNVSV9BRERSRVNTX0xFTkdUSCkge1xuICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSBub3JtYWxpemVTdWlBZGRyZXNzKFxuICAgICAgICAgICAgYnVpbGRlci5kZShCQ1MuQUREUkVTUywgQnVmZmVyLmZyb20oaW5wdXQuUHVyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpLCAnYmFzZTY0JylcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBJbnB1dHMuUHVyZShhZGRyZXNzLCBCQ1MuQUREUkVTUyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgYW1vdW50ID0gYnVpbGRlci5kZShCQ1MuVTY0LCBCdWZmZXIuZnJvbShpbnB1dC5QdXJlKS50b1N0cmluZygnYmFzZTY0JyksICdiYXNlNjQnKTtcbiAgICAgICAgICByZXR1cm4gSW5wdXRzLlB1cmUoYW1vdW50LCBCQ1MuVTY0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlucHV0LmtpbmQgPT09ICdJbnB1dCcgJiYgKGlucHV0LnZhbHVlLmhhc093blByb3BlcnR5KCdPYmplY3QnKSB8fCBpbnB1dC52YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnUHVyZScpKSkge1xuICAgICAgICByZXR1cm4gaW5wdXQudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHdoYXQncyBsZWZ0IGlzIHRoZSBwdXJlIG51bWJlciBvciBhZGRyZXNzIHN0cmluZ1xuICAgICAgcmV0dXJuIElucHV0cy5QdXJlKGlucHV0LnZhbHVlLCBpbnB1dC50eXBlID09PSAncHVyZScgPyBCQ1MuVTY0IDogQkNTLkFERFJFU1MpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcHJvZ3JhbW1hYmxlVHggPSB7XG4gICAgICBpbnB1dHM6IGlucHV0cyxcbiAgICAgIHRyYW5zYWN0aW9uczogdGhpcy5fc3VpVHJhbnNhY3Rpb24udHgudHJhbnNhY3Rpb25zLFxuICAgIH0gYXMgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbmRlcjogdGhpcy5fc3VpVHJhbnNhY3Rpb24uc2VuZGVyLFxuICAgICAgZXhwaXJhdGlvbjogeyBOb25lOiBudWxsIH0sXG4gICAgICBnYXNEYXRhOiB0aGlzLl9zdWlUcmFuc2FjdGlvbi5nYXNEYXRhLFxuICAgICAga2luZDoge1xuICAgICAgICBQcm9ncmFtbWFibGVUcmFuc2FjdGlvbjogcHJvZ3JhbW1hYmxlVHgsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvbXBsZXRlIGV4cGxhbmF0aW9uIGZvciBhIHN0YWtpbmcgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUeERhdGF9IGpzb24gVGhlIHRyYW5zYWN0aW9uIGRhdGEgaW4ganNvbiBmb3JtYXRcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYW5hdGlvblJlc3VsdCBUaGUgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb24gdG8gYmUgY29tcGxldGVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufVxuICAgKi9cbiAgZXhwbGFpbkFkZERlbGVnYXRpb25UcmFuc2FjdGlvbihqc29uOiBUeERhdGEsIGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgYW1vdW50SW5wdXRJZHggPSAoXG4gICAgICAodGhpcy5zdWlUcmFuc2FjdGlvbi50eC50cmFuc2FjdGlvbnNbMF0gYXMgU3BsaXRDb2luc1RyYW5zYWN0aW9uKS5hbW91bnRzWzBdIGFzIFRyYW5zYWN0aW9uQmxvY2tJbnB1dFxuICAgICkuaW5kZXg7XG4gICAgY29uc3QgYW1vdW50ID0gKHRoaXMuc3VpVHJhbnNhY3Rpb24udHguaW5wdXRzW2Ftb3VudElucHV0SWR4XSBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXQpLnZhbHVlO1xuXG4gICAgY29uc3QgdmFsaWRhdG9yQWRkcmVzc0lucHV0SWR4ID0gKFxuICAgICAgKHRoaXMuc3VpVHJhbnNhY3Rpb24udHgudHJhbnNhY3Rpb25zWzFdIGFzIE1vdmVDYWxsVHJhbnNhY3Rpb24pLmFyZ3VtZW50c1syXSBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXRcbiAgICApLmluZGV4O1xuICAgIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MgPSB1dGlscy5nZXRBZGRyZXNzKFxuICAgICAgdGhpcy5zdWlUcmFuc2FjdGlvbi50eC5pbnB1dHNbdmFsaWRhdG9yQWRkcmVzc0lucHV0SWR4XSBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXRcbiAgICApO1xuXG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdmFsaWRhdG9yQWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiBOdW1iZXIoYW1vdW50KS50b1N0cmluZygpLFxuICAgICAgfSxcbiAgICBdO1xuICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IGFtb3VudDtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dEFtb3VudCxcbiAgICAgIG91dHB1dHMsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,7 +1,8 @@
1
1
  /// <reference types="node" />
2
- import { BaseKey, BaseTransaction, PublicKey as BasePublicKey, Signature, TransactionType } from '@bitgo/sdk-core';
3
- import { MoveCallTx, PayTx, SuiTransaction, SuiTransactionType, TxData } from './iface';
2
+ import { BaseKey, BaseTransaction, PublicKey as BasePublicKey, Signature, TransactionType as BitGoTransactionType } from '@bitgo/sdk-core';
3
+ import { StakingProgrammableTransaction, SuiTransaction, TransferProgrammableTransaction, TxData } from './iface';
4
4
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
5
+ import { GasData } from './mystenlab/types';
5
6
  import { KeyPair } from './keyPair';
6
7
  export declare abstract class Transaction<T> extends BaseTransaction {
7
8
  protected _suiTransaction: SuiTransaction<T>;
@@ -33,7 +34,7 @@ export declare abstract class Transaction<T> extends BaseTransaction {
33
34
  *
34
35
  * @param {TransactionType} transactionType The transaction type to be set.
35
36
  */
36
- transactionType(transactionType: TransactionType): void;
37
+ transactionType(transactionType: BitGoTransactionType): void;
37
38
  /**
38
39
  * get the correct txData with transaction type
39
40
  */
@@ -51,10 +52,11 @@ export declare abstract class Transaction<T> extends BaseTransaction {
51
52
  getDataBytes(): Uint8Array;
52
53
  /** @inheritDoc */
53
54
  get signablePayload(): Buffer;
55
+ private messageWithIntent;
56
+ private intentWithScope;
54
57
  serialize(): string;
55
- private getSha256Hash;
56
- static deserializeSuiTransaction(serializedTx: string): SuiTransaction;
57
- static getProperTxDetails(k: any, type: SuiTransactionType): PayTx | MoveCallTx;
58
+ static deserializeSuiTransaction(serializedTx: string): SuiTransaction<TransferProgrammableTransaction | StakingProgrammableTransaction>;
59
+ static getProperGasData(k: any): GasData;
58
60
  private static normalizeCoins;
59
61
  private static normalizeSuiObjectRef;
60
62
  }
@@ -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,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,EAEV,KAAK,EAEL,cAAc,EACd,kBAAkB,EAClB,MAAM,EAEP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQxD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,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,CAOf;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;IAU3B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,QAAQ,CAAC,MAAM,IAAI,MAAM;IAEzB;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAIvD;;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;IAK1B,kBAAkB;IAClB,IAAI,eAAe,IAAI,MAAM,CAO5B;IAED,SAAS,IAAI,MAAM;IASnB,OAAO,CAAC,aAAa;IAcrB,MAAM,CAAC,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc;IAmCtE,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,kBAAkB,GAAG,KAAK,GAAG,UAAU;IAiE/E,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":";AAAA,OAAO,EACL,OAAO,EACP,eAAe,EAEf,SAAS,IAAI,aAAa,EAC1B,SAAS,EACT,eAAe,IAAI,oBAAoB,EACxC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,8BAA8B,EAAE,cAAc,EAAE,+BAA+B,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAClH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,OAAO,EAA2D,MAAM,mBAAmB,CAAC;AAKrG,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,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO;IASxC,OAAO,CAAC,MAAM,CAAC,cAAc;IAM7B,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAOrC"}