@bitgo-beta/sdk-coin-vet 1.0.1-beta.3 → 1.0.1-beta.300

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 (95) hide show
  1. package/.mocharc.yml +1 -1
  2. package/CHANGELOG.md +170 -0
  3. package/dist/src/index.d.ts +2 -0
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +3 -1
  6. package/dist/src/lib/constants.d.ts +12 -1
  7. package/dist/src/lib/constants.d.ts.map +1 -1
  8. package/dist/src/lib/constants.js +14 -3
  9. package/dist/src/lib/iface.d.ts +34 -0
  10. package/dist/src/lib/iface.d.ts.map +1 -0
  11. package/dist/src/lib/iface.js +3 -0
  12. package/dist/src/lib/index.d.ts +22 -1
  13. package/dist/src/lib/index.d.ts.map +1 -1
  14. package/dist/src/lib/index.js +44 -2
  15. package/dist/src/lib/keyPair.d.ts +26 -0
  16. package/dist/src/lib/keyPair.d.ts.map +1 -0
  17. package/dist/src/lib/keyPair.js +65 -0
  18. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts +31 -0
  19. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts.map +1 -0
  20. package/dist/src/lib/transaction/addressInitializationTransaction.js +170 -0
  21. package/dist/src/lib/transaction/burnNftTransaction.d.ts +26 -0
  22. package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
  23. package/dist/src/lib/transaction/burnNftTransaction.js +124 -0
  24. package/dist/src/lib/transaction/claimRewards.d.ts +58 -0
  25. package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
  26. package/dist/src/lib/transaction/claimRewards.js +242 -0
  27. package/dist/src/lib/transaction/exitDelegation.d.ts +26 -0
  28. package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
  29. package/dist/src/lib/transaction/exitDelegation.js +124 -0
  30. package/dist/src/lib/transaction/flushTokenTransaction.d.ts +20 -0
  31. package/dist/src/lib/transaction/flushTokenTransaction.d.ts.map +1 -0
  32. package/dist/src/lib/transaction/flushTokenTransaction.js +98 -0
  33. package/dist/src/lib/transaction/nftTransaction.d.ts +17 -0
  34. package/dist/src/lib/transaction/nftTransaction.d.ts.map +1 -0
  35. package/dist/src/lib/transaction/nftTransaction.js +108 -0
  36. package/dist/src/lib/transaction/stakingTransaction.d.ts +21 -0
  37. package/dist/src/lib/transaction/stakingTransaction.d.ts.map +1 -0
  38. package/dist/src/lib/transaction/stakingTransaction.js +136 -0
  39. package/dist/src/lib/transaction/tokenTransaction.d.ts +14 -0
  40. package/dist/src/lib/transaction/tokenTransaction.d.ts.map +1 -0
  41. package/dist/src/lib/transaction/tokenTransaction.js +95 -0
  42. package/dist/src/lib/transaction/transaction.d.ts +106 -0
  43. package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
  44. package/dist/src/lib/transaction/transaction.js +468 -0
  45. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts +78 -0
  46. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  47. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.js +158 -0
  48. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts +65 -0
  49. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
  50. package/dist/src/lib/transactionBuilder/burnNftBuilder.js +130 -0
  51. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts +57 -0
  52. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  53. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +145 -0
  54. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +65 -0
  55. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
  56. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +132 -0
  57. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts +66 -0
  58. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
  59. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.js +129 -0
  60. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts +23 -0
  61. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
  62. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.js +93 -0
  63. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts +72 -0
  64. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  65. package/dist/src/lib/transactionBuilder/stakingBuilder.js +129 -0
  66. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts +21 -0
  67. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
  68. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.js +70 -0
  69. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +54 -0
  70. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  71. package/dist/src/lib/transactionBuilder/transactionBuilder.js +155 -0
  72. package/dist/src/lib/transactionBuilder/transferBuilder.d.ts +10 -0
  73. package/dist/src/lib/transactionBuilder/transferBuilder.d.ts.map +1 -0
  74. package/dist/src/lib/transactionBuilder/transferBuilder.js +45 -0
  75. package/dist/src/lib/transactionBuilderFactory.d.ts +71 -0
  76. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  77. package/dist/src/lib/transactionBuilderFactory.js +155 -0
  78. package/dist/src/lib/types.d.ts +15 -0
  79. package/dist/src/lib/types.d.ts.map +1 -0
  80. package/dist/src/lib/types.js +3 -0
  81. package/dist/src/lib/utils.d.ts +20 -1
  82. package/dist/src/lib/utils.d.ts.map +1 -1
  83. package/dist/src/lib/utils.js +131 -6
  84. package/dist/src/register.d.ts.map +1 -1
  85. package/dist/src/register.js +9 -1
  86. package/dist/src/vet.d.ts +17 -4
  87. package/dist/src/vet.d.ts.map +1 -1
  88. package/dist/src/vet.js +187 -10
  89. package/dist/src/vetNFTCollection.d.ts +18 -0
  90. package/dist/src/vetNFTCollection.d.ts.map +1 -0
  91. package/dist/src/vetNFTCollection.js +52 -0
  92. package/dist/src/vetToken.d.ts +19 -0
  93. package/dist/src/vetToken.d.ts.map +1 -0
  94. package/dist/src/vetToken.js +52 -0
  95. package/package.json +17 -7
package/dist/src/vet.js CHANGED
@@ -1,11 +1,51 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.Vet = void 0;
40
+ const _ = __importStar(require("lodash"));
41
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
42
+ const blake2b_1 = __importDefault(require("@bitgo-beta/blake2b"));
7
43
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
44
  const utils_1 = __importDefault(require("./lib/utils"));
45
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
46
+ const crypto_1 = require("crypto");
47
+ const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
48
+ const lib_1 = require("./lib");
9
49
  /**
10
50
  * Full Name: Vechain
11
51
  * Docs: https://docs.vechain.org/
@@ -37,6 +77,9 @@ class Vet extends sdk_core_1.BaseCoin {
37
77
  getFullName() {
38
78
  return 'VeChain';
39
79
  }
80
+ valuelessTransferAllowed() {
81
+ return true;
82
+ }
40
83
  /** @inheritDoc */
