@bitgo-beta/sdk-coin-iota 1.0.1-beta.2 → 1.0.1-beta.200

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 (66) hide show
  1. package/README.md +1 -1
  2. package/dist/src/iota.d.ts +21 -5
  3. package/dist/src/iota.d.ts.map +1 -1
  4. package/dist/src/iota.js +155 -19
  5. package/dist/src/lib/constants.d.ts +10 -8
  6. package/dist/src/lib/constants.d.ts.map +1 -1
  7. package/dist/src/lib/constants.js +12 -11
  8. package/dist/src/lib/iface.d.ts +31 -1
  9. package/dist/src/lib/iface.d.ts.map +1 -1
  10. package/dist/src/lib/iface.js +1 -1
  11. package/dist/src/lib/index.d.ts +1 -0
  12. package/dist/src/lib/index.d.ts.map +1 -1
  13. package/dist/src/lib/index.js +4 -2
  14. package/dist/src/lib/keyPair.d.ts +7 -1
  15. package/dist/src/lib/keyPair.d.ts.map +1 -1
  16. package/dist/src/lib/keyPair.js +24 -4
  17. package/dist/src/lib/transaction.d.ts +66 -5
  18. package/dist/src/lib/transaction.d.ts.map +1 -1
  19. package/dist/src/lib/transaction.js +239 -6
  20. package/dist/src/lib/transactionBuilder.d.ts +70 -9
  21. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  22. package/dist/src/lib/transactionBuilder.js +155 -14
  23. package/dist/src/lib/transactionBuilderFactory.d.ts +15 -2
  24. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  25. package/dist/src/lib/transactionBuilderFactory.js +40 -5
  26. package/dist/src/lib/transferBuilder.d.ts +10 -2
  27. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  28. package/dist/src/lib/transferBuilder.js +45 -3
  29. package/dist/src/lib/transferTransaction.d.ts +28 -0
  30. package/dist/src/lib/transferTransaction.d.ts.map +1 -0
  31. package/dist/src/lib/transferTransaction.js +173 -0
  32. package/dist/src/lib/utils.d.ts +3 -0
  33. package/dist/src/lib/utils.d.ts.map +1 -1
  34. package/dist/src/lib/utils.js +34 -7
  35. package/dist/test/resources/iota.d.ts +23 -0
  36. package/dist/test/resources/iota.d.ts.map +1 -0
  37. package/dist/test/resources/iota.js +74 -0
  38. package/dist/test/unit/index.d.ts +2 -0
  39. package/dist/test/unit/index.d.ts.map +1 -0
  40. package/dist/test/unit/index.js +16 -0
  41. package/dist/test/unit/iota.d.ts +2 -0
  42. package/dist/test/unit/iota.d.ts.map +1 -0
  43. package/dist/test/unit/iota.js +575 -0
  44. package/dist/test/unit/keyPair.d.ts +2 -0
  45. package/dist/test/unit/keyPair.d.ts.map +1 -0
  46. package/dist/test/unit/keyPair.js +135 -0
  47. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  48. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  49. package/dist/test/unit/transactionBuilder/transactionBuilder.js +306 -0
  50. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  51. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  52. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +242 -0
  53. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  54. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  55. package/dist/test/unit/transactionBuilder/transferBuilder.js +288 -0
  56. package/dist/test/unit/transferTransaction.d.ts +2 -0
  57. package/dist/test/unit/transferTransaction.d.ts.map +1 -0
  58. package/dist/test/unit/transferTransaction.js +346 -0
  59. package/dist/test/unit/utils.d.ts +2 -0
  60. package/dist/test/unit/utils.d.ts.map +1 -0
  61. package/dist/test/unit/utils.js +242 -0
  62. package/dist/tsconfig.tsbuildinfo +1 -0
  63. package/package.json +18 -10
  64. package/.eslintignore +0 -5
  65. package/.mocharc.yml +0 -8
  66. package/CHANGELOG.md +0 -0
