@bitgo-beta/sdk-coin-algo 0.0.0-semantic-release-managed

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 (67) hide show
  1. package/.eslintignore +5 -0
  2. package/.mocharc.yml +8 -0
  3. package/CHANGELOG.md +854 -0
  4. package/LICENSE +191 -0
  5. package/README.md +30 -0
  6. package/dist/src/algo.d.ts +291 -0
  7. package/dist/src/algo.d.ts.map +1 -0
  8. package/dist/src/algo.js +637 -0
  9. package/dist/src/algoToken.d.ts +32 -0
  10. package/dist/src/algoToken.d.ts.map +1 -0
  11. package/dist/src/algoToken.js +82 -0
  12. package/dist/src/builder.d.ts +3 -0
  13. package/dist/src/builder.d.ts.map +1 -0
  14. package/dist/src/builder.js +10 -0
  15. package/dist/src/index.d.ts +6 -0
  16. package/dist/src/index.d.ts.map +1 -0
  17. package/dist/src/index.js +45 -0
  18. package/dist/src/lib/assetTransferBuilder.d.ts +42 -0
  19. package/dist/src/lib/assetTransferBuilder.d.ts.map +1 -0
  20. package/dist/src/lib/assetTransferBuilder.js +105 -0
  21. package/dist/src/lib/errors.d.ts +11 -0
  22. package/dist/src/lib/errors.d.ts.map +1 -0
  23. package/dist/src/lib/errors.js +27 -0
  24. package/dist/src/lib/ifaces.d.ts +45 -0
  25. package/dist/src/lib/ifaces.d.ts.map +1 -0
  26. package/dist/src/lib/ifaces.js +3 -0
  27. package/dist/src/lib/index.d.ts +13 -0
  28. package/dist/src/lib/index.d.ts.map +1 -0
  29. package/dist/src/lib/index.js +61 -0
  30. package/dist/src/lib/keyPair.d.ts +25 -0
  31. package/dist/src/lib/keyPair.d.ts.map +1 -0
  32. package/dist/src/lib/keyPair.js +91 -0
  33. package/dist/src/lib/keyRegistrationBuilder.d.ts +104 -0
  34. package/dist/src/lib/keyRegistrationBuilder.d.ts.map +1 -0
  35. package/dist/src/lib/keyRegistrationBuilder.js +240 -0
  36. package/dist/src/lib/seedEncoding.d.ts +25 -0
  37. package/dist/src/lib/seedEncoding.d.ts.map +1 -0
  38. package/dist/src/lib/seedEncoding.js +111 -0
  39. package/dist/src/lib/transaction.d.ts +75 -0
  40. package/dist/src/lib/transaction.d.ts.map +1 -0
  41. package/dist/src/lib/transaction.js +250 -0
  42. package/dist/src/lib/transactionBuilder.d.ts +210 -0
  43. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  44. package/dist/src/lib/transactionBuilder.js +389 -0
  45. package/dist/src/lib/transactionBuilderFactory.d.ts +16 -0
  46. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  47. package/dist/src/lib/transactionBuilderFactory.js +52 -0
  48. package/dist/src/lib/transferBuilder.d.ts +40 -0
  49. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  50. package/dist/src/lib/transferBuilder.js +89 -0
  51. package/dist/src/lib/txnSchema.d.ts +7 -0
  52. package/dist/src/lib/txnSchema.d.ts.map +1 -0
  53. package/dist/src/lib/txnSchema.js +68 -0
  54. package/dist/src/lib/utils.d.ts +254 -0
  55. package/dist/src/lib/utils.d.ts.map +1 -0
  56. package/dist/src/lib/utils.js +563 -0
  57. package/dist/src/register.d.ts +3 -0
  58. package/dist/src/register.d.ts.map +1 -0
  59. package/dist/src/register.js +15 -0
  60. package/dist/src/seedValidator.d.ts +31 -0
  61. package/dist/src/seedValidator.d.ts.map +1 -0
  62. package/dist/src/seedValidator.js +103 -0
  63. package/dist/src/talgo.d.ts +12 -0
  64. package/dist/src/talgo.d.ts.map +1 -0
  65. package/dist/src/talgo.js +20 -0
  66. package/package.json +63 -0
  67. package/types/index.d.ts +60 -0
