@bitgo-beta/abstract-eth 1.2.3-alpha.22 → 1.2.3-alpha.221

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 (88) hide show
  1. package/CHANGELOG.md +1425 -0
  2. package/dist/src/abstractEthLikeCoin.d.ts +13 -7
  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 +662 -0
  6. package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
  7. package/dist/src/abstractEthLikeNewCoins.js +1960 -0
  8. package/dist/src/ethLikeToken.d.ts +35 -5
  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 +249 -0
  30. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  31. package/dist/src/lib/transactionBuilder.js +732 -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/test/index.d.ts +2 -0
  57. package/dist/test/index.d.ts.map +1 -0
  58. package/dist/test/index.js +18 -0
  59. package/dist/test/unit/coin.d.ts +8 -0
  60. package/dist/test/unit/coin.d.ts.map +1 -0
  61. package/dist/test/unit/coin.js +568 -0
  62. package/dist/test/unit/index.d.ts +5 -0
  63. package/dist/test/unit/index.d.ts.map +1 -0
  64. package/dist/test/unit/index.js +21 -0
  65. package/dist/test/unit/token.d.ts +2 -0
  66. package/dist/test/unit/token.d.ts.map +1 -0
  67. package/dist/test/unit/token.js +38 -0
  68. package/dist/test/unit/transaction.d.ts +3 -0
  69. package/dist/test/unit/transaction.d.ts.map +1 -0
  70. package/dist/test/unit/transaction.js +61 -0
  71. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +8 -0
  72. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +1 -0
  73. package/dist/test/unit/transactionBuilder/addressInitialization.js +96 -0
  74. package/dist/test/unit/transactionBuilder/index.d.ts +4 -0
  75. package/dist/test/unit/transactionBuilder/index.d.ts.map +1 -0
  76. package/dist/test/unit/transactionBuilder/index.js +20 -0
  77. package/dist/test/unit/transactionBuilder/send.d.ts +3 -0
  78. package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
  79. package/dist/test/unit/transactionBuilder/send.js +188 -0
  80. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +10 -0
  81. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
  82. package/dist/test/unit/transactionBuilder/walletInitialization.js +125 -0
  83. package/dist/test/unit/transferBuilder.d.ts +2 -0
  84. package/dist/test/unit/transferBuilder.d.ts.map +1 -0
  85. package/dist/test/unit/transferBuilder.js +76 -0
  86. package/dist/tsconfig.tsbuildinfo +1 -8182
  87. package/index.ts +2 -0
  88. package/package.json +28 -9
