@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.
Files changed (69) hide show
  1. package/CHANGELOG.md +218 -0
  2. package/README.md +39 -0
  3. package/dist/src/avaxp.d.ts +60 -0
  4. package/dist/src/avaxp.d.ts.map +1 -0
  5. package/dist/src/avaxp.js +175 -0
  6. package/dist/src/iface.d.ts +20 -41
  7. package/dist/src/iface.d.ts.map +1 -1
  8. package/dist/src/iface.js +1 -15
  9. package/dist/src/index.d.ts +4 -18
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/index.js +9 -28
  12. package/dist/src/{delegatorTxBuilder.d.ts → lib/delegatorTxBuilder.d.ts} +21 -6
  13. package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -0
  14. package/dist/src/lib/delegatorTxBuilder.js +240 -0
  15. package/dist/src/{errors.d.ts → lib/errors.d.ts} +0 -0
  16. package/dist/src/lib/errors.d.ts.map +1 -0
  17. package/dist/src/lib/errors.js +19 -0
  18. package/dist/src/lib/iface.d.ts +42 -0
  19. package/dist/src/lib/iface.d.ts.map +1 -0
  20. package/dist/src/lib/iface.js +12 -0
  21. package/dist/src/lib/index.d.ts +9 -0
  22. package/dist/src/lib/index.d.ts.map +1 -0
  23. package/dist/src/lib/index.js +29 -0
  24. package/dist/src/{keyPair.d.ts → lib/keyPair.d.ts} +13 -2
  25. package/dist/src/lib/keyPair.d.ts.map +1 -0
  26. package/dist/src/lib/keyPair.js +156 -0
  27. package/dist/src/lib/transaction.d.ts +73 -0
  28. package/dist/src/lib/transaction.d.ts.map +1 -0
  29. package/dist/src/lib/transaction.js +247 -0
  30. package/dist/src/{transactionBuilder.d.ts → lib/transactionBuilder.d.ts} +25 -22
  31. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  32. package/dist/src/lib/transactionBuilder.js +181 -0
  33. package/dist/src/{transactionBuilderFactory.d.ts → lib/transactionBuilderFactory.d.ts} +3 -4
  34. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  35. package/dist/src/lib/transactionBuilderFactory.js +50 -0
  36. package/dist/src/{transferBuilder.d.ts → lib/transferBuilder.d.ts} +0 -0
  37. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  38. package/dist/src/lib/transferBuilder.js +31 -0
  39. package/dist/src/lib/utils.d.ts +130 -0
  40. package/dist/src/lib/utils.d.ts.map +1 -0
  41. package/dist/src/lib/utils.js +257 -0
  42. package/dist/src/{validatorTxBuilder.d.ts → lib/validatorTxBuilder.d.ts} +11 -3
  43. package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -0
  44. package/dist/src/lib/validatorTxBuilder.js +73 -0
  45. package/dist/src/tavaxp.d.ts +9 -0
  46. package/dist/src/tavaxp.d.ts.map +1 -0
  47. package/dist/src/tavaxp.js +14 -0
  48. package/dist/tsconfig.tsbuildinfo +973 -2827
  49. package/package.json +15 -10
  50. package/dist/src/delegatorTxBuilder.d.ts.map +0 -1
  51. package/dist/src/delegatorTxBuilder.js +0 -183
  52. package/dist/src/errors.d.ts.map +0 -1
  53. package/dist/src/errors.js +0 -19
  54. package/dist/src/keyPair.d.ts.map +0 -1
  55. package/dist/src/keyPair.js +0 -130
  56. package/dist/src/transaction.d.ts +0 -43
  57. package/dist/src/transaction.d.ts.map +0 -1
  58. package/dist/src/transaction.js +0 -98
  59. package/dist/src/transactionBuilder.d.ts.map +0 -1
  60. package/dist/src/transactionBuilder.js +0 -171
  61. package/dist/src/transactionBuilderFactory.d.ts.map +0 -1
  62. package/dist/src/transactionBuilderFactory.js +0 -53
  63. package/dist/src/transferBuilder.d.ts.map +0 -1
  64. package/dist/src/transferBuilder.js +0 -31
  65. package/dist/src/utils.d.ts +0 -50
  66. package/dist/src/utils.d.ts.map +0 -1
  67. package/dist/src/utils.js +0 -98
  68. package/dist/src/validatorTxBuilder.d.ts.map +0 -1
  69. 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?: BaseTx): this;
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(): BaseTx;
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==