@bitgo/sdk-coin-avaxp 0.1.0-dev.0

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 (38) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.json +7 -0
  3. package/LICENSE +191 -0
  4. package/dist/src/delegatorTxBuilder.d.ts +89 -0
  5. package/dist/src/delegatorTxBuilder.d.ts.map +1 -0
  6. package/dist/src/delegatorTxBuilder.js +183 -0
  7. package/dist/src/errors.d.ts +8 -0
  8. package/dist/src/errors.d.ts.map +1 -0
  9. package/dist/src/errors.js +19 -0
  10. package/dist/src/iface.d.ts +46 -0
  11. package/dist/src/iface.d.ts.map +1 -0
  12. package/dist/src/iface.js +17 -0
  13. package/dist/src/index.d.ts +19 -0
  14. package/dist/src/index.d.ts.map +1 -0
  15. package/dist/src/index.js +49 -0
  16. package/dist/src/keyPair.d.ts +43 -0
  17. package/dist/src/keyPair.d.ts.map +1 -0
  18. package/dist/src/keyPair.js +130 -0
  19. package/dist/src/transaction.d.ts +43 -0
  20. package/dist/src/transaction.d.ts.map +1 -0
  21. package/dist/src/transaction.js +98 -0
  22. package/dist/src/transactionBuilder.d.ts +82 -0
  23. package/dist/src/transactionBuilder.d.ts.map +1 -0
  24. package/dist/src/transactionBuilder.js +171 -0
  25. package/dist/src/transactionBuilderFactory.d.ts +22 -0
  26. package/dist/src/transactionBuilderFactory.d.ts.map +1 -0
  27. package/dist/src/transactionBuilderFactory.js +53 -0
  28. package/dist/src/transferBuilder.d.ts +18 -0
  29. package/dist/src/transferBuilder.d.ts.map +1 -0
  30. package/dist/src/transferBuilder.js +31 -0
  31. package/dist/src/utils.d.ts +50 -0
  32. package/dist/src/utils.d.ts.map +1 -0
  33. package/dist/src/utils.js +98 -0
  34. package/dist/src/validatorTxBuilder.d.ts +32 -0
  35. package/dist/src/validatorTxBuilder.d.ts.map +1 -0
  36. package/dist/src/validatorTxBuilder.js +58 -0
  37. package/dist/tsconfig.tsbuildinfo +10616 -0
  38. package/package.json +57 -0
