@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.
- package/.eslintignore +5 -0
- package/.eslintrc.json +7 -0
- package/LICENSE +191 -0
- package/dist/src/delegatorTxBuilder.d.ts +89 -0
- package/dist/src/delegatorTxBuilder.d.ts.map +1 -0
- package/dist/src/delegatorTxBuilder.js +183 -0
- package/dist/src/errors.d.ts +8 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +19 -0
- package/dist/src/iface.d.ts +46 -0
- package/dist/src/iface.d.ts.map +1 -0
- package/dist/src/iface.js +17 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +49 -0
- package/dist/src/keyPair.d.ts +43 -0
- package/dist/src/keyPair.d.ts.map +1 -0
- package/dist/src/keyPair.js +130 -0
- package/dist/src/transaction.d.ts +43 -0
- package/dist/src/transaction.d.ts.map +1 -0
- package/dist/src/transaction.js +98 -0
- package/dist/src/transactionBuilder.d.ts +82 -0
- package/dist/src/transactionBuilder.d.ts.map +1 -0
- package/dist/src/transactionBuilder.js +171 -0
- package/dist/src/transactionBuilderFactory.d.ts +22 -0
- package/dist/src/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/transactionBuilderFactory.js +53 -0
- package/dist/src/transferBuilder.d.ts +18 -0
- package/dist/src/transferBuilder.d.ts.map +1 -0
- package/dist/src/transferBuilder.js +31 -0
- package/dist/src/utils.d.ts +50 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +98 -0
- package/dist/src/validatorTxBuilder.d.ts +32 -0
- package/dist/src/validatorTxBuilder.d.ts.map +1 -0
- package/dist/src/validatorTxBuilder.js +58 -0
- package/dist/tsconfig.tsbuildinfo +10616 -0
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSw4Q0FTeUI7QUFDekIsK0NBQTRDO0FBQzVDLHVDQUFvQztBQUNwQyx5Q0FBdUM7QUFHdkMsb0RBQTRCO0FBRzVCLE1BQXNCLGtCQUFtQixTQUFRLGlDQUFzQjtJQWdCckUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFUWCxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsY0FBUyxHQUFPLElBQUksY0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLGlCQUFZLEdBQWEsRUFBRSxDQUFDO1FBQzVCLFdBQU0sR0FBcUIsRUFBRSxDQUFDO1FBT3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQTJCLENBQUM7UUFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksY0FBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7O09BSUc7SUFFSCxTQUFTLENBQUMsS0FBYTtRQUNyQixpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxL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RCxJQUFJLGVBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDckMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQixDQUFDLFdBQXlCO1FBQzNDLHdFQUF3RTtJQUMxRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGFBQWEsQ0FBQyxLQUFnQjtRQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQXdCO1FBQ3BDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDL0Q7UUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXFCO1FBQ2hDLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO2dCQUFFLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxrQkFBa0IsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FHRjtBQXBNRCxnREFvTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdmFsYW5jaGVOZXR3b3JrLCBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHtcbiAgTm90SW1wbGVtZW50ZWRFcnJvcixcbiAgQmFzZUFkZHJlc3MsXG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgQk4sIEJ1ZmZlciB9IGZyb20gJ2F2YWxhbmNoZSc7XG5pbXBvcnQgeyBCYXNlVHggfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL3BsYXRmb3Jtdm0vYmFzZXR4JztcbmltcG9ydCB7IENyZWRlbnRpYWwgfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9jb21tb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmogfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfbmV0d29yazogQXZhbGFuY2hlTmV0d29yaztcbiAgcHJvdGVjdGVkIF9uZXR3b3JrSUQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9hc3NldElkOiBCdWZmZXI7XG4gIHByb3RlY3RlZCBfYmxvY2tjaGFpbklEOiBCdWZmZXI7XG4gIHByb3RlY3RlZCBfbWVtbz86IEJ1ZmZlcjtcbiAgcHJvdGVjdGVkIF9zaWduZXI6IEtleVBhaXI7XG4gIHByb3RlY3RlZCBfdGhyZXNob2xkID0gMjtcbiAgcHJvdGVjdGVkIF9sb2NrdGltZTogQk4gPSBuZXcgQk4oMCk7XG4gIHByb3RlY3RlZCBfZnJvbVB1YktleXM6IEJ1ZmZlcltdID0gW107XG4gIHByb3RlY3RlZCBfdXR4b3M6IERlY29kZWRVdHhvT2JqW10gPSBbXTtcbiAgcHJvdGVjdGVkIF90eEZlZTogQk47XG5cbiAgcHJpdmF0ZSBfY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXTsgLy8gaG93IGFyZSB3ZSBwYXNzaW5nIGluIG11bHRpc2lnP1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbmV0d29yayA9IF9jb2luQ29uZmlnLm5ldHdvcmsgYXMgQXZhbGFuY2hlTmV0d29yaztcbiAgICB0aGlzLl9hc3NldElkID0gdXRpbHMuY2I1OERlY29kZSh0aGlzLl9uZXR3b3JrLmF2YXhBc3NldElEKTtcbiAgICB0aGlzLl9ibG9ja2NoYWluSUQgPSB1dGlscy5jYjU4RGVjb2RlKHRoaXMuX25ldHdvcmsuYmxvY2tjaGFpbklEKTtcbiAgICB0aGlzLl9uZXR3b3JrSUQgPSB0aGlzLl9uZXR3b3JrLm5ldHdvcmtJRDtcbiAgICB0aGlzLl90eEZlZSA9IG5ldyBCTih0aGlzLl9uZXR3b3JrLnR4RmVlLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvbW1lbnRlZCBvdXQgY2hlY2sgdW50aWwgbXVsdGlzaWcgc2lnbmluZyBpcyBpbiBlZmZlY3RcbiAgICogVE9ETzogU1RMWC0xNzA3N1xuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG5cbiAgdGhyZXNob2xkKHZhbHVlOiBudW1iZXIpOiB0aGlzIHtcbiAgICAvLyB0aGlzLnZhbGlkYXRlVGhyZXNob2xkKHZhbHVlKTtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxvY2t0aW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTG9ja3RpbWUobmV3IEJOKHZhbHVlKSk7XG4gICAgdGhpcy5fbG9ja3RpbWUgPSBuZXcgQk4odmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZnJvbVB1YktleShzZW5kZXJQdWJLZXk6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgY29uc3QgcHViS2V5cyA9IHNlbmRlclB1YktleSBpbnN0YW5jZW9mIEFycmF5ID8gc2VuZGVyUHViS2V5IDogW3NlbmRlclB1YktleV07XG4gICAgdGhpcy5fZnJvbVB1YktleXMgPSBwdWJLZXlzLm1hcCh1dGlscy5wYXJzZUFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdXR4b3ModmFsdWU6IERlY29kZWRVdHhvT2JqW10pOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVXR4b3ModmFsdWUpO1xuICAgIHRoaXMuX3V0eG9zID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBPcHRpb25hbCBCdWZmZXIgZm9yIHRoZSBtZW1vXG4gICAqIEByZXR1cm5zIHZhbHVlIEJ1ZmZlciBmb3IgdGhlIG1lbW9cbiAgICogc2V0IHVzaW5nIEJ1ZmZlci5mcm9tKFwibWVzc2FnZVwiKVxuICAgKi9cbiAgbWVtbyh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fbWVtbyA9IHV0aWxzLnN0cmluZ1RvQnVmZmVyKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBpbml0QnVpbGRlcih0eD86IEJhc2VUeCk6IHRoaXMge1xuICAgIGlmICghdHgpIHJldHVybiB0aGlzO1xuICAgIGlmICh0eC5nZXROZXR3b3JrSUQoKSAhPT0gdGhpcy5fbmV0d29ya0lEIHx8ICF0eC5nZXRCbG9ja2NoYWluSUQoKS5lcXVhbHModGhpcy5fYmxvY2tjaGFpbklEKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXR3b3JrIG9yIGJsb2NrY2hhaW4gaXMgbm90IGVxdWFscycpO1xuICAgIH1cbiAgICB0aGlzLl9tZW1vID0gdHguZ2V0TWVtbygpO1xuICAgIGNvbnN0IG91dCA9IHR4LmdldE91dHMoKVswXTtcbiAgICBpZiAoIW91dC5nZXRBc3NldElEKCkuZXF1YWxzKHRoaXMuX2Fzc2V0SWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2V0SUQgYXJlIG5vdCBlcXVhbHMnKTtcbiAgICB9XG4gICAgY29uc3Qgc2VjcE91dCA9IG91dC5nZXRPdXRwdXQoKTtcbiAgICB0aGlzLl9sb2NrdGltZSA9IHNlY3BPdXQuZ2V0TG9ja3RpbWUoKTtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSBzZWNwT3V0LmdldFRocmVzaG9sZCgpO1xuICAgIHRoaXMuX2Zyb21QdWJLZXlzID0gc2VjcE91dC5nZXRBZGRyZXNzZXMoKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5hdmF4UFRyYW5zYWN0aW9uID0gdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uYXZheFBUcmFuc2FjdGlvbiA9IHRoaXMuYnVpbGRBdmF4cFRyYW5zYWN0aW9uKCk7XG4gICAgaWYgKHRoaXMuX3NpZ25lcikge1xuICAgICAgLy8gVE9ETzogc2lnbiBtZXRob2QgaW4gdHJhbnNhY3Rpb24udHNcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbih0aGlzLl9zaWduZXIpO1xuICAgIH1cbiAgICAvLyBUT0RPOiBtdWx0aXNpZyBzdXBwb3J0IGFkZGl0aW9uIFNUTFgtMTcwNzdcbiAgICAvLyBpZiAodGhpcy5fY3JlZGVudGlhbHMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy50cmFuc2FjdGlvbi5jb25zdHJ1Y3RTaWduZWRQYXlsb2FkKHRoaXMuX2NyZWRlbnRpYWxzWzBdKTtcbiAgICAvLyB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBhdmF4cCB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJuIHtUcmFuc2FjdGlvbn0gYXZheHAgc2RrIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYnVpbGRBdmF4cFRyYW5zYWN0aW9uKCk6IEJhc2VUeDtcblxuICAvLyByZWdpb24gR2V0dGVycyBhbmQgU2V0dGVyc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdGhyZXNob2xkXG4gICAqIEBwYXJhbSB0aHJlc2hvbGRcbiAgICovXG4gIHZhbGlkYXRlVGhyZXNob2xkKHRocmVzaG9sZDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aHJlc2hvbGQgfHwgdGhyZXNob2xkICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiB0aHJlc2hvbGQgbXVzdCBiZSBzZXQgdG8gMicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgbG9ja3RpbWVcbiAgICogQHBhcmFtIGxvY2t0aW1lXG4gICAqL1xuICB2YWxpZGF0ZUxvY2t0aW1lKGxvY2t0aW1lOiBCTik6IHZvaWQge1xuICAgIGlmICghbG9ja3RpbWUgfHwgbG9ja3RpbWUubHQobmV3IEJOKDApKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbG9ja3RpbWUgbXVzdCBiZSAwIG9yIGhpZ2hlcicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/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
|