@bitgo-beta/sdk-coin-xrp 1.3.3-alpha.43 → 1.3.3-alpha.430

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 (61) hide show
  1. package/dist/src/index.d.ts +4 -2
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +10 -4
  4. package/dist/src/lib/accountSetBuilder.d.ts +18 -0
  5. package/dist/src/lib/accountSetBuilder.d.ts.map +1 -0
  6. package/dist/src/lib/accountSetBuilder.js +63 -0
  7. package/dist/src/lib/constants.d.ts +8 -0
  8. package/dist/src/lib/constants.d.ts.map +1 -0
  9. package/dist/src/lib/constants.js +30 -0
  10. package/dist/src/lib/iface.d.ts +109 -0
  11. package/dist/src/lib/iface.d.ts.map +1 -0
  12. package/dist/src/lib/iface.js +11 -0
  13. package/dist/src/lib/index.d.ts +14 -0
  14. package/dist/src/lib/index.d.ts.map +1 -0
  15. package/dist/src/lib/index.js +43 -0
  16. package/dist/src/lib/keyPair.d.ts +33 -0
  17. package/dist/src/lib/keyPair.d.ts.map +1 -0
  18. package/dist/src/lib/keyPair.js +118 -0
  19. package/dist/src/lib/tokenTransferBuilder.d.ts +29 -0
  20. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/tokenTransferBuilder.js +91 -0
  22. package/dist/src/lib/transaction.d.ts +62 -0
  23. package/dist/src/lib/transaction.d.ts.map +1 -0
  24. package/dist/src/lib/transaction.js +381 -0
  25. package/dist/src/lib/transactionBuilder.d.ts +72 -0
  26. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  27. package/dist/src/lib/transactionBuilder.js +263 -0
  28. package/dist/src/lib/transactionBuilderFactory.d.ts +39 -0
  29. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  30. package/dist/src/lib/transactionBuilderFactory.js +97 -0
  31. package/dist/src/lib/transferBuilder.d.ts +28 -0
  32. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/transferBuilder.js +82 -0
  34. package/dist/src/lib/trustsetBuilder.d.ts +21 -0
  35. package/dist/src/lib/trustsetBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/trustsetBuilder.js +72 -0
  37. package/dist/src/lib/utils.d.ts +78 -0
  38. package/dist/src/lib/utils.d.ts.map +1 -0
  39. package/dist/src/lib/utils.js +304 -0
  40. package/dist/src/lib/walletInitializationBuilder.d.ts +19 -0
  41. package/dist/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  42. package/dist/src/lib/walletInitializationBuilder.js +76 -0
  43. package/dist/src/register.d.ts.map +1 -1
  44. package/dist/src/register.js +5 -1
  45. package/dist/src/ripple.d.ts +112 -2
  46. package/dist/src/ripple.d.ts.map +1 -1
  47. package/dist/src/ripple.js +57 -22
  48. package/dist/src/txrp.d.ts +3 -2
  49. package/dist/src/txrp.d.ts.map +1 -1
  50. package/dist/src/txrp.js +5 -5
  51. package/dist/src/xrp.d.ts +25 -64
  52. package/dist/src/xrp.d.ts.map +1 -1
  53. package/dist/src/xrp.js +375 -159
  54. package/dist/src/xrpToken.d.ts +22 -0
  55. package/dist/src/xrpToken.d.ts.map +1 -0
  56. package/dist/src/xrpToken.js +61 -0
  57. package/dist/tsconfig.tsbuildinfo +1 -8867
  58. package/package.json +15 -12
  59. package/.eslintignore +0 -5
  60. package/.mocharc.yml +0 -8
  61. package/CHANGELOG.md +0 -200
