@bitgo-beta/abstract-eth 1.2.3-alpha.23 → 1.2.3-alpha.230

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