@bitgo-beta/abstract-eth 1.2.3-alpha.18 → 1.2.3-alpha.180

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 (57) hide show
  1. package/CHANGELOG.md +1369 -0
  2. package/dist/src/abstractEthLikeCoin.d.ts +12 -6
  3. package/dist/src/abstractEthLikeCoin.d.ts.map +1 -1
  4. package/dist/src/abstractEthLikeCoin.js +14 -11
  5. package/dist/src/abstractEthLikeNewCoins.d.ts +635 -0
  6. package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
  7. package/dist/src/abstractEthLikeNewCoins.js +1882 -0
  8. package/dist/src/ethLikeToken.d.ts +34 -4
  9. package/dist/src/ethLikeToken.d.ts.map +1 -1
  10. package/dist/src/ethLikeToken.js +281 -7
  11. package/dist/src/index.d.ts +2 -0
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +8 -2
  14. package/dist/src/lib/contractCall.d.ts +8 -0
  15. package/dist/src/lib/contractCall.d.ts.map +1 -0
  16. package/dist/src/lib/contractCall.js +17 -0
  17. package/dist/src/lib/iface.d.ts +132 -0
  18. package/dist/src/lib/iface.d.ts.map +1 -0
  19. package/dist/src/lib/iface.js +8 -0
  20. package/dist/src/lib/index.d.ts +15 -0
  21. package/dist/src/lib/index.d.ts.map +1 -0
  22. package/dist/src/lib/index.js +46 -0
  23. package/dist/src/lib/keyPair.d.ts +26 -0
  24. package/dist/src/lib/keyPair.d.ts.map +1 -0
  25. package/dist/src/lib/keyPair.js +66 -0
  26. package/dist/src/lib/transaction.d.ts +64 -0
  27. package/dist/src/lib/transaction.d.ts.map +1 -0
  28. package/dist/src/lib/transaction.js +137 -0
  29. package/dist/src/lib/transactionBuilder.d.ts +245 -0
  30. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  31. package/dist/src/lib/transactionBuilder.js +726 -0
  32. package/dist/src/lib/transferBuilder.d.ts +71 -0
  33. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  34. package/dist/src/lib/transferBuilder.js +261 -0
  35. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +54 -0
  36. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +1 -0
  37. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +121 -0
  38. package/dist/src/lib/transferBuilders/index.d.ts +4 -0
  39. package/dist/src/lib/transferBuilders/index.d.ts.map +1 -0
  40. package/dist/src/lib/transferBuilders/index.js +20 -0
  41. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +16 -0
  42. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +1 -0
  43. package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +93 -0
  44. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +15 -0
  45. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +1 -0
  46. package/dist/src/lib/transferBuilders/transferBuilderERC721.js +78 -0
  47. package/dist/src/lib/types.d.ts +39 -0
  48. package/dist/src/lib/types.d.ts.map +1 -0
  49. package/dist/src/lib/types.js +137 -0
  50. package/dist/src/lib/utils.d.ts +268 -0
  51. package/dist/src/lib/utils.d.ts.map +1 -0
  52. package/dist/src/lib/utils.js +689 -0
  53. package/dist/src/lib/walletUtil.d.ts +30 -0
  54. package/dist/src/lib/walletUtil.d.ts.map +1 -0
  55. package/dist/src/lib/walletUtil.js +33 -0
  56. package/dist/tsconfig.tsbuildinfo +1 -8012
  57. package/package.json +24 -9