@@ -1,8 +1,69 @@
1
- import { BaseKey, BaseTransaction } from '@bitgo-beta/sdk-core';
2
- import { TxData } from './iface';
3
- export declare class Transaction extends BaseTransaction {
4
- canSign(key: BaseKey): boolean;
1
+ import { BaseKey, BaseTransaction, PublicKey, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { Transaction as IotaTransaction } from '@iota/iota-sdk/transactions';
4
+ import { TxData, TransactionObjectInput, TransactionExplanation } from './iface';
5
+ export declare abstract class Transaction extends BaseTransaction {
6
+ static EMPTY_PUBLIC_KEY: Buffer<ArrayBuffer>;
7
+ static EMPTY_SIGNATURE: Buffer<ArrayBuffer>;
8
+ protected _rebuildRequired: boolean;
9
+ protected _type: TransactionType;
10
+ protected _iotaTransaction: IotaTransaction;
11
+ private _gasBudget?;
12
+ private _gasPaymentObjects?;
13
+ private _gasPrice?;
14
+ private _gasSponsor?;
15
+ private _sender;
16
+ private _signature?;
17
+ private _gasSponsorSignature?;
18
+ private _txDataBytes?;
19
+ private _isSimulateTx;
20
+ protected constructor(coinConfig: Readonly<CoinConfig>);
21
+ get gasBudget(): number | undefined;
22
+ set gasBudget(value: number | undefined);
23
+ get gasPaymentObjects(): TransactionObjectInput[] | undefined;
24
+ set gasPaymentObjects(value: TransactionObjectInput[] | undefined);
25
+ get gasPrice(): number | undefined;
26
+ set gasPrice(value: number | undefined);
27
+ get gasSponsor(): string | undefined;
28
+ set gasSponsor(value: string | undefined);
29
+ get sender(): string;
30
+ set sender(value: string);
31
+ get isSimulateTx(): boolean;
32
+ set isSimulateTx(value: boolean);
33
+ get signablePayload(): Buffer;
34
+ /** @inheritDoc **/
35
+ get id(): string;
36
+ addSignature(publicKey: PublicKey, signature: Buffer): void;
37
+ addGasSponsorSignature(publicKey: PublicKey, signature: Buffer): void;
38
+ canSign(_key: BaseKey): boolean;
39
+ getFee(): string | undefined;
40
+ toBroadcastFormat(): Promise<string>;
41
+ build(): Promise<Uint8Array<ArrayBuffer>>;
5
42
  toJson(): TxData;
6
- toBroadcastFormat(): string;
43
+ parseFromJSON(txData: TxData): void;
44
+ parseFromBroadcastTx(tx: string | Uint8Array): void;
45
+ /**
46
+ * @inheritDoc
47
+ */
48
+ explainTransaction(): any;
49
+ protected updateIsSimulateTx(): void;
50
+ protected abstract messageWithIntent(message: Uint8Array): Uint8Array;
51
+ protected abstract populateTxInputsAndCommands(): void;
52
+ protected abstract validateTxDataImplementation(): void;
53
+ /**
54
+ * Add the input and output entries for this transaction.
55
+ */
56
+ abstract addInputsAndOutputs(): void;
57
+ /**
58
+ * Returns a complete explanation for a transfer transaction
59
+ * @param {TxData} json The transaction data in json format
60
+ * @param {TransactionExplanation} explanationResult The transaction explanation to be completed
61
+ * @returns {TransactionExplanation}
62
+ */
63
+ protected abstract explainTransactionImplementation(json: TxData, explanationResult: TransactionExplanation): TransactionExplanation;
64
+ private buildDryRunTransaction;
65
+ private buildTransaction;
66
+ private populateTxData;
67
+ private validateTxData;
7
68
  }
8
69
  //# sourceMappingURL=transaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAG9B,MAAM,IAAI,MAAM;IAGhB,iBAAiB,IAAI,MAAM;CAG5B"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,250 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.Transaction = void 0;
4
7
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const transactions_1 = require("@iota/iota-sdk/transactions");
9
+ const utils_1 = require("@iota/iota-sdk/utils");
10
+ const blake2b_1 = __importDefault(require("@bitgo-beta/blake2b"));
11
+ const constants_1 = require("./constants");
5
12
  class Transaction extends sdk_core_1.BaseTransaction {
6
- canSign(key) {
7
- throw new Error('Method not implemented.');
13
+ constructor(coinConfig) {
14
+ super(coinConfig);
15
+ this._sender = '';
16
+ this._rebuildRequired = false;
17
+ this._isSimulateTx = true;
18
+ this._signature = {
19
+ publicKey: {
20
+ pub: Transaction.EMPTY_PUBLIC_KEY.toString('hex'),
21
+ },
22
+ signature: Transaction.EMPTY_SIGNATURE,
23
+ };
24
+ }
25
+ get gasBudget() {
26
+ return this._gasBudget;
27
+ }
28
+ set gasBudget(value) {
29
+ this._gasBudget = value;
30
+ this._rebuildRequired = true;
31
+ }
32
+ get gasPaymentObjects() {
33
+ return this._gasPaymentObjects;
34
+ }
35
+ set gasPaymentObjects(value) {
36
+ this._gasPaymentObjects = value;
37
+ this._rebuildRequired = true;
38
+ }
39
+ get gasPrice() {
40
+ return this._gasPrice;
41
+ }
42
+ set gasPrice(value) {
43
+ this._gasPrice = value;
44
+ this._rebuildRequired = true;
45
+ }
46
+ get gasSponsor() {
47
+ return this._gasSponsor;
48
+ }
49
+ set gasSponsor(value) {
50
+ this._gasSponsor = value;
51
+ this._rebuildRequired = true;
52
+ }
53
+ get sender() {
54
+ return this._sender;
55
+ }
56
+ set sender(value) {
57
+ this._sender = value;
58
+ this._rebuildRequired = true;
59
+ }
60
+ get isSimulateTx() {
61
+ return this._isSimulateTx;
62
+ }
63
+ set isSimulateTx(value) {
64
+ if (!value) {
65
+ try {
66
+ this.validateTxData();
67
+ this._rebuildRequired = true;
68
+ }
69
+ catch (error) {
70
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
71
+ throw new Error(`Tx data validation failed: ${errorMessage}. {Cause: ${error}}`);
72
+ }
73
+ }
74
+ this._isSimulateTx = value;
75
+ }
76
+ get signablePayload() {
77
+ if (this.isSimulateTx) {
78
+ throw new Error('Cannot sign a simulate tx');
79
+ }
80
+ if (this._txDataBytes === undefined || this._rebuildRequired) {
81
+ throw new Error('Tx not built or a rebuild is required');
82
+ }
83
+ const intentMessage = this.messageWithIntent(this._txDataBytes);
84
+ return Buffer.from((0, blake2b_1.default)(32).update(intentMessage).digest('binary'));
85
+ }
86
+ /** @inheritDoc **/
87
+ get id() {
88
+ if (this._txDataBytes === undefined || this._rebuildRequired) {
89
+ throw new Error('Tx not built or a rebuild is required');
90
+ }
91
+ return transactions_1.TransactionDataBuilder.getDigestFromBytes(this._txDataBytes);
92
+ }
93
+ addSignature(publicKey, signature) {
94
+ this._signatures = [...this._signatures, signature.toString('hex')];
95
+ this._signature = { publicKey, signature };
96
+ }
97
+ addGasSponsorSignature(publicKey, signature) {
98
+ this._signatures = [...this._signatures, signature.toString('hex')];
99
+ this._gasSponsorSignature = { publicKey, signature };
100
+ }
101
+ canSign(_key) {
102
+ return !this.isSimulateTx;
103
+ }
104
+ getFee() {
105
+ return this.gasBudget?.toString();
106
+ }
107
+ async toBroadcastFormat() {
108
+ const txDataBytes = await this.build();
109
+ return (0, utils_1.toBase64)(txDataBytes);
110
+ }
111
+ async build() {
112
+ if (this.isSimulateTx) {
113
+ return this.buildDryRunTransaction();
114
+ }
115
+ return this.buildTransaction();
8
116
  }
9
117
  toJson() {
10
- throw new Error('Method not implemented.');
118
+ return {
119
+ sender: this.sender,
120
+ gasBudget: this.gasBudget,
121
+ gasPrice: this.gasPrice,
122
+ gasPaymentObjects: this.gasPaymentObjects,
123
+ gasSponsor: this.gasSponsor,
124
+ type: this.type,
125
+ };
126
+ }
127
+ parseFromJSON(txData) {
128
+ this.sender = txData.sender;
129
+ this.gasBudget = txData.gasBudget;
130
+ this.gasPrice = txData.gasPrice;
131
+ this.gasPaymentObjects = txData.gasPaymentObjects;
132
+ if (txData.gasSponsor !== undefined) {
133
+ this.gasSponsor = txData.gasSponsor;
134
+ }
135
+ }
136
+ parseFromBroadcastTx(tx) {
137
+ const txData = transactions_1.Transaction.from(tx).getData();
138
+ if (txData.sender) {
139
+ this.sender = txData.sender;
140
+ }
141
+ if (txData.gasData?.budget) {
142
+ this.gasBudget = Number(txData.gasData.budget);
143
+ }
144
+ else {
145
+ this.gasBudget = undefined;
146
+ }
147
+ if (txData.gasData?.price) {
148
+ this.gasPrice = Number(txData.gasData.price);
149
+ }
150
+ else {
151
+ this.gasPrice = undefined;
152
+ }
153
+ if (txData.gasData?.payment && txData.gasData.payment.length > 0) {
154
+ this.gasPaymentObjects = txData.gasData.payment.map((payment) => payment);
155
+ }
156
+ else {
157
+ this.gasPaymentObjects = undefined;
158
+ }
159
+ if (txData.gasData?.owner) {
160
+ this.gasSponsor = txData.gasData.owner;
161
+ }
162
+ else {
163
+ this.gasSponsor = undefined;
164
+ }
165
+ }
166
+ /**
167
+ * @inheritDoc
168
+ */
169
+ explainTransaction() {
170
+ const result = this.toJson();
171
+ const displayOrder = ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'type'];
172
+ const outputs = [];
173
+ const explanationResult = {
174
+ displayOrder,
175
+ id: this.id,
176
+ outputs,
177
+ outputAmount: '0',
178
+ changeOutputs: [],
179
+ changeAmount: '0',
180
+ fee: { fee: this.gasBudget ? this.gasBudget.toString() : '' },
181
+ type: this.type,
182
+ };
183
+ return this.explainTransactionImplementation(result, explanationResult);
184
+ }
185
+ updateIsSimulateTx() {
186
+ if (this.gasBudget && this.gasPrice && this.gasPaymentObjects && this.gasPaymentObjects?.length > 0) {
187
+ this.isSimulateTx = false;
188
+ }
189
+ else {
190
+ this.isSimulateTx = true;
191
+ }
192
+ }
193
+ async buildDryRunTransaction() {
194
+ this.validateTxDataImplementation();
195
+ await this.populateTxData();
196
+ const txDataBuilder = new transactions_1.TransactionDataBuilder(this._iotaTransaction.getData());
197
+ return txDataBuilder.build({
198
+ overrides: {
199
+ gasData: {
200
+ budget: constants_1.MAX_GAS_BUDGET.toString(),
201
+ price: constants_1.MAX_GAS_PRICE.toString(),
202
+ payment: [],
203
+ },
204
+ },
205
+ });
206
+ }
207
+ async buildTransaction() {
208
+ if (this._txDataBytes === undefined || this._rebuildRequired) {
209
+ this.validateTxData();
210
+ await this.populateTxData();
211
+ this._iotaTransaction.setGasPrice(this.gasPrice);
212
+ this._iotaTransaction.setGasBudget(this.gasBudget);
213
+ this._iotaTransaction.setGasPayment(this.gasPaymentObjects);
214
+ this._txDataBytes = await this._iotaTransaction.build();
215
+ this._rebuildRequired = false;
216
+ }
217
+ return this._txDataBytes;
218
+ }
219
+ async populateTxData() {
220
+ this._iotaTransaction = new transactions_1.Transaction();
221
+ this.populateTxInputsAndCommands();
222
+ if (this.gasSponsor && this._sender !== this.gasSponsor) {
223
+ this._iotaTransaction = transactions_1.Transaction.fromKind(await this._iotaTransaction.build({ onlyTransactionKind: true }));
224
+ this._iotaTransaction.setGasOwner(this._gasSponsor);
225
+ }
226
+ this._iotaTransaction.setSender(this.sender);
11
227
  }
12
- toBroadcastFormat() {
13
- throw new Error('Method not implemented.');
228
+ validateTxData() {
229
+ this.validateTxDataImplementation();
230
+ if (!this.sender || this.sender === '') {
231
+ throw new sdk_core_1.InvalidTransactionError('Transaction sender is required');
232
+ }
233
+ if (!this.gasPrice) {
234
+ throw new sdk_core_1.InvalidTransactionError('Gas price is required');
235
+ }
236
+ if (!this.gasBudget) {
237
+ throw new sdk_core_1.InvalidTransactionError('Gas budget is required');
238
+ }
239
+ if (!this.gasPaymentObjects || this.gasPaymentObjects?.length === 0) {
240
+ throw new sdk_core_1.InvalidTransactionError('Gas payment objects are required');
241
+ }
242
+ if (this.gasPaymentObjects.length > constants_1.MAX_GAS_PAYMENT_OBJECTS) {
243
+ throw new sdk_core_1.InvalidTransactionError(`Gas payment objects count (${this.gasPaymentObjects.length}) exceeds maximum allowed (${constants_1.MAX_GAS_PAYMENT_OBJECTS})`);
244
+ }
14
245
  }
15
246
  }
16
247
  exports.Transaction = Transaction;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFnRTtBQUdoRSxNQUFhLFdBQVksU0FBUSwwQkFBZTtJQUM5QyxPQUFPLENBQUMsR0FBWTtRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELE1BQU07UUFDSixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELGlCQUFpQjtRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFWRCxrQ0FVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VLZXksIEJhc2VUcmFuc2FjdGlvbiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cbiJdfQ==
248
+ Transaction.EMPTY_PUBLIC_KEY = Buffer.alloc(constants_1.IOTA_KEY_BYTES_LENGTH);
249
+ Transaction.EMPTY_SIGNATURE = Buffer.alloc(constants_1.IOTA_SIGNATURE_LENGTH);
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVE4QjtBQUU5Qiw4REFHcUM7QUFFckMsZ0RBQWdEO0FBQ2hELGtFQUEwQztBQUMxQywyQ0FNcUI7QUFFckIsTUFBc0IsV0FBWSxTQUFRLDBCQUFlO0lBa0J2RCxZQUFzQixVQUFnQztRQUNwRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFNBQVMsRUFBRTtnQkFDVCxHQUFHLEVBQUUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDbEQ7WUFDRCxTQUFTLEVBQUUsV0FBVyxDQUFDLGVBQWU7U0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLEtBQXlCO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLGlCQUFpQixDQUFDLEtBQTJDO1FBQy9ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1Ys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LElBQUksa0NBQXVCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksa0NBQXVCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsbUNBQXVCLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksa0NBQXVCLENBQy9CLDhCQUE4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSw4QkFBOEIsbUNBQXVCLEdBQUcsQ0FDcEgsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOztBQS9TSCxrQ0FnVEM7QUEvU1EsNEJBQWdCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQ0FBcUIsQ0FBQyxDQUFDO0FBQ3ZELDJCQUFlLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQ0FBcUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUHVibGljS2V5LFxuICBTaWduYXR1cmUsXG4gIFRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uIGFzIElvdGFUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25EYXRhQnVpbGRlciBhcyBJb3RhVHJhbnNhY3Rpb25EYXRhQnVpbGRlcixcbn0gZnJvbSAnQGlvdGEvaW90YS1zZGsvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IFR4RGF0YSwgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgdG9CYXNlNjQgfSBmcm9tICdAaW90YS9pb3RhLXNkay91dGlscyc7XG5pbXBvcnQgYmxha2UyYiBmcm9tICdAYml0Z28tYmV0YS9ibGFrZTJiJztcbmltcG9ydCB7XG4gIE1BWF9HQVNfQlVER0VULFxuICBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUyxcbiAgTUFYX0dBU19QUklDRSxcbiAgSU9UQV9LRVlfQllURVNfTEVOR1RILFxuICBJT1RBX1NJR05BVFVSRV9MRU5HVEgsXG59IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgc3RhdGljIEVNUFRZX1BVQkxJQ19LRVkgPSBCdWZmZXIuYWxsb2MoSU9UQV9LRVlfQllURVNfTEVOR1RIKTtcbiAgc3RhdGljIEVNUFRZX1NJR05BVFVSRSA9IEJ1ZmZlci5hbGxvYyhJT1RBX1NJR05BVFVSRV9MRU5HVEgpO1xuXG4gIHByb3RlY3RlZCBfcmVidWlsZFJlcXVpcmVkOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcHJvdGVjdGVkIF9pb3RhVHJhbnNhY3Rpb246IElvdGFUcmFuc2FjdGlvbjtcblxuICBwcml2YXRlIF9nYXNCdWRnZXQ/OiBudW1iZXI7XG4gIHByaXZhdGUgX2dhc1BheW1lbnRPYmplY3RzPzogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdO1xuICBwcml2YXRlIF9nYXNQcmljZT86IG51bWJlcjtcbiAgcHJpdmF0ZSBfZ2FzU3BvbnNvcj86IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VuZGVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NpZ25hdHVyZT86IFNpZ25hdHVyZTtcbiAgcHJpdmF0ZSBfZ2FzU3BvbnNvclNpZ25hdHVyZT86IFNpZ25hdHVyZTtcbiAgcHJpdmF0ZSBfdHhEYXRhQnl0ZXM/OiBVaW50OEFycmF5PEFycmF5QnVmZmVyPjtcbiAgcHJpdmF0ZSBfaXNTaW11bGF0ZVR4OiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX3NlbmRlciA9ICcnO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2lzU2ltdWxhdGVUeCA9IHRydWU7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0ge1xuICAgICAgcHVibGljS2V5OiB7XG4gICAgICAgIHB1YjogVHJhbnNhY3Rpb24uRU1QVFlfUFVCTElDX0tFWS50b1N0cmluZygnaGV4JyksXG4gICAgICB9LFxuICAgICAgc2lnbmF0dXJlOiBUcmFuc2FjdGlvbi5FTVBUWV9TSUdOQVRVUkUsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBnYXNCdWRnZXQoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZ2FzQnVkZ2V0O1xuICB9XG5cbiAgc2V0IGdhc0J1ZGdldCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZ2FzQnVkZ2V0ID0gdmFsdWU7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBnYXNQYXltZW50T2JqZWN0cygpOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9nYXNQYXltZW50T2JqZWN0cztcbiAgfVxuXG4gIHNldCBnYXNQYXltZW50T2JqZWN0cyh2YWx1ZTogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZ2FzUGF5bWVudE9iamVjdHMgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGdhc1ByaWNlKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2dhc1ByaWNlO1xuICB9XG5cbiAgc2V0IGdhc1ByaWNlKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9nYXNQcmljZSA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgZ2FzU3BvbnNvcigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9nYXNTcG9uc29yO1xuICB9XG5cbiAgc2V0IGdhc1Nwb25zb3IodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2dhc1Nwb25zb3IgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IHNlbmRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZW5kZXI7XG4gIH1cblxuICBzZXQgc2VuZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZW5kZXIgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGlzU2ltdWxhdGVUeCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTaW11bGF0ZVR4O1xuICB9XG5cbiAgc2V0IGlzU2ltdWxhdGVUeCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVUeERhdGEoKTtcbiAgICAgICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFR4IGRhdGEgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7ZXJyb3JNZXNzYWdlfS4ge0NhdXNlOiAke2Vycm9yfX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5faXNTaW11bGF0ZVR4ID0gdmFsdWU7XG4gIH1cblxuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgaWYgKHRoaXMuaXNTaW11bGF0ZVR4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzaWduIGEgc2ltdWxhdGUgdHgnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3R4RGF0YUJ5dGVzID09PSB1bmRlZmluZWQgfHwgdGhpcy5fcmVidWlsZFJlcXVpcmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG5vdCBidWlsdCBvciBhIHJlYnVpbGQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgY29uc3QgaW50ZW50TWVzc2FnZSA9IHRoaXMubWVzc2FnZVdpdGhJbnRlbnQodGhpcy5fdHhEYXRhQnl0ZXMpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShibGFrZTJiKDMyKS51cGRhdGUoaW50ZW50TWVzc2FnZSkuZGlnZXN0KCdiaW5hcnknKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl90eERhdGFCeXRlcyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3JlYnVpbGRSZXF1aXJlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCBub3QgYnVpbHQgb3IgYSByZWJ1aWxkIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIHJldHVybiBJb3RhVHJhbnNhY3Rpb25EYXRhQnVpbGRlci5nZXREaWdlc3RGcm9tQnl0ZXModGhpcy5fdHhEYXRhQnl0ZXMpO1xuICB9XG5cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbLi4udGhpcy5fc2lnbmF0dXJlcywgc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKV07XG4gICAgdGhpcy5fc2lnbmF0dXJlID0geyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9O1xuICB9XG5cbiAgYWRkR2FzU3BvbnNvclNpZ25hdHVyZShwdWJsaWNLZXk6IFB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzID0gWy4uLnRoaXMuX3NpZ25hdHVyZXMsIHNpZ25hdHVyZS50b1N0cmluZygnaGV4JyldO1xuICAgIHRoaXMuX2dhc1Nwb25zb3JTaWduYXR1cmUgPSB7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH07XG4gIH1cblxuICBjYW5TaWduKF9rZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNTaW11bGF0ZVR4O1xuICB9XG5cbiAgZ2V0RmVlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2FzQnVkZ2V0Py50b1N0cmluZygpO1xuICB9XG5cbiAgYXN5bmMgdG9Ccm9hZGNhc3RGb3JtYXQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCB0eERhdGFCeXRlczogVWludDhBcnJheTxBcnJheUJ1ZmZlcj4gPSBhd2FpdCB0aGlzLmJ1aWxkKCk7XG4gICAgcmV0dXJuIHRvQmFzZTY0KHR4RGF0YUJ5dGVzKTtcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8VWludDhBcnJheTxBcnJheUJ1ZmZlcj4+IHtcbiAgICBpZiAodGhpcy5pc1NpbXVsYXRlVHgpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkRHJ5UnVuVHJhbnNhY3Rpb24oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRUcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbmRlcjogdGhpcy5zZW5kZXIsXG4gICAgICBnYXNCdWRnZXQ6IHRoaXMuZ2FzQnVkZ2V0LFxuICAgICAgZ2FzUHJpY2U6IHRoaXMuZ2FzUHJpY2UsXG4gICAgICBnYXNQYXltZW50T2JqZWN0czogdGhpcy5nYXNQYXltZW50T2JqZWN0cyxcbiAgICAgIGdhc1Nwb25zb3I6IHRoaXMuZ2FzU3BvbnNvcixcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuICB9XG5cbiAgcGFyc2VGcm9tSlNPTih0eERhdGE6IFR4RGF0YSk6IHZvaWQge1xuICAgIHRoaXMuc2VuZGVyID0gdHhEYXRhLnNlbmRlcjtcbiAgICB0aGlzLmdhc0J1ZGdldCA9IHR4RGF0YS5nYXNCdWRnZXQ7XG4gICAgdGhpcy5nYXNQcmljZSA9IHR4RGF0YS5nYXNQcmljZTtcbiAgICB0aGlzLmdhc1BheW1lbnRPYmplY3RzID0gdHhEYXRhLmdhc1BheW1lbnRPYmplY3RzO1xuICAgIGlmICh0eERhdGEuZ2FzU3BvbnNvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmdhc1Nwb25zb3IgPSB0eERhdGEuZ2FzU3BvbnNvcjtcbiAgICB9XG4gIH1cblxuICBwYXJzZUZyb21Ccm9hZGNhc3RUeCh0eDogc3RyaW5nIHwgVWludDhBcnJheSk6IHZvaWQge1xuICAgIGNvbnN0IHR4RGF0YSA9IElvdGFUcmFuc2FjdGlvbi5mcm9tKHR4KS5nZXREYXRhKCk7XG4gICAgaWYgKHR4RGF0YS5zZW5kZXIpIHtcbiAgICAgIHRoaXMuc2VuZGVyID0gdHhEYXRhLnNlbmRlcjtcbiAgICB9XG4gICAgaWYgKHR4RGF0YS5nYXNEYXRhPy5idWRnZXQpIHtcbiAgICAgIHRoaXMuZ2FzQnVkZ2V0ID0gTnVtYmVyKHR4RGF0YS5nYXNEYXRhLmJ1ZGdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2FzQnVkZ2V0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/LnByaWNlKSB7XG4gICAgICB0aGlzLmdhc1ByaWNlID0gTnVtYmVyKHR4RGF0YS5nYXNEYXRhLnByaWNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nYXNQcmljZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHR4RGF0YS5nYXNEYXRhPy5wYXltZW50ICYmIHR4RGF0YS5nYXNEYXRhLnBheW1lbnQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5nYXNQYXltZW50T2JqZWN0cyA9IHR4RGF0YS5nYXNEYXRhLnBheW1lbnQubWFwKChwYXltZW50KSA9PiBwYXltZW50IGFzIFRyYW5zYWN0aW9uT2JqZWN0SW5wdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhc1BheW1lbnRPYmplY3RzID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/Lm93bmVyKSB7XG4gICAgICB0aGlzLmdhc1Nwb25zb3IgPSB0eERhdGEuZ2FzRGF0YS5vd25lcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nYXNTcG9uc29yID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbJ2lkJywgJ291dHB1dHMnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZU91dHB1dHMnLCAnY2hhbmdlQW1vdW50JywgJ2ZlZScsICd0eXBlJ107XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiB0aGlzLmdhc0J1ZGdldCA/IHRoaXMuZ2FzQnVkZ2V0LnRvU3RyaW5nKCkgOiAnJyB9LFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5leHBsYWluVHJhbnNhY3Rpb25JbXBsZW1lbnRhdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVJc1NpbXVsYXRlVHgoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FzQnVkZ2V0ICYmIHRoaXMuZ2FzUHJpY2UgJiYgdGhpcy5nYXNQYXltZW50T2JqZWN0cyAmJiB0aGlzLmdhc1BheW1lbnRPYmplY3RzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmlzU2ltdWxhdGVUeCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzU2ltdWxhdGVUeCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG1lc3NhZ2VXaXRoSW50ZW50KG1lc3NhZ2U6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcG9wdWxhdGVUeElucHV0c0FuZENvbW1hbmRzKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCB2YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBlbnRyaWVzIGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYWJzdHJhY3QgYWRkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29tcGxldGUgZXhwbGFuYXRpb24gZm9yIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtUeERhdGF9IGpzb24gVGhlIHRyYW5zYWN0aW9uIGRhdGEgaW4ganNvbiBmb3JtYXRcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYW5hdGlvblJlc3VsdCBUaGUgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb24gdG8gYmUgY29tcGxldGVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufVxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4cGxhaW5UcmFuc2FjdGlvbkltcGxlbWVudGF0aW9uKFxuICAgIGpzb246IFR4RGF0YSxcbiAgICBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uO1xuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGREcnlSdW5UcmFuc2FjdGlvbigpOiBQcm9taXNlPFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXI+PiB7XG4gICAgdGhpcy52YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk7XG4gICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVR4RGF0YSgpO1xuICAgIGNvbnN0IHR4RGF0YUJ1aWxkZXIgPSBuZXcgSW90YVRyYW5zYWN0aW9uRGF0YUJ1aWxkZXIodGhpcy5faW90YVRyYW5zYWN0aW9uLmdldERhdGEoKSk7XG4gICAgcmV0dXJuIHR4RGF0YUJ1aWxkZXIuYnVpbGQoe1xuICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgIGdhc0RhdGE6IHtcbiAgICAgICAgICBidWRnZXQ6IE1BWF9HQVNfQlVER0VULnRvU3RyaW5nKCksXG4gICAgICAgICAgcHJpY2U6IE1BWF9HQVNfUFJJQ0UudG9TdHJpbmcoKSxcbiAgICAgICAgICBwYXltZW50OiBbXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkVHJhbnNhY3Rpb24oKTogUHJvbWlzZTxVaW50OEFycmF5PEFycmF5QnVmZmVyPj4ge1xuICAgIGlmICh0aGlzLl90eERhdGFCeXRlcyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3JlYnVpbGRSZXF1aXJlZCkge1xuICAgICAgdGhpcy52YWxpZGF0ZVR4RGF0YSgpO1xuICAgICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVR4RGF0YSgpO1xuICAgICAgdGhpcy5faW90YVRyYW5zYWN0aW9uLnNldEdhc1ByaWNlKHRoaXMuZ2FzUHJpY2UgYXMgbnVtYmVyKTtcbiAgICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zZXRHYXNCdWRnZXQodGhpcy5nYXNCdWRnZXQgYXMgbnVtYmVyKTtcbiAgICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zZXRHYXNQYXltZW50KHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdKTtcbiAgICAgIHRoaXMuX3R4RGF0YUJ5dGVzID0gYXdhaXQgdGhpcy5faW90YVRyYW5zYWN0aW9uLmJ1aWxkKCk7XG4gICAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3R4RGF0YUJ5dGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwb3B1bGF0ZVR4RGF0YSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24gPSBuZXcgSW90YVRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5wb3B1bGF0ZVR4SW5wdXRzQW5kQ29tbWFuZHMoKTtcbiAgICBpZiAodGhpcy5nYXNTcG9uc29yICYmIHRoaXMuX3NlbmRlciAhPT0gdGhpcy5nYXNTcG9uc29yKSB7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24gPSBJb3RhVHJhbnNhY3Rpb24uZnJvbUtpbmQoXG4gICAgICAgIGF3YWl0IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5idWlsZCh7IG9ubHlUcmFuc2FjdGlvbktpbmQ6IHRydWUgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uc2V0R2FzT3duZXIodGhpcy5fZ2FzU3BvbnNvciBhcyBzdHJpbmcpO1xuICAgIH1cbiAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uc2V0U2VuZGVyKHRoaXMuc2VuZGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUeERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnNlbmRlciB8fCB0aGlzLnNlbmRlciA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gc2VuZGVyIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdhc1ByaWNlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0dhcyBwcmljZSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nYXNCdWRnZXQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignR2FzIGJ1ZGdldCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nYXNQYXltZW50T2JqZWN0cyB8fCB0aGlzLmdhc1BheW1lbnRPYmplY3RzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignR2FzIHBheW1lbnQgb2JqZWN0cyBhcmUgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nYXNQYXltZW50T2JqZWN0cy5sZW5ndGggPiBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgR2FzIHBheW1lbnQgb2JqZWN0cyBjb3VudCAoJHt0aGlzLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aH0pIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkICgke01BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTfSlgXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,15 +1,76 @@
1
- import { BaseAddress, BaseKey, BaseTransaction, BaseTransactionBuilder } from '@bitgo-beta/sdk-core';
1
+ import { BaseAddress, BaseKey, BaseTransaction, BaseTransactionBuilder, PublicKey, TransactionType } from '@bitgo-beta/sdk-core';
2
2
  import BigNumber from 'bignumber.js';
3
- export declare class TransactionBuilder extends BaseTransactionBuilder {
4
- protected fromImplementation(rawTransaction: any): BaseTransaction;
5
- protected signImplementation(key: BaseKey): BaseTransaction;
6
- protected buildImplementation(): Promise<BaseTransaction>;
3
+ import { Transaction } from './transaction';
4
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
5
+ import { GasData } from './iface';
6
+ export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
7
+ protected _transaction: Transaction;
8
+ protected constructor(coinConfig: Readonly<CoinConfig>);
9
+ /**
10
+ * Initialize the transaction builder fields using the decoded transaction data
11
+ *
12
+ * @param {Transaction} tx the transaction data
13
+ */
14
+ initBuilder(tx: Transaction): void;
15
+ get transactionType(): TransactionType;
16
+ /**
17
+ * @inheritdoc
18
+ * */
19
+ get transaction(): Transaction;
20
+ /**
21
+ * @inheritdoc
22
+ * */
23
+ protected set transaction(transaction: Transaction);
24
+ /**
25
+ * Sets the sender of this transaction.
26
+ *
27
+ * @param {string} senderAddress the account that is sending this transaction
28
+ * @returns {TransactionBuilder} This transaction builder
29
+ */
30
+ sender(senderAddress: string): this;
31
+ /**
32
+ * Sets the gasData for this transaction.
33
+ *
34
+ * @param {string} gasData the gas details for this transaction
35
+ * @returns {TransactionBuilder} This transaction builder
36
+ */
37
+ gasData(gasData: GasData): this;
38
+ /**
39
+ * Sets the gasSponsor of this transaction.
40
+ *
41
+ * @param {string} sponsorAddress the account that is sponsoring this transaction's gas
42
+ * @returns {TransactionBuilder} This transaction builder
43
+ */
44
+ gasSponsor(sponsorAddress: string): this;
45
+ addSignature(publicKey: PublicKey, signature: Buffer): void;
46
+ addGasSponsorSignature(publicKey: PublicKey, signature: Buffer): void;
7
47
  validateKey(key: BaseKey): void;
48
+ /**
49
+ * @inheritdoc
50
+ * */
8
51
  validateAddress(address: BaseAddress, addressFormat?: string): void;
52
+ /**
53
+ * @inheritdoc
54
+ * */
9
55
  validateValue(value: BigNumber): void;
10
- validateRawTransaction(rawTransaction: any): void;
11
- validateTransaction(transaction?: BaseTransaction): void;
12
- protected get transaction(): BaseTransaction;
13
- protected set transaction(transaction: BaseTransaction);
56
+ /** @inheritdoc */
57
+ validateRawTransaction(rawTransaction: string): void;
58
+ /**
59
+ * @inheritdoc
60
+ * */
61
+ validateTransaction(transaction?: Transaction): void;
62
+ /**
63
+ * @inheritdoc
64
+ * */
65
+ fromImplementation(rawTransaction: string | Uint8Array): Transaction;
66
+ /**
67
+ * @inheritdoc
68
+ * */
69
+ protected signImplementation(key: BaseKey): BaseTransaction;
70
+ /**
71
+ * @inheritdoc
72
+ * */
73
+ protected buildImplementation(): Promise<Transaction>;
74
+ private validateGasData;
14
75
  }
15
76
  //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACrG,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,qBAAa,kBAAmB,SAAQ,sBAAsB;IAC5D,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,GAAG,GAAG,eAAe;IAGlE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe;IAG3D,SAAS,CAAC,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC;IAGzD,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAG/B,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAGnE,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAGrC,sBAAsB,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI;IAGjD,mBAAmB,CAAC,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI;IAGxD,SAAS,KAAK,WAAW,IAAI,eAAe,CAE3C;IACD,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,eAAe,EAErD;CACF"}
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,eAAe,EACf,sBAAsB,EAGtB,SAAS,EACT,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAA0B,OAAO,EAAE,MAAM,SAAS,CAAC;AAG1D,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IAEpC,SAAS,aAAa,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAItD;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IASlC,IAAI,eAAe,IAAI,eAAe,CAErC;IAED;;SAEK;IACL,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED;;SAEK;IACL,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;IAED;;;;;OAKG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAMnC;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAMxC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAO3D,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOrE,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAI/B;;SAEK;IACL,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE;;SAEK;IACL,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAQrC,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASpD;;SAEK;IACL,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAepD;;SAEK;IACL,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW;IAQpE;;SAEK;IACL,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe;IAI3D;;SAEK;cACW,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAU3D,OAAO,CAAC,eAAe;CAWxB"}