@@ -0,0 +1,662 @@
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
+ walletVersion?: number;
95
+ }
96
+ export type SignedTransaction = HalfSignedTransaction | FullySignedTransaction;
97
+ export interface FeesUsed {
98
+ gasPrice: number;
99
+ gasLimit: number;
100
+ }
101
+ interface PrecreateBitGoOptions {
102
+ enterprise?: string;
103
+ newFeeAddress?: string;
104
+ }
105
+ export interface OfflineVaultTxInfo {
106
+ nextContractSequenceId?: string;
107
+ contractSequenceId?: string;
108
+ tx?: string;
109
+ txHex?: string;
110
+ userKey?: string;
111
+ backupKey?: string;
112
+ coin: string;
113
+ gasPrice: number;
114
+ gasLimit: number;
115
+ recipients: Recipient[];
116
+ walletContractAddress: string;
117
+ amount: string;
118
+ backupKeyNonce: number;
119
+ eip1559?: EIP1559;
120
+ replayProtectionOptions?: ReplayProtectionOptions;
121
+ halfSigned?: HalfSignedTransaction;
122
+ feesUsed?: FeesUsed;
123
+ isEvmBasedCrossChainRecovery?: boolean;
124
+ walletVersion?: number;
125
+ }
126
+ interface UnformattedTxInfo {
127
+ recipient: Recipient;
128
+ }
129
+ export type RecoverOptionsWithBytes = {
130
+ isTss: true;
131
+ openSSLBytes: Uint8Array;
132
+ };
133
+ export type NonTSSRecoverOptions = {
134
+ isTss?: false | undefined;
135
+ };
136
+ export type TSSRecoverOptions = RecoverOptionsWithBytes | NonTSSRecoverOptions;
137
+ export type RecoverOptions = {
138
+ userKey: string;
139
+ backupKey: string;
140
+ walletPassphrase?: string;
141
+ walletContractAddress: string;
142
+ recoveryDestination: string;
143
+ krsProvider?: string;
144
+ gasPrice?: number;
145
+ gasLimit?: number;
146
+ eip1559?: EIP1559;
147
+ replayProtectionOptions?: ReplayProtectionOptions;
148
+ bitgoFeeAddress?: string;
149
+ bitgoDestinationAddress?: string;
150
+ tokenContractAddress?: string;
151
+ intendedChain?: string;
152
+ common?: EthLikeCommon.default;
153
+ } & TSSRecoverOptions;
154
+ export type GetBatchExecutionInfoRT = {
155
+ values: [string[], string[]];
156
+ totalAmount: string;
157
+ };
158
+ export interface BuildTransactionParams {
159
+ to: string;
160
+ nonce?: number;
161
+ value: number;
162
+ data?: Buffer;
163
+ gasPrice?: number;
164
+ gasLimit?: number;
165
+ eip1559?: EIP1559;
166
+ replayProtectionOptions?: ReplayProtectionOptions;
167
+ }
168
+ export interface RecoveryInfo {
169
+ id: string;
170
+ tx: string;
171
+ backupKey?: string;
172
+ coin?: string;
173
+ }
174
+ export interface RecoverTokenTransaction {
175
+ halfSigned: {
176
+ recipient: Recipient;
177
+ expireTime: number;
178
+ contractSequenceId: number;
179
+ operationHash: string;
180
+ signature: string;
181
+ gasLimit: number;
182
+ gasPrice: number;
183
+ tokenContractAddress: string;
184
+ walletId: string;
185
+ };
186
+ }
187
+ export interface RecoverTokenOptions {
188
+ tokenContractAddress: string;
189
+ wallet: Wallet;
190
+ recipient: string;
191
+ broadcast?: boolean;
192
+ walletPassphrase?: string;
193
+ prv?: string;
194
+ }
195
+ export interface GetSendMethodArgsOptions {
196
+ recipient: Recipient;
197
+ expireTime: number;
198
+ contractSequenceId: number;
199
+ signature: string;
200
+ }
201
+ export interface SendMethodArgs {
202
+ name: string;
203
+ type: string;
204
+ value: any;
205
+ }
206
+ interface HopTransactionBuildOptions {
207
+ wallet: Wallet;
208
+ recipients: Recipient[];
209
+ walletPassphrase: string;
210
+ }
211
+ export interface BuildOptions {
212
+ hop?: boolean;
213
+ wallet?: Wallet;
214
+ recipients?: Recipient[];
215
+ walletPassphrase?: string;
216
+ [index: string]: unknown;
217
+ }
218
+ interface FeeEstimate {
219
+ gasLimitEstimate: number;
220
+ feeEstimate: number;
221
+ }
222
+ interface EthTransactionParams extends TransactionParams {
223
+ gasPrice?: number;
224
+ gasLimit?: number;
225
+ hopParams?: HopParams;
226
+ hop?: boolean;
227
+ prebuildTx?: PrebuildTransactionResult;
228
+ }
229
+ interface VerifyEthTransactionOptions extends VerifyTransactionOptions {
230
+ txPrebuild: TransactionPrebuild;
231
+ txParams: EthTransactionParams;
232
+ }
233
+ interface PresignTransactionOptions extends TransactionPrebuild, BasePresignTransactionOptions {
234
+ wallet: Wallet;
235
+ }
236
+ interface EthAddressCoinSpecifics extends AddressCoinSpecific {
237
+ forwarderVersion: number;
238
+ salt?: string;
239
+ }
240
+ export interface VerifyEthAddressOptions extends BaseVerifyAddressOptions {
241
+ baseAddress: string;
242
+ coinSpecific: EthAddressCoinSpecifics;
243
+ forwarderVersion: number;
244
+ }
245
+ export declare const optionalDeps: {
246
+ readonly ethAbi: any;
247
+ readonly ethUtil: any;
248
+ readonly EthTx: typeof EthLikeTxLib;
249
+ readonly EthCommon: typeof EthLikeCommon;
250
+ };
251
+ export declare abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
252
+ static hopTransactionSalt: string;
253
+ protected readonly sendMethodName: 'sendMultiSig' | 'sendMultiSigToken';
254
+ readonly staticsCoin?: Readonly<StaticsBaseCoin>;
255
+ protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
256
+ /**
257
+ * Method to return the coin's network object
258
+ * @returns {EthLikeNetwork | undefined}
259
+ */
260
+ getNetwork(): EthLikeNetwork | undefined;
261
+ /**
262
+ * Evaluates whether an address string is valid for this coin
263
+ * @param {string} address
264
+ * @returns {boolean} True if address is the valid ethlike adderss
265
+ */
266
+ isValidAddress(address: string): boolean;
267
+ /**
268
+ * Flag for sending data along with transactions
269
+ * @returns {boolean} True if okay to send tx data (ETH), false otherwise
270
+ */
271
+ transactionDataAllowed(): boolean;
272
+ /**
273
+ * Default expire time for a contract call (1 week)
274
+ * @returns {number} Time in seconds
275
+ */
276
+ getDefaultExpireTime(): number;
277
+ /**
278
+ * Method to get the custom chain common object based on params from recovery
279
+ * @param {number} chainId - the chain id of the custom chain
280
+ * @returns {EthLikeCommon.default}
281
+ */
282
+ static getCustomChainCommon(chainId: number): EthLikeCommon.default;
283
+ /**
284
+ * Gets correct Eth Common object based on params from either recovery or tx building
285
+ * @param {EIP1559} eip1559 - configs that specify whether we should construct an eip1559 tx
286
+ * @param {ReplayProtectionOptions} replayProtectionOptions - check if chain id supports replay protection
287
+ * @returns {EthLikeCommon.default}
288
+ */
289
+ private static getEthLikeCommon;
290
+ /**
291
+ * Method to build the tx object
292
+ * @param {BuildTransactionParams} params - params to build transaction
293
+ * @returns {EthLikeTxLib.FeeMarketEIP1559Transaction | EthLikeTxLib.Transaction}
294
+ */
295
+ static buildTransaction(params: BuildTransactionParams): EthLikeTxLib.FeeMarketEIP1559Transaction | EthLikeTxLib.Transaction;
296
+ /**
297
+ * Query explorer for the balance of an address
298
+ * @param {String} address - the ETHLike address
299
+ * @returns {BigNumber} address balance
300
+ */
301
+ queryAddressBalance(address: string): Promise<any>;
302
+ /**
303
+ * @param {Recipient[]} recipients - the recipients of the transaction
304
+ * @param {number} expireTime - the expire time of the transaction
305
+ * @param {number} contractSequenceId - the contract sequence id of the transaction
306
+ * @returns {string}
307
+ */
308
+ getOperationSha3ForExecuteAndConfirm(recipients: Recipient[], expireTime: number, contractSequenceId: number): string;
309
+ /**
310
+ * Get transfer operation for coin
311
+ * @param {Recipient} recipient - recipient info
312
+ * @param {number} expireTime - expiry time
313
+ * @param {number} contractSequenceId - sequence id
314
+ * @returns {Array} operation array
315
+ */
316
+ getOperation(recipient: Recipient, expireTime: number, contractSequenceId: number): (string | Buffer)[][];
317
+ /**
318
+ * Queries the contract (via explorer API) for the next sequence ID
319
+ * @param {String} address - address of the contract
320
+ * @returns {Promise<Number>} sequence ID
321
+ */
322
+ querySequenceId(address: string): Promise<number>;
323
+ /**
324
+ * Recover an unsupported token from a BitGo multisig wallet
325
+ * This builds a half-signed transaction, for which there will be an admin route to co-sign and broadcast. Optionally
326
+ * the user can set params.broadcast = true and the half-signed tx will be sent to BitGo for cosigning and broadcasting
327
+ * @param {RecoverTokenOptions} params
328
+ * @param {Wallet} params.wallet - the wallet to recover the token from
329
+ * @param {string} params.tokenContractAddress - the contract address of the unsupported token
330
+ * @param {string} params.recipient - the destination address recovered tokens should be sent to
331
+ * @param {string} params.walletPassphrase - the wallet passphrase
332
+ * @param {string} params.prv - the xprv
333
+ * @param {boolean} params.broadcast - if true, we will automatically submit the half-signed tx to BitGo for cosigning and broadcasting
334
+ * @returns {Promise<RecoverTokenTransaction>}
335
+ */
336
+ recoverToken(params: RecoverTokenOptions): Promise<RecoverTokenTransaction>;
337
+ /**
338
+ * Ensure either enterprise or newFeeAddress is passed, to know whether to create new key or use enterprise key
339
+ * @param {PrecreateBitGoOptions} params
340
+ * @param {string} params.enterprise {String} the enterprise id to associate with this key
341
+ * @param {string} params.newFeeAddress {Boolean} create a new fee address (enterprise not needed in this case)
342
+ * @returns {void}
343
+ */
344
+ preCreateBitGo(params: PrecreateBitGoOptions): void;
345
+ /**
346
+ * Queries public block explorer to get the next ETHLike coin's nonce that should be used for the given ETH address
347
+ * @param {string} address
348
+ * @returns {Promise<number>}
349
+ */
350
+ getAddressNonce(address: string): Promise<number>;
351
+ /**
352
+ * Helper function for recover()
353
+ * This transforms the unsigned transaction information into a format the BitGo offline vault expects
354
+ * @param {UnformattedTxInfo} txInfo - tx info
355
+ * @param {EthLikeTxLib.Transaction | EthLikeTxLib.FeeMarketEIP1559Transaction} ethTx - the ethereumjs tx object
356
+ * @param {string} userKey - the user's key
357
+ * @param {string} backupKey - the backup key
358
+ * @param {Buffer} gasPrice - gas price for the tx
359
+ * @param {number} gasLimit - gas limit for the tx
360
+ * @param {EIP1559} eip1559 - eip1559 params
361
+ * @param {ReplayProtectionOptions} replayProtectionOptions - replay protection options
362
+ * @returns {Promise<OfflineVaultTxInfo>}
363
+ */
364
+ formatForOfflineVault(txInfo: UnformattedTxInfo, ethTx: EthLikeTxLib.Transaction | EthLikeTxLib.FeeMarketEIP1559Transaction, userKey: string, backupKey: string, gasPrice: Buffer, gasLimit: number, eip1559?: EIP1559, replayProtectionOptions?: ReplayProtectionOptions): Promise<OfflineVaultTxInfo>;
365
+ /**
366
+ * Helper function for recover()
367
+ * This transforms the unsigned transaction information into a format the BitGo offline vault expects
368
+ * @param {UnformattedTxInfo} txInfo - tx info
369
+ * @param {EthLikeTxLib.Transaction | EthLikeTxLib.FeeMarketEIP1559Transaction} ethTx - the ethereumjs tx object
370
+ * @param {string} userKey - the user's key
371
+ * @param {string} backupKey - the backup key
372
+ * @param {Buffer} gasPrice - gas price for the tx
373
+ * @param {number} gasLimit - gas limit for the tx
374
+ * @param {number} backupKeyNonce - the nonce of the backup key address
375
+ * @param {EIP1559} eip1559 - eip1559 params
376
+ * @param {ReplayProtectionOptions} replayProtectionOptions - replay protection options
377
+ * @returns {Promise<OfflineVaultTxInfo>}
378
+ */
379
+ formatForOfflineVaultTSS(txInfo: UnformattedTxInfo, ethTx: EthLikeTxLib.Transaction | EthLikeTxLib.FeeMarketEIP1559Transaction, userKey: string, backupKey: string, gasPrice: Buffer, gasLimit: number, backupKeyNonce: number, eip1559?: EIP1559, replayProtectionOptions?: ReplayProtectionOptions): OfflineVaultTxInfo;
380
+ /**
381
+ * Check whether the gas price passed in by user are within our max and min bounds
382
+ * If they are not set, set them to the defaults
383
+ * @param {number} userGasPrice - user defined gas price
384
+ * @returns {number} the gas price to use for this transaction
385
+ */
386
+ setGasPrice(userGasPrice?: number): number;
387
+ /**
388
+ * Check whether gas limit passed in by user are within our max and min bounds
389
+ * If they are not set, set them to the defaults
390
+ * @param {number} userGasLimit user defined gas limit
391
+ * @returns {number} the gas limit to use for this transaction
392
+ */
393
+ setGasLimit(userGasLimit?: number): number;
394
+ /**
395
+ * Helper function for signTransaction for the rare case that SDK is doing the second signature
396
+ * Note: we are expecting this to be called from the offline vault
397
+ * @param {SignFinalOptions.txPrebuild} params.txPrebuild
398
+ * @param {string} params.prv
399
+ * @returns {{txHex: string}}
400
+ */
401
+ signFinalEthLike(params: SignFinalOptions): Promise<FullySignedTransaction>;
402
+ /**
403
+ * Assemble half-sign prebuilt transaction
404
+ * @param {SignTransactionOptions} params
405
+ */
406
+ signTransaction(params: SignTransactionOptions): Promise<SignedTransaction>;
407
+ /**
408
+ * Method to validate recovery params
409
+ * @param {RecoverOptions} params
410
+ * @returns {void}
411
+ */
412
+ validateRecoveryParams(params: RecoverOptions): void;
413
+ /**
414
+ * Method to sign tss recovery transaction
415
+ * @param {ECDSA.KeyCombined} userKeyCombined
416
+ * @param {ECDSA.KeyCombined} backupKeyCombined
417
+ * @param {string} txHex
418
+ * @param {Object} options
419
+ * @param {EcdsaTypes.SerializedNtilde} options.rangeProofChallenge
420
+ * @returns {Promise<ECDSAMethodTypes.Signature>}
421
+ */
422
+ private signRecoveryTSS;
423
+ /**
424
+ * Helper which combines key shares of user and backup
425
+ * @param {string} userPublicOrPrivateKeyShare
426
+ * @param {string} backupPrivateOrPublicKeyShare
427
+ * @param {string} walletPassphrase
428
+ * @returns {[ECDSAMethodTypes.KeyCombined, ECDSAMethodTypes.KeyCombined]}
429
+ */
430
+ private getKeyCombinedFromTssKeyShares;
431
+ /**
432
+ * Helper which Adds signatures to tx object and re-serializes tx
433
+ * @param {EthLikeCommon.default} ethCommon
434
+ * @param {EthLikeTxLib.FeeMarketEIP1559Transaction | EthLikeTxLib.Transaction} tx
435
+ * @param {ECDSAMethodTypes.Signature} signature
436
+ * @returns {EthLikeTxLib.FeeMarketEIP1559Transaction | EthLikeTxLib.Transaction}
437
+ */
438
+ private getSignedTxFromSignature;
439
+ /**
440
+ * Builds a funds recovery transaction without BitGo
441
+ * @param params
442
+ * @param {string} params.userKey - [encrypted] xprv
443
+ * @param {string} params.backupKey - [encrypted] xprv or xpub if the xprv is held by a KRS provider
444
+ * @param {string} params.walletPassphrase - used to decrypt userKey and backupKey
445
+ * @param {string} params.walletContractAddress - the ETH address of the wallet contract
446
+ * @param {string} params.krsProvider - necessary if backup key is held by KRS
447
+ * @param {string} params.recoveryDestination - target address to send recovered funds to
448
+ * @param {string} params.bitgoFeeAddress - wrong chain wallet fee address for evm based cross chain recovery txn
449
+ * @param {string} params.bitgoDestinationAddress - target bitgo address where fee will be sent for evm based cross chain recovery txn
450
+ */
451
+ recover(params: RecoverOptions): Promise<RecoveryInfo | OfflineVaultTxInfo>;
452
+ /**
453
+ * Builds a funds recovery transaction without BitGo for non-TSS transaction
454
+ * @param params
455
+ * @param {string} params.userKey [encrypted] xprv or xpub
456
+ * @param {string} params.backupKey [encrypted] xprv or xpub if the xprv is held by a KRS provider
457
+ * @param {string} params.walletPassphrase used to decrypt userKey and backupKey
458
+ * @param {string} params.walletContractAddress the EthLike address of the wallet contract
459
+ * @param {string} params.krsProvider necessary if backup key is held by KRS
460
+ * @param {string} params.recoveryDestination target address to send recovered funds to
461
+ * @param {string} params.bitgoFeeAddress wrong chain wallet fee address for evm based cross chain recovery txn
462
+ * @param {string} params.bitgoDestinationAddress target bitgo address where fee will be sent for evm based cross chain recovery txn
463
+ * @returns {Promise<RecoveryInfo | OfflineVaultTxInfo>}
464
+ */
465
+ protected recoverEthLike(params: RecoverOptions): Promise<RecoveryInfo | OfflineVaultTxInfo>;
466
+ /**
467
+ * Builds a unsigned (for cold, custody wallet) or
468
+ * half-signed (for hot wallet) evm cross chain recovery transaction with
469
+ * same expected arguments as recover method.
470
+ * This helps recover funds from evm based wrong chain.
471
+ * @param {RecoverOptions} params
472
+ * @returns {Promise<RecoveryInfo | OfflineVaultTxInfo>}
473
+ */
474
+ protected recoverEthLikeforEvmBasedRecovery(params: RecoverOptions): Promise<RecoveryInfo | OfflineVaultTxInfo>;
475
+ /**
476
+ * Query explorer for the balance of an address for a token
477
+ * @param {string} tokenContractAddress - address where the token smart contract is hosted
478
+ * @param {string} walletContractAddress - address of the wallet
479
+ * @returns {BigNumber} token balaance in base units
480
+ */
481
+ queryAddressTokenBalance(tokenContractAddress: string, walletContractAddress: string): Promise<any>;
482
+ recoverEthLikeTokenforEvmBasedRecovery(params: RecoverOptions, bitgoFeeAddressNonce: number, gasLimit: any, gasPrice: any, userKey: any, userSigningKey: any): Promise<OfflineVaultTxInfo>;
483
+ /**
484
+ * Validate evm based cross chain recovery params
485
+ * @param params {RecoverOptions}
486
+ * @returns {void}
487
+ */
488
+ validateEvmBasedRecoveryParams(params: RecoverOptions): void;
489
+ /**
490
+ * Return types, values, and total amount in wei to send in a batch transaction, using the method signature
491
+ * `distributeBatch(address[], uint256[])`
492
+ * @param {Recipient[]} recipients - transaction recipients
493
+ * @returns {GetBatchExecutionInfoRT} information needed to execute the batch transaction
494
+ */
495
+ getBatchExecutionInfo(recipients: Recipient[]): GetBatchExecutionInfoRT;
496
+ /**
497
+ * Get the data required to make an ETH function call defined by the given types and values
498
+ *
499
+ * @param {string} functionName - The name of the function being called, e.g. transfer
500
+ * @param types The types of the function call in order
501
+ * @param values The values of the function call in order
502
+ * @return {Buffer} The combined data for the function call
503
+ */
504
+ getMethodCallData: (functionName: any, types: any, values: any) => Buffer;
505
+ /**
506
+ * Build arguments to call the send method on the wallet contract
507
+ * @param txInfo
508
+ */
509
+ getSendMethodArgs(txInfo: GetSendMethodArgsOptions): SendMethodArgs[];
510
+ /**
511
+ * Recovers a tx with TSS key shares
512
+ * same expected arguments as recover method, but with TSS key shares
513
+ */
514
+ protected recoverTSS(params: RecoverOptions, openSSLBytes: Uint8Array): Promise<RecoveryInfo | OfflineVaultTxInfo>;
515
+ private buildTssRecoveryTxn;
516
+ validateBalanceAndGetTxAmount(baseAddress: string, gasPrice: BN, gasLimit: BN): Promise<any>;
517
+ recoveryBlockchainExplorerQuery(query: Record<string, string>): Promise<any>;
518
+ /**
519
+ * Creates the extra parameters needed to build a hop transaction
520
+ * @param buildParams The original build parameters
521
+ * @returns extra parameters object to merge with the original build parameters object and send to the platform
522
+ */
523
+ createHopTransactionParams(buildParams: HopTransactionBuildOptions): Promise<HopParams>;
524
+ /**
525
+ * Validates that the hop prebuild from the HSM is valid and correct
526
+ * @param {IWallet} wallet - The wallet that the prebuild is for
527
+ * @param {HopPrebuild} hopPrebuild - The prebuild to validate
528
+ * @param {Object} originalParams - The original parameters passed to prebuildTransaction
529
+ * @param {Recipient[]} originalParams.recipients - The original recipients array
530
+ * @returns {void}
531
+ * @throws Error if The prebuild is invalid
532
+ */
533
+ validateHopPrebuild(wallet: IWallet, hopPrebuild: HopPrebuild, originalParams?: {
534
+ recipients: Recipient[];
535
+ }): Promise<void>;
536
+ /**
537
+ * Gets the hop digest for the user to sign. This is validated in the HSM to prove that the user requested this tx
538
+ * @param {string[]} paramsArr - The parameters to hash together for the digest
539
+ * @returns {Buffer}
540
+ */
541
+ static getHopDigest(paramsArr: string[]): Buffer;
542
+ /**
543
+ * Modify prebuild before sending it to the server. Add things like hop transaction params
544
+ * @param {BuildOptions} buildParams - The whitelisted parameters for this prebuild
545
+ * @param {boolean} buildParams.hop - True if this should prebuild a hop tx, else false
546
+ * @param {Recipient[]} buildParams.recipients - The recipients array of this transaction
547
+ * @param {Wallet} buildParams.wallet - The wallet sending this tx
548
+ * @param {string} buildParams.walletPassphrase - the passphrase for this wallet
549
+ * @returns {Promise<BuildOptions>}
550
+ */
551
+ getExtraPrebuildParams(buildParams: BuildOptions): Promise<BuildOptions>;
552
+ /**
553
+ * Modify prebuild after receiving it from the server. Add things like nlocktime
554
+ * @param {TransactionPrebuild} params - The prebuild to modify
555
+ * @returns {TransactionPrebuild} The modified prebuild
556
+ */
557
+ postProcessPrebuild(params: TransactionPrebuild): Promise<TransactionPrebuild>;
558
+ /**
559
+ * Coin-specific things done before signing a transaction, i.e. verification
560
+ * @param {PresignTransactionOptions} params
561
+ * @returns {Promise<PresignTransactionOptions>}
562
+ */
563
+ presignTransaction(params: PresignTransactionOptions): Promise<PresignTransactionOptions>;
564
+ /**
565
+ * Fetch fee estimate information from the server
566
+ * @param {Object} params - The params passed into the function
567
+ * @param {boolean} [params.hop] - True if we should estimate fee for a hop transaction
568
+ * @param {string} [params.recipient] - The recipient of the transaction to estimate a send to
569
+ * @param {string} [params.data] - The ETH tx data to estimate a send for
570
+ * @returns {Object} The fee info returned from the server
571
+ */
572
+ feeEstimate(params: FeeEstimateOptions): Promise<FeeEstimate>;
573
+ /**
574
+ * Generate secp256k1 key pair
575
+ *
576
+ * @param {Buffer} seed
577
+ * @returns {KeyPair} object with generated pub and prv
578
+ */
579
+ generateKeyPair(seed: Buffer): KeyPair;
580
+ parseTransaction(params: ParseTransactionOptions): Promise<ParsedTransaction>;
581
+ /**
582
+ * Make sure an address is a wallet address and throw an error if it's not.
583
+ * @param {Object} params
584
+ * @param {string} params.address - The derived address string on the network
585
+ * @param {Object} params.coinSpecific - Coin-specific details for the address such as a forwarderVersion
586
+ * @param {string} params.baseAddress - The base address of the wallet on the network
587
+ * @throws {InvalidAddressError}
588
+ * @throws {InvalidAddressVerificationObjectPropertyError}
589
+ * @throws {UnexpectedAddressError}
590
+ * @returns {boolean} True iff address is a wallet address
591
+ */
592
+ isWalletAddress(params: VerifyEthAddressOptions): Promise<boolean>;
593
+ /**
594
+ *
595
+ * @param {TransactionPrebuild} txPrebuild
596
+ * @returns {boolean}
597
+ */
598
+ verifyCoin(txPrebuild: TransactionPrebuild): boolean;
599
+ /**
600
+ * Verify if a tss transaction is valid
601
+ *
602
+ * @param {VerifyEthTransactionOptions} params
603
+ * @param {TransactionParams} params.txParams - params object passed to send
604
+ * @param {TransactionPrebuild} params.txPrebuild - prebuild object returned by server
605
+ * @param {Wallet} params.wallet - Wallet object to obtain keys to verify against
606
+ * @returns {boolean}
607
+ */
608
+ verifyTssTransaction(params: VerifyEthTransactionOptions): boolean;
609
+ /**
610
+ * Verify that a transaction prebuild complies with the original intention
611
+ *
612
+ * @param {VerifyEthTransactionOptions} params
613
+ * @param {TransactionParams} params.txParams - params object passed to send
614
+ * @param {TransactionPrebuild} params.txPrebuild - prebuild object returned by server
615
+ * @param {Wallet} params.wallet - Wallet object to obtain keys to verify against
616
+ * @returns {boolean}
617
+ */
618
+ verifyTransaction(params: VerifyEthTransactionOptions): Promise<boolean>;
619
+ /**
620
+ * Check if address is valid eth address
621
+ * @param address
622
+ * @returns {boolean}
623
+ */
624
+ private isETHAddress;
625
+ /**
626
+ * Transform message to accommodate specific blockchain requirements.
627
+ * @param {string} message - the message to prepare
628
+ * @return {string} the prepared message.
629
+ */
630
+ encodeMessage(message: string): string;
631
+ /**
632
+ * Transform the Typed data to accomodate the blockchain requirements (EIP-712)
633
+ * @param {TypedData} typedData - the typed data to prepare
634
+ * @return {Buffer} a buffer of the result
635
+ */
636
+ encodeTypedData(typedData: TypedData): Buffer;
637
+ /**
638
+ * Build the data to transfer an ERC-721 or ERC-1155 token to another address
639
+ * @param params
640
+ */
641
+ buildNftTransferData(params: BuildNftTransferDataOptions): string;
642
+ /**
643
+ * Fetch the gas price from the explorer
644
+ */
645
+ getGasPriceFromExternalAPI(): Promise<BN>;
646
+ /**
647
+ * Fetch the gas limit from the explorer
648
+ * @param from
649
+ * @param to
650
+ * @param data
651
+ */
652
+ getGasLimitFromExternalAPI(from: string, to: string, data: string): Promise<BN>;
653
+ /**
654
+ * Get the balance of bitgoFeeAddress to ensure funds are available to pay fees
655
+ * @param bitgoFeeAddress
656
+ * @param gasPrice
657
+ * @param gasLimit
658
+ */
659
+ ensureSufficientBalance(bitgoFeeAddress: string, gasPrice: BN, gasLimit: BN): Promise<void>;
660
+ }
661
+ export {};
662
+ //# sourceMappingURL=abstractEthLikeNewCoins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstractEthLikeNewCoins.d.ts","sourceRoot":"","sources":["../../src/abstractEthLikeNewCoins.ts"],"names":[],"mappings":"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"}