@@ -0,0 +1,75 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import algosdk from 'algosdk';
3
+ import { BaseTransaction, TransactionType, BaseKey } from '@bitgo-beta/sdk-core';
4
+ import { KeyPair } from './keyPair';
5
+ import { TxData } from './ifaces';
6
+ export declare class Transaction extends BaseTransaction {
7
+ private _algoTransaction?;
8
+ private _signedTransaction?;
9
+ private _numberOfRequiredSigners;
10
+ private _sender;
11
+ private _signers;
12
+ private _signedBy;
13
+ constructor(coinConfig: Readonly<CoinConfig>);
14
+ /** @inheritdoc */
15
+ canSign({ key }: BaseKey): boolean;
16
+ sender(address: string): void;
17
+ /**
18
+ * Signs transaction.
19
+ *
20
+ * @param {KeyPair} keyPair Signer keys.
21
+ */
22
+ sign(keyPair: KeyPair[]): void;
23
+ /**
24
+ * Signs transaction.
25
+ *
26
+ * @param {KeyPair} keyPair Signer keys.
27
+ */
28
+ private signSingle;
29
+ /**
30
+ * Signs multisig transaction.
31
+ *
32
+ * @param {KeyPair} keyPair Signers keys.
33
+ */
34
+ private signMultiSig;
35
+ set signedTransaction(txn: Uint8Array);
36
+ get numberOfRequiredSigners(): number;
37
+ /**
38
+ * Sets the number of signers required for signing this transaction.
39
+ *
40
+ * @param {number} num Threshold number of signers.
41
+ */
42
+ setNumberOfRequiredSigners(num: number): void;
43
+ set signers(addrs: string[]);
44
+ get signers(): string[];
45
+ set signedBy(signer: string[]);
46
+ get signedBy(): string[];
47
+ /**
48
+ * Sets algo transaction.
49
+ *
50
+ * @param {algosdk.Transaction} tx
51
+ */
52
+ setAlgoTransaction(tx: algosdk.Transaction): void;
53
+ /**
54
+ * Get underlaying algo transaction.
55
+ *
56
+ * @returns {algosdk.Transaction}
57
+ */
58
+ getAlgoTransaction(): algosdk.Transaction | undefined;
59
+ /**
60
+ * Set the transaction type.
61
+ *
62
+ * @param {TransactionType} transactionType The transaction type to be set.
63
+ */
64
+ setTransactionType(transactionType: TransactionType): void;
65
+ estimateSize(): number;
66
+ /** @inheritdoc */
67
+ toBroadcastFormat(): Uint8Array;
68
+ /** @inheritdoc */
69
+ toJson(): TxData;
70
+ /**
71
+ * Load the input and output data on this transaction.
72
+ */
73
+ loadInputsAndOutputs(): void;
74
+ }
75
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,eAAe,EACf,OAAO,EAIR,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,gBAAgB,CAAC,CAAsB;IAC/C,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAW;gBAEhB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM5C,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IAiBlC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI7B;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI;IAW9B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA+BpB,IAAI,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAEpC;IAED,IAAI,uBAAuB,IAAI,MAAM,CAEpC;IAED;;;;OAIG;IACH,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7C,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAE1B;IAED,IAAI,OAAO,IAAI,MAAM,EAAE,CAEtB;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAE5B;IAED,IAAI,QAAQ,IAAI,MAAM,EAAE,CAEvB;IAED;;;;OAIG;IAEH,kBAAkB,CAAC,EAAE,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI;IAIjD;;;;OAIG;IAEH,kBAAkB,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS;IAIrD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,YAAY,IAAI,MAAM;IAQtB,kBAAkB;IAClB,iBAAiB,IAAI,UAAU;IAW/B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAoDhB;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAsB7B"}
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Transaction = void 0;
7
+ const algosdk_1 = __importDefault(require("algosdk"));
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const utils_1 = __importDefault(require("./utils"));
10
+ const keyPair_1 = require("./keyPair");
11
+ class Transaction extends sdk_core_1.BaseTransaction {
12
+ constructor(coinConfig) {
13
+ super(coinConfig);
14
+ this._numberOfRequiredSigners = 0;
15
+ this._signers = [];
16
+ }
17
+ /** @inheritdoc */
18
+ canSign({ key }) {
19
+ if (this._numberOfRequiredSigners === 0) {
20
+ return false;
21
+ }
22
+ if (this._numberOfRequiredSigners === 1) {
23
+ const kp = new keyPair_1.KeyPair({ prv: key });
24
+ const addr = kp.getAddress();
25
+ if (addr === this._sender) {
26
+ return true;
27
+ }
28
+ else {
29
+ return false;
30
+ }
31
+ }
32
+ else {
33
+ return true;
34
+ }
35
+ }
36
+ sender(address) {
37
+ this._sender = address;
38
+ }
39
+ /**
40
+ * Signs transaction.
41
+ *
42
+ * @param {KeyPair} keyPair Signer keys.
43
+ */
44
+ sign(keyPair) {
45
+ if (!this._algoTransaction) {
46
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
47
+ }
48
+ if (this._numberOfRequiredSigners === 1) {
49
+ this.signSingle(keyPair[0]);
50
+ }
51
+ else if (this._numberOfRequiredSigners > 1) {
52
+ this.signMultiSig(keyPair);
53
+ }
54
+ }
55
+ /**
56
+ * Signs transaction.
57
+ *
58
+ * @param {KeyPair} keyPair Signer keys.
59
+ */
60
+ signSingle(keyPair) {
61
+ if (!this._algoTransaction) {
62
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
63
+ }
64
+ const signKey = Buffer.from(keyPair.getSigningKey()).toString('hex');
65
+ if (signKey) {
66
+ this._signedTransaction = algosdk_1.default.signTransaction(this._algoTransaction, utils_1.default.toUint8Array(signKey)).blob;
67
+ }
68
+ else {
69
+ throw new sdk_core_1.InvalidKey('Private key undefined');
70
+ }
71
+ }
72
+ /**
73
+ * Signs multisig transaction.
74
+ *
75
+ * @param {KeyPair} keyPair Signers keys.
76
+ */
77
+ signMultiSig(keyPair) {
78
+ if (!this._algoTransaction) {
79
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
80
+ }
81
+ if (this._signers.length === 0) {
82
+ throw new sdk_core_1.SigningError('Signers not specified for multisig');
83
+ }
84
+ if (keyPair.length === 0) {
85
+ throw new sdk_core_1.SigningError('Keypair not specified for multisig');
86
+ }
87
+ const multiSigOptions = {
88
+ version: 1,
89
+ threshold: this._numberOfRequiredSigners,
90
+ addrs: this._signers,
91
+ };
92
+ const msigAddress = algosdk_1.default.multisigAddress(multiSigOptions);
93
+ this._algoTransaction.from = algosdk_1.default.decodeAddress(msigAddress);
94
+ // Check if it is a signed or unsigned tx.
95
+ // If unsigned, sign it using first keypair and then append next signatures.
96
+ // If signed, appending next signatures.
97
+ let signedTx = this._signedTransaction
98
+ ? this._signedTransaction
99
+ : algosdk_1.default.signMultisigTransaction(this._algoTransaction, multiSigOptions, keyPair.shift().getSigningKey()).blob;
100
+ keyPair.forEach((kp) => {
101
+ signedTx = algosdk_1.default.appendSignMultisigTransaction(signedTx, multiSigOptions, kp.getSigningKey()).blob;
102
+ });
103
+ this._signedTransaction = signedTx;
104
+ }
105
+ set signedTransaction(txn) {
106
+ this._signedTransaction = txn;
107
+ }
108
+ get numberOfRequiredSigners() {
109
+ return this._numberOfRequiredSigners;
110
+ }
111
+ /**
112
+ * Sets the number of signers required for signing this transaction.
113
+ *
114
+ * @param {number} num Threshold number of signers.
115
+ */
116
+ setNumberOfRequiredSigners(num) {
117
+ this._numberOfRequiredSigners = num;
118
+ }
119
+ set signers(addrs) {
120
+ this._signers = addrs;
121
+ }
122
+ get signers() {
123
+ return this._signers;
124
+ }
125
+ set signedBy(signer) {
126
+ this._signedBy = signer;
127
+ }
128
+ get signedBy() {
129
+ return this._signedBy;
130
+ }
131
+ /**
132
+ * Sets algo transaction.
133
+ *
134
+ * @param {algosdk.Transaction} tx
135
+ */
136
+ setAlgoTransaction(tx) {
137
+ this._algoTransaction = tx;
138
+ }
139
+ /**
140
+ * Get underlaying algo transaction.
141
+ *
142
+ * @returns {algosdk.Transaction}
143
+ */
144
+ getAlgoTransaction() {
145
+ return this._algoTransaction;
146
+ }
147
+ /**
148
+ * Set the transaction type.
149
+ *
150
+ * @param {TransactionType} transactionType The transaction type to be set.
151
+ */
152
+ setTransactionType(transactionType) {
153
+ this._type = transactionType;
154
+ }
155
+ estimateSize() {
156
+ if (!this._algoTransaction) {
157
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
158
+ }
159
+ return this._algoTransaction.estimateSize();
160
+ }
161
+ /** @inheritdoc */
162
+ toBroadcastFormat() {
163
+ if (!this._algoTransaction) {
164
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
165
+ }
166
+ if (this._signedTransaction && this._signedTransaction.length > 0) {
167
+ return this._signedTransaction;
168
+ }
169
+ else {
170
+ return algosdk_1.default.encodeUnsignedTransaction(this._algoTransaction);
171
+ }
172
+ }
173
+ /** @inheritdoc */
174
+ toJson() {
175
+ if (!this._algoTransaction) {
176
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
177
+ }
178
+ const result = {
179
+ id: this._algoTransaction.txID(),
180
+ type: this._algoTransaction.type?.toString(),
181
+ from: algosdk_1.default.encodeAddress(this._algoTransaction.from.publicKey),
182
+ fee: this._algoTransaction.fee,
183
+ firstRound: this._algoTransaction.firstRound,
184
+ lastRound: this._algoTransaction.lastRound,
185
+ note: this._algoTransaction.note,
186
+ tokenId: this._algoTransaction?.assetIndex,
187
+ genesisID: this._algoTransaction.genesisID,
188
+ genesisHash: this._algoTransaction.genesisHash.toString('base64'),
189
+ };
190
+ if (this._algoTransaction.closeRemainderTo) {
191
+ result.closeRemainderTo = algosdk_1.default.encodeAddress(this._algoTransaction.closeRemainderTo.publicKey);
192
+ }
193
+ if (this.type === sdk_core_1.TransactionType.Send) {
194
+ result.to = algosdk_1.default.encodeAddress(this._algoTransaction.to.publicKey);
195
+ result.amount = this._algoTransaction.amount.toString();
196
+ }
197
+ if (this.type === sdk_core_1.TransactionType.WalletInitialization) {
198
+ if (!this._algoTransaction.nonParticipation) {
199
+ if (this._algoTransaction.voteKey &&
200
+ this._algoTransaction.selectionKey &&
201
+ this._algoTransaction.voteFirst &&
202
+ this._algoTransaction.voteLast &&
203
+ this._algoTransaction.voteKeyDilution) {
204
+ result.voteKey = this._algoTransaction.voteKey.toString('base64');
205
+ result.selectionKey = this._algoTransaction.selectionKey.toString('base64');
206
+ result.voteFirst = this._algoTransaction.voteFirst;
207
+ result.voteLast = this._algoTransaction.voteLast;
208
+ result.voteKeyDilution = this._algoTransaction.voteKeyDilution;
209
+ if (this._algoTransaction.stateProofKey) {
210
+ result.stateProofKey = this._algoTransaction.stateProofKey.toString('base64');
211
+ }
212
+ }
213
+ }
214
+ else {
215
+ result.nonParticipation = this._algoTransaction.nonParticipation;
216
+ }
217
+ }
218
+ if (result.type === 'axfer' && result.to && result.amount) {
219
+ result.txType = utils_1.default.getTokenTxType(result.amount, result.from, result.to, result.closeRemainderTo);
220
+ result.tokenName = this._coinConfig.suffix;
221
+ }
222
+ return result;
223
+ }
224
+ /**
225
+ * Load the input and output data on this transaction.
226
+ */
227
+ loadInputsAndOutputs() {
228
+ if (!this._algoTransaction) {
229
+ return;
230
+ }
231
+ if (this.type === sdk_core_1.TransactionType.Send) {
232
+ this._outputs = [
233
+ {
234
+ address: algosdk_1.default.encodeAddress(this._algoTransaction.to.publicKey),
235
+ value: this._algoTransaction.amount.toString(),
236
+ coin: this._coinConfig.name,
237
+ },
238
+ ];
239
+ this._inputs = [
240
+ {
241
+ address: algosdk_1.default.encodeAddress(this._algoTransaction.from.publicKey),
242
+ value: this._algoTransaction.amount.toString(),
243
+ coin: this._coinConfig.name,
244
+ },
245
+ ];
246
+ }
247
+ }
248
+ }
249
+ exports.Transaction = Transaction;
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHNEQUE4QjtBQUM5QixtREFPOEI7QUFDOUIsb0RBQTRCO0FBQzVCLHVDQUFvQztBQUdwQyxNQUFhLFdBQVksU0FBUSwwQkFBZTtJQVE5QyxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFXO1FBQ3RCLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFlO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFD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Q0FBQztRQUNELElBQUksSUFBSSxDQUFDLElBQUksS0FBSywwQkFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUc7Z0JBQ2Q7b0JBQ0UsT0FBTyxFQUFFLGlCQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO29CQUNsRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQzlDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7aUJBQzVCO2FBQ0YsQ0FBQztZQUVGLElBQUksQ0FBQyxPQUFPLEdBQUc7Z0JBQ2I7b0JBQ0UsT0FBTyxFQUFFLGlCQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO29CQUNwRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQzlDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7aUJBQzVCO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF6UUQsa0NBeVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IGFsZ29zZGsgZnJvbSAnYWxnb3Nkayc7XG5pbXBvcnQge1xuICBCYXNlVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgQmFzZUtleSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIEludmFsaWRLZXksXG4gIFNpZ25pbmdFcnJvcixcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBUeERhdGEgfSBmcm9tICcuL2lmYWNlcyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX2FsZ29UcmFuc2FjdGlvbj86IGFsZ29zZGsuVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX3NpZ25lZFRyYW5zYWN0aW9uPzogVWludDhBcnJheTtcbiAgcHJpdmF0ZSBfbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnM6IG51bWJlcjtcbiAgcHJpdmF0ZSBfc2VuZGVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NpZ25lcnM6IHN0cmluZ1tdO1xuICBwcml2YXRlIF9zaWduZWRCeTogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9IDA7XG4gICAgdGhpcy5fc2lnbmVycyA9IFtdO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oeyBrZXkgfTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPT09IDEpIHtcbiAgICAgIGNvbnN0IGtwID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICAgIGNvbnN0IGFkZHIgPSBrcC5nZXRBZGRyZXNzKCk7XG4gICAgICBpZiAoYWRkciA9PT0gdGhpcy5fc2VuZGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZW5kZXIoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fc2VuZGVyID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lciBrZXlzLlxuICAgKi9cbiAgc2lnbihrZXlQYWlyOiBLZXlQYWlyW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPT09IDEpIHtcbiAgICAgIHRoaXMuc2lnblNpbmdsZShrZXlQYWlyWzBdKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID4gMSkge1xuICAgICAgdGhpcy5zaWduTXVsdGlTaWcoa2V5UGFpcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgU2lnbmVyIGtleXMuXG4gICAqL1xuICBwcml2YXRlIHNpZ25TaW5nbGUoa2V5UGFpcjogS2V5UGFpcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25LZXkgPSBCdWZmZXIuZnJvbShrZXlQYWlyLmdldFNpZ25pbmdLZXkoKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGlmIChzaWduS2V5KSB7XG4gICAgICB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiA9IGFsZ29zZGsuc2lnblRyYW5zYWN0aW9uKHRoaXMuX2FsZ29UcmFuc2FjdGlvbiwgdXRpbHMudG9VaW50OEFycmF5KHNpZ25LZXkpKS5ibG9iO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEtleSgnUHJpdmF0ZSBrZXkgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIG11bHRpc2lnIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgU2lnbmVycyBrZXlzLlxuICAgKi9cbiAgcHJpdmF0ZSBzaWduTXVsdGlTaWcoa2V5UGFpcjogS2V5UGFpcltdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NpZ25lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdTaWduZXJzIG5vdCBzcGVjaWZpZWQgZm9yIG11bHRpc2lnJyk7XG4gICAgfVxuICAgIGlmIChrZXlQYWlyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignS2V5cGFpciBub3Qgc3BlY2lmaWVkIGZvciBtdWx0aXNpZycpO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aVNpZ09wdGlvbnMgPSB7XG4gICAgICB2ZXJzaW9uOiAxLFxuICAgICAgdGhyZXNob2xkOiB0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyxcbiAgICAgIGFkZHJzOiB0aGlzLl9zaWduZXJzLFxuICAgIH07XG4gICAgY29uc3QgbXNpZ0FkZHJlc3MgPSBhbGdvc2RrLm11bHRpc2lnQWRkcmVzcyhtdWx0aVNpZ09wdGlvbnMpO1xuICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mcm9tID0gYWxnb3Nkay5kZWNvZGVBZGRyZXNzKG1zaWdBZGRyZXNzKTtcblxuICAgIC8vIENoZWNrIGlmIGl0IGlzIGEgc2lnbmVkIG9yIHVuc2lnbmVkIHR4LlxuICAgIC8vIElmIHVuc2lnbmVkLCBzaWduIGl0IHVzaW5nIGZpcnN0IGtleXBhaXIgYW5kIHRoZW4gYXBwZW5kIG5leHQgc2lnbmF0dXJlcy5cbiAgICAvLyBJZiBzaWduZWQsIGFwcGVuZGluZyBuZXh0IHNpZ25hdHVyZXMuXG4gICAgbGV0IHNpZ25lZFR4ID0gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb25cbiAgICAgID8gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb25cbiAgICAgIDogYWxnb3Nkay5zaWduTXVsdGlzaWdUcmFuc2FjdGlvbih0aGlzLl9hbGdvVHJhbnNhY3Rpb24sIG11bHRpU2lnT3B0aW9ucywga2V5UGFpci5zaGlmdCgpIS5nZXRTaWduaW5nS2V5KCkpLmJsb2I7XG5cbiAgICBrZXlQYWlyLmZvckVhY2goKGtwKSA9PiB7XG4gICAgICBzaWduZWRUeCA9IGFsZ29zZGsuYXBwZW5kU2lnbk11bHRpc2lnVHJhbnNhY3Rpb24oc2lnbmVkVHgsIG11bHRpU2lnT3B0aW9ucywga3AuZ2V0U2lnbmluZ0tleSgpKS5ibG9iO1xuICAgIH0pO1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gc2lnbmVkVHg7XG4gIH1cblxuICBzZXQgc2lnbmVkVHJhbnNhY3Rpb24odHhuOiBVaW50OEFycmF5KSB7XG4gICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSB0eG47XG4gIH1cblxuICBnZXQgbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbnVtYmVyIG9mIHNpZ25lcnMgcmVxdWlyZWQgZm9yIHNpZ25pbmcgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bSBUaHJlc2hvbGQgbnVtYmVyIG9mIHNpZ25lcnMuXG4gICAqL1xuICBzZXROdW1iZXJPZlJlcXVpcmVkU2lnbmVycyhudW06IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID0gbnVtO1xuICB9XG5cbiAgc2V0IHNpZ25lcnMoYWRkcnM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fc2lnbmVycyA9IGFkZHJzO1xuICB9XG5cbiAgZ2V0IHNpZ25lcnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9zaWduZXJzO1xuICB9XG5cbiAgc2V0IHNpZ25lZEJ5KHNpZ25lcjogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9zaWduZWRCeSA9IHNpZ25lcjtcbiAgfVxuXG4gIGdldCBzaWduZWRCeSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25lZEJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYWxnbyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHthbGdvc2RrLlRyYW5zYWN0aW9ufSB0eFxuICAgKi9cblxuICBzZXRBbGdvVHJhbnNhY3Rpb24odHg6IGFsZ29zZGsuVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdW5kZXJsYXlpbmcgYWxnbyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMge2FsZ29zZGsuVHJhbnNhY3Rpb259XG4gICAqL1xuXG4gIGdldEFsZ29UcmFuc2FjdGlvbigpOiBhbGdvc2RrLlRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYWxnb1RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXQuXG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgZXN0aW1hdGVTaXplKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmVzdGltYXRlU2l6ZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IFVpbnQ4QXJyYXkge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiAmJiB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhbGdvc2RrLmVuY29kZVVuc2lnbmVkVHJhbnNhY3Rpb24odGhpcy5fYWxnb1RyYW5zYWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0OiBUeERhdGEgPSB7XG4gICAgICBpZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnR4SUQoKSxcbiAgICAgIHR5cGU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50eXBlPy50b1N0cmluZygpLFxuICAgICAgZnJvbTogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mcm9tLnB1YmxpY0tleSksXG4gICAgICBmZWU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mZWUsXG4gICAgICBmaXJzdFJvdW5kOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZmlyc3RSb3VuZCxcbiAgICAgIGxhc3RSb3VuZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmxhc3RSb3VuZCxcbiAgICAgIG5vdGU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5ub3RlLFxuICAgICAgdG9rZW5JZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uPy5hc3NldEluZGV4LFxuICAgICAgZ2VuZXNpc0lEOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZ2VuZXNpc0lELFxuICAgICAgZ2VuZXNpc0hhc2g6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5nZW5lc2lzSGFzaC50b1N0cmluZygnYmFzZTY0JyksXG4gICAgfTtcbiAgICBpZiAodGhpcy5fYWxnb1RyYW5zYWN0aW9uLmNsb3NlUmVtYWluZGVyVG8pIHtcbiAgICAgIHJlc3VsdC5jbG9zZVJlbWFpbmRlclRvID0gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5jbG9zZVJlbWFpbmRlclRvLnB1YmxpY0tleSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kKSB7XG4gICAgICByZXN1bHQudG8gPSBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLnRvLnB1YmxpY0tleSk7XG4gICAgICByZXN1bHQuYW1vdW50ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmFtb3VudC50b1N0cmluZygpO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uLm5vblBhcnRpY2lwYXRpb24pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlS2V5ICYmXG4gICAgICAgICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnNlbGVjdGlvbktleSAmJlxuICAgICAgICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlRmlyc3QgJiZcbiAgICAgICAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUxhc3QgJiZcbiAgICAgICAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUtleURpbHV0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3VsdC52b3RlS2V5ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVLZXkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICAgIHJlc3VsdC5zZWxlY3Rpb25LZXkgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uc2VsZWN0aW9uS2V5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgICByZXN1bHQudm90ZUZpcnN0ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVGaXJzdDtcbiAgICAgICAgICByZXN1bHQudm90ZUxhc3QgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUxhc3Q7XG4gICAgICAgICAgcmVzdWx0LnZvdGVLZXlEaWx1dGlvbiA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlS2V5RGlsdXRpb247XG4gICAgICAgICAgaWYgKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5zdGF0ZVByb29mS2V5KSB7XG4gICAgICAgICAgICByZXN1bHQuc3RhdGVQcm9vZktleSA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5zdGF0ZVByb29mS2V5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5ub25QYXJ0aWNpcGF0aW9uID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLm5vblBhcnRpY2lwYXRpb247XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChyZXN1bHQudHlwZSA9PT0gJ2F4ZmVyJyAmJiByZXN1bHQudG8gJiYgcmVzdWx0LmFtb3VudCkge1xuICAgICAgcmVzdWx0LnR4VHlwZSA9IHV0aWxzLmdldFRva2VuVHhUeXBlKHJlc3VsdC5hbW91bnQsIHJlc3VsdC5mcm9tLCByZXN1bHQudG8sIHJlc3VsdC5jbG9zZVJlbWFpbmRlclRvKTtcbiAgICAgIHJlc3VsdC50b2tlbk5hbWUgPSB0aGlzLl9jb2luQ29uZmlnLnN1ZmZpeDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24gdGhpcyB0cmFuc2FjdGlvbi5cbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kKSB7XG4gICAgICB0aGlzLl9vdXRwdXRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50by5wdWJsaWNLZXkpLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgdGhpcy5faW5wdXRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mcm9tLnB1YmxpY0tleSksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,210 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import BigNumber from 'bignumber.js';
3
+ import algosdk from 'algosdk';
4
+ import { Transaction } from './transaction';
5
+ import { KeyPair } from './keyPair';
6
+ import { BaseAddress, BaseFee, BaseKey, BaseTransactionBuilder, TransactionType } from '@bitgo-beta/sdk-core';
7
+ export declare const MAINNET_GENESIS_ID = "mainnet-v1.0";
8
+ export declare const MAINNET_GENESIS_HASH = "wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=";
9
+ export declare const TESTNET_GENESIS_ID = "testnet-v1.0";
10
+ export declare const TESTNET_GENESIS_HASH = "SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=";
11
+ export declare const BETANET_GENESIS_ID = "betanet-v1.0";
12
+ export declare const BETANET_GENESIS_HASH = "mFgazF+2uRS1tMiL9dsj01hJGySEmPN28B/TjjvpVW0=";
13
+ export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
14
+ protected _transaction: Transaction;
15
+ protected _keyPairs: KeyPair[];
16
+ protected _fee: number;
17
+ protected _isFlatFee: boolean;
18
+ protected _sender: string;
19
+ protected _genesisHash: string;
20
+ protected _genesisId: string;
21
+ protected _firstRound: number;
22
+ protected _lastRound: number;
23
+ protected _lease?: Uint8Array;
24
+ protected _note?: Uint8Array;
25
+ protected _reKeyTo?: string;
26
+ protected _suggestedParams: algosdk.SuggestedParams;
27
+ constructor(coinConfig: Readonly<CoinConfig>);
28
+ /**
29
+ * Sets the fee.
30
+ *
31
+ * The minimum fee is 1000 microalgos.
32
+ *
33
+ * @param {BaseFee} feeObj The amount to pay to the fee sink denoted in microalgos
34
+ * @returns {TransactionBuilder} This transaction builder.
35
+ *
36
+ * @see https://developer.algorand.org/docs/reference/transactions/
37
+ */
38
+ fee(feeObj: BaseFee): this;
39
+ /**
40
+ * Sets whether the fee is a flat fee.
41
+ *
42
+ * A flat fee is the fee for the entire transaction whereas a normal fee
43
+ * is a fee for every byte in the transaction.
44
+ *
45
+ * @param {boolean} isFlatFee Whether the fee should be specified as a flat fee.
46
+ * @returns {TransactionBuilder} This transaction builder.
47
+ */
48
+ isFlatFee(isFlatFee: boolean): this;
49
+ /**
50
+ * Sets the transaction sender.
51
+ *
52
+ * @param {BaseAddress} sender The sender account
53
+ * @returns {TransactionBuilder} This transaction builder.
54
+ *
55
+ * @see https://developer.algorand.org/docs/reference/transactions/
56
+ */
57
+ sender(sender: BaseAddress): this;
58
+ /**
59
+ * Sets the genesis id.
60
+ *
61
+ * @param {string} genesisId The genesis id.
62
+ * @example "mainnet-v1.0"
63
+ *
64
+ * @returns {TransactionBuilder} This transaction builder.
65
+ *
66
+ * @see https://developer.algorand.org/docs/reference/transactions/
67
+ */
68
+ genesisId(genesisId: string): this;
69
+ /**
70
+ * Sets the genesis hash.
71
+ *
72
+ * The genesis hash must be base64 encoded.
73
+ *
74
+ * @param {string} genesisHash The genesis hash.
75
+ * @example "wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8="
76
+ *
77
+ * @returns {TransactionBuilder} This transaction builder.
78
+ *
79
+ * @see https://developer.algorand.org/docs/reference/transactions/
80
+ */
81
+ genesisHash(genesisHash: string): this;
82
+ /**
83
+ * Sets the genesis id and hash to mainnet.
84
+ *
85
+ * @returns {TransactionBuilder} This transaction builder.
86
+ *
87
+ * @see https://developer.algorand.org/docs/reference/algorand-networks/mainnet/#genesis-id
88
+ * @see https://developer.algorand.org/docs/reference/algorand-networks/mainnet/#genesis-hash
89
+ */
90
+ mainnet(): this;
91
+ /**
92
+ * Sets the genesis id and hash to testnet.
93
+ *
94
+ * @returns {TransactionBuilder} This transaction builder.
95
+ *
96
+ * @see https://developer.algorand.org/docs/reference/algorand-networks/testnet/#genesis-id
97
+ * @see https://developer.algorand.org/docs/reference/algorand-networks/testnet/#genesis-hash
98
+ */
99
+ testnet(): this;
100
+ /**
101
+ * Sets the genesis id and hash to betanet.
102
+ *
103
+ * @returns {TransactionBuilder} This transaction builder.
104
+ *
105
+ * @see https://developer.algorand.org/docs/reference/algorand-networks/betanet/#genesis-id
106
+ * @see https://developer.algorand.org/docs/reference/algorand-networks/betanet/#genesis-hash
107
+ */
108
+ betanet(): this;
109
+ /**
110
+ * Sets the first round.
111
+ *
112
+ * @param {number} round The first protocol round on which this txn is valid.
113
+ * @returns {TransactionBuilder} This transaction builder.
114
+ *
115
+ * @see https://developer.algorand.org/docs/reference/transactions/
116
+ */
117
+ firstRound(round: number): this;
118
+ /**
119
+ * Sets the last round.
120
+ *
121
+ * @param {number} round The first protocol round on which this txn is valid.
122
+ * @returns {TransactionBuilder} This transaction builder.
123
+ *
124
+ * @see https://developer.algorand.org/docs/reference/transactions/
125
+ */
126
+ lastRound(round: number): this;
127
+ /**
128
+ * Sets the lease on the transaction.
129
+ *
130
+ * A lease is a mutex on the transaction that prevents any other transaction
131
+ * from being sent with the same lease until the prior transaction's last
132
+ * round has passed.
133
+ *
134
+ * @param {Uint8Array} lease The lease to put the transaction.
135
+ * @returns {TransactionBuilder} This transaction builder.
136
+ *
137
+ * @see https://developer.algorand.org/docs/reference/transactions/
138
+ */
139
+ lease(lease: Uint8Array): this;
140
+ /**
141
+ * Sets the note for the transaction.
142
+ *
143
+ * @param {Uint8Array} note Arbitrary data for sender to store.
144
+ * @returns {TransactionBuilder} This transaction builder.
145
+ *
146
+ * @see https://developer.algorand.org/docs/reference/transactions/
147
+ */
148
+ note(note: Uint8Array): this;
149
+ /**
150
+ * Sets the authorized address.
151
+ *
152
+ * The authorized asset will be used to authorize all future transactions.
153
+ *
154
+ * @param {BaseAddress} authorizer The address to delegate authorization authority to.
155
+ * @returns {TransactionBuilder} This transaction builder.
156
+ *
157
+ * @see https://developer.algorand.org/docs/reference/transactions/
158
+ */
159
+ reKeyTo(authorizer: BaseAddress): this;
160
+ /** @inheritdoc */
161
+ validateAddress({ address }: BaseAddress): void;
162
+ /** @inheritdoc */
163
+ protected buildImplementation(): Promise<Transaction>;
164
+ /**
165
+ * Builds the algorand transaction.
166
+ */
167
+ protected abstract buildAlgoTxn(): algosdk.Transaction;
168
+ /**
169
+ * The transaction type.
170
+ */
171
+ protected abstract get transactionType(): TransactionType;
172
+ /** @inheritdoc */
173
+ protected fromImplementation(rawTransaction: Uint8Array | string): Transaction;
174
+ /** @inheritdoc */
175
+ protected signImplementation({ key }: BaseKey): Transaction;
176
+ numberOfSigners(num: number): this;
177
+ setSigners(addrs: string | string[]): this;
178
+ /**
179
+ * Sets the number of signers required to sign the transaction.
180
+ *
181
+ * The number of signers cannot be set to a negative value.
182
+ *
183
+ * @param {number} n The number of signers.
184
+ * @returns {TransactionBuilder} This transaction builder.
185
+ */
186
+ numberOfRequiredSigners(n: number): this;
187
+ /**
188
+ * @inheritdoc
189
+ * @see https://developer.algorand.org/docs/features/accounts/#transformation-private-key-to-base64-private-key
190
+ */
191
+ validateKey({ key }: BaseKey): void;
192
+ /** @inheritdoc */
193
+ validateRawTransaction(rawTransaction: Uint8Array | string): void;
194
+ /** @inheritdoc */
195
+ validateTransaction(_: Transaction): void;
196
+ private validateBaseFields;
197
+ /** @inheritdoc */
198
+ validateValue(value: BigNumber): void;
199
+ /** @inheritdoc */
200
+ protected get transaction(): Transaction;
201
+ /** @inheritdoc */
202
+ protected set transaction(transaction: Transaction);
203
+ /**
204
+ * Convenience method to retrieve the algosdk suggested parameters.
205
+ *
206
+ * @returns {algosdk.SuggestedParams} The algosdk suggested parameters.
207
+ */
208
+ protected get suggestedParams(): algosdk.SuggestedParams;
209
+ }
210
+ //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"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"}