@@ -0,0 +1,171 @@
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.TransactionBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo/sdk-core");
8
+ const transaction_1 = require("./transaction");
9
+ const keyPair_1 = require("./keyPair");
10
+ const avalanche_1 = require("avalanche");
11
+ const utils_1 = __importDefault(require("./utils"));
12
+ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
13
+ constructor(_coinConfig) {
14
+ super(_coinConfig);
15
+ this._threshold = 2;
16
+ this._locktime = new avalanche_1.BN(0);
17
+ this._fromPubKeys = [];
18
+ this._utxos = [];
19
+ this._transaction = new transaction_1.Transaction(_coinConfig);
20
+ this._network = _coinConfig.network;
21
+ this._assetId = utils_1.default.cb58Decode(this._network.avaxAssetID);
22
+ this._blockchainID = utils_1.default.cb58Decode(this._network.blockchainID);
23
+ this._networkID = this._network.networkID;
24
+ this._txFee = new avalanche_1.BN(this._network.txFee.toString());
25
+ }
26
+ /**
27
+ * commented out check until multisig signing is in effect
28
+ * TODO: STLX-17077
29
+ * @param value
30
+ */
31
+ threshold(value) {
32
+ // this.validateThreshold(value);
33
+ this._threshold = value;
34
+ return this;
35
+ }
36
+ locktime(value) {
37
+ this.validateLocktime(new avalanche_1.BN(value));
38
+ this._locktime = new avalanche_1.BN(value);
39
+ return this;
40
+ }
41
+ fromPubKey(senderPubKey) {
42
+ const pubKeys = senderPubKey instanceof Array ? senderPubKey : [senderPubKey];
43
+ this._fromPubKeys = pubKeys.map(utils_1.default.parseAddress);
44
+ return this;
45
+ }
46
+ utxos(value) {
47
+ this.validateUtxos(value);
48
+ this._utxos = value;
49
+ return this;
50
+ }
51
+ /**
52
+ *
53
+ * @param value Optional Buffer for the memo
54
+ * @returns value Buffer for the memo
55
+ * set using Buffer.from("message")
56
+ */
57
+ memo(value) {
58
+ this._memo = utils_1.default.stringToBuffer(value);
59
+ return this;
60
+ }
61
+ /**
62
+ * Initialize the transaction builder fields using the decoded transaction data
63
+ *
64
+ * @param {Transaction} tx the transaction data
65
+ */
66
+ initBuilder(tx) {
67
+ if (!tx)
68
+ return this;
69
+ if (tx.getNetworkID() !== this._networkID || !tx.getBlockchainID().equals(this._blockchainID)) {
70
+ throw new Error('Network or blockchain is not equals');
71
+ }
72
+ this._memo = tx.getMemo();
73
+ const out = tx.getOuts()[0];
74
+ if (!out.getAssetID().equals(this._assetId)) {
75
+ throw new Error('AssetID are not equals');
76
+ }
77
+ const secpOut = out.getOutput();
78
+ this._locktime = secpOut.getLocktime();
79
+ this._threshold = secpOut.getThreshold();
80
+ this._fromPubKeys = secpOut.getAddresses();
81
+ this._transaction.avaxPTransaction = tx;
82
+ return this;
83
+ }
84
+ /** @inheritdoc */
85
+ fromImplementation(rawTransaction) {
86
+ this.validateRawTransaction(rawTransaction);
87
+ this.buildImplementation();
88
+ return this.transaction;
89
+ }
90
+ /** @inheritdoc */
91
+ async buildImplementation() {
92
+ this.transaction.avaxPTransaction = this.buildAvaxpTransaction();
93
+ if (this._signer) {
94
+ // TODO: sign method in transaction.ts
95
+ this.transaction.sign(this._signer);
96
+ }
97
+ // TODO: multisig support addition STLX-17077
98
+ // if (this._credentials.length > 0) {
99
+ // this.transaction.constructSignedPayload(this._credentials[0]);
100
+ // }
101
+ return this.transaction;
102
+ }
103
+ // region Getters and Setters
104
+ /** @inheritdoc */
105
+ get transaction() {
106
+ return this._transaction;
107
+ }
108
+ // endregion
109
+ // region Validators
110
+ /**
111
+ * Validates the threshold
112
+ * @param threshold
113
+ */
114
+ validateThreshold(threshold) {
115
+ if (!threshold || threshold !== 2) {
116
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: threshold must be set to 2');
117
+ }
118
+ }
119
+ /**
120
+ * Validates locktime
121
+ * @param locktime
122
+ */
123
+ validateLocktime(locktime) {
124
+ if (!locktime || locktime.lt(new avalanche_1.BN(0))) {
125
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: locktime must be 0 or higher');
126
+ }
127
+ }
128
+ /** @inheritdoc */
129
+ validateAddress(address, addressFormat) {
130
+ throw new sdk_core_1.NotImplementedError('validateAddress not implemented');
131
+ }
132
+ /** @inheritdoc */
133
+ validateKey(key) {
134
+ if (!new keyPair_1.KeyPair({ prv: key.key })) {
135
+ throw new sdk_core_1.BuildTransactionError('Invalid key');
136
+ }
137
+ }
138
+ /** @inheritdoc */
139
+ validateRawTransaction(rawTransaction) {
140
+ if (!rawTransaction) {
141
+ throw new sdk_core_1.InvalidTransactionError('Raw transaction is empty');
142
+ }
143
+ if (utils_1.default.allHexChars(rawTransaction)) {
144
+ throw new sdk_core_1.ParseTransactionError('Raw transaction is not hex string');
145
+ }
146
+ }
147
+ /** @inheritdoc */
148
+ validateTransaction(transaction) {
149
+ // throw new NotImplementedError('validateTransaction not implemented');
150
+ }
151
+ /** @inheritdoc */
152
+ validateValue(value) {
153
+ if (value.isLessThan(0)) {
154
+ throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
155
+ }
156
+ }
157
+ validateUtxos(values) {
158
+ if (values.length === 0) {
159
+ throw new sdk_core_1.BuildTransactionError("Utxos can't be empty array");
160
+ }
161
+ values.forEach(this.validateUtxo);
162
+ }
163
+ validateUtxo(value) {
164
+ ['outputID', 'amount', 'txid', 'outputidx'].forEach((field) => {
165
+ if (!value.hasOwnProperty(field))
166
+ throw new sdk_core_1.BuildTransactionError(`Utxos required ${field}`);
167
+ });
168
+ }
169
+ }
170
+ exports.TransactionBuilder = TransactionBuilder;
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSw4Q0FTeUI7QUFDekIsK0NBQTRDO0FBQzVDLHVDQUFvQztBQUNwQyx5Q0FBdUM7QUFHdkMsb0RBQTRCO0FBRzVCLE1BQXNCLGtCQUFtQixTQUFRLGlDQUFzQjtJQWdCckUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFUWCxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsY0FBUyxHQUFPLElBQUksY0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLGlCQUFZLEdBQWEsRUFBRSxDQUFDO1FBQzVCLFdBQU0sR0FBcUIsRUFBRSxDQUFDO1FBT3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQTJCLENBQUM7UUFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksY0FBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7O09BSUc7SUFFSCxTQUFTLENBQUMsS0FBYTtRQUNyQixpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQXNCO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLGNBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxjQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVSxDQUFDLFlBQStCO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLFlBQVksWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUF1QjtRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsSUFBSSxDQUFDLEtBQWE7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsRUFBVztRQUNyQixJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3JCLElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUM3RixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7U0FDeEQ7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUMzQztRQUNELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxjQUFzQjtRQUNqRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDakUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLHNDQUFzQztZQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckM7UUFDRCw2Q0FBNkM7UUFDN0Msc0NBQXNDO1FBQ3RDLG1FQUFtRTtRQUNuRSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFRRCw2QkFBNkI7SUFDN0Isa0JBQWtCO0lBQ2xCLElBQWMsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUlELFlBQVk7SUFFWixvQkFBb0I7SUFFcEI7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsU0FBaUI7UUFDakMsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1NBQ3BGO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLFFBQVk7UUFDM0IsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksY0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1EQUFtRCxDQUFDLENBQUM7U0FDdEY7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGVBQWUsQ0FBQyxPQUFvQixFQUFFLGFBQXNCO1FBQzFELE1BQU0sSUFBSSw4QkFBbUIsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVyxDQUFDLEdBQVk7UUFDdEIsSUFBSSxDQUFDLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRTtZQUNsQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNCQUFzQixDQUFDLGNBQXNCO1FBQzNDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDL0Q7UUFDRCxJQUFJLGVBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDckMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQixDQUFDLFdBQXlCO1FBQzNDLHdFQUF3RTtJQUMxRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGFBQWEsQ0FBQyxLQUFnQjtRQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQXdCO1FBQ3BDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDL0Q7UUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXFCO1FBQ2hDLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO2dCQUFFLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxrQkFBa0IsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FHRjtBQXBNRCxnREFvTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdmFsYW5jaGVOZXR3b3JrLCBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHtcbiAgTm90SW1wbGVtZW50ZWRFcnJvcixcbiAgQmFzZUFkZHJlc3MsXG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgQk4sIEJ1ZmZlciB9IGZyb20gJ2F2YWxhbmNoZSc7XG5pbXBvcnQgeyBCYXNlVHggfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL3BsYXRmb3Jtdm0vYmFzZXR4JztcbmltcG9ydCB7IENyZWRlbnRpYWwgfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9jb21tb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmogfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfbmV0d29yazogQXZhbGFuY2hlTmV0d29yaztcbiAgcHJvdGVjdGVkIF9uZXR3b3JrSUQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9hc3NldElkOiBCdWZmZXI7XG4gIHByb3RlY3RlZCBfYmxvY2tjaGFpbklEOiBCdWZmZXI7XG4gIHByb3RlY3RlZCBfbWVtbz86IEJ1ZmZlcjtcbiAgcHJvdGVjdGVkIF9zaWduZXI6IEtleVBhaXI7XG4gIHByb3RlY3RlZCBfdGhyZXNob2xkID0gMjtcbiAgcHJvdGVjdGVkIF9sb2NrdGltZTogQk4gPSBuZXcgQk4oMCk7XG4gIHByb3RlY3RlZCBfZnJvbVB1YktleXM6IEJ1ZmZlcltdID0gW107XG4gIHByb3RlY3RlZCBfdXR4b3M6IERlY29kZWRVdHhvT2JqW10gPSBbXTtcbiAgcHJvdGVjdGVkIF90eEZlZTogQk47XG5cbiAgcHJpdmF0ZSBfY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXTsgLy8gaG93IGFyZSB3ZSBwYXNzaW5nIGluIG11bHRpc2lnP1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbmV0d29yayA9IF9jb2luQ29uZmlnLm5ldHdvcmsgYXMgQXZhbGFuY2hlTmV0d29yaztcbiAgICB0aGlzLl9hc3NldElkID0gdXRpbHMuY2I1OERlY29kZSh0aGlzLl9uZXR3b3JrLmF2YXhBc3NldElEKTtcbiAgICB0aGlzLl9ibG9ja2NoYWluSUQgPSB1dGlscy5jYjU4RGVjb2RlKHRoaXMuX25ldHdvcmsuYmxvY2tjaGFpbklEKTtcbiAgICB0aGlzLl9uZXR3b3JrSUQgPSB0aGlzLl9uZXR3b3JrLm5ldHdvcmtJRDtcbiAgICB0aGlzLl90eEZlZSA9IG5ldyBCTih0aGlzLl9uZXR3b3JrLnR4RmVlLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvbW1lbnRlZCBvdXQgY2hlY2sgdW50aWwgbXVsdGlzaWcgc2lnbmluZyBpcyBpbiBlZmZlY3RcbiAgICogVE9ETzogU1RMWC0xNzA3N1xuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG5cbiAgdGhyZXNob2xkKHZhbHVlOiBudW1iZXIpOiB0aGlzIHtcbiAgICAvLyB0aGlzLnZhbGlkYXRlVGhyZXNob2xkKHZhbHVlKTtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxvY2t0aW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTG9ja3RpbWUobmV3IEJOKHZhbHVlKSk7XG4gICAgdGhpcy5fbG9ja3RpbWUgPSBuZXcgQk4odmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZnJvbVB1YktleShzZW5kZXJQdWJLZXk6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgY29uc3QgcHViS2V5cyA9IHNlbmRlclB1YktleSBpbnN0YW5jZW9mIEFycmF5ID8gc2VuZGVyUHViS2V5IDogW3NlbmRlclB1YktleV07XG4gICAgdGhpcy5fZnJvbVB1YktleXMgPSBwdWJLZXlzLm1hcCh1dGlscy5wYXJzZUFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdXR4b3ModmFsdWU6IERlY29kZWRVdHhvT2JqW10pOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVXR4b3ModmFsdWUpO1xuICAgIHRoaXMuX3V0eG9zID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBPcHRpb25hbCBCdWZmZXIgZm9yIHRoZSBtZW1vXG4gICAqIEByZXR1cm5zIHZhbHVlIEJ1ZmZlciBmb3IgdGhlIG1lbW9cbiAgICogc2V0IHVzaW5nIEJ1ZmZlci5mcm9tKFwibWVzc2FnZVwiKVxuICAgKi9cbiAgbWVtbyh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fbWVtbyA9IHV0aWxzLnN0cmluZ1RvQnVmZmVyKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBpbml0QnVpbGRlcih0eD86IEJhc2VUeCk6IHRoaXMge1xuICAgIGlmICghdHgpIHJldHVybiB0aGlzO1xuICAgIGlmICh0eC5nZXROZXR3b3JrSUQoKSAhPT0gdGhpcy5fbmV0d29ya0lEIHx8ICF0eC5nZXRCbG9ja2NoYWluSUQoKS5lcXVhbHModGhpcy5fYmxvY2tjaGFpbklEKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXR3b3JrIG9yIGJsb2NrY2hhaW4gaXMgbm90IGVxdWFscycpO1xuICAgIH1cbiAgICB0aGlzLl9tZW1vID0gdHguZ2V0TWVtbygpO1xuICAgIGNvbnN0IG91dCA9IHR4LmdldE91dHMoKVswXTtcbiAgICBpZiAoIW91dC5nZXRBc3NldElEKCkuZXF1YWxzKHRoaXMuX2Fzc2V0SWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2V0SUQgYXJlIG5vdCBlcXVhbHMnKTtcbiAgICB9XG4gICAgY29uc3Qgc2VjcE91dCA9IG91dC5nZXRPdXRwdXQoKTtcbiAgICB0aGlzLl9sb2NrdGltZSA9IHNlY3BPdXQuZ2V0TG9ja3RpbWUoKTtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSBzZWNwT3V0LmdldFRocmVzaG9sZCgpO1xuICAgIHRoaXMuX2Zyb21QdWJLZXlzID0gc2VjcE91dC5nZXRBZGRyZXNzZXMoKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5hdmF4UFRyYW5zYWN0aW9uID0gdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uYXZheFBUcmFuc2FjdGlvbiA9IHRoaXMuYnVpbGRBdmF4cFRyYW5zYWN0aW9uKCk7XG4gICAgaWYgKHRoaXMuX3NpZ25lcikge1xuICAgICAgLy8gVE9ETzogc2lnbiBtZXRob2QgaW4gdHJhbnNhY3Rpb24udHNcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbih0aGlzLl9zaWduZXIpO1xuICAgIH1cbiAgICAvLyBUT0RPOiBtdWx0aXNpZyBzdXBwb3J0IGFkZGl0aW9uIFNUTFgtMTcwNzdcbiAgICAvLyBpZiAodGhpcy5fY3JlZGVudGlhbHMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy50cmFuc2FjdGlvbi5jb25zdHJ1Y3RTaWduZWRQYXlsb2FkKHRoaXMuX2NyZWRlbnRpYWxzWzBdKTtcbiAgICAvLyB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBhdmF4cCB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJuIHtUcmFuc2FjdGlvbn0gYXZheHAgc2RrIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYnVpbGRBdmF4cFRyYW5zYWN0aW9uKCk6IEJhc2VUeDtcblxuICAvLyByZWdpb24gR2V0dGVycyBhbmQgU2V0dGVyc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdGhyZXNob2xkXG4gICAqIEBwYXJhbSB0aHJlc2hvbGRcbiAgICovXG4gIHZhbGlkYXRlVGhyZXNob2xkKHRocmVzaG9sZDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aHJlc2hvbGQgfHwgdGhyZXNob2xkICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiB0aHJlc2hvbGQgbXVzdCBiZSBzZXQgdG8gMicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgbG9ja3RpbWVcbiAgICogQHBhcmFtIGxvY2t0aW1lXG4gICAqL1xuICB2YWxpZGF0ZUxvY2t0aW1lKGxvY2t0aW1lOiBCTik6IHZvaWQge1xuICAgIGlmICghbG9ja3RpbWUgfHwgbG9ja3RpbWUubHQobmV3IEJOKDApKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbG9ja3RpbWUgbXVzdCBiZSAwIG9yIGhpZ2hlcicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigndmFsaWRhdGVBZGRyZXNzIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIGlmICghbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignUmF3IHRyYW5zYWN0aW9uIGlzIGVtcHR5Jyk7XG4gICAgfVxuICAgIGlmICh1dGlscy5hbGxIZXhDaGFycyhyYXdUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBub3QgaGV4IHN0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICAvLyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigndmFsaWRhdGVUcmFuc2FjdGlvbiBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVVdHhvcyh2YWx1ZXM6IERlY29kZWRVdHhvT2JqW10pOiB2b2lkIHtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcIlV0eG9zIGNhbid0IGJlIGVtcHR5IGFycmF5XCIpO1xuICAgIH1cbiAgICB2YWx1ZXMuZm9yRWFjaCh0aGlzLnZhbGlkYXRlVXR4byk7XG4gIH1cblxuICB2YWxpZGF0ZVV0eG8odmFsdWU6IERlY29kZWRVdHhvT2JqKTogdm9pZCB7XG4gICAgWydvdXRwdXRJRCcsICdhbW91bnQnLCAndHhpZCcsICdvdXRwdXRpZHgnXS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKCF2YWx1ZS5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYFV0eG9zIHJlcXVpcmVkICR7ZmllbGR9YCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { BaseTransactionBuilderFactory } from '@bitgo/sdk-core';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ import { TransferBuilder } from './transferBuilder';
5
+ import { ValidatorTxBuilder } from './validatorTxBuilder';
6
+ import { BaseTx } from 'avalanche/dist/apis/platformvm';
7
+ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
8
+ constructor(_coinConfig: Readonly<CoinConfig>);
9
+ /** @inheritdoc */
10
+ from(raw: string): TransactionBuilder;
11
+ /** @inheritdoc */
12
+ getTransferBuilder(tx?: BaseTx): TransferBuilder;
13
+ /**
14
+ * Initialize Validator builder
15
+ *
16
+ * @param {Transaction | undefined} tx - the transaction used to initialize the builder
17
+ * @returns {StakingTxBuilder} the builder initialized
18
+ */
19
+ getValidatorBuilder(tx?: BaseTx): ValidatorTxBuilder;
20
+ getWalletInitializationBuilder(): TransactionBuilder;
21
+ }
22
+ //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../src/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAuB,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAkB,MAAM,gCAAgC,CAAC;AAIxE,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAiBrC,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe;IAIhD;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,kBAAkB;IAIpD,8BAA8B,IAAI,kBAAkB;CAGrD"}
@@ -0,0 +1,53 @@
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/sdk-core");
8
+ const transferBuilder_1 = require("./transferBuilder");
9
+ const validatorTxBuilder_1 = require("./validatorTxBuilder");
10
+ const platformvm_1 = require("avalanche/dist/apis/platformvm");
11
+ const utils_1 = __importDefault(require("./utils"));
12
+ const constants_1 = require("avalanche/dist/apis/platformvm/constants");
13
+ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
14
+ constructor(_coinConfig) {
15
+ super(_coinConfig);
16
+ }
17
+ /** @inheritdoc */
18
+ from(raw) {
19
+ const tx = new platformvm_1.Tx();
20
+ let utx;
21
+ try {
22
+ tx.fromString(raw);
23
+ utx = tx.getUnsignedTx();
24
+ }
25
+ catch (err) {
26
+ utx = new platformvm_1.UnsignedTx();
27
+ utx.fromBuffer(utils_1.default.cb58Decode(raw));
28
+ }
29
+ const baseTx = utx.getTransaction();
30
+ if (baseTx.getTypeID() === constants_1.PlatformVMConstants.ADDVALIDATORTX) {
31
+ return this.getValidatorBuilder(baseTx);
32
+ }
33
+ throw new sdk_core_1.NotImplementedError('from not implemented');
34
+ }
35
+ /** @inheritdoc */
36
+ getTransferBuilder(tx) {
37
+ return new transferBuilder_1.TransferBuilder(this._coinConfig).initBuilder(tx);
38
+ }
39
+ /**
40
+ * Initialize Validator builder
41
+ *
42
+ * @param {Transaction | undefined} tx - the transaction used to initialize the builder
43
+ * @returns {StakingTxBuilder} the builder initialized
44
+ */
45
+ getValidatorBuilder(tx) {
46
+ return new validatorTxBuilder_1.ValidatorTxBuilder(this._coinConfig).initBuilder(tx);
47
+ }
48
+ getWalletInitializationBuilder() {
49
+ throw new sdk_core_1.NotImplementedError('Wallet initialization is not needed');
50
+ }
51
+ }
52
+ exports.TransactionBuilderFactory = TransactionBuilderFactory;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLDhDQUFxRjtBQUVyRix1REFBb0Q7QUFDcEQsNkRBQTBEO0FBQzFELCtEQUF3RTtBQUN4RSxvREFBNEI7QUFDNUIsd0VBQStFO0FBRS9FLE1BQWEseUJBQTBCLFNBQVEsd0NBQTZCO0lBQzFFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLEdBQVc7UUFDZCxNQUFNLEVBQUUsR0FBRyxJQUFJLGVBQUUsRUFBRSxDQUFDO1FBQ3BCLElBQUksR0FBRyxDQUFDO1FBQ1IsSUFBSTtZQUNGLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osR0FBRyxHQUFHLElBQUksdUJBQVUsRUFBRSxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxVQUFVLENBQUMsZUFBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLCtCQUFtQixDQUFDLGNBQWMsRUFBRTtZQUM3RCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6QztRQUNELE1BQU0sSUFBSSw4QkFBbUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0JBQWtCLENBQUMsRUFBVztRQUM1QixPQUFPLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILG1CQUFtQixDQUFDLEVBQVc7UUFDN0IsT0FBTyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELDhCQUE4QjtRQUM1QixNQUFNLElBQUksOEJBQW1CLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0Y7QUF6Q0QsOERBeUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IE5vdEltcGxlbWVudGVkRXJyb3IsIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFZhbGlkYXRvclR4QnVpbGRlciB9IGZyb20gJy4vdmFsaWRhdG9yVHhCdWlsZGVyJztcbmltcG9ydCB7IEJhc2VUeCwgVHgsIFVuc2lnbmVkVHggfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL3BsYXRmb3Jtdm0nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgUGxhdGZvcm1WTUNvbnN0YW50cyB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bS9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGZyb20ocmF3OiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGNvbnN0IHR4ID0gbmV3IFR4KCk7XG4gICAgbGV0IHV0eDtcbiAgICB0cnkge1xuICAgICAgdHguZnJvbVN0cmluZyhyYXcpO1xuICAgICAgdXR4ID0gdHguZ2V0VW5zaWduZWRUeCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdXR4ID0gbmV3IFVuc2lnbmVkVHgoKTtcbiAgICAgIHV0eC5mcm9tQnVmZmVyKHV0aWxzLmNiNThEZWNvZGUocmF3KSk7XG4gICAgfVxuICAgIGNvbnN0IGJhc2VUeCA9IHV0eC5nZXRUcmFuc2FjdGlvbigpO1xuICAgIGlmIChiYXNlVHguZ2V0VHlwZUlEKCkgPT09IFBsYXRmb3JtVk1Db25zdGFudHMuQUREVkFMSURBVE9SVFgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFZhbGlkYXRvckJ1aWxkZXIoYmFzZVR4KTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2Zyb20gbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogQmFzZVR4KTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5pbml0QnVpbGRlcih0eCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBWYWxpZGF0b3IgYnVpbGRlclxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHJldHVybnMge1N0YWtpbmdUeEJ1aWxkZXJ9IHRoZSBidWlsZGVyIGluaXRpYWxpemVkXG4gICAqL1xuICBnZXRWYWxpZGF0b3JCdWlsZGVyKHR4PzogQmFzZVR4KTogVmFsaWRhdG9yVHhCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvclR4QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5pbml0QnVpbGRlcih0eCk7XG4gIH1cblxuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignV2FsbGV0IGluaXRpYWxpemF0aW9uIGlzIG5vdCBuZWVkZWQnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { BaseKey, TransactionType } from '@bitgo/sdk-core';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ import { Transaction } from './transaction';
5
+ import { BaseTx } from 'avalanche/dist/apis/platformvm';
6
+ export declare class TransferBuilder extends TransactionBuilder {
7
+ constructor(_coinConfig: Readonly<CoinConfig>);
8
+ protected get transactionType(): TransactionType;
9
+ /** @inheritdoc */
10
+ protected buildAvaxpTransaction(): BaseTx;
11
+ /** @inheritdoc */
12
+ protected buildImplementation(): Promise<Transaction>;
13
+ /** @inheritdoc */
14
+ protected fromImplementation(rawTransaction: string): Transaction;
15
+ /** @inheritdoc */
16
+ protected signImplementation(key: BaseKey): Transaction;
17
+ }
18
+ //# sourceMappingURL=transferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../src/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAuB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,SAAS,CAAC,qBAAqB,IAAI,MAAM;IAIzC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAI3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAIjE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;CAGxD"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransferBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo/sdk-core");
5
+ const transactionBuilder_1 = require("./transactionBuilder");
6
+ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
7
+ constructor(_coinConfig) {
8
+ super(_coinConfig);
9
+ }
10
+ get transactionType() {
11
+ return sdk_core_1.TransactionType.WalletInitialization;
12
+ }
13
+ /** @inheritdoc */
14
+ buildAvaxpTransaction() {
15
+ throw new sdk_core_1.NotImplementedError('buildImplementation not implemented');
16
+ }
17
+ /** @inheritdoc */
18
+ async buildImplementation() {
19
+ throw new sdk_core_1.NotImplementedError('buildImplementation not implemented');
20
+ }
21
+ /** @inheritdoc */
22
+ fromImplementation(rawTransaction) {
23
+ throw new sdk_core_1.NotImplementedError('fromImplementation not implemented');
24
+ }
25
+ /** @inheritdoc */
26
+ signImplementation(key) {
27
+ throw new sdk_core_1.NotImplementedError('signImplementation not implemented');
28
+ }
29
+ }
30
+ exports.TransferBuilder = TransferBuilder;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw4Q0FBZ0Y7QUFDaEYsNkRBQTBEO0FBSTFELE1BQWEsZUFBZ0IsU0FBUSx1Q0FBa0I7SUFDckQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsb0JBQW9CLENBQUM7SUFDOUMsQ0FBQztJQUVELGtCQUFrQjtJQUNSLHFCQUFxQjtRQUM3QixNQUFNLElBQUksOEJBQW1CLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxNQUFNLElBQUksOEJBQW1CLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsY0FBc0I7UUFDakQsTUFBTSxJQUFJLDhCQUFtQixDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLEdBQVk7UUFDdkMsTUFBTSxJQUFJLDhCQUFtQixDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUNGO0FBNUJELDBDQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlS2V5LCBOb3RJbXBsZW1lbnRlZEVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEJhc2VUeCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkQXZheHBUcmFuc2FjdGlvbigpOiBCYXNlVHgge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdidWlsZEltcGxlbWVudGF0aW9uIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignYnVpbGRJbXBsZW1lbnRhdGlvbiBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2Zyb21JbXBsZW1lbnRhdGlvbiBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignc2lnbkltcGxlbWVudGF0aW9uIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,50 @@
1
+ import { BaseUtils } from '@bitgo/sdk-core';
2
+ import { Buffer } from 'avalanche';
3
+ import { NodeIDStringToBuffer } from 'avalanche/dist/utils';
4
+ export declare class Utils implements BaseUtils {
5
+ private binTools;
6
+ cb58Decode: (bytes: string | Buffer) => Buffer;
7
+ cb58Encode: (bytes: Buffer) => string;
8
+ stringToBuffer: (str: string) => Buffer;
9
+ bufferToString: (buff: Buffer) => string;
10
+ NodeIDStringToBuffer: typeof NodeIDStringToBuffer;
11
+ /** @inheritdoc */
12
+ isValidAddress(address: string): boolean;
13
+ /** @inheritdoc */
14
+ isValidBlockId(hash: string): boolean;
15
+ /**
16
+ * Checks if the string is a valid protocol public key or
17
+ * extended public key.
18
+ *
19
+ * @param {string} pub - the public key to be validated
20
+ * @returns {boolean} - the validation result
21
+ */
22
+ isValidPublicKey(pub: string): boolean;
23
+ parseAddress: (pub: string) => Buffer;
24
+ /**
25
+ * Returns whether or not the string is a valid protocol private key, or extended
26
+ * private key.
27
+ *
28
+ * The protocol key format is described in the @stacks/transactions npm package, in the
29
+ * createStacksPrivateKey function:
30
+ * https://github.com/blockstack/stacks.js/blob/master/packages/transactions/src/keys.ts#L125
31
+ *
32
+ * @param {string} prv - the private key (or extended private key) to be validated
33
+ * @returns {boolean} - the validation result
34
+ */
35
+ isValidPrivateKey(prv: string): boolean;
36
+ /**
37
+ * Returns whether or not the string is a composed of hex chars only
38
+ *
39
+ * @param {string} maybe - the string to be validated
40
+ * @returns {boolean} - the validation result
41
+ */
42
+ allHexChars(maybe: string): boolean;
43
+ /** @inheritdoc */
44
+ isValidSignature(signature: string): boolean;
45
+ /** @inheritdoc */
46
+ isValidTransactionId(txId: string): boolean;
47
+ }
48
+ declare const utils: Utils;
49
+ export default utils;
50
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAY,MAAM,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,qBAAa,KAAM,YAAW,SAAS;IACrC,OAAO,CAAC,QAAQ,CAA0B;IACnC,UAAU,qCAA4B;IACtC,UAAU,4BAA4B;IACtC,cAAc,0BAAgC;IAC9C,cAAc,2BAAgC;IAC9C,oBAAoB,8BAAwB;IAEnD,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC;;;;;;OAMG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IA0BtC,YAAY,QAAS,MAAM,KAAG,MAAM,CAAyC;IAE7E;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUvC;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAInC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG5C;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Utils = void 0;
4
+ const sdk_core_1 = require("@bitgo/sdk-core");
5
+ const avalanche_1 = require("avalanche");
6
+ const utils_1 = require("avalanche/dist/utils");
7
+ const elliptic_1 = require("elliptic");
8
+ class Utils {
9
+ constructor() {
10
+ this.binTools = avalanche_1.BinTools.getInstance();
11
+ this.cb58Decode = this.binTools.cb58Decode;
12
+ this.cb58Encode = this.binTools.cb58Encode;
13
+ this.stringToBuffer = this.binTools.stringToBuffer;
14
+ this.bufferToString = this.binTools.bufferToString;
15
+ this.NodeIDStringToBuffer = utils_1.NodeIDStringToBuffer;
16
+ this.parseAddress = (pub) => this.binTools.parseAddress(pub, 'P');
17
+ }
18
+ /** @inheritdoc */
19
+ isValidAddress(address) {
20
+ throw new sdk_core_1.NotImplementedError('isValidAddress not implemented');
21
+ }
22
+ /** @inheritdoc */
23
+ isValidBlockId(hash) {
24
+ throw new sdk_core_1.NotImplementedError('isValidBlockId not implemented');
25
+ }
26
+ /**
27
+ * Checks if the string is a valid protocol public key or
28
+ * extended public key.
29
+ *
30
+ * @param {string} pub - the public key to be validated
31
+ * @returns {boolean} - the validation result
32
+ */
33
+ isValidPublicKey(pub) {
34
+ if (sdk_core_1.isValidXpub(pub))
35
+ return true;
36
+ if (pub.length !== 66 && pub.length !== 130)
37
+ return false;
38
+ const firstByte = pub.slice(0, 2);
39
+ // uncompressed public key
40
+ if (pub.length === 130 && firstByte !== '04')
41
+ return false;
42
+ // compressed public key
43
+ if (pub.length === 66 && firstByte !== '02' && firstByte !== '03')
44
+ return false;
45
+ if (!this.allHexChars(pub))
46
+ return false;
47
+ // validate the public key
48
+ const secp256k1 = new elliptic_1.ec('secp256k1');
49
+ try {
50
+ const keyPair = secp256k1.keyFromPublic(avalanche_1.Buffer.from(pub, 'hex'));
51
+ const { result } = keyPair.validate();
52
+ return result;
53
+ }
54
+ catch (e) {
55
+ return false;
56
+ }
57
+ }
58
+ /**
59
+ * Returns whether or not the string is a valid protocol private key, or extended
60
+ * private key.
61
+ *
62
+ * The protocol key format is described in the @stacks/transactions npm package, in the
63
+ * createStacksPrivateKey function:
64
+ * https://github.com/blockstack/stacks.js/blob/master/packages/transactions/src/keys.ts#L125
65
+ *
66
+ * @param {string} prv - the private key (or extended private key) to be validated
67
+ * @returns {boolean} - the validation result
68
+ */
69
+ isValidPrivateKey(prv) {
70
+ // if (isValidXprv(prv)) return true;
71
+ if (prv.length !== 64 && prv.length !== 66)
72
+ return false;
73
+ if (prv.length === 66 && prv.slice(64) !== '01')
74
+ return false;
75
+ return this.allHexChars(prv);
76
+ }
77
+ /**
78
+ * Returns whether or not the string is a composed of hex chars only
79
+ *
80
+ * @param {string} maybe - the string to be validated
81
+ * @returns {boolean} - the validation result
82
+ */
83
+ allHexChars(maybe) {
84
+ return /^([0-9a-f])+$/i.test(maybe);
85
+ }
86
+ /** @inheritdoc */
87
+ isValidSignature(signature) {
88
+ throw new sdk_core_1.NotImplementedError('isValidSignature not implemented');
89
+ }
90
+ /** @inheritdoc */
91
+ isValidTransactionId(txId) {
92
+ throw new sdk_core_1.NotImplementedError('isValidTransactionId not implemented');
93
+ }
94
+ }
95
+ exports.Utils = Utils;
96
+ const utils = new Utils();
97
+ exports.default = utils;
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsOENBQThFO0FBQzlFLHlDQUE2QztBQUM3QyxnREFBNEQ7QUFDNUQsdUNBQThCO0FBRTlCLE1BQWEsS0FBSztJQUFsQjtRQUNVLGFBQVEsR0FBRyxvQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUN0QyxlQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDdEMsbUJBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUM5QyxtQkFBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQzlDLHlCQUFvQixHQUFHLDRCQUFvQixDQUFDO1FBNkNuRCxpQkFBWSxHQUFHLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUEwQy9FLENBQUM7SUFyRkMsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE1BQU0sSUFBSSw4QkFBbUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLElBQVk7UUFDekIsTUFBTSxJQUFJLDhCQUFtQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsSUFBSSxzQkFBVyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRWxDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFMUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbEMsMEJBQTBCO1FBQzFCLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksU0FBUyxLQUFLLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUUzRCx3QkFBd0I7UUFDeEIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsS0FBSyxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFaEYsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFekMsMEJBQTBCO1FBQzFCLE1BQU0sU0FBUyxHQUFHLElBQUksYUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLElBQUk7WUFDRixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLGtCQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEMsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFJRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsaUJBQWlCLENBQUMsR0FBVztRQUMzQixxQ0FBcUM7UUFFckMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUV6RCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssRUFBRSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTlELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsS0FBYTtRQUN2QixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGdCQUFnQixDQUFDLFNBQWlCO1FBQ2hDLE1BQU0sSUFBSSw4QkFBbUIsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsb0JBQW9CLENBQUMsSUFBWTtRQUMvQixNQUFNLElBQUksOEJBQW1CLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUE3RkQsc0JBNkZDO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ZhbGlkWHB1YiwgTm90SW1wbGVtZW50ZWRFcnJvciwgQmFzZVV0aWxzIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJpblRvb2xzLCBCdWZmZXIgfSBmcm9tICdhdmFsYW5jaGUnO1xuaW1wb3J0IHsgTm9kZUlEU3RyaW5nVG9CdWZmZXIgfSBmcm9tICdhdmFsYW5jaGUvZGlzdC91dGlscyc7XG5pbXBvcnQgeyBlYyB9IGZyb20gJ2VsbGlwdGljJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgcHJpdmF0ZSBiaW5Ub29scyA9IEJpblRvb2xzLmdldEluc3RhbmNlKCk7XG4gIHB1YmxpYyBjYjU4RGVjb2RlID0gdGhpcy5iaW5Ub29scy5jYjU4RGVjb2RlO1xuICBwdWJsaWMgY2I1OEVuY29kZSA9IHRoaXMuYmluVG9vbHMuY2I1OEVuY29kZTtcbiAgcHVibGljIHN0cmluZ1RvQnVmZmVyID0gdGhpcy5iaW5Ub29scy5zdHJpbmdUb0J1ZmZlcjtcbiAgcHVibGljIGJ1ZmZlclRvU3RyaW5nID0gdGhpcy5iaW5Ub29scy5idWZmZXJUb1N0cmluZztcbiAgcHVibGljIE5vZGVJRFN0cmluZ1RvQnVmZmVyID0gTm9kZUlEU3RyaW5nVG9CdWZmZXI7XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdpc1ZhbGlkQWRkcmVzcyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignaXNWYWxpZEJsb2NrSWQgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBwcm90b2NvbCBwdWJsaWMga2V5IG9yXG4gICAqIGV4dGVuZGVkIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgLSB0aGUgIHB1YmxpYyBrZXkgdG8gYmUgdmFsaWRhdGVkXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChpc1ZhbGlkWHB1YihwdWIpKSByZXR1cm4gdHJ1ZTtcblxuICAgIGlmIChwdWIubGVuZ3RoICE9PSA2NiAmJiBwdWIubGVuZ3RoICE9PSAxMzApIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGZpcnN0Qnl0ZSA9IHB1Yi5zbGljZSgwLCAyKTtcblxuICAgIC8vIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5XG4gICAgaWYgKHB1Yi5sZW5ndGggPT09IDEzMCAmJiBmaXJzdEJ5dGUgIT09ICcwNCcpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIGNvbXByZXNzZWQgcHVibGljIGtleVxuICAgIGlmIChwdWIubGVuZ3RoID09PSA2NiAmJiBmaXJzdEJ5dGUgIT09ICcwMicgJiYgZmlyc3RCeXRlICE9PSAnMDMnKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoIXRoaXMuYWxsSGV4Q2hhcnMocHViKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gdmFsaWRhdGUgdGhlIHB1YmxpYyBrZXlcbiAgICBjb25zdCBzZWNwMjU2azEgPSBuZXcgZWMoJ3NlY3AyNTZrMScpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gc2VjcDI1NmsxLmtleUZyb21QdWJsaWMoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICAgICAgY29uc3QgeyByZXN1bHQgfSA9IGtleVBhaXIudmFsaWRhdGUoKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlQWRkcmVzcyA9IChwdWI6IHN0cmluZyk6IEJ1ZmZlciA9PiB0aGlzLmJpblRvb2xzLnBhcnNlQWRkcmVzcyhwdWIsICdQJyk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIHByb3RvY29sIHByaXZhdGUga2V5LCBvciBleHRlbmRlZFxuICAgKiBwcml2YXRlIGtleS5cbiAgICpcbiAgICogVGhlIHByb3RvY29sIGtleSBmb3JtYXQgaXMgZGVzY3JpYmVkIGluIHRoZSBAc3RhY2tzL3RyYW5zYWN0aW9ucyBucG0gcGFja2FnZSwgaW4gdGhlXG4gICAqIGNyZWF0ZVN0YWNrc1ByaXZhdGVLZXkgZnVuY3Rpb246XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibG9ja3N0YWNrL3N0YWNrcy5qcy9ibG9iL21hc3Rlci9wYWNrYWdlcy90cmFuc2FjdGlvbnMvc3JjL2tleXMudHMjTDEyNVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJ2IC0gdGhlIHByaXZhdGUga2V5IChvciBleHRlbmRlZCBwcml2YXRlIGtleSkgdG8gYmUgdmFsaWRhdGVkXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBpZiAoaXNWYWxpZFhwcnYocHJ2KSkgcmV0dXJuIHRydWU7XG5cbiAgICBpZiAocHJ2Lmxlbmd0aCAhPT0gNjQgJiYgcHJ2Lmxlbmd0aCAhPT0gNjYpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChwcnYubGVuZ3RoID09PSA2NiAmJiBwcnYuc2xpY2UoNjQpICE9PSAnMDEnKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gdGhpcy5hbGxIZXhDaGFycyhwcnYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIGNvbXBvc2VkIG9mIGhleCBjaGFycyBvbmx5XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXliZSAtIHRoZSAgc3RyaW5nIHRvIGJlIHZhbGlkYXRlZFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGFsbEhleENoYXJzKG1heWJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL14oWzAtOWEtZl0pKyQvaS50ZXN0KG1heWJlKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2lzVmFsaWRTaWduYXR1cmUgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2lzVmFsaWRUcmFuc2FjdGlvbklkIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
@@ -0,0 +1,32 @@
1
+ import { DelegatorTxBuilder } from './delegatorTxBuilder';
2
+ import { BaseCoin } from '@bitgo/statics';
3
+ import { BaseTx } from 'avalanche/dist/apis/platformvm';
4
+ export declare class ValidatorTxBuilder extends DelegatorTxBuilder {
5
+ protected _delegationFeeRate: number;
6
+ /**
7
+ * @param coinConfig
8
+ */
9
+ constructor(coinConfig: Readonly<BaseCoin>);
10
+ /**
11
+ * set the delegationFeeRate
12
+ * @param value BigInt
13
+ */
14
+ delegationFeeRate(value: number): this;
15
+ /**
16
+ * Validate that the delegation fee is at least the minDelegationFee
17
+ * @param delegationFeeRate BigInt
18
+ */
19
+ validateDelegationFeeRate(delegationFeeRate: number): void;
20
+ /**
21
+ * Initialize the builder
22
+ * @param tx BaseTx
23
+ * @returns ValidatorTxBuilder
24
+ */
25
+ initBuilder(tx?: BaseTx): this;
26
+ /**
27
+ * Build the validator transaction
28
+ * @protected
29
+ */
30
+ protected buildAvaxpTransaction(): BaseTx;
31
+ }
32
+ //# sourceMappingURL=validatorTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validatorTxBuilder.d.ts","sourceRoot":"","sources":["../../src/validatorTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAkB,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAIxE,qBAAa,kBAAmB,SAAQ,kBAAkB;IACxD,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAErC;;OAEG;gBACS,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAI1C;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtC;;;OAGG;IACH,yBAAyB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAM1D;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAO9B;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,MAAM;CAkB1C"}
@@ -0,0 +1,58 @@
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.ValidatorTxBuilder = void 0;
7
+ const delegatorTxBuilder_1 = require("./delegatorTxBuilder");
8
+ const platformvm_1 = require("avalanche/dist/apis/platformvm");
9
+ const sdk_core_1 = require("@bitgo/sdk-core");
10
+ const utils_1 = __importDefault(require("./utils"));
11
+ class ValidatorTxBuilder extends delegatorTxBuilder_1.DelegatorTxBuilder {
12
+ /**
13
+ * @param coinConfig
14
+ */
15
+ constructor(coinConfig) {
16
+ super(coinConfig);
17
+ }
18
+ /**
19
+ * set the delegationFeeRate
20
+ * @param value BigInt
21
+ */
22
+ delegationFeeRate(value) {
23
+ this.validateDelegationFeeRate(value);
24
+ this._delegationFeeRate = value;
25
+ return this;
26
+ }
27
+ /**
28
+ * Validate that the delegation fee is at least the minDelegationFee
29
+ * @param delegationFeeRate BigInt
30
+ */
31
+ validateDelegationFeeRate(delegationFeeRate) {
32
+ if (delegationFeeRate < this._network.minDelegationFee) {
33
+ throw new sdk_core_1.BuildTransactionError(`Delegation fee cannot be less than ${this._network.minDelegationFee}`);
34
+ }
35
+ }
36
+ /**
37
+ * Initialize the builder
38
+ * @param tx BaseTx
39
+ * @returns ValidatorTxBuilder
40
+ */
41
+ initBuilder(tx) {
42
+ if (!tx)
43
+ return this;
44
+ const vtx = tx;
45
+ this._delegationFeeRate = vtx.getDelegationFee();
46
+ return super.initBuilder(tx);
47
+ }
48
+ /**
49
+ * Build the validator transaction
50
+ * @protected
51
+ */
52
+ buildAvaxpTransaction() {
53
+ const { inputs, outputs } = this.createInputOutput();
54
+ return new platformvm_1.AddValidatorTx(this._networkID, this._blockchainID, outputs, inputs, this._memo, utils_1.default.NodeIDStringToBuffer(this._nodeID), this._startTime, this._endTime, this._stakeAmount, [this.stakeTransferOut()], this.rewardOwnersOutput(), this._delegationFeeRate);
55
+ }
56
+ }
57
+ exports.ValidatorTxBuilder = ValidatorTxBuilder;
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRvclR4QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2REFBMEQ7QUFFMUQsK0RBQXdFO0FBQ3hFLDhDQUF3RDtBQUN4RCxvREFBNEI7QUFFNUIsTUFBYSxrQkFBbUIsU0FBUSx1Q0FBa0I7SUFHeEQ7O09BRUc7SUFDSCxZQUFZLFVBQThCO1FBQ3hDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCx5QkFBeUIsQ0FBQyxpQkFBeUI7UUFDakQsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFO1lBQ3RELE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxzQ0FBc0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7U0FDekc7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUFXO1FBQ3JCLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDckIsTUFBTSxHQUFHLEdBQUcsRUFBb0IsQ0FBQztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDTyxxQkFBcUI7UUFDN0IsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUVyRCxPQUFPLElBQUksMkJBQWMsQ0FDdkIsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsYUFBYSxFQUNsQixPQUFPLEVBQ1AsTUFBTSxFQUNOLElBQUksQ0FBQyxLQUFLLEVBQ1YsZUFBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFDeEMsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxZQUFZLEVBQ2pCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWhFRCxnREFnRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWxlZ2F0b3JUeEJ1aWxkZXIgfSBmcm9tICcuL2RlbGVnYXRvclR4QnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlQ29pbiB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEFkZFZhbGlkYXRvclR4LCBCYXNlVHggfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL3BsYXRmb3Jtdm0nO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFZhbGlkYXRvclR4QnVpbGRlciBleHRlbmRzIERlbGVnYXRvclR4QnVpbGRlciB7XG4gIHByb3RlY3RlZCBfZGVsZWdhdGlvbkZlZVJhdGU6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIGNvaW5Db25maWdcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PEJhc2VDb2luPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCB0aGUgZGVsZWdhdGlvbkZlZVJhdGVcbiAgICogQHBhcmFtIHZhbHVlIEJpZ0ludFxuICAgKi9cbiAgZGVsZWdhdGlvbkZlZVJhdGUodmFsdWU6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVEZWxlZ2F0aW9uRmVlUmF0ZSh2YWx1ZSk7XG4gICAgdGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGF0IHRoZSBkZWxlZ2F0aW9uIGZlZSBpcyBhdCBsZWFzdCB0aGUgbWluRGVsZWdhdGlvbkZlZVxuICAgKiBAcGFyYW0gZGVsZWdhdGlvbkZlZVJhdGUgQmlnSW50XG4gICAqL1xuICB2YWxpZGF0ZURlbGVnYXRpb25GZWVSYXRlKGRlbGVnYXRpb25GZWVSYXRlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZGVsZWdhdGlvbkZlZVJhdGUgPCB0aGlzLl9uZXR3b3JrLm1pbkRlbGVnYXRpb25GZWUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYERlbGVnYXRpb24gZmVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gJHt0aGlzLl9uZXR3b3JrLm1pbkRlbGVnYXRpb25GZWV9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHR4IEJhc2VUeFxuICAgKiBAcmV0dXJucyBWYWxpZGF0b3JUeEJ1aWxkZXJcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4PzogQmFzZVR4KTogdGhpcyB7XG4gICAgaWYgKCF0eCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgdnR4ID0gdHggYXMgQWRkVmFsaWRhdG9yVHg7XG4gICAgdGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUgPSB2dHguZ2V0RGVsZWdhdGlvbkZlZSgpO1xuICAgIHJldHVybiBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIHZhbGlkYXRvciB0cmFuc2FjdGlvblxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRBdmF4cFRyYW5zYWN0aW9uKCk6IEJhc2VUeCB7XG4gICAgY29uc3QgeyBpbnB1dHMsIG91dHB1dHMgfSA9IHRoaXMuY3JlYXRlSW5wdXRPdXRwdXQoKTtcblxuICAgIHJldHVybiBuZXcgQWRkVmFsaWRhdG9yVHgoXG4gICAgICB0aGlzLl9uZXR3b3JrSUQsXG4gICAgICB0aGlzLl9ibG9ja2NoYWluSUQsXG4gICAgICBvdXRwdXRzLFxuICAgICAgaW5wdXRzLFxuICAgICAgdGhpcy5fbWVtbyxcbiAgICAgIHV0aWxzLk5vZGVJRFN0cmluZ1RvQnVmZmVyKHRoaXMuX25vZGVJRCksXG4gICAgICB0aGlzLl9zdGFydFRpbWUsXG4gICAgICB0aGlzLl9lbmRUaW1lLFxuICAgICAgdGhpcy5fc3Rha2VBbW91bnQsXG4gICAgICBbdGhpcy5zdGFrZVRyYW5zZmVyT3V0KCldLFxuICAgICAgdGhpcy5yZXdhcmRPd25lcnNPdXRwdXQoKSxcbiAgICAgIHRoaXMuX2RlbGVnYXRpb25GZWVSYXRlXG4gICAgKTtcbiAgfVxufVxuIl19