@bitgo/sdk-coin-avaxp 0.2.0-dev.1 → 1.0.1-rc.2
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/CHANGELOG.md +218 -0
- package/README.md +39 -0
- package/dist/src/avaxp.d.ts +60 -0
- package/dist/src/avaxp.d.ts.map +1 -0
- package/dist/src/avaxp.js +175 -0
- package/dist/src/iface.d.ts +20 -41
- package/dist/src/iface.d.ts.map +1 -1
- package/dist/src/iface.js +1 -15
- package/dist/src/index.d.ts +4 -18
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -28
- package/dist/src/{delegatorTxBuilder.d.ts → lib/delegatorTxBuilder.d.ts} +21 -6
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/delegatorTxBuilder.js +240 -0
- package/dist/src/{errors.d.ts → lib/errors.d.ts} +0 -0
- package/dist/src/lib/errors.d.ts.map +1 -0
- package/dist/src/lib/errors.js +19 -0
- package/dist/src/lib/iface.d.ts +42 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +12 -0
- package/dist/src/lib/index.d.ts +9 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +29 -0
- package/dist/src/{keyPair.d.ts → lib/keyPair.d.ts} +13 -2
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +156 -0
- package/dist/src/lib/transaction.d.ts +73 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +247 -0
- package/dist/src/{transactionBuilder.d.ts → lib/transactionBuilder.d.ts} +25 -22
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +181 -0
- package/dist/src/{transactionBuilderFactory.d.ts → lib/transactionBuilderFactory.d.ts} +3 -4
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +50 -0
- package/dist/src/{transferBuilder.d.ts → lib/transferBuilder.d.ts} +0 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +31 -0
- package/dist/src/lib/utils.d.ts +130 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +257 -0
- package/dist/src/{validatorTxBuilder.d.ts → lib/validatorTxBuilder.d.ts} +11 -3
- package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/validatorTxBuilder.js +73 -0
- package/dist/src/tavaxp.d.ts +9 -0
- package/dist/src/tavaxp.d.ts.map +1 -0
- package/dist/src/tavaxp.js +14 -0
- package/dist/tsconfig.tsbuildinfo +973 -2827
- package/package.json +15 -10
- package/dist/src/delegatorTxBuilder.d.ts.map +0 -1
- package/dist/src/delegatorTxBuilder.js +0 -183
- package/dist/src/errors.d.ts.map +0 -1
- package/dist/src/errors.js +0 -19
- package/dist/src/keyPair.d.ts.map +0 -1
- package/dist/src/keyPair.js +0 -130
- package/dist/src/transaction.d.ts +0 -43
- package/dist/src/transaction.d.ts.map +0 -1
- package/dist/src/transaction.js +0 -98
- package/dist/src/transactionBuilder.d.ts.map +0 -1
- package/dist/src/transactionBuilder.js +0 -171
- package/dist/src/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/transactionBuilderFactory.js +0 -53
- package/dist/src/transferBuilder.d.ts.map +0 -1
- package/dist/src/transferBuilder.js +0 -31
- package/dist/src/utils.d.ts +0 -50
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -98
- package/dist/src/validatorTxBuilder.d.ts.map +0 -1
- package/dist/src/validatorTxBuilder.js +0 -58
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.Utils = void 0;
|
|
23
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
24
|
+
const avalanche_1 = require("avalanche");
|
|
25
|
+
const utils_1 = require("avalanche/dist/utils");
|
|
26
|
+
const elliptic_1 = require("elliptic");
|
|
27
|
+
const platformvm_1 = require("avalanche/dist/apis/platformvm");
|
|
28
|
+
const keychain_1 = require("avalanche/dist/apis/platformvm/keychain");
|
|
29
|
+
const common_1 = require("avalanche/dist/common");
|
|
30
|
+
const createHash = __importStar(require("create-hash"));
|
|
31
|
+
class Utils {
|
|
32
|
+
constructor() {
|
|
33
|
+
this.binTools = avalanche_1.BinTools.getInstance();
|
|
34
|
+
this.cb58Decode = this.binTools.cb58Decode;
|
|
35
|
+
this.cb58Encode = this.binTools.cb58Encode;
|
|
36
|
+
this.stringToBuffer = this.binTools.stringToBuffer;
|
|
37
|
+
this.bufferToString = this.binTools.bufferToString;
|
|
38
|
+
this.NodeIDStringToBuffer = utils_1.NodeIDStringToBuffer;
|
|
39
|
+
this.addressToString = this.binTools.addressToString;
|
|
40
|
+
this.parseAddress = (pub) => this.binTools.parseAddress(pub, 'P');
|
|
41
|
+
}
|
|
42
|
+
includeIn(walletAddresses, otxoOutputAddresses) {
|
|
43
|
+
return walletAddresses.map((a) => otxoOutputAddresses.includes(a)).reduce((a, b) => a && b, true);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Checks if it is a valid address no illegal characters
|
|
47
|
+
*
|
|
48
|
+
* @param {string} address - address to be validated
|
|
49
|
+
* @returns {boolean} - the validation result
|
|
50
|
+
*/
|
|
51
|
+
/** @inheritdoc */
|
|
52
|
+
isValidAddress(address) {
|
|
53
|
+
return address.match(/^[a-zA-Z0-9]+$/) !== null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Checks if it is a valid blockId with length 66 including 0x
|
|
57
|
+
*
|
|
58
|
+
* @param {string} hash - blockId to be validated
|
|
59
|
+
* @returns {boolean} - the validation result
|
|
60
|
+
*/
|
|
61
|
+
/** @inheritdoc */
|
|
62
|
+
isValidBlockId(hash) {
|
|
63
|
+
if (hash.length !== 66 || hash.slice(0, 2) !== '0x') {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
return hash.match(/^[a-zA-Z0-9]+$/) !== null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Checks if the string is a valid protocol public key or
|
|
70
|
+
* extended public key.
|
|
71
|
+
*
|
|
72
|
+
* @param {string} pub - the public key to be validated
|
|
73
|
+
* @returns {boolean} - the validation result
|
|
74
|
+
*/
|
|
75
|
+
isValidPublicKey(pub) {
|
|
76
|
+
if (sdk_core_1.isValidXpub(pub))
|
|
77
|
+
return true;
|
|
78
|
+
let pubBuf;
|
|
79
|
+
if (pub.length === 50) {
|
|
80
|
+
try {
|
|
81
|
+
pubBuf = utils.cb58Decode(pub);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
if (pub.length !== 66 && pub.length !== 130)
|
|
89
|
+
return false;
|
|
90
|
+
const firstByte = pub.slice(0, 2);
|
|
91
|
+
// uncompressed public key
|
|
92
|
+
if (pub.length === 130 && firstByte !== '04')
|
|
93
|
+
return false;
|
|
94
|
+
// compressed public key
|
|
95
|
+
if (pub.length === 66 && firstByte !== '02' && firstByte !== '03')
|
|
96
|
+
return false;
|
|
97
|
+
if (!this.allHexChars(pub))
|
|
98
|
+
return false;
|
|
99
|
+
pubBuf = avalanche_1.Buffer.from(pub, 'hex');
|
|
100
|
+
}
|
|
101
|
+
// validate the public key
|
|
102
|
+
const secp256k1 = new elliptic_1.ec('secp256k1');
|
|
103
|
+
try {
|
|
104
|
+
const keyPair = secp256k1.keyFromPublic(pubBuf);
|
|
105
|
+
const { result } = keyPair.validate();
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Returns whether or not the string is a valid protocol private key, or extended
|
|
114
|
+
* private key.
|
|
115
|
+
*
|
|
116
|
+
* The protocol key format is described in the @stacks/transactions npm package, in the
|
|
117
|
+
* createStacksPrivateKey function:
|
|
118
|
+
* https://github.com/blockstack/stacks.js/blob/master/packages/transactions/src/keys.ts#L125
|
|
119
|
+
*
|
|
120
|
+
* @param {string} prv - the private key (or extended private key) to be validated
|
|
121
|
+
* @returns {boolean} - the validation result
|
|
122
|
+
*/
|
|
123
|
+
isValidPrivateKey(prv) {
|
|
124
|
+
if (sdk_core_1.isValidXprv(prv))
|
|
125
|
+
return true;
|
|
126
|
+
if (prv.length !== 64 && prv.length !== 66)
|
|
127
|
+
return false;
|
|
128
|
+
if (prv.length === 66 && prv.slice(64) !== '01')
|
|
129
|
+
return false;
|
|
130
|
+
return this.allHexChars(prv);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Returns whether or not the string is a composed of hex chars only
|
|
134
|
+
*
|
|
135
|
+
* @param {string} maybe - the string to be validated
|
|
136
|
+
* @returns {boolean} - the validation result
|
|
137
|
+
*/
|
|
138
|
+
allHexChars(maybe) {
|
|
139
|
+
return /^([0-9a-f])+$/i.test(maybe);
|
|
140
|
+
}
|
|
141
|
+
/** @inheritdoc */
|
|
142
|
+
isValidSignature(signature) {
|
|
143
|
+
throw new sdk_core_1.NotImplementedError('isValidSignature not implemented');
|
|
144
|
+
}
|
|
145
|
+
/** @inheritdoc */
|
|
146
|
+
isValidTransactionId(txId) {
|
|
147
|
+
throw new sdk_core_1.NotImplementedError('isValidTransactionId not implemented');
|
|
148
|
+
}
|
|
149
|
+
getCredentials(tx) {
|
|
150
|
+
return tx.getIns().map((ins) => platformvm_1.SelectCredentialClass(ins.getInput().getCredentialID()));
|
|
151
|
+
}
|
|
152
|
+
from(raw) {
|
|
153
|
+
const tx = new platformvm_1.Tx();
|
|
154
|
+
try {
|
|
155
|
+
tx.fromString(raw);
|
|
156
|
+
return tx;
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
const utx = new platformvm_1.UnsignedTx();
|
|
160
|
+
utx.fromBuffer(utils.cb58Decode(raw));
|
|
161
|
+
return new platformvm_1.Tx(utx, []);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Avaxp wrapper to create signature and return it for credentials using Avalanche's buffer
|
|
166
|
+
* @param network
|
|
167
|
+
* @param message
|
|
168
|
+
* @param prv
|
|
169
|
+
* @return signature
|
|
170
|
+
*/
|
|
171
|
+
createSignatureAvaxBuffer(network, message, prv) {
|
|
172
|
+
const ky = new keychain_1.KeyPair(network.hrp, network.networkID.toString());
|
|
173
|
+
ky.importKey(prv);
|
|
174
|
+
return ky.sign(message);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Avaxp wrapper to create signature and return it for credentials
|
|
178
|
+
* @param network
|
|
179
|
+
* @param message
|
|
180
|
+
* @param prv
|
|
181
|
+
* @return signature
|
|
182
|
+
*/
|
|
183
|
+
createSignature(network, message, prv) {
|
|
184
|
+
return Buffer.from(this.createSignatureAvaxBuffer(network, avalanche_1.Buffer.from(message), avalanche_1.Buffer.from(prv)));
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Avaxp wrapper to verify signature using Avalanche's buffer
|
|
188
|
+
* @param network
|
|
189
|
+
* @param message
|
|
190
|
+
* @param signature
|
|
191
|
+
* @param prv
|
|
192
|
+
* @return true if it's verify successful
|
|
193
|
+
*/
|
|
194
|
+
verifySignatureAvaxBuffer(network, message, signature, prv) {
|
|
195
|
+
const ky = new keychain_1.KeyPair(network.hrp, network.networkID.toString());
|
|
196
|
+
ky.importKey(prv);
|
|
197
|
+
return ky.verify(message, signature);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Avaxp wrapper to verify signature
|
|
201
|
+
* @param network
|
|
202
|
+
* @param message
|
|
203
|
+
* @param signature
|
|
204
|
+
* @param prv
|
|
205
|
+
* @return true if it's verify successful
|
|
206
|
+
*/
|
|
207
|
+
verifySignature(network, message, signature, prv) {
|
|
208
|
+
return this.verifySignatureAvaxBuffer(network, avalanche_1.Buffer.from(message), avalanche_1.Buffer.from(signature), avalanche_1.Buffer.from(prv));
|
|
209
|
+
}
|
|
210
|
+
createSig(sigHex) {
|
|
211
|
+
const sig = new common_1.Signature();
|
|
212
|
+
sig.fromBuffer(avalanche_1.Buffer.from(sigHex.padStart(130, '0'), 'hex'));
|
|
213
|
+
return sig;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Avaxp wrapper to recovery signature using Avalanche's buffer
|
|
217
|
+
* @param network
|
|
218
|
+
* @param message
|
|
219
|
+
* @param signature
|
|
220
|
+
* @return
|
|
221
|
+
*/
|
|
222
|
+
recoverySignatureAvaxBuffer(network, message, signature) {
|
|
223
|
+
const ky = new keychain_1.KeyPair(network.hrp, network.networkID.toString());
|
|
224
|
+
return ky.recover(message, signature);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Avaxp wrapper to verify signature
|
|
228
|
+
* @param network
|
|
229
|
+
* @param message
|
|
230
|
+
* @param signature
|
|
231
|
+
* @return true if it's verify successful
|
|
232
|
+
*/
|
|
233
|
+
recoverySignature(network, message, signature) {
|
|
234
|
+
return Buffer.from(this.recoverySignatureAvaxBuffer(network, avalanche_1.Buffer.from(message), avalanche_1.Buffer.from(signature)));
|
|
235
|
+
}
|
|
236
|
+
sha256(buf) {
|
|
237
|
+
return createHash.default('sha256').update(buf).digest();
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Check the raw transaction has a valid format in the blockchain context, throw otherwise.
|
|
241
|
+
* It's to reuse in TransactionBuilder and TransactionBuilderFactory
|
|
242
|
+
*
|
|
243
|
+
* @param rawTransaction Transaction as hex string
|
|
244
|
+
*/
|
|
245
|
+
validateRawTransaction(rawTransaction) {
|
|
246
|
+
if (!rawTransaction) {
|
|
247
|
+
throw new sdk_core_1.InvalidTransactionError('Raw transaction is empty');
|
|
248
|
+
}
|
|
249
|
+
if (!utils.allHexChars(rawTransaction)) {
|
|
250
|
+
throw new sdk_core_1.ParseTransactionError('Raw transaction is not hex string');
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
exports.Utils = Utils;
|
|
255
|
+
const utils = new Utils();
|
|
256
|
+
exports.default = utils;
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FPeUI7QUFDekIseUNBQTJEO0FBQzNELGdEQUE0RDtBQUM1RCx1Q0FBOEI7QUFDOUIsK0RBQStGO0FBRS9GLHNFQUFpRjtBQUVqRixrREFBa0Q7QUFDbEQsd0RBQTBDO0FBRTFDLE1BQWEsS0FBSztJQUFsQjtRQUNVLGFBQVEsR0FBRyxvQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUN0QyxlQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDdEMsbUJBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUM5QyxtQkFBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQzlDLHlCQUFvQixHQUFHLDRCQUFvQixDQUFDO1FBQzVDLG9CQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUF5RWhELGlCQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQXNLMUYsQ0FBQztJQTdPUSxTQUFTLENBQUMsZUFBeUIsRUFBRSxtQkFBNkI7UUFDdkUsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFRDs7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QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNWYWxpZFhwdWIsXG4gIGlzVmFsaWRYcHJ2LFxuICBOb3RJbXBsZW1lbnRlZEVycm9yLFxuICBCYXNlVXRpbHMsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCaW5Ub29scywgQnVmZmVyIGFzIEJ1ZmZlckF2YXggfSBmcm9tICdhdmFsYW5jaGUnO1xuaW1wb3J0IHsgTm9kZUlEU3RyaW5nVG9CdWZmZXIgfSBmcm9tICdhdmFsYW5jaGUvZGlzdC91dGlscyc7XG5pbXBvcnQgeyBlYyB9IGZyb20gJ2VsbGlwdGljJztcbmltcG9ydCB7IEJhc2VUeCwgU2VsZWN0Q3JlZGVudGlhbENsYXNzLCBUeCwgVW5zaWduZWRUeCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5pbXBvcnQgeyBDcmVkZW50aWFsIH0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvY29tbW9uL2NyZWRlbnRpYWxzJztcbmltcG9ydCB7IEtleVBhaXIgYXMgS2V5UGFpckF2YXggfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL3BsYXRmb3Jtdm0va2V5Y2hhaW4nO1xuaW1wb3J0IHsgQXZhbGFuY2hlTmV0d29yayB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFNpZ25hdHVyZSB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2NvbW1vbic7XG5pbXBvcnQgKiBhcyBjcmVhdGVIYXNoIGZyb20gJ2NyZWF0ZS1oYXNoJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgcHJpdmF0ZSBiaW5Ub29scyA9IEJpblRvb2xzLmdldEluc3RhbmNlKCk7XG4gIHB1YmxpYyBjYjU4RGVjb2RlID0gdGhpcy5iaW5Ub29scy5jYjU4RGVjb2RlO1xuICBwdWJsaWMgY2I1OEVuY29kZSA9IHRoaXMuYmluVG9vbHMuY2I1OEVuY29kZTtcbiAgcHVibGljIHN0cmluZ1RvQnVmZmVyID0gdGhpcy5iaW5Ub29scy5zdHJpbmdUb0J1ZmZlcjtcbiAgcHVibGljIGJ1ZmZlclRvU3RyaW5nID0gdGhpcy5iaW5Ub29scy5idWZmZXJUb1N0cmluZztcbiAgcHVibGljIE5vZGVJRFN0cmluZ1RvQnVmZmVyID0gTm9kZUlEU3RyaW5nVG9CdWZmZXI7XG4gIHB1YmxpYyBhZGRyZXNzVG9TdHJpbmcgPSB0aGlzLmJpblRvb2xzLmFkZHJlc3NUb1N0cmluZztcblxuICBwdWJsaWMgaW5jbHVkZUluKHdhbGxldEFkZHJlc3Nlczogc3RyaW5nW10sIG90eG9PdXRwdXRBZGRyZXNzZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHdhbGxldEFkZHJlc3Nlcy5tYXAoKGEpID0+IG90eG9PdXRwdXRBZGRyZXNzZXMuaW5jbHVkZXMoYSkpLnJlZHVjZSgoYSwgYikgPT4gYSAmJiBiLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgaXQgaXMgYSB2YWxpZCBhZGRyZXNzIG5vIGlsbGVnYWwgY2hhcmFjdGVyc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIGFkZHJlc3MgdG8gYmUgdmFsaWRhdGVkXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoYWRkcmVzcyBhcyBzdHJpbmcpLm1hdGNoKC9eW2EtekEtWjAtOV0rJC8pICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBpdCBpcyBhIHZhbGlkIGJsb2NrSWQgd2l0aCBsZW5ndGggNjYgaW5jbHVkaW5nIDB4XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gYmxvY2tJZCB0byBiZSB2YWxpZGF0ZWRcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gICAqL1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGhhc2gubGVuZ3RoICE9PSA2NiB8fCBoYXNoLnNsaWNlKDAsIDIpICE9PSAnMHgnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAoaGFzaCBhcyBzdHJpbmcpLm1hdGNoKC9eW2EtekEtWjAtOV0rJC8pICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgcHJvdG9jb2wgcHVibGljIGtleSBvclxuICAgKiBleHRlbmRlZCBwdWJsaWMga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIC0gdGhlICBwdWJsaWMga2V5IHRvIGJlIHZhbGlkYXRlZFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRQdWJsaWNLZXkocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaXNWYWxpZFhwdWIocHViKSkgcmV0dXJuIHRydWU7XG5cbiAgICBsZXQgcHViQnVmO1xuICAgIGlmIChwdWIubGVuZ3RoID09PSA1MCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcHViQnVmID0gdXRpbHMuY2I1OERlY29kZShwdWIpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHB1Yi5sZW5ndGggIT09IDY2ICYmIHB1Yi5sZW5ndGggIT09IDEzMCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjb25zdCBmaXJzdEJ5dGUgPSBwdWIuc2xpY2UoMCwgMik7XG5cbiAgICAgIC8vIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5XG4gICAgICBpZiAocHViLmxlbmd0aCA9PT0gMTMwICYmIGZpcnN0Qnl0ZSAhPT0gJzA0JykgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAvLyBjb21wcmVzc2VkIHB1YmxpYyBrZXlcbiAgICAgIGlmIChwdWIubGVuZ3RoID09PSA2NiAmJiBmaXJzdEJ5dGUgIT09ICcwMicgJiYgZmlyc3RCeXRlICE9PSAnMDMnKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGlmICghdGhpcy5hbGxIZXhDaGFycyhwdWIpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHB1YkJ1ZiA9IEJ1ZmZlckF2YXguZnJvbShwdWIsICdoZXgnKTtcbiAgICB9XG4gICAgLy8gdmFsaWRhdGUgdGhlIHB1YmxpYyBrZXlcbiAgICBjb25zdCBzZWNwMjU2azEgPSBuZXcgZWMoJ3NlY3AyNTZrMScpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gc2VjcDI1NmsxLmtleUZyb21QdWJsaWMocHViQnVmKTtcbiAgICAgIGNvbnN0IHsgcmVzdWx0IH0gPSBrZXlQYWlyLnZhbGlkYXRlKCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcHVibGljIHBhcnNlQWRkcmVzcyA9IChwdWI6IHN0cmluZyk6IEJ1ZmZlckF2YXggPT4gdGhpcy5iaW5Ub29scy5wYXJzZUFkZHJlc3MocHViLCAnUCcpO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBwcm90b2NvbCBwcml2YXRlIGtleSwgb3IgZXh0ZW5kZWRcbiAgICogcHJpdmF0ZSBrZXkuXG4gICAqXG4gICAqIFRoZSBwcm90b2NvbCBrZXkgZm9ybWF0IGlzIGRlc2NyaWJlZCBpbiB0aGUgQHN0YWNrcy90cmFuc2FjdGlvbnMgbnBtIHBhY2thZ2UsIGluIHRoZVxuICAgKiBjcmVhdGVTdGFja3NQcml2YXRlS2V5IGZ1bmN0aW9uOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYmxvY2tzdGFjay9zdGFja3MuanMvYmxvYi9tYXN0ZXIvcGFja2FnZXMvdHJhbnNhY3Rpb25zL3NyYy9rZXlzLnRzI0wxMjVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiAtIHRoZSBwcml2YXRlIGtleSAob3IgZXh0ZW5kZWQgcHJpdmF0ZSBrZXkpIHRvIGJlIHZhbGlkYXRlZFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzVmFsaWRYcHJ2KHBydikpIHJldHVybiB0cnVlO1xuXG4gICAgaWYgKHBydi5sZW5ndGggIT09IDY0ICYmIHBydi5sZW5ndGggIT09IDY2KSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAocHJ2Lmxlbmd0aCA9PT0gNjYgJiYgcHJ2LnNsaWNlKDY0KSAhPT0gJzAxJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIHRoaXMuYWxsSGV4Q2hhcnMocHJ2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSBjb21wb3NlZCBvZiBoZXggY2hhcnMgb25seVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWF5YmUgLSB0aGUgIHN0cmluZyB0byBiZSB2YWxpZGF0ZWRcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gICAqL1xuICBhbGxIZXhDaGFycyhtYXliZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eKFswLTlhLWZdKSskL2kudGVzdChtYXliZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdpc1ZhbGlkU2lnbmF0dXJlIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdpc1ZhbGlkVHJhbnNhY3Rpb25JZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGdldENyZWRlbnRpYWxzKHR4OiBCYXNlVHgpOiBDcmVkZW50aWFsW10ge1xuICAgIHJldHVybiB0eC5nZXRJbnMoKS5tYXAoKGlucykgPT4gU2VsZWN0Q3JlZGVudGlhbENsYXNzKGlucy5nZXRJbnB1dCgpLmdldENyZWRlbnRpYWxJRCgpKSk7XG4gIH1cblxuICBmcm9tKHJhdzogc3RyaW5nKTogVHgge1xuICAgIGNvbnN0IHR4ID0gbmV3IFR4KCk7XG4gICAgdHJ5IHtcbiAgICAgIHR4LmZyb21TdHJpbmcocmF3KTtcbiAgICAgIHJldHVybiB0eDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IHV0eCA9IG5ldyBVbnNpZ25lZFR4KCk7XG4gICAgICB1dHguZnJvbUJ1ZmZlcih1dGlscy5jYjU4RGVjb2RlKHJhdykpO1xuICAgICAgcmV0dXJuIG5ldyBUeCh1dHgsIFtdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXZheHAgd3JhcHBlciB0byBjcmVhdGUgc2lnbmF0dXJlIGFuZCByZXR1cm4gaXQgZm9yIGNyZWRlbnRpYWxzIHVzaW5nIEF2YWxhbmNoZSdzIGJ1ZmZlclxuICAgKiBAcGFyYW0gbmV0d29ya1xuICAgKiBAcGFyYW0gbWVzc2FnZVxuICAgKiBAcGFyYW0gcHJ2XG4gICAqIEByZXR1cm4gc2lnbmF0dXJlXG4gICAqL1xuICBjcmVhdGVTaWduYXR1cmVBdmF4QnVmZmVyKG5ldHdvcms6IEF2YWxhbmNoZU5ldHdvcmssIG1lc3NhZ2U6IEJ1ZmZlckF2YXgsIHBydjogQnVmZmVyQXZheCk6IEJ1ZmZlckF2YXgge1xuICAgIGNvbnN0IGt5ID0gbmV3IEtleVBhaXJBdmF4KG5ldHdvcmsuaHJwLCBuZXR3b3JrLm5ldHdvcmtJRC50b1N0cmluZygpKTtcbiAgICBreS5pbXBvcnRLZXkocHJ2KTtcbiAgICByZXR1cm4ga3kuc2lnbihtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdmF4cCB3cmFwcGVyIHRvIGNyZWF0ZSBzaWduYXR1cmUgYW5kIHJldHVybiBpdCBmb3IgY3JlZGVudGlhbHNcbiAgICogQHBhcmFtIG5ldHdvcmtcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICogQHBhcmFtIHBydlxuICAgKiBAcmV0dXJuIHNpZ25hdHVyZVxuICAgKi9cbiAgY3JlYXRlU2lnbmF0dXJlKG5ldHdvcms6IEF2YWxhbmNoZU5ldHdvcmssIG1lc3NhZ2U6IEJ1ZmZlciwgcHJ2OiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLmNyZWF0ZVNpZ25hdHVyZUF2YXhCdWZmZXIobmV0d29yaywgQnVmZmVyQXZheC5mcm9tKG1lc3NhZ2UpLCBCdWZmZXJBdmF4LmZyb20ocHJ2KSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF2YXhwIHdyYXBwZXIgdG8gdmVyaWZ5IHNpZ25hdHVyZSB1c2luZyBBdmFsYW5jaGUncyBidWZmZXJcbiAgICogQHBhcmFtIG5ldHdvcmtcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICogQHBhcmFtIHNpZ25hdHVyZVxuICAgKiBAcGFyYW0gcHJ2XG4gICAqIEByZXR1cm4gdHJ1ZSBpZiBpdCdzIHZlcmlmeSBzdWNjZXNzZnVsXG4gICAqL1xuICB2ZXJpZnlTaWduYXR1cmVBdmF4QnVmZmVyKFxuICAgIG5ldHdvcms6IEF2YWxhbmNoZU5ldHdvcmssXG4gICAgbWVzc2FnZTogQnVmZmVyQXZheCxcbiAgICBzaWduYXR1cmU6IEJ1ZmZlckF2YXgsXG4gICAgcHJ2OiBCdWZmZXJBdmF4XG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGt5ID0gbmV3IEtleVBhaXJBdmF4KG5ldHdvcmsuaHJwLCBuZXR3b3JrLm5ldHdvcmtJRC50b1N0cmluZygpKTtcbiAgICBreS5pbXBvcnRLZXkocHJ2KTtcbiAgICByZXR1cm4ga3kudmVyaWZ5KG1lc3NhZ2UsIHNpZ25hdHVyZSk7XG4gIH1cblxuICAvKipcbiAgICogQXZheHAgd3JhcHBlciB0byB2ZXJpZnkgc2lnbmF0dXJlXG4gICAqIEBwYXJhbSBuZXR3b3JrXG4gICAqIEBwYXJhbSBtZXNzYWdlXG4gICAqIEBwYXJhbSBzaWduYXR1cmVcbiAgICogQHBhcmFtIHBydlxuICAgKiBAcmV0dXJuIHRydWUgaWYgaXQncyB2ZXJpZnkgc3VjY2Vzc2Z1bFxuICAgKi9cbiAgdmVyaWZ5U2lnbmF0dXJlKG5ldHdvcms6IEF2YWxhbmNoZU5ldHdvcmssIG1lc3NhZ2U6IEJ1ZmZlciwgc2lnbmF0dXJlOiBCdWZmZXIsIHBydjogQnVmZmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmVyaWZ5U2lnbmF0dXJlQXZheEJ1ZmZlcihcbiAgICAgIG5ldHdvcmssXG4gICAgICBCdWZmZXJBdmF4LmZyb20obWVzc2FnZSksXG4gICAgICBCdWZmZXJBdmF4LmZyb20oc2lnbmF0dXJlKSxcbiAgICAgIEJ1ZmZlckF2YXguZnJvbShwcnYpXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZVNpZyhzaWdIZXg6IHN0cmluZyk6IFNpZ25hdHVyZSB7XG4gICAgY29uc3Qgc2lnID0gbmV3IFNpZ25hdHVyZSgpO1xuICAgIHNpZy5mcm9tQnVmZmVyKEJ1ZmZlckF2YXguZnJvbShzaWdIZXgucGFkU3RhcnQoMTMwLCAnMCcpLCAnaGV4JykpO1xuICAgIHJldHVybiBzaWc7XG4gIH1cblxuICAvKipcbiAgICogQXZheHAgd3JhcHBlciB0byByZWNvdmVyeSBzaWduYXR1cmUgdXNpbmcgQXZhbGFuY2hlJ3MgYnVmZmVyXG4gICAqIEBwYXJhbSBuZXR3b3JrXG4gICAqIEBwYXJhbSBtZXNzYWdlXG4gICAqIEBwYXJhbSBzaWduYXR1cmVcbiAgICogQHJldHVyblxuICAgKi9cbiAgcmVjb3ZlcnlTaWduYXR1cmVBdmF4QnVmZmVyKG5ldHdvcms6IEF2YWxhbmNoZU5ldHdvcmssIG1lc3NhZ2U6IEJ1ZmZlckF2YXgsIHNpZ25hdHVyZTogQnVmZmVyQXZheCk6IEJ1ZmZlckF2YXgge1xuICAgIGNvbnN0IGt5ID0gbmV3IEtleVBhaXJBdmF4KG5ldHdvcmsuaHJwLCBuZXR3b3JrLm5ldHdvcmtJRC50b1N0cmluZygpKTtcbiAgICByZXR1cm4ga3kucmVjb3ZlcihtZXNzYWdlLCBzaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF2YXhwIHdyYXBwZXIgdG8gdmVyaWZ5IHNpZ25hdHVyZVxuICAgKiBAcGFyYW0gbmV0d29ya1xuICAgKiBAcGFyYW0gbWVzc2FnZVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlXG4gICAqIEByZXR1cm4gdHJ1ZSBpZiBpdCdzIHZlcmlmeSBzdWNjZXNzZnVsXG4gICAqL1xuICByZWNvdmVyeVNpZ25hdHVyZShuZXR3b3JrOiBBdmFsYW5jaGVOZXR3b3JrLCBtZXNzYWdlOiBCdWZmZXIsIHNpZ25hdHVyZTogQnVmZmVyKTogQnVmZmVyIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5yZWNvdmVyeVNpZ25hdHVyZUF2YXhCdWZmZXIobmV0d29yaywgQnVmZmVyQXZheC5mcm9tKG1lc3NhZ2UpLCBCdWZmZXJBdmF4LmZyb20oc2lnbmF0dXJlKSkpO1xuICB9XG5cbiAgc2hhMjU2KGJ1ZjogVWludDhBcnJheSk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIGNyZWF0ZUhhc2guZGVmYXVsdCgnc2hhMjU2JykudXBkYXRlKGJ1ZikuZGlnZXN0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIHJhdyB0cmFuc2FjdGlvbiBoYXMgYSB2YWxpZCBmb3JtYXQgaW4gdGhlIGJsb2NrY2hhaW4gY29udGV4dCwgdGhyb3cgb3RoZXJ3aXNlLlxuICAgKiBJdCdzIHRvIHJldXNlIGluIFRyYW5zYWN0aW9uQnVpbGRlciBhbmQgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeVxuICAgKlxuICAgKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb24gVHJhbnNhY3Rpb24gYXMgaGV4IHN0cmluZ1xuICAgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdSYXcgdHJhbnNhY3Rpb24gaXMgZW1wdHknKTtcbiAgICB9XG4gICAgaWYgKCF1dGlscy5hbGxIZXhDaGFycyhyYXdUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBub3QgaGV4IHN0cmluZycpO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { DelegatorTxBuilder } from './delegatorTxBuilder';
|
|
2
2
|
import { BaseCoin } from '@bitgo/statics';
|
|
3
|
-
import { BaseTx } from 'avalanche/dist/apis/platformvm';
|
|
3
|
+
import { AddValidatorTx, BaseTx, Tx } from 'avalanche/dist/apis/platformvm';
|
|
4
|
+
import { TransactionType } from '@bitgo/sdk-core';
|
|
4
5
|
export declare class ValidatorTxBuilder extends DelegatorTxBuilder {
|
|
5
6
|
protected _delegationFeeRate: number;
|
|
6
7
|
/**
|
|
7
8
|
* @param coinConfig
|
|
8
9
|
*/
|
|
9
10
|
constructor(coinConfig: Readonly<BaseCoin>);
|
|
11
|
+
/**
|
|
12
|
+
* get transaction type
|
|
13
|
+
* @protected
|
|
14
|
+
*/
|
|
15
|
+
protected get transactionType(): TransactionType;
|
|
10
16
|
/**
|
|
11
17
|
* set the delegationFeeRate
|
|
12
18
|
* @param value BigInt
|
|
@@ -22,11 +28,13 @@ export declare class ValidatorTxBuilder extends DelegatorTxBuilder {
|
|
|
22
28
|
* @param tx BaseTx
|
|
23
29
|
* @returns ValidatorTxBuilder
|
|
24
30
|
*/
|
|
25
|
-
initBuilder(tx
|
|
31
|
+
initBuilder(tx: Tx): this;
|
|
32
|
+
static verifyTxType(baseTx: BaseTx): baseTx is AddValidatorTx;
|
|
33
|
+
verifyTxType(baseTx: BaseTx): baseTx is AddValidatorTx;
|
|
26
34
|
/**
|
|
27
35
|
* Build the validator transaction
|
|
28
36
|
* @protected
|
|
29
37
|
*/
|
|
30
|
-
protected buildAvaxpTransaction():
|
|
38
|
+
protected buildAvaxpTransaction(): void;
|
|
31
39
|
}
|
|
32
40
|
//# sourceMappingURL=validatorTxBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatorTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/validatorTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,EAAuB,EAAE,EAAc,MAAM,gCAAgC,CAAC;AAC7G,OAAO,EAAuC,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvF,qBAAa,kBAAmB,SAAQ,kBAAkB;IACxD,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAErC;;OAEG;gBACS,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAI1C;;;OAGG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtC;;;OAGG;IACH,yBAAyB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAQ1D;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAUzB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAI7D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAItD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;CAwBxC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
* get transaction type
|
|
20
|
+
* @protected
|
|
21
|
+
*/
|
|
22
|
+
get transactionType() {
|
|
23
|
+
return sdk_core_1.TransactionType.addValidator;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* set the delegationFeeRate
|
|
27
|
+
* @param value BigInt
|
|
28
|
+
*/
|
|
29
|
+
delegationFeeRate(value) {
|
|
30
|
+
this.validateDelegationFeeRate(value);
|
|
31
|
+
this._delegationFeeRate = value;
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Validate that the delegation fee is at least the minDelegationFee
|
|
36
|
+
* @param delegationFeeRate BigInt
|
|
37
|
+
*/
|
|
38
|
+
validateDelegationFeeRate(delegationFeeRate) {
|
|
39
|
+
if (delegationFeeRate < this.transaction._network.minDelegationFee) {
|
|
40
|
+
throw new sdk_core_1.BuildTransactionError(`Delegation fee cannot be less than ${this.transaction._network.minDelegationFee}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Initialize the builder
|
|
45
|
+
* @param tx BaseTx
|
|
46
|
+
* @returns ValidatorTxBuilder
|
|
47
|
+
*/
|
|
48
|
+
initBuilder(tx) {
|
|
49
|
+
super.initBuilder(tx);
|
|
50
|
+
const baseTx = tx.getUnsignedTx().getTransaction();
|
|
51
|
+
if (!this.verifyTxType(baseTx)) {
|
|
52
|
+
throw new sdk_core_1.NotSupported('Transaction cannot be parsed or has an unsupported transaction type');
|
|
53
|
+
}
|
|
54
|
+
this._delegationFeeRate = baseTx.getDelegationFee();
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
static verifyTxType(baseTx) {
|
|
58
|
+
return baseTx.getTypeID() === platformvm_1.PlatformVMConstants.ADDVALIDATORTX;
|
|
59
|
+
}
|
|
60
|
+
verifyTxType(baseTx) {
|
|
61
|
+
return ValidatorTxBuilder.verifyTxType(baseTx);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Build the validator transaction
|
|
65
|
+
* @protected
|
|
66
|
+
*/
|
|
67
|
+
buildAvaxpTransaction() {
|
|
68
|
+
const { inputs, outputs, credentials } = this.createInputOutput();
|
|
69
|
+
this.transaction.setTransaction(new platformvm_1.Tx(new platformvm_1.UnsignedTx(new platformvm_1.AddValidatorTx(this.transaction._networkID, this.transaction._blockchainID, outputs, inputs, this.transaction._memo, utils_1.default.NodeIDStringToBuffer(this._nodeID), this._startTime, this._endTime, this._stakeAmount, [this.stakeTransferOut()], this.rewardOwnersOutput(), this._delegationFeeRate)), credentials));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.ValidatorTxBuilder = ValidatorTxBuilder;
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92YWxpZGF0b3JUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTBEO0FBRTFELCtEQUE2RztBQUM3Ryw4Q0FBdUY7QUFDdkYsb0RBQTRCO0FBRTVCLE1BQWEsa0JBQW1CLFNBQVEsdUNBQWtCO0lBR3hEOztPQUVHO0lBQ0gsWUFBWSxVQUE4QjtRQUN4QyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsWUFBWSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlCQUF5QixDQUFDLGlCQUF5QjtRQUNqRCxJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFO1lBQ2xFLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0Isc0NBQXNDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQ25GLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLEVBQU07UUFDaEIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixNQUFNLE1BQU0sR0FBVyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLHVCQUFZLENBQUMscUVBQXFFLENBQUMsQ0FBQztTQUMvRjtRQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQWM7UUFDaEMsT0FBTyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssZ0NBQW1CLENBQUMsY0FBYyxDQUFDO0lBQ25FLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUN6QixPQUFPLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08scUJBQXFCO1FBQzdCLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2xFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUM3QixJQUFJLGVBQUUsQ0FDSixJQUFJLHVCQUFVLENBQ1osSUFBSSwyQkFBYyxDQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQzlCLE9BQU8sRUFDUCxNQUFNLEVBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQ3RCLGVBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQ3hDLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsWUFBWSxFQUNqQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQ3pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQ3hCLENBQ0YsRUFDRCxXQUFXLENBQ1osQ0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBM0ZELGdEQTJGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlbGVnYXRvclR4QnVpbGRlciB9IGZyb20gJy4vZGVsZWdhdG9yVHhCdWlsZGVyJztcbmltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQWRkVmFsaWRhdG9yVHgsIEJhc2VUeCwgUGxhdGZvcm1WTUNvbnN0YW50cywgVHgsIFVuc2lnbmVkVHggfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL3BsYXRmb3Jtdm0nO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBOb3RTdXBwb3J0ZWQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JUeEJ1aWxkZXIgZXh0ZW5kcyBEZWxlZ2F0b3JUeEJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX2RlbGVnYXRpb25GZWVSYXRlOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjb2luQ29uZmlnXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgdHJhbnNhY3Rpb24gdHlwZVxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuYWRkVmFsaWRhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCB0aGUgZGVsZWdhdGlvbkZlZVJhdGVcbiAgICogQHBhcmFtIHZhbHVlIEJpZ0ludFxuICAgKi9cbiAgZGVsZWdhdGlvbkZlZVJhdGUodmFsdWU6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVEZWxlZ2F0aW9uRmVlUmF0ZSh2YWx1ZSk7XG4gICAgdGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGF0IHRoZSBkZWxlZ2F0aW9uIGZlZSBpcyBhdCBsZWFzdCB0aGUgbWluRGVsZWdhdGlvbkZlZVxuICAgKiBAcGFyYW0gZGVsZWdhdGlvbkZlZVJhdGUgQmlnSW50XG4gICAqL1xuICB2YWxpZGF0ZURlbGVnYXRpb25GZWVSYXRlKGRlbGVnYXRpb25GZWVSYXRlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZGVsZWdhdGlvbkZlZVJhdGUgPCB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1pbkRlbGVnYXRpb25GZWUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBEZWxlZ2F0aW9uIGZlZSBjYW5ub3QgYmUgbGVzcyB0aGFuICR7dGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5taW5EZWxlZ2F0aW9uRmVlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHR4IEJhc2VUeFxuICAgKiBAcmV0dXJucyBWYWxpZGF0b3JUeEJ1aWxkZXJcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUeCk6IHRoaXMge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCBiYXNlVHg6IEJhc2VUeCA9IHR4LmdldFVuc2lnbmVkVHgoKS5nZXRUcmFuc2FjdGlvbigpO1xuICAgIGlmICghdGhpcy52ZXJpZnlUeFR5cGUoYmFzZVR4KSkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnVHJhbnNhY3Rpb24gY2Fubm90IGJlIHBhcnNlZCBvciBoYXMgYW4gdW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cbiAgICB0aGlzLl9kZWxlZ2F0aW9uRmVlUmF0ZSA9IGJhc2VUeC5nZXREZWxlZ2F0aW9uRmVlKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGF0aWMgdmVyaWZ5VHhUeXBlKGJhc2VUeDogQmFzZVR4KTogYmFzZVR4IGlzIEFkZFZhbGlkYXRvclR4IHtcbiAgICByZXR1cm4gYmFzZVR4LmdldFR5cGVJRCgpID09PSBQbGF0Zm9ybVZNQ29uc3RhbnRzLkFERFZBTElEQVRPUlRYO1xuICB9XG5cbiAgdmVyaWZ5VHhUeXBlKGJhc2VUeDogQmFzZVR4KTogYmFzZVR4IGlzIEFkZFZhbGlkYXRvclR4IHtcbiAgICByZXR1cm4gVmFsaWRhdG9yVHhCdWlsZGVyLnZlcmlmeVR4VHlwZShiYXNlVHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSB2YWxpZGF0b3IgdHJhbnNhY3Rpb25cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkQXZheHBUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB7IGlucHV0cywgb3V0cHV0cywgY3JlZGVudGlhbHMgfSA9IHRoaXMuY3JlYXRlSW5wdXRPdXRwdXQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKFxuICAgICAgbmV3IFR4KFxuICAgICAgICBuZXcgVW5zaWduZWRUeChcbiAgICAgICAgICBuZXcgQWRkVmFsaWRhdG9yVHgoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQsXG4gICAgICAgICAgICBvdXRwdXRzLFxuICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbWVtbyxcbiAgICAgICAgICAgIHV0aWxzLk5vZGVJRFN0cmluZ1RvQnVmZmVyKHRoaXMuX25vZGVJRCksXG4gICAgICAgICAgICB0aGlzLl9zdGFydFRpbWUsXG4gICAgICAgICAgICB0aGlzLl9lbmRUaW1lLFxuICAgICAgICAgICAgdGhpcy5fc3Rha2VBbW91bnQsXG4gICAgICAgICAgICBbdGhpcy5zdGFrZVRyYW5zZmVyT3V0KCldLFxuICAgICAgICAgICAgdGhpcy5yZXdhcmRPd25lcnNPdXRwdXQoKSxcbiAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRpb25GZWVSYXRlXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjcmVkZW50aWFsc1xuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseCoin, BitGoBase } from '@bitgo/sdk-core';
|
|
2
|
+
import { AvaxP } from './avaxp';
|
|
3
|
+
import { BaseCoin as StaticsBaseCoin } from '@bitgo/statics';
|
|
4
|
+
export declare class TavaxP extends AvaxP {
|
|
5
|
+
protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
|
|
6
|
+
constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
|
|
7
|
+
static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>): BaseCoin;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=tavaxp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tavaxp.d.ts","sourceRoot":"","sources":["../../src/tavaxp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE7D,qBAAa,MAAO,SAAQ,KAAK;IAC/B,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE/C,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAIrE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;CAG3F"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TavaxP = void 0;
|
|
4
|
+
const avaxp_1 = require("./avaxp");
|
|
5
|
+
class TavaxP extends avaxp_1.AvaxP {
|
|
6
|
+
constructor(bitgo, staticsCoin) {
|
|
7
|
+
super(bitgo, staticsCoin);
|
|
8
|
+
}
|
|
9
|
+
static createInstance(bitgo, staticsCoin) {
|
|
10
|
+
return new TavaxP(bitgo, staticsCoin);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.TavaxP = TavaxP;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF2YXhwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhdmF4cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtQ0FBZ0M7QUFHaEMsTUFBYSxNQUFPLFNBQVEsYUFBSztJQUcvQixZQUFZLEtBQWdCLEVBQUUsV0FBdUM7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQVZELHdCQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4sIEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBBdmF4UCB9IGZyb20gJy4vYXZheHAnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5leHBvcnQgY2xhc3MgVGF2YXhQIGV4dGVuZHMgQXZheFAge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgVGF2YXhQKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cbn1cbiJdfQ==
|