@bitgo-beta/abstract-eth 1.2.3-alpha.20 → 1.2.3-alpha.201

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