@@ -0,0 +1,635 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * @prettier
4
+ */
5
+ import { AddressCoinSpecific, BitGoBase, BuildNftTransferDataOptions, FeeEstimateOptions, FullySignedTransaction, HalfSignedTransaction, IWallet, KeyPair, ParsedTransaction, ParseTransactionOptions, PrebuildTransactionResult, PresignTransactionOptions as BasePresignTransactionOptions, Recipient, SignTransactionOptions as BaseSignTransactionOptions, TransactionParams, TransactionPrebuild as BaseTransactionPrebuild, TransactionRecipient, TypedData, VerifyAddressOptions as BaseVerifyAddressOptions, VerifyTransactionOptions, Wallet } from '@bitgo-beta/sdk-core';
6
+ import { BaseCoin as StaticsBaseCoin, EthereumNetwork as EthLikeNetwork } from '@bitgo-beta/statics';
7
+ import type * as EthLikeCommon from '@ethereumjs/common';
8
+ import type * as EthLikeTxLib from '@ethereumjs/tx';
9
+ import BN from 'bn.js';
10
+ import { AbstractEthLikeCoin } from './abstractEthLikeCoin';
11
+ /**
12
+ * The prebuilt hop transaction returned from the HSM
13
+ */
14
+ interface HopPrebuild {
15
+ tx: string;
16
+ id: string;
17
+ signature: string;
18
+ paymentId: string;
19
+ gasPrice: number;
20
+ gasLimit: number;
21
+ amount: number;
22
+ recipient: string;
23
+ nonce: number;
24
+ userReqSig: string;
25
+ gasPriceMax: number;
26
+ }
27
+ /**
28
+ * The extra parameters to send to platform build route for hop transactions
29
+ */
30
+ interface HopParams {
31
+ hopParams: {
32
+ gasPriceMax: number;
33
+ userReqSig: string;
34
+ paymentId: string;
35
+ };
36
+ gasLimit: number;
37
+ }
38
+ export interface EIP1559 {
39
+ maxPriorityFeePerGas: number;
40
+ maxFeePerGas: number;
41
+ }
42
+ export interface ReplayProtectionOptions {
43
+ chain: string | number;
44
+ hardfork: string;
45
+ }
46
+ export interface TransactionPrebuild extends BaseTransactionPrebuild {
47
+ hopTransaction?: HopPrebuild;
48
+ buildParams: {
49
+ recipients: Recipient[];
50
+ };
51
+ recipients: TransactionRecipient[];
52
+ nextContractSequenceId: number;
53
+ gasPrice: number;
54
+ gasLimit: number;
55
+ isBatch: boolean;
56
+ coin: string;
57
+ token?: string;
58
+ }
59
+ export interface SignFinalOptions {
60
+ txPrebuild: {
61
+ eip1559?: EIP1559;
62
+ replayProtectionOptions?: ReplayProtectionOptions;
63
+ gasPrice?: string;
64
+ gasLimit?: string;
65
+ recipients?: Recipient[];
66
+ halfSigned?: {
67
+ expireTime: number;
68
+ contractSequenceId: number;
69
+ backupKeyNonce?: number;
70
+ signature: string;
71
+ txHex?: string;
72
+ };
73
+ nextContractSequenceId?: number;
74
+ hopTransaction?: string;
75
+ backupKeyNonce?: number;
76
+ isBatch?: boolean;
77
+ txHex?: string;
78
+ expireTime?: number;
79
+ };
80
+ signingKeyNonce?: number;
81
+ walletContractAddress?: string;
82
+ prv: string;
83
+ recipients?: Recipient[];
84
+ common?: EthLikeCommon.default;
85
+ }
86
+ export interface SignTransactionOptions extends BaseSignTransactionOptions, SignFinalOptions {
87
+ isLastSignature?: boolean;
88
+ expireTime?: number;
89
+ sequenceId?: number;
90
+ gasLimit?: number;
91
+ gasPrice?: number;
92
+ custodianTransactionId?: string;
93
+ common?: EthLikeCommon.default;
94
+ }
95
+ export declare type SignedTransaction = HalfSignedTransaction | FullySignedTransaction;
96
+ export interface FeesUsed {
97
+ gasPrice: number;
98
+ gasLimit: number;
99
+ }
100
+ interface PrecreateBitGoOptions {
101
+ enterprise?: string;
102
+ newFeeAddress?: string;
103
+ }
104
+ export interface OfflineVaultTxInfo {
105
+ nextContractSequenceId?: string;
106
+ contractSequenceId?: string;
107
+ tx?: string;
108
+ txHex?: string;
109
+ userKey?: string;
110
+ backupKey?: string;
111
+ coin: string;
112
+ gasPrice: number;
113
+ gasLimit: number;
114
+ recipients: Recipient[];
115
+ walletContractAddress: string;
116
+ amount: string;
117
+ backupKeyNonce: number;
118
+ eip1559?: EIP1559;
119
+ replayProtectionOptions?: ReplayProtectionOptions;
120
+ halfSigned?: HalfSignedTransaction;
121
+ feesUsed?: FeesUsed;
122
+ isEvmBasedCrossChainRecovery?: boolean;
123
+ }
124
+ interface UnformattedTxInfo {
125
+ recipient: Recipient;
126
+ }
127
+ export interface RecoverOptions {
128
+ userKey: string;
129
+ backupKey: string;
130
+ walletPassphrase?: string;
131
+ walletContractAddress: string;
132
+ recoveryDestination: string;
133
+ krsProvider?: string;
134
+ gasPrice?: number;
135
+ gasLimit?: number;
136
+ eip1559?: EIP1559;
137
+ replayProtectionOptions?: ReplayProtectionOptions;
138
+ isTss?: boolean;
139
+ bitgoFeeAddress?: string;
140
+ bitgoDestinationAddress?: string;
141
+ tokenContractAddress?: string;
142
+ intendedChain?: string;
143
+ common?: EthLikeCommon.default;
144
+ }
145
+ export declare type GetBatchExecutionInfoRT = {
146
+ values: [string[], string[]];
147
+ totalAmount: string;
148
+ };
149
+ export interface BuildTransactionParams {
150
+ to: string;
151
+ nonce?: number;
152
+ value: number;
153
+ data?: Buffer;
154
+ gasPrice?: number;
155
+ gasLimit?: number;
156
+ eip1559?: EIP1559;
157
+ replayProtectionOptions?: ReplayProtectionOptions;
158
+ }
159
+ export interface RecoveryInfo {
160
+ id: string;
161
+ tx: string;
162
+ backupKey?: string;
163
+ coin?: string;
164
+ }
165
+ export interface RecoverTokenTransaction {
166
+ halfSigned: {
167
+ recipient: Recipient;
168
+ expireTime: number;
169
+ contractSequenceId: number;
170
+ operationHash: string;
171
+ signature: string;
172
+ gasLimit: number;
173
+ gasPrice: number;
174
+ tokenContractAddress: string;
175
+ walletId: string;
176
+ };
177
+ }
178
+ export interface RecoverTokenOptions {
179
+ tokenContractAddress: string;
180
+ wallet: Wallet;
181
+ recipient: string;
182
+ broadcast?: boolean;
183
+ walletPassphrase?: string;
184
+ prv?: string;
185
+ }
186
+ export interface GetSendMethodArgsOptions {
187
+ recipient: Recipient;
188
+ expireTime: number;
189
+ contractSequenceId: number;
190
+ signature: string;
191
+ }
192
+ export interface SendMethodArgs {
193
+ name: string;
194
+ type: string;
195
+ value: any;
196
+ }
197
+ interface HopTransactionBuildOptions {
198
+ wallet: Wallet;
199
+ recipients: Recipient[];
200
+ walletPassphrase: string;
201
+ }
202
+ export interface BuildOptions {
203
+ hop?: boolean;
204
+ wallet?: Wallet;
205
+ recipients?: Recipient[];
206
+ walletPassphrase?: string;
207
+ [index: string]: unknown;
208
+ }
209
+ interface FeeEstimate {
210
+ gasLimitEstimate: number;
211
+ feeEstimate: number;
212
+ }
213
+ interface EthTransactionParams extends TransactionParams {
214
+ gasPrice?: number;
215
+ gasLimit?: number;
216
+ hopParams?: HopParams;
217
+ hop?: boolean;
218
+ prebuildTx?: PrebuildTransactionResult;
219
+ }
220
+ interface VerifyEthTransactionOptions extends VerifyTransactionOptions {
221
+ txPrebuild: TransactionPrebuild;
222
+ txParams: EthTransactionParams;
223
+ }
224
+ interface PresignTransactionOptions extends TransactionPrebuild, BasePresignTransactionOptions {
225
+ wallet: Wallet;
226
+ }
227
+ interface EthAddressCoinSpecifics extends AddressCoinSpecific {
228
+ forwarderVersion: number;
229
+ salt?: string;
230
+ }
231
+ export interface VerifyEthAddressOptions extends BaseVerifyAddressOptions {
232
+ baseAddress: string;
233
+ coinSpecific: EthAddressCoinSpecifics;
234
+ forwarderVersion: number;
235
+ }
236
+ export declare const optionalDeps: {
237
+ readonly ethAbi: any;
238
+ readonly ethUtil: any;
239
+ readonly EthTx: typeof EthLikeTxLib;
240
+ readonly EthCommon: typeof EthLikeCommon;
241
+ };
242
+ export declare abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
243
+ static hopTransactionSalt: string;
244
+ protected readonly sendMethodName: 'sendMultiSig' | 'sendMultiSigToken';
245
+ readonly staticsCoin?: Readonly<StaticsBaseCoin>;
246
+ protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
247
+ /**
248
+ * Method to return the coin's network object
249
+ * @returns {EthLikeNetwork | undefined}
250
+ */
251
+ getNetwork(): EthLikeNetwork | undefined;
252
+ /**
253
+ * Evaluates whether an address string is valid for this coin
254
+ * @param {string} address
255
+ * @returns {boolean} True if address is the valid ethlike adderss
256
+ */
257
+ isValidAddress(address: string): boolean;
258
+ /**
259
+ * Flag for sending data along with transactions
260
+ * @returns {boolean} True if okay to send tx data (ETH), false otherwise
261
+ */
262
+ transactionDataAllowed(): boolean;
263
+ /**
264
+ * Default expire time for a contract call (1 week)
265
+ * @returns {number} Time in seconds
266
+ */
267
+ getDefaultExpireTime(): number;
268
+ /**
269
+ * Method to get the custom chain common object based on params from recovery
270
+ * @param {number} chainId - the chain id of the custom chain
271
+ * @returns {EthLikeCommon.default}
272
+ */
273
+ static getCustomChainCommon(chainId: number): EthLikeCommon.default;
274
+ /**
275
+ * Gets correct Eth Common object based on params from either recovery or tx building
276
+ * @param {EIP1559} eip1559 - configs that specify whether we should construct an eip1559 tx
277
+ * @param {ReplayProtectionOptions} replayProtectionOptions - check if chain id supports replay protection
278
+ * @returns {EthLikeCommon.default}
279
+ */
280
+ private static getEthLikeCommon;
281
+ /**
282
+ * Method to build the tx object
283
+ * @param {BuildTransactionParams} params - params to build transaction
284
+ * @returns {EthLikeTxLib.FeeMarketEIP1559Transaction | EthLikeTxLib.Transaction}
285
+ */
286
+ static buildTransaction(params: BuildTransactionParams): EthLikeTxLib.FeeMarketEIP1559Transaction | EthLikeTxLib.Transaction;
287
+ /**
288
+ * Query explorer for the balance of an address
289
+ * @param {String} address - the ETHLike address
290
+ * @returns {BigNumber} address balance
291
+ */
292
+ queryAddressBalance(address: string): Promise<any>;
293
+ /**
294
+ * @param {Recipient[]} recipients - the recipients of the transaction
295
+ * @param {number} expireTime - the expire time of the transaction
296
+ * @param {number} contractSequenceId - the contract sequence id of the transaction
297
+ * @returns {string}
298
+ */
299
+ getOperationSha3ForExecuteAndConfirm(recipients: Recipient[], expireTime: number, contractSequenceId: number): string;
300
+ /**
301
+ * Get transfer operation for coin
302
+ * @param {Recipient} recipient - recipient info
303
+ * @param {number} expireTime - expiry time
304
+ * @param {number} contractSequenceId - sequence id
305
+ * @returns {Array} operation array
306
+ */
307
+ getOperation(recipient: Recipient, expireTime: number, contractSequenceId: number): (string | Buffer)[][];
308
+ /**
309
+ * Queries the contract (via explorer API) for the next sequence ID
310
+ * @param {String} address - address of the contract
311
+ * @returns {Promise<Number>} sequence ID
312
+ */
313
+ querySequenceId(address: string): Promise<number>;
314
+ /**
315
+ * Recover an unsupported token from a BitGo multisig wallet
316
+ * This builds a half-signed transaction, for which there will be an admin route to co-sign and broadcast. Optionally
317
+ * the user can set params.broadcast = true and the half-signed tx will be sent to BitGo for cosigning and broadcasting
318
+ * @param {RecoverTokenOptions} params
319
+ * @param {Wallet} params.wallet - the wallet to recover the token from
320
+ * @param {string} params.tokenContractAddress - the contract address of the unsupported token
321
+ * @param {string} params.recipient - the destination address recovered tokens should be sent to
322
+ * @param {string} params.walletPassphrase - the wallet passphrase
323
+ * @param {string} params.prv - the xprv
324
+ * @param {boolean} params.broadcast - if true, we will automatically submit the half-signed tx to BitGo for cosigning and broadcasting
325
+ * @returns {Promise<RecoverTokenTransaction>}
326
+ */
327
+ recoverToken(params: RecoverTokenOptions): Promise<RecoverTokenTransaction>;
328
+ /**
329
+ * Ensure either enterprise or newFeeAddress is passed, to know whether to create new key or use enterprise key
330
+ * @param {PrecreateBitGoOptions} params
331
+ * @param {string} params.enterprise {String} the enterprise id to associate with this key
332
+ * @param {string} params.newFeeAddress {Boolean} create a new fee address (enterprise not needed in this case)
333
+ * @returns {void}
334
+ */
335
+ preCreateBitGo(params: PrecreateBitGoOptions): void;
336
+ /**
337
+ * Queries public block explorer to get the next ETHLike coin's nonce that should be used for the given ETH address
338
+ * @param {string} address
339
+ * @returns {Promise<number>}
340
+ */
341
+ getAddressNonce(address: string): Promise<number>;
342
+ /**
343
+ * Helper function for recover()
344
+ * This transforms the unsigned transaction information into a format the BitGo offline vault expects
345
+ * @param {UnformattedTxInfo} txInfo - tx info
346
+ * @param {EthLikeTxLib.Transaction | EthLikeTxLib.FeeMarketEIP1559Transaction} ethTx - the ethereumjs tx object
347
+ * @param {string} userKey - the user's key
348
+ * @param {string} backupKey - the backup key
349
+ * @param {Buffer} gasPrice - gas price for the tx
350
+ * @param {number} gasLimit - gas limit for the tx
351
+ * @param {EIP1559} eip1559 - eip1559 params
352
+ * @param {ReplayProtectionOptions} replayProtectionOptions - replay protection options
353
+ * @returns {Promise<OfflineVaultTxInfo>}
354
+ */
355
+ formatForOfflineVault(txInfo: UnformattedTxInfo, ethTx: EthLikeTxLib.Transaction | EthLikeTxLib.FeeMarketEIP1559Transaction, userKey: string, backupKey: string, gasPrice: Buffer, gasLimit: number, eip1559?: EIP1559, replayProtectionOptions?: ReplayProtectionOptions): Promise<OfflineVaultTxInfo>;
356
+ /**
357
+ * Helper function for recover()
358
+ * This transforms the unsigned transaction information into a format the BitGo offline vault expects
359
+ * @param {UnformattedTxInfo} txInfo - tx info
360
+ * @param {EthLikeTxLib.Transaction | EthLikeTxLib.FeeMarketEIP1559Transaction} ethTx - the ethereumjs tx object
361
+ * @param {string} userKey - the user's key
362
+ * @param {string} backupKey - the backup key
363
+ * @param {Buffer} gasPrice - gas price for the tx
364
+ * @param {number} gasLimit - gas limit for the tx
365
+ * @param {number} backupKeyNonce - the nonce of the backup key address
366
+ * @param {EIP1559} eip1559 - eip1559 params
367
+ * @param {ReplayProtectionOptions} replayProtectionOptions - replay protection options
368
+ * @returns {Promise<OfflineVaultTxInfo>}
369
+ */
370
+ formatForOfflineVaultTSS(txInfo: UnformattedTxInfo, ethTx: EthLikeTxLib.Transaction | EthLikeTxLib.FeeMarketEIP1559Transaction, userKey: string, backupKey: string, gasPrice: Buffer, gasLimit: number, backupKeyNonce: number, eip1559?: EIP1559, replayProtectionOptions?: ReplayProtectionOptions): OfflineVaultTxInfo;
371
+ /**
372
+ * Check whether the gas price passed in by user are within our max and min bounds
373
+ * If they are not set, set them to the defaults
374
+ * @param {number} userGasPrice - user defined gas price
375
+ * @returns {number} the gas price to use for this transaction
376
+ */
377
+ setGasPrice(userGasPrice?: number): number;
378
+ /**
379
+ * Check whether gas limit passed in by user are within our max and min bounds
380
+ * If they are not set, set them to the defaults
381
+ * @param {number} userGasLimit user defined gas limit
382
+ * @returns {number} the gas limit to use for this transaction
383
+ */
384
+ setGasLimit(userGasLimit?: number): number;
385
+ /**
386
+ * Helper function for signTransaction for the rare case that SDK is doing the second signature
387
+ * Note: we are expecting this to be called from the offline vault
388
+ * @param {SignFinalOptions.txPrebuild} params.txPrebuild
389
+ * @param {string} params.prv
390
+ * @returns {{txHex: string}}
391
+ */
392
+ signFinalEthLike(params: SignFinalOptions): Promise<FullySignedTransaction>;
393
+ /**
394
+ * Assemble half-sign prebuilt transaction
395
+ * @param {SignTransactionOptions} params
396
+ */
397
+ signTransaction(params: SignTransactionOptions): Promise<SignedTransaction>;
398
+ /**
399
+ * Method to validate recovery params
400
+ * @param {RecoverOptions} params
401
+ * @returns {void}
402
+ */
403
+ validateRecoveryParams(params: RecoverOptions): void;
404
+ /**
405
+ * Method to sign tss recovery transaction
406
+ * @param {ECDSA.KeyCombined} userKeyCombined
407
+ * @param {ECDSA.KeyCombined} backupKeyCombined
408
+ * @param {string} txHex
409
+ * @param {Object} options
410
+ * @param {EcdsaTypes.SerializedNtilde} options.rangeProofChallenge
411
+ * @returns {Promise<ECDSAMethodTypes.Signature>}
412
+ */
413
+ private signRecoveryTSS;
414
+ /**
415
+ * Helper which combines key shares of user and backup
416
+ * @param {string} userPublicOrPrivateKeyShare
417
+ * @param {string} backupPrivateOrPublicKeyShare
418
+ * @param {string} walletPassphrase
419
+ * @returns {[ECDSAMethodTypes.KeyCombined, ECDSAMethodTypes.KeyCombined]}
420
+ */
421
+ private getKeyCombinedFromTssKeyShares;
422
+ /**
423
+ * Helper which Adds signatures to tx object and re-serializes tx
424
+ * @param {EthLikeCommon.default} ethCommon
425
+ * @param {EthLikeTxLib.FeeMarketEIP1559Transaction | EthLikeTxLib.Transaction} tx
426
+ * @param {ECDSAMethodTypes.Signature} signature
427
+ * @returns {EthLikeTxLib.FeeMarketEIP1559Transaction | EthLikeTxLib.Transaction}
428
+ */
429
+ private getSignedTxFromSignature;
430
+ /**
431
+ * Builds a funds recovery transaction without BitGo
432
+ * @param params
433
+ * @param {string} params.userKey - [encrypted] xprv
434
+ * @param {string} params.backupKey - [encrypted] xprv or xpub if the xprv is held by a KRS provider
435
+ * @param {string} params.walletPassphrase - used to decrypt userKey and backupKey
436
+ * @param {string} params.walletContractAddress - the ETH address of the wallet contract
437
+ * @param {string} params.krsProvider - necessary if backup key is held by KRS
438
+ * @param {string} params.recoveryDestination - target address to send recovered funds to
439
+ * @param {string} params.bitgoFeeAddress - wrong chain wallet fee address for evm based cross chain recovery txn
440
+ * @param {string} params.bitgoDestinationAddress - target bitgo address where fee will be sent for evm based cross chain recovery txn
441
+ */
442
+ recover(params: RecoverOptions): Promise<RecoveryInfo | OfflineVaultTxInfo>;
443
+ /**
444
+ * Builds a funds recovery transaction without BitGo for non-TSS transaction
445
+ * @param params
446
+ * @param {string} params.userKey [encrypted] xprv or xpub
447
+ * @param {string} params.backupKey [encrypted] xprv or xpub if the xprv is held by a KRS provider
448
+ * @param {string} params.walletPassphrase used to decrypt userKey and backupKey
449
+ * @param {string} params.walletContractAddress the EthLike address of the wallet contract
450
+ * @param {string} params.krsProvider necessary if backup key is held by KRS
451
+ * @param {string} params.recoveryDestination target address to send recovered funds to
452
+ * @param {string} params.bitgoFeeAddress wrong chain wallet fee address for evm based cross chain recovery txn
453
+ * @param {string} params.bitgoDestinationAddress target bitgo address where fee will be sent for evm based cross chain recovery txn
454
+ * @returns {Promise<RecoveryInfo | OfflineVaultTxInfo>}
455
+ */
456
+ protected recoverEthLike(params: RecoverOptions): Promise<RecoveryInfo | OfflineVaultTxInfo>;
457
+ /**
458
+ * Builds a unsigned (for cold, custody wallet) or
459
+ * half-signed (for hot wallet) evm cross chain recovery transaction with
460
+ * same expected arguments as recover method.
461
+ * This helps recover funds from evm based wrong chain.
462
+ * @param {RecoverOptions} params
463
+ * @returns {Promise<RecoveryInfo | OfflineVaultTxInfo>}
464
+ */
465
+ protected recoverEthLikeforEvmBasedRecovery(params: RecoverOptions): Promise<RecoveryInfo | OfflineVaultTxInfo>;
466
+ /**
467
+ * Query explorer for the balance of an address for a token
468
+ * @param {string} tokenContractAddress - address where the token smart contract is hosted
469
+ * @param {string} walletContractAddress - address of the wallet
470
+ * @returns {BigNumber} token balaance in base units
471
+ */
472
+ queryAddressTokenBalance(tokenContractAddress: string, walletContractAddress: string): Promise<any>;
473
+ recoverEthLikeTokenforEvmBasedRecovery(params: RecoverOptions, bitgoFeeAddressNonce: number, gasLimit: any, gasPrice: any, userKey: any, userSigningKey: any): Promise<OfflineVaultTxInfo>;
474
+ /**
475
+ * Validate evm based cross chain recovery params
476
+ * @param params {RecoverOptions}
477
+ * @returns {void}
478
+ */
479
+ validateEvmBasedRecoveryParams(params: RecoverOptions): void;
480
+ /**
481
+ * Return types, values, and total amount in wei to send in a batch transaction, using the method signature
482
+ * `distributeBatch(address[], uint256[])`
483
+ * @param {Recipient[]} recipients - transaction recipients
484
+ * @returns {GetBatchExecutionInfoRT} information needed to execute the batch transaction
485
+ */
486
+ getBatchExecutionInfo(recipients: Recipient[]): GetBatchExecutionInfoRT;
487
+ /**
488
+ * Get the data required to make an ETH function call defined by the given types and values
489
+ *
490
+ * @param {string} functionName - The name of the function being called, e.g. transfer
491
+ * @param types The types of the function call in order
492
+ * @param values The values of the function call in order
493
+ * @return {Buffer} The combined data for the function call
494
+ */
495
+ getMethodCallData: (functionName: any, types: any, values: any) => Buffer;
496
+ /**
497
+ * Build arguments to call the send method on the wallet contract
498
+ * @param txInfo
499
+ */
500
+ getSendMethodArgs(txInfo: GetSendMethodArgsOptions): SendMethodArgs[];
501
+ /**
502
+ * Recovers a tx with TSS key shares
503
+ * same expected arguments as recover method, but with TSS key shares
504
+ */
505
+ protected recoverTSS(params: RecoverOptions): Promise<RecoveryInfo | OfflineVaultTxInfo>;
506
+ private buildTssRecoveryTxn;
507
+ validateBalanceAndGetTxAmount(baseAddress: string, gasPrice: BN, gasLimit: BN): Promise<any>;
508
+ recoveryBlockchainExplorerQuery(query: Record<string, string>): Promise<any>;
509
+ /**
510
+ * Creates the extra parameters needed to build a hop transaction
511
+ * @param buildParams The original build parameters
512
+ * @returns extra parameters object to merge with the original build parameters object and send to the platform
513
+ */
514
+ createHopTransactionParams(buildParams: HopTransactionBuildOptions): Promise<HopParams>;
515
+ /**
516
+ * Validates that the hop prebuild from the HSM is valid and correct
517
+ * @param {IWallet} wallet - The wallet that the prebuild is for
518
+ * @param {HopPrebuild} hopPrebuild - The prebuild to validate
519
+ * @param {Object} originalParams - The original parameters passed to prebuildTransaction
520
+ * @param {Recipient[]} originalParams.recipients - The original recipients array
521
+ * @returns {void}
522
+ * @throws Error if The prebuild is invalid
523
+ */
524
+ validateHopPrebuild(wallet: IWallet, hopPrebuild: HopPrebuild, originalParams?: {
525
+ recipients: Recipient[];
526
+ }): Promise<void>;
527
+ /**
528
+ * Gets the hop digest for the user to sign. This is validated in the HSM to prove that the user requested this tx
529
+ * @param {string[]} paramsArr - The parameters to hash together for the digest
530
+ * @returns {Buffer}
531
+ */
532
+ private static getHopDigest;
533
+ /**
534
+ * Modify prebuild before sending it to the server. Add things like hop transaction params
535
+ * @param {BuildOptions} buildParams - The whitelisted parameters for this prebuild
536
+ * @param {boolean} buildParams.hop - True if this should prebuild a hop tx, else false
537
+ * @param {Recipient[]} buildParams.recipients - The recipients array of this transaction
538
+ * @param {Wallet} buildParams.wallet - The wallet sending this tx
539
+ * @param {string} buildParams.walletPassphrase - the passphrase for this wallet
540
+ * @returns {Promise<BuildOptions>}
541
+ */
542
+ getExtraPrebuildParams(buildParams: BuildOptions): Promise<BuildOptions>;
543
+ /**
544
+ * Modify prebuild after receiving it from the server. Add things like nlocktime
545
+ * @param {TransactionPrebuild} params - The prebuild to modify
546
+ * @returns {TransactionPrebuild} The modified prebuild
547
+ */
548
+ postProcessPrebuild(params: TransactionPrebuild): Promise<TransactionPrebuild>;
549
+ /**
550
+ * Coin-specific things done before signing a transaction, i.e. verification
551
+ * @param {PresignTransactionOptions} params
552
+ * @returns {Promise<PresignTransactionOptions>}
553
+ */
554
+ presignTransaction(params: PresignTransactionOptions): Promise<PresignTransactionOptions>;
555
+ /**
556
+ * Fetch fee estimate information from the server
557
+ * @param {Object} params - The params passed into the function
558
+ * @param {boolean} [params.hop] - True if we should estimate fee for a hop transaction
559
+ * @param {string} [params.recipient] - The recipient of the transaction to estimate a send to
560
+ * @param {string} [params.data] - The ETH tx data to estimate a send for
561
+ * @returns {Object} The fee info returned from the server
562
+ */
563
+ feeEstimate(params: FeeEstimateOptions): Promise<FeeEstimate>;
564
+ /**
565
+ * Generate secp256k1 key pair
566
+ *
567
+ * @param {Buffer} seed
568
+ * @returns {KeyPair} object with generated pub and prv
569
+ */
570
+ generateKeyPair(seed: Buffer): KeyPair;
571
+ parseTransaction(params: ParseTransactionOptions): Promise<ParsedTransaction>;
572
+ /**
573
+ * Make sure an address is a wallet address and throw an error if it's not.
574
+ * @param {Object} params
575
+ * @param {string} params.address - The derived address string on the network
576
+ * @param {Object} params.coinSpecific - Coin-specific details for the address such as a forwarderVersion
577
+ * @param {string} params.baseAddress - The base address of the wallet on the network
578
+ * @throws {InvalidAddressError}
579
+ * @throws {InvalidAddressVerificationObjectPropertyError}
580
+ * @throws {UnexpectedAddressError}
581
+ * @returns {boolean} True iff address is a wallet address
582
+ */
583
+ isWalletAddress(params: VerifyEthAddressOptions): Promise<boolean>;
584
+ /**
585
+ *
586
+ * @param {TransactionPrebuild} txPrebuild
587
+ * @returns {boolean}
588
+ */
589
+ verifyCoin(txPrebuild: TransactionPrebuild): boolean;
590
+ /**
591
+ * Verify if a tss transaction is valid
592
+ *
593
+ * @param {VerifyEthTransactionOptions} params
594
+ * @param {TransactionParams} params.txParams - params object passed to send
595
+ * @param {TransactionPrebuild} params.txPrebuild - prebuild object returned by server
596
+ * @param {Wallet} params.wallet - Wallet object to obtain keys to verify against
597
+ * @returns {boolean}
598
+ */
599
+ verifyTssTransaction(params: VerifyEthTransactionOptions): boolean;
600
+ /**
601
+ * Verify that a transaction prebuild complies with the original intention
602
+ *
603
+ * @param {VerifyEthTransactionOptions} params
604
+ * @param {TransactionParams} params.txParams - params object passed to send
605
+ * @param {TransactionPrebuild} params.txPrebuild - prebuild object returned by server
606
+ * @param {Wallet} params.wallet - Wallet object to obtain keys to verify against
607
+ * @returns {boolean}
608
+ */
609
+ verifyTransaction(params: VerifyEthTransactionOptions): Promise<boolean>;
610
+ /**
611
+ * Check if address is valid eth address
612
+ * @param address
613
+ * @returns {boolean}
614
+ */
615
+ private isETHAddress;
616
+ /**
617
+ * Transform message to accommodate specific blockchain requirements.
618
+ * @param {string} message - the message to prepare
619
+ * @return {string} the prepared message.
620
+ */
621
+ encodeMessage(message: string): string;
622
+ /**
623
+ * Transform the Typed data to accomodate the blockchain requirements (EIP-712)
624
+ * @param {TypedData} typedData - the typed data to prepare
625
+ * @return {Buffer} a buffer of the result
626
+ */
627
+ encodeTypedData(typedData: TypedData): Buffer;
628
+ /**
629
+ * Build the data to transfer an ERC-721 or ERC-1155 token to another address
630
+ * @param params
631
+ */
632
+ buildNftTransferData(params: BuildNftTransferDataOptions): string;
633
+ }
634
+ export {};
635
+ //# sourceMappingURL=abstractEthLikeNewCoins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstractEthLikeNewCoins.d.ts","sourceRoot":"","sources":["../../src/abstractEthLikeNewCoins.ts"],"names":[],"mappings":";AAAA;;GAEG;AACH,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,2BAA2B,EAM3B,kBAAkB,EAClB,sBAAsB,EAEtB,qBAAqB,EAIrB,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,IAAI,6BAA6B,EAC1D,SAAS,EACT,sBAAsB,IAAI,0BAA0B,EACpD,iBAAiB,EACjB,mBAAmB,IAAI,uBAAuB,EAC9C,oBAAoB,EACpB,SAAS,EAGT,oBAAoB,IAAI,wBAAwB,EAChD,wBAAwB,EACxB,MAAM,EAEP,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,QAAQ,IAAI,eAAe,EAG3B,eAAe,IAAI,cAAc,EAElC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAIpD,OAAO,EAAE,MAAM,OAAO,CAAC;AAQvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAc5D;;GAEG;AACH,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,UAAU,SAAS;IACjB,SAAS,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,WAAW,EAAE;QACX,UAAU,EAAE,SAAS,EAAE,CAAC;KACzB,CAAC;IACF,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;QAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,UAAU,CAAC,EAAE;YACX,UAAU,EAAE,MAAM,CAAC;YACnB,kBAAkB,EAAE,MAAM,CAAC;YAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,SAAS,EAAE,MAAM,CAAC;YAClB,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAChC,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B,EAAE,gBAAgB;IAC1F,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC;CAChC;AAED,oBAAY,iBAAiB,GAAG,qBAAqB,GAAG,sBAAsB,CAAC;AAE/E,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,qBAAqB;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC;AAED,UAAU,iBAAiB;IACzB,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC;CAChC;AAED,oBAAY,uBAAuB,GAAG;IACpC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;CACnD;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE;QACV,SAAS,EAAE,SAAS,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,UAAU,WAAW;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,UAAU,oBAAqB,SAAQ,iBAAiB;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,yBAAyB,CAAC;CACxC;AAED,UAAU,2BAA4B,SAAQ,wBAAwB;IACpE,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED,UAAU,yBAA0B,SAAQ,mBAAmB,EAAE,6BAA6B;IAC5F,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,uBAAwB,SAAQ,mBAAmB;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,uBAAuB,CAAC;IACtC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAID,eAAO,MAAM,YAAY;;;;;CAwCxB,CAAC;AAEF,8BAAsB,uBAAwB,SAAQ,mBAAmB;IACvE,MAAM,CAAC,kBAAkB,SAAgC;IACzD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,mBAAmB,CAAC;IAExE,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAEjD,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAW/E;;;OAGG;IACH,UAAU,IAAI,cAAc,GAAG,SAAS;IAIxC;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC;;;OAGG;IACH,sBAAsB;IAItB;;;OAGG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO;IAOnE;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CACrB,MAAM,EAAE,sBAAsB,GAC7B,YAAY,CAAC,2BAA2B,GAAG,YAAY,CAAC,WAAW;IAgCtE;;;;OAIG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAaxD;;;;;OAKG;IACH,oCAAoC,CAClC,UAAU,EAAE,SAAS,EAAE,EACvB,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,GACzB,MAAM;IA+CT;;;;;;OAMG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE;IAezG;;;;OAIG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBvD;;;;;;;;;;;;OAYG;IACG,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAyIjF;;;;;;OAMG;IACH,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;IA4BnD;;;;OAIG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBvD;;;;;;;;;;;;OAYG;IACG,qBAAqB,CACzB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,2BAA2B,EAC1E,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,EACjB,uBAAuB,CAAC,EAAE,uBAAuB,GAChD,OAAO,CAAC,kBAAkB,CAAC;IA2B9B;;;;;;;;;;;;;OAaG;IACH,wBAAwB,CACtB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,2BAA2B,EAC1E,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,OAAO,EACjB,uBAAuB,CAAC,EAAE,uBAAuB,GAChD,kBAAkB;IAuBrB;;;;;OAKG;IACH,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAY1C;;;;;OAKG;IACH,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAY1C;;;;;;OAMG;IACG,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAkBjF;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+BjF;;;;OAIG;IACH,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAsBpD;;;;;;;;OAQG;YACW,eAAe;IA4F7B;;;;;;OAMG;IACH,OAAO,CAAC,8BAA8B;IA2DtC;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IA4ChC;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,kBAAkB,CAAC;IAOjF;;;;;;;;;;;;OAYG;cACa,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,kBAAkB,CAAC;IAgLlG;;;;;;;OAOG;cACa,iCAAiC,CAC/C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,YAAY,GAAG,kBAAkB,CAAC;IAmM7C;;;;;OAKG;IACG,wBAAwB,CAAC,oBAAoB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAwBnG,sCAAsC,CAC1C,MAAM,EAAE,cAAc,EACtB,oBAAoB,EAAE,MAAM,EAC5B,QAAQ,KAAA,EACR,QAAQ,KAAA,EACR,OAAO,KAAA,EACP,cAAc,KAAA;IAqHhB;;;;OAIG;IACH,8BAA8B,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAc5D;;;;;OAKG;IACH,qBAAqB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,uBAAuB;IAgBvE;;;;;;;OAOG;IACH,iBAAiB,yDAOf;IAEF;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,cAAc,EAAE;IAqCrE;;;OAGG;cACa,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,kBAAkB,CAAC;YAoFhF,mBAAmB;IA+B3B,6BAA6B,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IAiB7E,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAIlF;;;;OAIG;IACG,0BAA0B,CAAC,WAAW,EAAE,0BAA0B,GAAG,OAAO,CAAC,SAAS,CAAC;IAuD7F;;;;;;;;OAQG;IACG,mBAAmB,CACvB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,WAAW,EACxB,cAAc,CAAC,EAAE;QAAE,UAAU,EAAE,SAAS,EAAE,CAAA;KAAE,GAC3C,OAAO,CAAC,IAAI,CAAC;IAmDhB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAM3B;;;;;;;;OAQG;IACG,sBAAsB,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAsB9E;;;;OAIG;IACG,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAOpF;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAO/F;;;;;;;OAOG;IACG,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAkBnE;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAehC,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInF;;;;;;;;;;OAUG;IACG,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoDxE;;;;OAIG;IACH,UAAU,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO;IAIpD;;;;;;;;OAQG;IACH,oBAAoB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO;IAoBlE;;;;;;;;OAQG;IACG,iBAAiB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;IAwF9E;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAKtC;;;;OAIG;IACH,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAwB7C;;;OAGG;IACH,oBAAoB,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM;CA6BlE"}