@@ -0,0 +1,72 @@
1
+ import { BaseAddress, BaseKey, BaseTransaction, BaseTransactionBuilder, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import BigNumber from 'bignumber.js';
4
+ import { Signer } from 'xrpl/dist/npm/models/common';
5
+ import { XrpTransaction } from './iface';
6
+ import { KeyPair } from './keyPair';
7
+ import { Transaction } from './transaction';
8
+ /**
9
+ * XRP transaction builder.
10
+ */
11
+ export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
12
+ protected _transaction: Transaction;
13
+ protected _sender: string;
14
+ protected _fee?: string;
15
+ protected _sequence?: number;
16
+ protected _lastLedgerSequence?: number;
17
+ protected _flags?: number;
18
+ protected _signingPubKey?: string;
19
+ protected _signers: Signer[];
20
+ protected _txnSignature?: string;
21
+ protected _specificFields: XrpTransaction;
22
+ protected _isMultiSig?: boolean;
23
+ protected _keyPairs: KeyPair[];
24
+ constructor(_coinConfig: Readonly<CoinConfig>);
25
+ /**
26
+ * The transaction type.
27
+ */
28
+ protected abstract get transactionType(): TransactionType;
29
+ /**
30
+ * Set the transaction signature type to multi sig.
31
+ **/
32
+ setMultiSig(): TransactionBuilder;
33
+ /**
34
+ * Set the transaction signature type to single sig.
35
+ **/
36
+ setSingleSig(): TransactionBuilder;
37
+ /**
38
+ * Sets the sender of this transaction.
39
+ *
40
+ * @param {string} address the account that is sending this transaction
41
+ * @returns {TransactionBuilder} This transaction builder
42
+ */
43
+ sender(address: string): TransactionBuilder;
44
+ sequence(sequence: number): TransactionBuilder;
45
+ fee(fee: string): TransactionBuilder;
46
+ flags(flags: number): TransactionBuilder;
47
+ lastLedgerSequence(lastLedgerSequence: number): TransactionBuilder;
48
+ /**
49
+ * Initialize the transaction builder fields using the decoded transaction data
50
+ *
51
+ * @param {Transaction} tx the transaction data
52
+ */
53
+ initBuilder(tx: Transaction): void;
54
+ /** @inheritdoc */
55
+ protected fromImplementation(rawTransaction: string): BaseTransaction;
56
+ /** @inheritdoc */
57
+ protected signImplementation(key: BaseKey): Transaction;
58
+ private checkDuplicatedKeys;
59
+ /** @inheritdoc */
60
+ protected buildImplementation(): Promise<Transaction>;
61
+ private buildXrpTransaction;
62
+ validateKey(key: BaseKey): void;
63
+ validateIsMultiSig(): void;
64
+ /** @inheritdoc */
65
+ validateTransaction(): void;
66
+ validateAddress(address: BaseAddress): void;
67
+ validateValue(value: BigNumber): void;
68
+ validateRawTransaction(rawTransaction: string): void;
69
+ protected get transaction(): Transaction;
70
+ protected set transaction(transaction: Transaction);
71
+ }
72
+ //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -0,0 +1 @@
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,eAAe,EAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C;;GAEG;AACH,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACvC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAK;IAC9B,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC;IAE1C,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAEhC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;gBAEnB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAO7C;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D;;QAEI;IACJ,WAAW,IAAI,kBAAkB;IAKjC;;QAEI;IACJ,YAAY,IAAI,kBAAkB;IAKlC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB;IAM3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAQ9C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAYpC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAQxC,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,GAAG,kBAAkB;IAQlE;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IA0BlC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,eAAe;IAQrE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAevD,OAAO,CAAC,mBAAmB;IAiB3B,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAY3D,OAAO,CAAC,mBAAmB;IA0B3B,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAa/B,kBAAkB,IAAI,IAAI;IAM1B,kBAAkB;IAClB,mBAAmB,IAAI,IAAI;IAY3B,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAM3C,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAIpD,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;CACF"}
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.TransactionBuilder = void 0;
40
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
41
+ const _ = __importStar(require("lodash"));
42
+ const xrpl = __importStar(require("xrpl"));
43
+ const keyPair_1 = require("./keyPair");
44
+ const transaction_1 = require("./transaction");
45
+ const utils_1 = __importDefault(require("./utils"));
46
+ /**
47
+ * XRP transaction builder.
48
+ */
49
+ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
50
+ constructor(_coinConfig) {
51
+ super(_coinConfig);
52
+ this._flags = 0;
53
+ this.transaction = new transaction_1.Transaction(_coinConfig);
54
+ this._keyPairs = [];
55
+ this._signers = [];
56
+ }
57
+ /**
58
+ * Set the transaction signature type to multi sig.
59
+ **/
60
+ setMultiSig() {
61
+ this._isMultiSig = true;
62
+ return this;
63
+ }
64
+ /**
65
+ * Set the transaction signature type to single sig.
66
+ **/
67
+ setSingleSig() {
68
+ this._isMultiSig = false;
69
+ return this;
70
+ }
71
+ /**
72
+ * Sets the sender of this transaction.
73
+ *
74
+ * @param {string} address the account that is sending this transaction
75
+ * @returns {TransactionBuilder} This transaction builder
76
+ */
77
+ sender(address) {
78
+ this.validateAddress({ address });
79
+ this._sender = address;
80
+ return this;
81
+ }
82
+ sequence(sequence) {
83
+ if (typeof sequence !== 'number' || sequence < 0) {
84
+ throw new Error(`sequence ${sequence} is not valid`);
85
+ }
86
+ this._sequence = sequence;
87
+ return this;
88
+ }
89
+ fee(fee) {
90
+ if (typeof fee !== 'string') {
91
+ throw new Error(`fee type ${typeof fee} must be a string`);
92
+ }
93
+ const feeBigInt = BigInt(fee);
94
+ if (feeBigInt < 0) {
95
+ throw new Error(`fee ${fee} is not valid`);
96
+ }
97
+ this._fee = fee;
98
+ return this;
99
+ }
100
+ flags(flags) {
101
+ if (typeof flags !== 'number' || flags < 0) {
102
+ throw new Error(`flags ${flags} is not valid`);
103
+ }
104
+ this._flags = flags;
105
+ return this;
106
+ }
107
+ lastLedgerSequence(lastLedgerSequence) {
108
+ if (typeof lastLedgerSequence !== 'number' || lastLedgerSequence < 0) {
109
+ throw new Error(`lastLedgerSequence ${lastLedgerSequence} is not valid`);
110
+ }
111
+ this._lastLedgerSequence = lastLedgerSequence;
112
+ return this;
113
+ }
114
+ /**
115
+ * Initialize the transaction builder fields using the decoded transaction data
116
+ *
117
+ * @param {Transaction} tx the transaction data
118
+ */
119
+ initBuilder(tx) {
120
+ this._transaction = tx;
121
+ const txData = tx.toJson();
122
+ if (!_.isUndefined(txData.isMultiSig)) {
123
+ txData.isMultiSig ? this.setMultiSig() : this.setSingleSig();
124
+ }
125
+ this.sender(txData.from);
126
+ if (txData.fee) {
127
+ this.fee(txData.fee);
128
+ }
129
+ if (txData.sequence) {
130
+ this.sequence(txData.sequence);
131
+ }
132
+ if (txData.lastLedgerSequence) {
133
+ this.lastLedgerSequence(txData.lastLedgerSequence);
134
+ }
135
+ if (txData.flags) {
136
+ this.flags(txData.flags);
137
+ }
138
+ this._signers = txData.signers || [];
139
+ this._signingPubKey = txData.signingPubKey;
140
+ this._txnSignature = txData.txnSignature;
141
+ }
142
+ /** @inheritdoc */
143
+ fromImplementation(rawTransaction) {
144
+ const tx = new transaction_1.Transaction(this._coinConfig);
145
+ this.validateRawTransaction(rawTransaction);
146
+ tx.fromRawTransaction(rawTransaction);
147
+ this.initBuilder(tx);
148
+ return this.transaction;
149
+ }
150
+ /** @inheritdoc */
151
+ signImplementation(key) {
152
+ this.validateKey(key);
153
+ this.checkDuplicatedKeys(key);
154
+ let prv = key.key;
155
+ if (prv.startsWith('xprv')) {
156
+ const rawPrv = (0, sdk_core_1.xprvToRawPrv)(prv);
157
+ prv = new keyPair_1.KeyPair({ prv: rawPrv }).getKeys().prv;
158
+ }
159
+ const signer = new keyPair_1.KeyPair({ prv: prv });
160
+ this._keyPairs.push(signer);
161
+ return this.transaction;
162
+ }
163
+ checkDuplicatedKeys(key) {
164
+ const keyPair = new keyPair_1.KeyPair({ prv: key.key }).getKeys();
165
+ const keyPairPrv = keyPair.prv;
166
+ this._keyPairs.forEach((kp) => {
167
+ const prv = kp.getKeys().prv;
168
+ if (prv.toLowerCase() === keyPairPrv.toLowerCase()) {
169
+ throw new sdk_core_1.SigningError('Repeated sign');
170
+ }
171
+ });
172
+ this._signers.forEach((signer) => {
173
+ if (signer.Signer.SigningPubKey.toLowerCase() === keyPair.pub.toLowerCase()) {
174
+ throw new sdk_core_1.SigningError('Repeated sign');
175
+ }
176
+ });
177
+ }
178
+ /** @inheritdoc */
179
+ async buildImplementation() {
180
+ this.transaction.xrpTransaction = this.buildXrpTransaction();
181
+ this.transaction.setTransactionType(this.transactionType);
182
+ this.transaction.loadInputsAndOutputs();
183
+ if (this._keyPairs.length > 0) {
184
+ this.validateIsMultiSig();
185
+ this.transaction.setMultiSigValue(this._isMultiSig);
186
+ this.transaction.sign(this._keyPairs);
187
+ }
188
+ return this.transaction;
189
+ }
190
+ buildXrpTransaction() {
191
+ const commonFields = {
192
+ Account: this._sender,
193
+ Fee: this._fee,
194
+ Sequence: this._sequence,
195
+ Flags: this._flags,
196
+ };
197
+ if (this._signingPubKey) {
198
+ commonFields.SigningPubKey = this._signingPubKey;
199
+ }
200
+ if (this._txnSignature) {
201
+ commonFields.TxnSignature = this._txnSignature;
202
+ }
203
+ if (this._signers.length > 0) {
204
+ commonFields.Signers = this._signers;
205
+ }
206
+ if (this._lastLedgerSequence) {
207
+ commonFields.LastLedgerSequence = this._lastLedgerSequence;
208
+ }
209
+ const tx = Object.assign(commonFields, this._specificFields);
210
+ xrpl.validate(tx);
211
+ return tx;
212
+ }
213
+ validateKey(key) {
214
+ let keyPair;
215
+ try {
216
+ keyPair = new keyPair_1.KeyPair({ prv: key.key });
217
+ }
218
+ catch {
219
+ throw new sdk_core_1.BuildTransactionError('Invalid key');
220
+ }
221
+ if (!keyPair.getKeys().prv) {
222
+ throw new sdk_core_1.BuildTransactionError('Invalid key');
223
+ }
224
+ }
225
+ validateIsMultiSig() {
226
+ if (_.isUndefined(this._isMultiSig)) {
227
+ throw new sdk_core_1.BuildTransactionError('Signature type is not defined. Please call setMultiSig or setSingleSig.');
228
+ }
229
+ }
230
+ /** @inheritdoc */
231
+ validateTransaction() {
232
+ if (this._sender === undefined) {
233
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing sender');
234
+ }
235
+ if (this._fee === undefined) {
236
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing fee');
237
+ }
238
+ if (this._sequence === undefined) {
239
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing sequence');
240
+ }
241
+ }
242
+ validateAddress(address) {
243
+ if (!utils_1.default.isValidAddress(address.address)) {
244
+ throw new sdk_core_1.BuildTransactionError('Invalid address ' + address.address);
245
+ }
246
+ }
247
+ validateValue(value) {
248
+ if (value.isLessThan(0)) {
249
+ throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
250
+ }
251
+ }
252
+ validateRawTransaction(rawTransaction) {
253
+ utils_1.default.validateRawTransaction(rawTransaction);
254
+ }
255
+ get transaction() {
256
+ return this._transaction;
257
+ }
258
+ set transaction(transaction) {
259
+ this._transaction = transaction;
260
+ }
261
+ }
262
+ exports.TransactionBuilder = TransactionBuilder;
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBUzhCO0FBRzlCLDBDQUE0QjtBQUM1QiwyQ0FBNkI7QUFHN0IsdUNBQW9DO0FBQ3BDLCtDQUE0QztBQUM1QyxvREFBNEI7QUFFNUI7O0dBRUc7QUFDSCxNQUFzQixrQkFBbUIsU0FBUSxpQ0FBc0I7SUFnQnJFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBWFgsV0FBTSxHQUFZLENBQUMsQ0FBQztRQVk1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBT0Q7O1FBRUk7SUFDSixXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O1FBRUk7SUFDSixZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsT0FBZTtRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxHQUFH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SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWdCO1FBQzVCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7SUFDSCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsY0FBc0I7UUFDM0MsZUFBSyxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFjLFdBQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFjLFdBQVcsQ0FBQyxXQUF3QjtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFuUUQsZ0RBbVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBTaWduaW5nRXJyb3IsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgeHBydlRvUmF3UHJ2LFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyB4cnBsIGZyb20gJ3hycGwnO1xuaW1wb3J0IHsgU2lnbmVyIH0gZnJvbSAneHJwbC9kaXN0L25wbS9tb2RlbHMvY29tbW9uJztcbmltcG9ydCB7IFhycFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogWFJQIHRyYW5zYWN0aW9uIGJ1aWxkZXIuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfc2VuZGVyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZmVlPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3NlcXVlbmNlPzogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX2xhc3RMZWRnZXJTZXF1ZW5jZT86IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9mbGFncz86IG51bWJlciA9IDA7XG4gIHByb3RlY3RlZCBfc2lnbmluZ1B1YktleT86IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zaWduZXJzOiBTaWduZXJbXTtcbiAgcHJvdGVjdGVkIF90eG5TaWduYXR1cmU/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfc3BlY2lmaWNGaWVsZHM6IFhycFRyYW5zYWN0aW9uO1xuXG4gIHByb3RlY3RlZCBfaXNNdWx0aVNpZz86IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIF9rZXlQYWlyczogS2V5UGFpcltdO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl9rZXlQYWlycyA9IFtdO1xuICAgIHRoaXMuX3NpZ25lcnMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBzaWduYXR1cmUgdHlwZSB0byBtdWx0aSBzaWcuXG4gICAqKi9cbiAgc2V0TXVsdGlTaWcoKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aGlzLl9pc011bHRpU2lnID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHNpZ25hdHVyZSB0eXBlIHRvIHNpbmdsZSBzaWcuXG4gICAqKi9cbiAgc2V0U2luZ2xlU2lnKCk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdGhpcy5faXNNdWx0aVNpZyA9IGZhbHNlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyB0aGUgYWNjb3VudCB0aGF0IGlzIHNlbmRpbmcgdGhpcyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHNlbmRlcihhZGRyZXNzOiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLl9zZW5kZXIgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VxdWVuY2Uoc2VxdWVuY2U6IG51bWJlcik6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgaWYgKHR5cGVvZiBzZXF1ZW5jZSAhPT0gJ251bWJlcicgfHwgc2VxdWVuY2UgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHNlcXVlbmNlICR7c2VxdWVuY2V9IGlzIG5vdCB2YWxpZGApO1xuICAgIH1cbiAgICB0aGlzLl9zZXF1ZW5jZSA9IHNlcXVlbmNlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmVlKGZlZTogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICBpZiAodHlwZW9mIGZlZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZmVlIHR5cGUgJHt0eXBlb2YgZmVlfSBtdXN0IGJlIGEgc3RyaW5nYCk7XG4gICAgfVxuICAgIGNvbnN0IGZlZUJpZ0ludCA9IEJpZ0ludChmZWUpO1xuICAgIGlmIChmZWVCaWdJbnQgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGZlZSAke2ZlZX0gaXMgbm90IHZhbGlkYCk7XG4gICAgfVxuICAgIHRoaXMuX2ZlZSA9IGZlZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZsYWdzKGZsYWdzOiBudW1iZXIpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGlmICh0eXBlb2YgZmxhZ3MgIT09ICdudW1iZXInIHx8IGZsYWdzIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBmbGFncyAke2ZsYWdzfSBpcyBub3QgdmFsaWRgKTtcbiAgICB9XG4gICAgdGhpcy5fZmxhZ3MgPSBmbGFncztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxhc3RMZWRnZXJTZXF1ZW5jZShsYXN0TGVkZ2VyU2VxdWVuY2U6IG51bWJlcik6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgaWYgKHR5cGVvZiBsYXN0TGVkZ2VyU2VxdWVuY2UgIT09ICdudW1iZXInIHx8IGxhc3RMZWRnZXJTZXF1ZW5jZSA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbGFzdExlZGdlclNlcXVlbmNlICR7bGFzdExlZGdlclNlcXVlbmNlfSBpcyBub3QgdmFsaWRgKTtcbiAgICB9XG4gICAgdGhpcy5fbGFzdExlZGdlclNlcXVlbmNlID0gbGFzdExlZGdlclNlcXVlbmNlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gICAgY29uc3QgdHhEYXRhID0gdHgudG9Kc29uKCk7XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodHhEYXRhLmlzTXVsdGlTaWcpKSB7XG4gICAgICB0eERhdGEuaXNNdWx0aVNpZyA/IHRoaXMuc2V0TXVsdGlTaWcoKSA6IHRoaXMuc2V0U2luZ2xlU2lnKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZW5kZXIodHhEYXRhLmZyb20pO1xuICAgIGlmICh0eERhdGEuZmVlKSB7XG4gICAgICB0aGlzLmZlZSh0eERhdGEuZmVlKTtcbiAgICB9XG4gICAgaWYgKHR4RGF0YS5zZXF1ZW5jZSkge1xuICAgICAgdGhpcy5zZXF1ZW5jZSh0eERhdGEuc2VxdWVuY2UpO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmxhc3RMZWRnZXJTZXF1ZW5jZSkge1xuICAgICAgdGhpcy5sYXN0TGVkZ2VyU2VxdWVuY2UodHhEYXRhLmxhc3RMZWRnZXJTZXF1ZW5jZSk7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZmxhZ3MpIHtcbiAgICAgIHRoaXMuZmxhZ3ModHhEYXRhLmZsYWdzKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmVycyA9IHR4RGF0YS5zaWduZXJzIHx8IFtdO1xuICAgIHRoaXMuX3NpZ25pbmdQdWJLZXkgPSB0eERhdGEuc2lnbmluZ1B1YktleTtcbiAgICB0aGlzLl90eG5TaWduYXR1cmUgPSB0eERhdGEudHhuU2lnbmF0dXJlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IEJhc2VUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogVHJhbnNhY3Rpb24ge1xuICAgIHRoaXMudmFsaWRhdGVLZXkoa2V5KTtcbiAgICB0aGlzLmNoZWNrRHVwbGljYXRlZEtleXMoa2V5KTtcbiAgICBsZXQgcHJ2ID0ga2V5LmtleTtcbiAgICBpZiAocHJ2LnN0YXJ0c1dpdGgoJ3hwcnYnKSkge1xuICAgICAgY29uc3QgcmF3UHJ2ID0geHBydlRvUmF3UHJ2KHBydik7XG4gICAgICBwcnYgPSBuZXcgS2V5UGFpcih7IHBydjogcmF3UHJ2IH0pLmdldEtleXMoKS5wcnY7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25lciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBwcnYgfSk7XG5cbiAgICB0aGlzLl9rZXlQYWlycy5wdXNoKHNpZ25lcik7XG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tEdXBsaWNhdGVkS2V5cyhrZXk6IEJhc2VLZXkpIHtcbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSkuZ2V0S2V5cygpO1xuICAgIGNvbnN0IGtleVBhaXJQcnYgPSBrZXlQYWlyLnBydiBhcyBzdHJpbmc7XG5cbiAgICB0aGlzLl9rZXlQYWlycy5mb3JFYWNoKChrcCkgPT4ge1xuICAgICAgY29uc3QgcHJ2ID0ga3AuZ2V0S2V5cygpLnBydiBhcyBzdHJpbmc7XG4gICAgICBpZiAocHJ2LnRvTG93ZXJDYXNlKCkgPT09IGtleVBhaXJQcnYudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdSZXBlYXRlZCBzaWduJyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5fc2lnbmVycy5mb3JFYWNoKChzaWduZXIpID0+IHtcbiAgICAgIGlmIChzaWduZXIuU2lnbmVyLlNpZ25pbmdQdWJLZXkudG9Mb3dlckNhc2UoKSA9PT0ga2V5UGFpci5wdWIudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdSZXBlYXRlZCBzaWduJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ueHJwVHJhbnNhY3Rpb24gPSB0aGlzLmJ1aWxkWHJwVHJhbnNhY3Rpb24oKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uVHlwZSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgIGlmICh0aGlzLl9rZXlQYWlycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlSXNNdWx0aVNpZygpO1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5zZXRNdWx0aVNpZ1ZhbHVlKHRoaXMuX2lzTXVsdGlTaWcgYXMgYm9vbGVhbik7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ24odGhpcy5fa2V5UGFpcnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRYcnBUcmFuc2FjdGlvbigpIHtcbiAgICBjb25zdCBjb21tb25GaWVsZHM6IFBhcnRpYWw8WHJwVHJhbnNhY3Rpb24+ID0ge1xuICAgICAgQWNjb3VudDogdGhpcy5fc2VuZGVyLFxuICAgICAgRmVlOiB0aGlzLl9mZWUsXG4gICAgICBTZXF1ZW5jZTogdGhpcy5fc2VxdWVuY2UsXG4gICAgICBGbGFnczogdGhpcy5fZmxhZ3MsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLl9zaWduaW5nUHViS2V5KSB7XG4gICAgICBjb21tb25GaWVsZHMuU2lnbmluZ1B1YktleSA9IHRoaXMuX3NpZ25pbmdQdWJLZXk7XG4gICAgfVxuICAgIGlmICh0aGlzLl90eG5TaWduYXR1cmUpIHtcbiAgICAgIGNvbW1vbkZpZWxkcy5UeG5TaWduYXR1cmUgPSB0aGlzLl90eG5TaWduYXR1cmU7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbW1vbkZpZWxkcy5TaWduZXJzID0gdGhpcy5fc2lnbmVycztcbiAgICB9XG4gICAgaWYgKHRoaXMuX2xhc3RMZWRnZXJTZXF1ZW5jZSkge1xuICAgICAgY29tbW9uRmllbGRzLkxhc3RMZWRnZXJTZXF1ZW5jZSA9IHRoaXMuX2xhc3RMZWRnZXJTZXF1ZW5jZTtcbiAgICB9XG5cbiAgICBjb25zdCB0eCA9IE9iamVjdC5hc3NpZ24oY29tbW9uRmllbGRzLCB0aGlzLl9zcGVjaWZpY0ZpZWxkcyk7XG4gICAgeHJwbC52YWxpZGF0ZSh0eCBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBsZXQga2V5UGFpcjogS2V5UGFpcjtcbiAgICB0cnkge1xuICAgICAga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBrZXknKTtcbiAgICB9XG5cbiAgICBpZiAoIWtleVBhaXIuZ2V0S2V5cygpLnBydikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBrZXknKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUlzTXVsdGlTaWcoKTogdm9pZCB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5faXNNdWx0aVNpZykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1NpZ25hdHVyZSB0eXBlIGlzIG5vdCBkZWZpbmVkLiBQbGVhc2UgY2FsbCBzZXRNdWx0aVNpZyBvciBzZXRTaW5nbGVTaWcuJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3NlbmRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHNlbmRlcicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgZmVlJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zZXF1ZW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHNlcXVlbmNlJyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzKTogdm9pZCB7XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3MgJyArIGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHV0aWxzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { BaseTransactionBuilderFactory } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { AccountSetBuilder } from './accountSetBuilder';
4
+ import { TokenTransferBuilder } from './tokenTransferBuilder';
5
+ import { Transaction } from './transaction';
6
+ import { TransactionBuilder } from './transactionBuilder';
7
+ import { TransferBuilder } from './transferBuilder';
8
+ import { TrustSetBuilder } from './trustsetBuilder';
9
+ import { WalletInitializationBuilder } from './walletInitializationBuilder';
10
+ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
11
+ constructor(_coinConfig: Readonly<CoinConfig>);
12
+ /** @inheritdoc */
13
+ from(raw: string): TransactionBuilder;
14
+ /** @inheritdoc */
15
+ getWalletInitializationBuilder(tx?: Transaction): WalletInitializationBuilder;
16
+ /** @inheritdoc */
17
+ getTransferBuilder(tx?: Transaction): TransferBuilder;
18
+ /** @inheritdoc */
19
+ getAccountUpdateBuilder(tx?: Transaction): AccountSetBuilder;
20
+ /** @inheritdoc */
21
+ getTokenTransferBuilder(tx?: Transaction): TokenTransferBuilder;
22
+ /** @inheritdoc */
23
+ getTrustSetBuilder(tx?: Transaction): TrustSetBuilder;
24
+ /**
25
+ * Initialize the builder with the given transaction
26
+ *
27
+ * @param {Transaction | undefined} tx - the transaction used to initialize the builder
28
+ * @param {TransactionBuilder} builder - the builder to be initialized
29
+ * @returns {TransactionBuilder} the builder initialized
30
+ */
31
+ private initializeBuilder;
32
+ /** Parse the transaction from a raw transaction
33
+ *
34
+ * @param {string} rawTransaction - the raw tx
35
+ * @returns {Transaction} parsedtransaction
36
+ */
37
+ private parseTransaction;
38
+ }
39
+ //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA4C,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IA8BrC,kBAAkB;IAClB,8BAA8B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,2BAA2B;IAI7E,kBAAkB;IACX,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAI5D,kBAAkB;IACX,uBAAuB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,iBAAiB;IAInE,kBAAkB;IACX,uBAAuB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,oBAAoB;IAItE,kBAAkB;IACX,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAI5D;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
@@ -0,0 +1,97 @@
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.TransactionBuilderFactory = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const xrpl_1 = __importDefault(require("xrpl"));
9
+ const accountSetBuilder_1 = require("./accountSetBuilder");
10
+ const tokenTransferBuilder_1 = require("./tokenTransferBuilder");
11
+ const transaction_1 = require("./transaction");
12
+ const transferBuilder_1 = require("./transferBuilder");
13
+ const trustsetBuilder_1 = require("./trustsetBuilder");
14
+ const utils_1 = __importDefault(require("./utils"));
15
+ const walletInitializationBuilder_1 = require("./walletInitializationBuilder");
16
+ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
17
+ constructor(_coinConfig) {
18
+ super(_coinConfig);
19
+ }
20
+ /** @inheritdoc */
21
+ from(raw) {
22
+ let txHex = raw;
23
+ if (!utils_1.default.isValidHex(raw)) {
24
+ try {
25
+ txHex = xrpl_1.default.encode(JSON.parse(raw));
26
+ }
27
+ catch (e) {
28
+ throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
29
+ }
30
+ }
31
+ const tx = this.parseTransaction(txHex);
32
+ try {
33
+ switch (tx.type) {
34
+ case sdk_core_1.TransactionType.AccountUpdate:
35
+ return this.getAccountUpdateBuilder(tx);
36
+ case sdk_core_1.TransactionType.Send:
37
+ return this.getTransferBuilder(tx);
38
+ case sdk_core_1.TransactionType.WalletInitialization:
39
+ return this.getWalletInitializationBuilder(tx);
40
+ case sdk_core_1.TransactionType.SendToken:
41
+ return this.getTokenTransferBuilder(tx);
42
+ case sdk_core_1.TransactionType.TrustLine:
43
+ return this.getTrustSetBuilder(tx);
44
+ default:
45
+ throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
46
+ }
47
+ }
48
+ catch (e) {
49
+ throw e;
50
+ }
51
+ }
52
+ /** @inheritdoc */
53
+ getWalletInitializationBuilder(tx) {
54
+ return this.initializeBuilder(tx, new walletInitializationBuilder_1.WalletInitializationBuilder(this._coinConfig));
55
+ }
56
+ /** @inheritdoc */
57
+ getTransferBuilder(tx) {
58
+ return this.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig));
59
+ }
60
+ /** @inheritdoc */
61
+ getAccountUpdateBuilder(tx) {
62
+ return this.initializeBuilder(tx, new accountSetBuilder_1.AccountSetBuilder(this._coinConfig));
63
+ }
64
+ /** @inheritdoc */
65
+ getTokenTransferBuilder(tx) {
66
+ return this.initializeBuilder(tx, new tokenTransferBuilder_1.TokenTransferBuilder(this._coinConfig));
67
+ }
68
+ /** @inheritdoc */
69
+ getTrustSetBuilder(tx) {
70
+ return this.initializeBuilder(tx, new trustsetBuilder_1.TrustSetBuilder(this._coinConfig));
71
+ }
72
+ /**
73
+ * Initialize the builder with the given transaction
74
+ *
75
+ * @param {Transaction | undefined} tx - the transaction used to initialize the builder
76
+ * @param {TransactionBuilder} builder - the builder to be initialized
77
+ * @returns {TransactionBuilder} the builder initialized
78
+ */
79
+ initializeBuilder(tx, builder) {
80
+ if (tx) {
81
+ builder.initBuilder(tx);
82
+ }
83
+ return builder;
84
+ }
85
+ /** Parse the transaction from a raw transaction
86
+ *
87
+ * @param {string} rawTransaction - the raw tx
88
+ * @returns {Transaction} parsedtransaction
89
+ */
90
+ parseTransaction(rawTransaction) {
91
+ const tx = new transaction_1.Transaction(this._coinConfig);
92
+ tx.fromRawTransaction(rawTransaction);
93
+ return tx;
94
+ }
95
+ }
96
+ exports.TransactionBuilderFactory = TransactionBuilderFactory;
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBK0c7QUFFL0csZ0RBQXdCO0FBQ3hCLDJEQUF3RDtBQUN4RCxpRUFBOEQ7QUFDOUQsK0NBQTRDO0FBRTVDLHVEQUFvRDtBQUNwRCx1REFBb0Q7QUFDcEQsb0RBQTRCO0FBQzVCLCtFQUE0RTtBQUU1RSxNQUFhLHlCQUEwQixTQUFRLHdDQUE2QjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxlQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDO2dCQUNILEtBQUssR0FBRyxjQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLElBQUksa0NBQXVCLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUMzRCxDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUM7WUFDSCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEIsS0FBSywwQkFBZSxDQUFDLGFBQWE7b0JBQ2hDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQyxLQUFLLDBCQUFlLENBQUMsSUFBSTtvQkFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEtBQUssMEJBQWUsQ0FBQyxvQkFBb0I7b0JBQ3ZDLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRCxLQUFLLDBCQUFlLENBQUMsU0FBUztvQkFDNUIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzFDLEtBQUssMEJBQWUsQ0FBQyxTQUFTO29CQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckM7b0JBQ0UsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDN0QsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEIsQ0FBQyxFQUFnQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx5REFBMkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsa0JBQWtCLENBQUMsRUFBZ0I7UUFDeEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsdUJBQXVCLENBQUMsRUFBZ0I7UUFDN0MsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUkscUNBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELGtCQUFrQjtJQUNYLHVCQUF1QixDQUFDLEVBQWdCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLDJDQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxrQkFBa0IsQ0FBQyxFQUFnQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxpQkFBaUIsQ0FBK0IsRUFBMkIsRUFBRSxPQUFVO1FBQzdGLElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQixDQUFDLGNBQXNCO1FBQzdDLE1BQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGO0FBckZELDhEQXFGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHhycGwgZnJvbSAneHJwbCc7XG5pbXBvcnQgeyBBY2NvdW50U2V0QnVpbGRlciB9IGZyb20gJy4vYWNjb3VudFNldEJ1aWxkZXInO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3Rva2VuVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBUcnVzdFNldEJ1aWxkZXIgfSBmcm9tICcuL3RydXN0c2V0QnVpbGRlcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3dhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgbGV0IHR4SGV4ID0gcmF3O1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEhleChyYXcpKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0eEhleCA9IHhycGwuZW5jb2RlKEpTT04ucGFyc2UocmF3KSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB0eCA9IHRoaXMucGFyc2VUcmFuc2FjdGlvbih0eEhleCk7XG4gICAgdHJ5IHtcbiAgICAgIHN3aXRjaCAodHgudHlwZSkge1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BY2NvdW50VXBkYXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldEFjY291bnRVcGRhdGVCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW46XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcnVzdExpbmU6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJ1c3RTZXRCdWlsZGVyKHR4KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHB1YmxpYyBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHB1YmxpYyBnZXRBY2NvdW50VXBkYXRlQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogQWNjb3VudFNldEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgQWNjb3VudFNldEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHB1YmxpYyBnZXRUb2tlblRyYW5zZmVyQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHB1YmxpYyBnZXRUcnVzdFNldEJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRydXN0U2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUcnVzdFNldEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKiogUGFyc2UgdGhlIHRyYW5zYWN0aW9uIGZyb20gYSByYXcgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gdGhlIHJhdyB0eFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb259IHBhcnNlZHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHBhcnNlVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHJldHVybiB0eDtcbiAgfVxufVxuIl19
@@ -0,0 +1,28 @@
1
+ import { TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { Transaction } from './transaction';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ export declare class TransferBuilder extends TransactionBuilder {
6
+ private _amount;
7
+ private _destination;
8
+ private _destinationTag?;
9
+ constructor(_coinConfig: Readonly<CoinConfig>);
10
+ protected get transactionType(): TransactionType;
11
+ protected get xrpTransactionType(): 'Payment';
12
+ initBuilder(tx: Transaction): void;
13
+ /**
14
+ * Set the receiver address
15
+ * @param {string} address - the address with optional destination tag
16
+ * @returns {TransactionBuilder} This transaction builder
17
+ */
18
+ to(address: string): TransferBuilder;
19
+ /**
20
+ * Set the amount to send
21
+ * @param {string} amount - the amount sent
22
+ * @returns {TransactionBuilder} This transaction builder
23
+ */
24
+ amount(amount: string): TransactionBuilder;
25
+ /** @inheritdoc */
26
+ protected buildImplementation(): Promise<Transaction>;
27
+ }
28
+ //# sourceMappingURL=transferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAC,CAAS;gBAErB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,SAAS,KAAK,kBAAkB,IAAI,SAAS,CAE5C;IAED,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAmBlC;;;;OAIG;IACH,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;IAOpC;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAY1C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAoB5D"}