41
84
  supportsTss() {
42
85
  return true;
@@ -52,26 +95,105 @@ class Vet extends sdk_core_1.BaseCoin {
52
95
  return true;
53
96
  }
54
97
  async verifyTransaction(params) {
55
- throw new Error('Method not implemented');
98
+ const { txPrebuild: txPrebuild, txParams: txParams } = params;
99
+ const txHex = txPrebuild.txHex;
100
+ if (!txHex) {
101
+ throw new Error('missing required tx prebuild property txHex');
102
+ }
103
+ const explainedTx = await this.explainTransaction({ txHex });
104
+ if (!explainedTx) {
105
+ throw new Error('failed to explain transaction');
106
+ }
107
+ if (txParams.recipients !== undefined && txParams.recipients.length > 0) {
108
+ const filteredRecipients = txParams.recipients?.map((recipient) => {
109
+ return {
110
+ address: recipient.address.toLowerCase(),
111
+ amount: BigInt(recipient.amount),
112
+ };
113
+ });
114
+ const filteredOutputs = explainedTx.outputs.map((output) => {
115
+ return {
116
+ address: output.address.toLowerCase(),
117
+ amount: BigInt(output.amount),
118
+ };
119
+ });
120
+ if (!_.isEqual(filteredOutputs, filteredRecipients)) {
121
+ throw new Error('Tx outputs does not match with expected txParams recipients');
122
+ }
123
+ let totalAmount = new bignumber_js_1.default(0);
124
+ for (const recipients of txParams.recipients) {
125
+ totalAmount = totalAmount.plus(recipients.amount);
126
+ }
127
+ if (!totalAmount.isEqualTo(explainedTx.outputAmount)) {
128
+ throw new Error('Tx total amount does not match with expected total amount field');
129
+ }
130
+ }
131
+ return true;
56
132
  }
57
133
  async isWalletAddress(params) {
58
- throw new Error('Method not implemented');
134
+ const { address: newAddress } = params;
135
+ if (!this.isValidAddress(newAddress)) {
136
+ throw new sdk_core_1.InvalidAddressError(`invalid address: ${newAddress}`);
137
+ }
138
+ return true;
59
139
  }
60
- async parseTransaction() {
61
- throw new Error('Method not implemented');
140
+ async parseTransaction(params) {
141
+ const transactionExplanation = await this.explainTransaction({ txHex: params.txHex });
142
+ if (!transactionExplanation) {
143
+ throw new Error('Invalid transaction');
144
+ }
145
+ return {
146
+ inputs: [
147
+ {
148
+ address: transactionExplanation.sender,
149
+ amount: transactionExplanation.outputAmount,
150
+ },
151
+ ],
152
+ outputs: [
153
+ {
154
+ address: transactionExplanation.outputs[0].address,
155
+ amount: transactionExplanation.outputs[0].amount,
156
+ },
157
+ ],
158
+ };
62
159
  }
63
160
  /**
64
161
  * Explain a Vechain transaction
65
162
  * @param params
66
163
  */
67
164
  async explainTransaction(params) {
68
- throw new Error('Method not implemented');
165
+ let rebuiltTransaction;
166
+ try {
167
+ rebuiltTransaction = await this.rebuildTransaction(params.txHex);
168
+ }
169
+ catch {
170
+ return undefined;
171
+ }
172
+ return rebuiltTransaction.explainTransaction();
69
173
  }
70
174
  generateKeyPair(seed) {
71
- throw new Error('Method not implemented');
175
+ if (!seed) {
176
+ // An extended private key has both a normal 256 bit private key and a 256
177
+ // bit chain code, both of which must be random. 512 bits is therefore the
178
+ // maximum entropy and gives us maximum security against cracking.
179
+ seed = (0, crypto_1.randomBytes)(512 / 8);
180
+ }
181
+ const extendedKey = secp256k1_1.bip32.fromSeed(seed);
182
+ const xpub = extendedKey.neutered().toBase58();
183
+ return {
184
+ pub: xpub,
185
+ prv: extendedKey.toBase58(),
186
+ };
72
187
  }
73
188
  isValidPub(pub) {
74
- throw new Error('Method not implemented.');
189
+ let valid = true;
190
+ try {
191
+ new abstract_eth_1.KeyPair({ pub });
192
+ }
193
+ catch (e) {
194
+ valid = false;
195
+ }
196
+ return valid;
75
197
  }
76
198
  isValidAddress(address) {
77
199
  return utils_1.default.isValidAddress(address);
@@ -80,11 +202,66 @@ class Vet extends sdk_core_1.BaseCoin {
80
202
  throw new Error('Method not implemented.');
81
203
  }
82
204
  getTxBuilderFactory() {
83
- throw new Error('Method not implemented.');
205
+ return new lib_1.TransactionBuilderFactory(this._staticsCoin);
84
206
  }
85
207
  async rebuildTransaction(txHex) {
86
- throw new Error('Method not implemented');
208
+ const txBuilderFactory = this.getTxBuilderFactory();
209
+ try {
210
+ const txBuilder = txBuilderFactory.from(txHex);
211
+ return txBuilder.transaction;
212
+ }
213
+ catch {
214
+ throw new Error('Failed to rebuild transaction');
215
+ }
216
+ }
217
+ /** @inheritDoc */
218
+ auditDecryptedKey(params) {
219
+ /** https://bitgoinc.atlassian.net/browse/COIN-4213 */
220
+ throw new Error('Method not implemented.');
221
+ }
222
+ /**
223
+ * Function to get coin specific hash function used to generate transaction digests.
224
+ * @returns {@see Hash} hash function if implemented, otherwise throws exception
225
+ */
226
+ getHashFunction() {
227
+ const blake = (0, blake2b_1.default)(32);
228
+ // We return an object that mimics the Hash interface
229
+ return {
230
+ update(data) {
231
+ blake.update(data);
232
+ return this;
233
+ },
234
+ digest() {
235
+ const uint8Result = blake.digest();
236
+ return Buffer.from(uint8Result);
237
+ },
238
+ };
239
+ }
240
+ buildNftTransferData(params) {
241
+ const { recipientAddress, fromAddress, tokenContractAddress } = params;
242
+ if (!utils_1.default.isValidAddress(recipientAddress)) {
243
+ throw new sdk_core_1.InvalidAddressError('Invalid recipient address');
244
+ }
245
+ if (!utils_1.default.isValidAddress(fromAddress)) {
246
+ throw new sdk_core_1.InvalidAddressError('Invalid from address');
247
+ }
248
+ if (!utils_1.default.isValidAddress(tokenContractAddress)) {
249
+ throw new sdk_core_1.InvalidAddressError('Invalid NFT contract address address');
250
+ }
251
+ switch (params.type) {
252
+ case 'ERC721': {
253
+ const tokenId = params.tokenId;
254
+ return {
255
+ tokenType: sdk_core_1.TokenType.ERC721,
256
+ tokenQuantity: '1', // This NFT standard will always have quantity of 1
257
+ tokenContractAddress,
258
+ tokenId,
259
+ };
260
+ }
261
+ default:
262
+ throw new sdk_core_1.NotImplementedError(`NFT type ${params.type} not supported on ${this.getChain()}`);
263
+ }
87
264
  }
88
265
  }
89
266
  exports.Vet = Vet;
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFhOEI7QUFFOUIsd0RBQWdDO0FBRWhDOzs7O0dBSUc7QUFDSCxNQUFhLEdBQUksU0FBUSxtQkFBUTtJQUUvQixZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUViLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLHNCQUFzQjtRQUNwQixPQUFPLHdCQUFhLENBQUMsR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBZ0M7UUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQTRCO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQjtRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWE7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE9BQU8sZUFBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQThCO1FBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRVMsbUJBQW1CO1FBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRVMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQWE7UUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQWhHRCxrQkFnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBCaXRHb0Jhc2UsXG4gIEtleVBhaXIsXG4gIE1QQ0FsZ29yaXRobSxcbiAgTXVsdGlzaWdUeXBlLFxuICBtdWx0aXNpZ1R5cGVzLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFZlcmlmeUFkZHJlc3NPcHRpb25zLFxuICBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vbGliL3V0aWxzJztcblxuLyoqXG4gKiBGdWxsIE5hbWU6IFZlY2hhaW5cbiAqIERvY3M6IGh0dHBzOi8vZG9jcy52ZWNoYWluLm9yZy9cbiAqIEdpdEh1YiA6IGh0dHBzOi8vZ2l0aHViLmNvbS92ZWNoYWluXG4gKi9cbmV4cG9ydCBjbGFzcyBWZXQgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBWZXQoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3IgYmV0d2VlbiB0aGUgY29pbidzIGJhc2UgdW5pdCBhbmQgaXRzIHNtYWxsZXN0IHN1YiBkaXZpc2lvblxuICAgKi9cbiAgcHVibGljIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMWUxODtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAndmV0JztcbiAgfVxuXG4gIHB1YmxpYyBnZXRGYW1pbHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3ZldCc7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1ZlQ2hhaW4nO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHN1cHBvcnRzVHNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIGluaGVyaXRlZCBkb2MgKi9cbiAgZ2V0RGVmYXVsdE11bHRpc2lnVHlwZSgpOiBNdWx0aXNpZ1R5cGUge1xuICAgIHJldHVybiBtdWx0aXNpZ1R5cGVzLnRzcztcbiAgfVxuXG4gIGdldE1QQ0FsZ29yaXRobSgpOiBNUENBbGdvcml0aG0ge1xuICAgIHJldHVybiAnZWNkc2EnO1xuICB9XG5cbiAgYWxsb3dzQWNjb3VudENvbnNvbGlkYXRpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKCk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWluIGEgVmVjaGFpbiB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zKTogUHJvbWlzZTx1bmRlZmluZWQ+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgc2lnblRyYW5zYWN0aW9uKHBhcmFtczogU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHhCdWlsZGVyRmFjdG9yeSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVidWlsZFRyYW5zYWN0aW9uKHR4SGV4OiBzdHJpbmcpOiBQcm9taXNlPEJhc2VUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG4iXX0=
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBNEI7QUFDNUIsZ0VBQXFDO0FBQ3JDLGtFQUEwQztBQUMxQyxtREFtQjhCO0FBRTlCLHdEQUFnQztBQUNoQyxxREFBOEM7QUFDOUMsbUNBQTJDO0FBQzNDLDJEQUFpRTtBQUNqRSwrQkFBa0Q7QUFJbEQ7Ozs7R0FJRztBQUNILE1BQWEsR0FBSSxTQUFRLG1CQUFRO0lBRS9CLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLHNCQUFzQjtRQUNwQixPQUFPLHdCQUFh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b0JBQ0wsU0FBUyxFQUFFLG9CQUFTLENBQUMsTUFBTTtvQkFDM0IsYUFBYSxFQUFFLEdBQUcsRUFBRSxtREFBbUQ7b0JBQ3ZFLG9CQUFvQjtvQkFDcEIsT0FBTztpQkFDUixDQUFDO1lBQ0osQ0FBQztZQUNEO2dCQUNFLE1BQU0sSUFBSSw4QkFBbUIsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxJQUFJLHFCQUFxQixJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUE3T0Qsa0JBNk9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IGJsYWtlMmIgZnJvbSAnQGJpdGdvLWJldGEvYmxha2UyYic7XG5pbXBvcnQge1xuICBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyxcbiAgQmFzZUNvaW4sXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgQml0R29CYXNlLFxuICBCdWlsZE5mdFRyYW5zZmVyRGF0YU9wdGlvbnMsXG4gIEludmFsaWRBZGRyZXNzRXJyb3IsXG4gIEtleVBhaXIsXG4gIE1QQ0FsZ29yaXRobSxcbiAgTXVsdGlzaWdUeXBlLFxuICBtdWx0aXNpZ1R5cGVzLFxuICBOb3RJbXBsZW1lbnRlZEVycm9yLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRva2VuVHJhbnNmZXJSZWNpcGllbnRQYXJhbXMsXG4gIFZlcmlmeUFkZHJlc3NPcHRpb25zLFxuICBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRva2VuVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgYmlwMzIgfSBmcm9tICdAYml0Z28tYmV0YS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIEhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgS2V5UGFpciBhcyBFdGhLZXlQYWlyIH0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtZXRoJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2xpYic7XG5pbXBvcnQgeyBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zLCBWZXRQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyB9IGZyb20gJy4vbGliL3R5cGVzJztcbmltcG9ydCB7IFZldFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuL2xpYi9pZmFjZSc7XG5cbi8qKlxuICogRnVsbCBOYW1lOiBWZWNoYWluXG4gKiBEb2NzOiBodHRwczovL2RvY3MudmVjaGFpbi5vcmcvXG4gKiBHaXRIdWIgOiBodHRwczovL2dpdGh1Yi5jb20vdmVjaGFpblxuICovXG5leHBvcnQgY2xhc3MgVmV0IGV4dGVuZHMgQmFzZUNvaW4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28pO1xuXG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgVmV0KGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yIGJldHdlZW4gdGhlIGNvaW4ncyBiYXNlIHVuaXQgYW5kIGl0cyBzbWFsbGVzdCBzdWIgZGl2aXNpb25cbiAgICovXG4gIHB1YmxpYyBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDFlMTg7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3ZldCc7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmFtaWx5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICd2ZXQnO1xuICB9XG5cbiAgcHVibGljIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdWZUNoYWluJztcbiAgfVxuXG4gIHZhbHVlbGVzc1RyYW5zZmVyQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gbXVsdGlzaWdUeXBlcy50c3M7XG4gIH1cblxuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VjZHNhJztcbiAgfVxuXG4gIGFsbG93c0FjY291bnRDb25zb2xpZGF0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkLCB0eFBhcmFtczogdHhQYXJhbXMgfSA9IHBhcmFtcztcbiAgICBjb25zdCB0eEhleCA9IHR4UHJlYnVpbGQudHhIZXg7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gICAgfVxuICAgIGNvbnN0IGV4cGxhaW5lZFR4ID0gYXdhaXQgdGhpcy5leHBsYWluVHJhbnNhY3Rpb24oeyB0eEhleCB9KTtcbiAgICBpZiAoIWV4cGxhaW5lZFR4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBleHBsYWluIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICE9PSB1bmRlZmluZWQgJiYgdHhQYXJhbXMucmVjaXBpZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZFJlY2lwaWVudHMgPSB0eFBhcmFtcy5yZWNpcGllbnRzPy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudC5hZGRyZXNzLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgYW1vdW50OiBCaWdJbnQocmVjaXBpZW50LmFtb3VudCksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGZpbHRlcmVkT3V0cHV0cyA9IGV4cGxhaW5lZFR4Lm91dHB1dHMubWFwKChvdXRwdXQpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhZGRyZXNzOiBvdXRwdXQuYWRkcmVzcy50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgIGFtb3VudDogQmlnSW50KG91dHB1dC5hbW91bnQpLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghXy5pc0VxdWFsKGZpbHRlcmVkT3V0cHV0cywgZmlsdGVyZWRSZWNpcGllbnRzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICB9XG4gICAgICBsZXQgdG90YWxBbW91bnQgPSBuZXcgQmlnTnVtYmVyKDApO1xuICAgICAgZm9yIChjb25zdCByZWNpcGllbnRzIG9mIHR4UGFyYW1zLnJlY2lwaWVudHMpIHtcbiAgICAgICAgdG90YWxBbW91bnQgPSB0b3RhbEFtb3VudC5wbHVzKHJlY2lwaWVudHMuYW1vdW50KTtcbiAgICAgIH1cbiAgICAgIGlmICghdG90YWxBbW91bnQuaXNFcXVhbFRvKGV4cGxhaW5lZFR4Lm91dHB1dEFtb3VudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCB0b3RhbCBhbW91bnQgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0b3RhbCBhbW91bnQgZmllbGQnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgYWRkcmVzczogbmV3QWRkcmVzcyB9ID0gcGFyYW1zO1xuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKG5ld0FkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke25ld0FkZHJlc3N9YCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFZldFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSBhd2FpdCB0aGlzLmV4cGxhaW5UcmFuc2FjdGlvbih7IHR4SGV4OiBwYXJhbXMudHhIZXggfSk7XG4gICAgaWYgKCF0cmFuc2FjdGlvbkV4cGxhbmF0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlucHV0czogW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogdHJhbnNhY3Rpb25FeHBsYW5hdGlvbi5zZW5kZXIsXG4gICAgICAgICAgYW1vdW50OiB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uLm91dHB1dEFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBvdXRwdXRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uLm91dHB1dHNbMF0uYWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQ6IHRyYW5zYWN0aW9uRXhwbGFuYXRpb24ub3V0cHV0c1swXS5hbW91bnQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRXhwbGFpbiBhIFZlY2hhaW4gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgZXhwbGFpblRyYW5zYWN0aW9uKHBhcmFtczogRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8VmV0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgIGxldCByZWJ1aWx0VHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvbjtcbiAgICB0cnkge1xuICAgICAgcmVidWlsdFRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy5yZWJ1aWxkVHJhbnNhY3Rpb24ocGFyYW1zLnR4SGV4KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiByZWJ1aWx0VHJhbnNhY3Rpb24uZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGlmICghc2VlZCkge1xuICAgICAgLy8gQW4gZXh0ZW5kZWQgcHJpdmF0ZSBrZXkgaGFzIGJvdGggYSBub3JtYWwgMjU2IGJpdCBwcml2YXRlIGtleSBhbmQgYSAyNTZcbiAgICAgIC8vIGJpdCBjaGFpbiBjb2RlLCBib3RoIG9mIHdoaWNoIG11c3QgYmUgcmFuZG9tLiA1MTIgYml0cyBpcyB0aGVyZWZvcmUgdGhlXG4gICAgICAvLyBtYXhpbXVtIGVudHJvcHkgYW5kIGdpdmVzIHVzIG1heGltdW0gc2VjdXJpdHkgYWdhaW5zdCBjcmFja2luZy5cbiAgICAgIHNlZWQgPSByYW5kb21CeXRlcyg1MTIgLyA4KTtcbiAgICB9XG4gICAgY29uc3QgZXh0ZW5kZWRLZXkgPSBiaXAzMi5mcm9tU2VlZChzZWVkKTtcbiAgICBjb25zdCB4cHViID0gZXh0ZW5kZWRLZXkubmV1dGVyZWQoKS50b0Jhc2U1OCgpO1xuICAgIHJldHVybiB7XG4gICAgICBwdWI6IHhwdWIsXG4gICAgICBwcnY6IGV4dGVuZGVkS2V5LnRvQmFzZTU4KCksXG4gICAgfTtcbiAgfVxuXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBuZXcgRXRoS2V5UGFpcih7IHB1YiB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB2YWxpZCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICBzaWduVHJhbnNhY3Rpb24ocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUeEJ1aWxkZXJGYWN0b3J5KCk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSh0aGlzLl9zdGF0aWNzQ29pbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVidWlsZFRyYW5zYWN0aW9uKHR4SGV4OiBzdHJpbmcpOiBQcm9taXNlPEJhc2VUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHR4QnVpbGRlckZhY3RvcnkgPSB0aGlzLmdldFR4QnVpbGRlckZhY3RvcnkoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gdHhCdWlsZGVyRmFjdG9yeS5mcm9tKHR4SGV4KTtcbiAgICAgIHJldHVybiB0eEJ1aWxkZXIudHJhbnNhY3Rpb247XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byByZWJ1aWxkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHBhcmFtczogQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMpOiB2b2lkIHtcbiAgICAvKiogaHR0cHM6Ly9iaXRnb2luYy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9DT0lOLTQyMTMgKi9cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gZ2V0IGNvaW4gc3BlY2lmaWMgaGFzaCBmdW5jdGlvbiB1c2VkIHRvIGdlbmVyYXRlIHRyYW5zYWN0aW9uIGRpZ2VzdHMuXG4gICAqIEByZXR1cm5zIHtAc2VlIEhhc2h9IGhhc2ggZnVuY3Rpb24gaWYgaW1wbGVtZW50ZWQsIG90aGVyd2lzZSB0aHJvd3MgZXhjZXB0aW9uXG4gICAqL1xuICBnZXRIYXNoRnVuY3Rpb24oKTogSGFzaCB7XG4gICAgY29uc3QgYmxha2UgPSBibGFrZTJiKDMyKTtcblxuICAgIC8vIFdlIHJldHVybiBhbiBvYmplY3QgdGhhdCBtaW1pY3MgdGhlIEhhc2ggaW50ZXJmYWNlXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZShkYXRhOiBCdWZmZXIgfCBVaW50OEFycmF5KSB7XG4gICAgICAgIGJsYWtlLnVwZGF0ZShkYXRhKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgZGlnZXN0KCkge1xuICAgICAgICBjb25zdCB1aW50OFJlc3VsdCA9IGJsYWtlLmRpZ2VzdCgpO1xuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20odWludDhSZXN1bHQpO1xuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgSGFzaDtcbiAgfVxuXG4gIGJ1aWxkTmZ0VHJhbnNmZXJEYXRhKHBhcmFtczogQnVpbGROZnRUcmFuc2ZlckRhdGFPcHRpb25zKTogVG9rZW5UcmFuc2ZlclJlY2lwaWVudFBhcmFtcyB7XG4gICAgY29uc3QgeyByZWNpcGllbnRBZGRyZXNzLCBmcm9tQWRkcmVzcywgdG9rZW5Db250cmFjdEFkZHJlc3MgfSA9IHBhcmFtcztcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKHJlY2lwaWVudEFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcignSW52YWxpZCByZWNpcGllbnQgYWRkcmVzcycpO1xuICAgIH1cbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGZyb21BZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoJ0ludmFsaWQgZnJvbSBhZGRyZXNzJyk7XG4gICAgfVxuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3ModG9rZW5Db250cmFjdEFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcignSW52YWxpZCBORlQgY29udHJhY3QgYWRkcmVzcyBhZGRyZXNzJyk7XG4gICAgfVxuICAgIHN3aXRjaCAocGFyYW1zLnR5cGUpIHtcbiAgICAgIGNhc2UgJ0VSQzcyMSc6IHtcbiAgICAgICAgY29uc3QgdG9rZW5JZCA9IHBhcmFtcy50b2tlbklkO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRva2VuVHlwZTogVG9rZW5UeXBlLkVSQzcyMSxcbiAgICAgICAgICB0b2tlblF1YW50aXR5OiAnMScsIC8vIFRoaXMgTkZUIHN0YW5kYXJkIHdpbGwgYWx3YXlzIGhhdmUgcXVhbnRpdHkgb2YgMVxuICAgICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgICAgIHRva2VuSWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcihgTkZUIHR5cGUgJHtwYXJhbXMudHlwZX0gbm90IHN1cHBvcnRlZCBvbiAke3RoaXMuZ2V0Q2hhaW4oKX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { Vet } from './vet';
2
+ import { VetNFTCollectionConfig } from '@bitgo-beta/statics';
3
+ import { BitGoBase, CoinConstructor, NamedCoinConstructor } from '@bitgo-beta/sdk-core';
4
+ export declare class VetNFTCollection extends Vet {
5
+ readonly nftCollectionConfig: VetNFTCollectionConfig;
6
+ constructor(bitgo: BitGoBase, nftCollectionConfig: VetNFTCollectionConfig);
7
+ static createNFTCollectionConstructor(config: VetNFTCollectionConfig): CoinConstructor;
8
+ static createNFTCollectionConstructors(nftCollectionConfigs?: VetNFTCollectionConfig[]): NamedCoinConstructor[];
9
+ get name(): string;
10
+ get coin(): string;
11
+ get network(): string;
12
+ get nftCollectionId(): string;
13
+ getChain(): string;
14
+ getBaseChain(): string;
15
+ getFullName(): string;
16
+ getBaseFactor(): number;
17
+ }
18
+ //# sourceMappingURL=vetNFTCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vetNFTCollection.d.ts","sourceRoot":"","sources":["../../src/vetNFTCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAiB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAExF,qBAAa,gBAAiB,SAAQ,GAAG;IACvC,SAAgB,mBAAmB,EAAE,sBAAsB,CAAC;gBAEhD,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,sBAAsB;IAMzE,MAAM,CAAC,8BAA8B,CAAC,MAAM,EAAE,sBAAsB,GAAG,eAAe;IAGtF,MAAM,CAAC,+BAA+B,CACpC,oBAAoB,GAAE,sBAAsB,EAG3C,GACA,oBAAoB,EAAE;IASzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,MAAM;IAIrB,aAAa,IAAI,MAAM;CAGxB"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VetNFTCollection = void 0;
4
+ const vet_1 = require("./vet");
5
+ const statics_1 = require("@bitgo-beta/statics");
6
+ class VetNFTCollection extends vet_1.Vet {
7
+ constructor(bitgo, nftCollectionConfig) {
8
+ const staticsCoin = nftCollectionConfig.network === 'Mainnet' ? statics_1.coins.get('vet') : statics_1.coins.get('tvet');
9
+ super(bitgo, staticsCoin);
10
+ this.nftCollectionConfig = nftCollectionConfig;
11
+ }
12
+ static createNFTCollectionConstructor(config) {
13
+ return (bitgo) => new VetNFTCollection(bitgo, config);
14
+ }
15
+ static createNFTCollectionConstructors(nftCollectionConfigs = [
16
+ ...statics_1.tokens.bitcoin.vet.nftCollections,
17
+ ...statics_1.tokens.testnet.vet.nftCollections,
18
+ ]) {
19
+ const nftCollectionCtors = [];
20
+ for (const config of nftCollectionConfigs) {
21
+ const nftCollectionConstructor = VetNFTCollection.createNFTCollectionConstructor(config);
22
+ nftCollectionCtors.push({ name: config.type, coinConstructor: nftCollectionConstructor });
23
+ }
24
+ return nftCollectionCtors;
25
+ }
26
+ get name() {
27
+ return this.nftCollectionConfig.name;
28
+ }
29
+ get coin() {
30
+ return this.nftCollectionConfig.coin;
31
+ }
32
+ get network() {
33
+ return this.nftCollectionConfig.network;
34
+ }
35
+ get nftCollectionId() {
36
+ return this.nftCollectionConfig.nftCollectionId;
37
+ }
38
+ getChain() {
39
+ return this.nftCollectionConfig.type;
40
+ }
41
+ getBaseChain() {
42
+ return this.coin;
43
+ }
44
+ getFullName() {
45
+ return 'Vet NFT Collection';
46
+ }
47
+ getBaseFactor() {
48
+ return Math.pow(10, this.nftCollectionConfig.decimalPlaces);
49
+ }
50
+ }
51
+ exports.VetNFTCollection = VetNFTCollection;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmV0TkZUQ29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXRORlRDb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE0QjtBQUM1QixpREFBNEU7QUFHNUUsTUFBYSxnQkFBaUIsU0FBUSxTQUFHO0lBR3ZDLFlBQVksS0FBZ0IsRUFBRSxtQkFBMkM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztJQUNqRCxDQUFDO0lBRUQsTUFBTSxDQUFDLDhCQUE4QixDQUFDLE1BQThCO1FBQ2xFLE9BQU8sQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsTUFBTSxDQUFDLCtCQUErQixDQUNwQyx1QkFBaUQ7UUFDL0MsR0FBRyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYztRQUNwQyxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjO0tBQ3JDO1FBRUQsTUFBTSxrQkFBa0IsR0FBMkIsRUFBRSxDQUFDO1FBQ3RELEtBQUssTUFBTSxNQUFNLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUMxQyxNQUFNLHdCQUF3QixHQUFHLGdCQUFnQixDQUFDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pGLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUNELE9BQU8sa0JBQWtCLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUM7SUFDbEQsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGO0FBekRELDRDQXlEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZldCB9IGZyb20gJy4vdmV0JztcbmltcG9ydCB7IGNvaW5zLCB0b2tlbnMsIFZldE5GVENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgQ29pbkNvbnN0cnVjdG9yLCBOYW1lZENvaW5Db25zdHJ1Y3RvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuZXhwb3J0IGNsYXNzIFZldE5GVENvbGxlY3Rpb24gZXh0ZW5kcyBWZXQge1xuICBwdWJsaWMgcmVhZG9ubHkgbmZ0Q29sbGVjdGlvbkNvbmZpZzogVmV0TkZUQ29sbGVjdGlvbkNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBuZnRDb2xsZWN0aW9uQ29uZmlnOiBWZXRORlRDb2xsZWN0aW9uQ29uZmlnKSB7XG4gICAgY29uc3Qgc3RhdGljc0NvaW4gPSBuZnRDb2xsZWN0aW9uQ29uZmlnLm5ldHdvcmsgPT09ICdNYWlubmV0JyA/IGNvaW5zLmdldCgndmV0JykgOiBjb2lucy5nZXQoJ3R2ZXQnKTtcbiAgICBzdXBlcihiaXRnbywgc3RhdGljc0NvaW4pO1xuICAgIHRoaXMubmZ0Q29sbGVjdGlvbkNvbmZpZyA9IG5mdENvbGxlY3Rpb25Db25maWc7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTkZUQ29sbGVjdGlvbkNvbnN0cnVjdG9yKGNvbmZpZzogVmV0TkZUQ29sbGVjdGlvbkNvbmZpZyk6IENvaW5Db25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIChiaXRnbzogQml0R29CYXNlKSA9PiBuZXcgVmV0TkZUQ29sbGVjdGlvbihiaXRnbywgY29uZmlnKTtcbiAgfVxuICBzdGF0aWMgY3JlYXRlTkZUQ29sbGVjdGlvbkNvbnN0cnVjdG9ycyhcbiAgICBuZnRDb2xsZWN0aW9uQ29uZmlnczogVmV0TkZUQ29sbGVjdGlvbkNvbmZpZ1tdID0gW1xuICAgICAgLi4udG9rZW5zLmJpdGNvaW4udmV0Lm5mdENvbGxlY3Rpb25zLFxuICAgICAgLi4udG9rZW5zLnRlc3RuZXQudmV0Lm5mdENvbGxlY3Rpb25zLFxuICAgIF1cbiAgKTogTmFtZWRDb2luQ29uc3RydWN0b3JbXSB7XG4gICAgY29uc3QgbmZ0Q29sbGVjdGlvbkN0b3JzOiBOYW1lZENvaW5Db25zdHJ1Y3RvcltdID0gW107XG4gICAgZm9yIChjb25zdCBjb25maWcgb2YgbmZ0Q29sbGVjdGlvbkNvbmZpZ3MpIHtcbiAgICAgIGNvbnN0IG5mdENvbGxlY3Rpb25Db25zdHJ1Y3RvciA9IFZldE5GVENvbGxlY3Rpb24uY3JlYXRlTkZUQ29sbGVjdGlvbkNvbnN0cnVjdG9yKGNvbmZpZyk7XG4gICAgICBuZnRDb2xsZWN0aW9uQ3RvcnMucHVzaCh7IG5hbWU6IGNvbmZpZy50eXBlLCBjb2luQ29uc3RydWN0b3I6IG5mdENvbGxlY3Rpb25Db25zdHJ1Y3RvciB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5mdENvbGxlY3Rpb25DdG9ycztcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmZ0Q29sbGVjdGlvbkNvbmZpZy5uYW1lO1xuICB9XG5cbiAgZ2V0IGNvaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uZnRDb2xsZWN0aW9uQ29uZmlnLmNvaW47XG4gIH1cblxuICBnZXQgbmV0d29yaygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5mdENvbGxlY3Rpb25Db25maWcubmV0d29yaztcbiAgfVxuXG4gIGdldCBuZnRDb2xsZWN0aW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uZnRDb2xsZWN0aW9uQ29uZmlnLm5mdENvbGxlY3Rpb25JZDtcbiAgfVxuXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmZ0Q29sbGVjdGlvbkNvbmZpZy50eXBlO1xuICB9XG5cbiAgZ2V0QmFzZUNoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29pbjtcbiAgfVxuXG4gIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdWZXQgTkZUIENvbGxlY3Rpb24nO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5uZnRDb2xsZWN0aW9uQ29uZmlnLmRlY2ltYWxQbGFjZXMpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,19 @@
1
+ import { Vet } from './vet';
2
+ import { BitGoBase, CoinConstructor, NamedCoinConstructor } from '@bitgo-beta/sdk-core';
3
+ import { VetTokenConfig } from '@bitgo-beta/statics';
4
+ export declare class VetToken extends Vet {
5
+ readonly tokenConfig: VetTokenConfig;
6
+ constructor(bitgo: BitGoBase, tokenConfig: VetTokenConfig);
7
+ static createTokenConstructor(config: VetTokenConfig): CoinConstructor;
8
+ static createTokenConstructors(): NamedCoinConstructor[];
9
+ get name(): string;
10
+ get coin(): string;
11
+ get network(): string;
12
+ get contractAddress(): string;
13
+ get decimalPlaces(): number;
14
+ getChain(): string;
15
+ getBaseChain(): string;
16
+ getFullName(): string;
17
+ getBaseFactor(): number;
18
+ }
19
+ //# sourceMappingURL=vetToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vetToken.d.ts","sourceRoot":"","sources":["../../src/vetToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AAEpE,qBAAa,QAAS,SAAQ,GAAG;IAC/B,SAAgB,WAAW,EAAE,cAAc,CAAC;gBAEhC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc;IAMzD,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAItE,MAAM,CAAC,uBAAuB,IAAI,oBAAoB,EAAE;IASxD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,MAAM;IAIrB,aAAa,IAAI,MAAM;CAGxB"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VetToken = void 0;
4
+ const vet_1 = require("./vet");
5
+ const statics_1 = require("@bitgo-beta/statics");
6
+ class VetToken extends vet_1.Vet {
7
+ constructor(bitgo, tokenConfig) {
8
+ const staticsCoin = tokenConfig.network === 'Mainnet' ? statics_1.coins.get('vet') : statics_1.coins.get('tvet');
9
+ super(bitgo, staticsCoin);
10
+ this.tokenConfig = tokenConfig;
11
+ }
12
+ static createTokenConstructor(config) {
13
+ return (bitgo) => new VetToken(bitgo, config);
14
+ }
15
+ static createTokenConstructors() {
16
+ const tokensCtors = [];
17
+ for (const token of [...statics_1.tokens.bitcoin.vet.tokens, ...statics_1.tokens.testnet.vet.tokens]) {
18
+ const tokenConstructor = VetToken.createTokenConstructor(token);
19
+ tokensCtors.push({ name: token.type, coinConstructor: tokenConstructor });
20
+ }
21
+ return tokensCtors;
22
+ }
23
+ get name() {
24
+ return this.tokenConfig.name;
25
+ }
26
+ get coin() {
27
+ return this.tokenConfig.coin;
28
+ }
29
+ get network() {
30
+ return this.tokenConfig.network;
31
+ }
32
+ get contractAddress() {
33
+ return this.tokenConfig.contractAddress;
34
+ }
35
+ get decimalPlaces() {
36
+ return this.tokenConfig.decimalPlaces;
37
+ }
38
+ getChain() {
39
+ return this.tokenConfig.type;
40
+ }
41
+ getBaseChain() {
42
+ return this.coin;
43
+ }
44
+ getFullName() {
45
+ return 'Vet Token';
46
+ }
47
+ getBaseFactor() {
48
+ return Math.pow(10, this.tokenConfig.decimalPlaces);
49
+ }
50
+ }
51
+ exports.VetToken = VetToken;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmV0VG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmV0VG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQTRCO0FBRTVCLGlEQUFvRTtBQUVwRSxNQUFhLFFBQVMsU0FBUSxTQUFHO0lBRy9CLFlBQVksS0FBZ0IsRUFBRSxXQUEyQjtRQUN2RCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RixLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBc0I7UUFDbEQsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxDQUFDLHVCQUF1QjtRQUM1QixNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO1FBQy9DLEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqRixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQXpERCw0QkF5REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZXQgfSBmcm9tICcuL3ZldCc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UsIENvaW5Db25zdHJ1Y3RvciwgTmFtZWRDb2luQ29uc3RydWN0b3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBWZXRUb2tlbkNvbmZpZywgY29pbnMsIHRva2VucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5leHBvcnQgY2xhc3MgVmV0VG9rZW4gZXh0ZW5kcyBWZXQge1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5Db25maWc6IFZldFRva2VuQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHRva2VuQ29uZmlnOiBWZXRUb2tlbkNvbmZpZykge1xuICAgIGNvbnN0IHN0YXRpY3NDb2luID0gdG9rZW5Db25maWcubmV0d29yayA9PT0gJ01haW5uZXQnID8gY29pbnMuZ2V0KCd2ZXQnKSA6IGNvaW5zLmdldCgndHZldCcpO1xuICAgIHN1cGVyKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gICAgdGhpcy50b2tlbkNvbmZpZyA9IHRva2VuQ29uZmlnO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRva2VuQ29uc3RydWN0b3IoY29uZmlnOiBWZXRUb2tlbkNvbmZpZyk6IENvaW5Db25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIChiaXRnbzogQml0R29CYXNlKSA9PiBuZXcgVmV0VG9rZW4oYml0Z28sIGNvbmZpZyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKTogTmFtZWRDb2luQ29uc3RydWN0b3JbXSB7XG4gICAgY29uc3QgdG9rZW5zQ3RvcnM6IE5hbWVkQ29pbkNvbnN0cnVjdG9yW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIFsuLi50b2tlbnMuYml0Y29pbi52ZXQudG9rZW5zLCAuLi50b2tlbnMudGVzdG5ldC52ZXQudG9rZW5zXSkge1xuICAgICAgY29uc3QgdG9rZW5Db25zdHJ1Y3RvciA9IFZldFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3IodG9rZW4pO1xuICAgICAgdG9rZW5zQ3RvcnMucHVzaCh7IG5hbWU6IHRva2VuLnR5cGUsIGNvaW5Db25zdHJ1Y3RvcjogdG9rZW5Db25zdHJ1Y3RvciB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRva2Vuc0N0b3JzO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uYW1lO1xuICB9XG5cbiAgZ2V0IGNvaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5jb2luO1xuICB9XG5cbiAgZ2V0IG5ldHdvcmsoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uZXR3b3JrO1xuICB9XG5cbiAgZ2V0IGNvbnRyYWN0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLmNvbnRyYWN0QWRkcmVzcztcbiAgfVxuXG4gIGdldCBkZWNpbWFsUGxhY2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuZGVjaW1hbFBsYWNlcztcbiAgfVxuXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcudHlwZTtcbiAgfVxuXG4gIGdldEJhc2VDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvaW47XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnVmV0IFRva2VuJztcbiAgfVxuXG4gIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMTAsIHRoaXMudG9rZW5Db25maWcuZGVjaW1hbFBsYWNlcyk7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo-beta/sdk-coin-vet",
3
- "version": "1.0.1-beta.3",
3
+ "version": "1.0.1-beta.300",
4
4
  "description": "BitGo SDK coin library for VeChain",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -18,7 +18,7 @@
18
18
  "author": "BitGo SDK Team <sdkteam@bitgo.com>",
19
19
  "license": "MIT",
20
20
  "engines": {
21
- "node": ">=18 <21"
21
+ "node": ">=20 <23"
22
22
  },
23
23
  "repository": {
24
24
  "type": "git",
@@ -40,12 +40,22 @@
40
40
  ]
41
41
  },
42
42
  "dependencies": {
43
- "@bitgo-beta/sdk-core": "8.2.1-beta.891",
44
- "@bitgo-beta/statics": "15.1.1-beta.894"
43
+ "@bitgo-beta/abstract-eth": "1.0.2-beta.1418",
44
+ "@bitgo-beta/blake2b": "3.0.4-beta.1426",
45
+ "@bitgo-beta/sdk-core": "8.2.1-beta.1188",
46
+ "@bitgo-beta/secp256k1": "1.0.2-beta.1215",
47
+ "@bitgo-beta/statics": "15.1.1-beta.1191",
48
+ "@noble/curves": "1.8.1",
49
+ "@vechain/sdk-core": "^1.2.0-rc.3",
50
+ "bignumber.js": "^9.1.1",
51
+ "ethereumjs-abi": "^0.6.5",
52
+ "ethereumjs-util": "7.1.5",
53
+ "lodash": "^4.17.21",
54
+ "tweetnacl": "^1.0.3"
45
55
  },
46
56
  "devDependencies": {
47
- "@bitgo-beta/sdk-api": "1.10.1-beta.890",
48
- "@bitgo-beta/sdk-test": "^8.0.84"
57
+ "@bitgo-beta/sdk-api": "1.10.1-beta.1187",
58
+ "@bitgo-beta/sdk-test": "^9.0.9"
49
59
  },
50
- "gitHead": "20955cbc8017573362a985ecced4dcddd8f231ae"
60
+ "gitHead": "8ec66a4eae9ac677cb8c268741ca4c39b169d10e"
51
61
  }