@bitgo-beta/abstract-eth 1.2.3-alpha.26 → 1.2.3-alpha.261

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