-
Notifications
You must be signed in to change notification settings - Fork 111
/
tatumsdk.wallet.providers.dto.ts
33 lines (28 loc) Β· 1.3 KB
/
tatumsdk.wallet.providers.dto.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import { ITatumSdkContainer } from './tatumsdk.container'
import { TatumSdkExtension } from './tatumsdk.extensions.dto'
export type TxId = string
/**
* TatumSdkWalletProvider serves as the base class for all wallet providers.
*
* @template T Represents the wallet type (e.g., accountId for MetaMask, mnemonic and xpub for local wallets).
* @template P Represents the transaction payload type specific to a blockchain or transaction.
*
* @method getWallet Fetches or initializes the wallet of type T.
* @method signAndBroadcast Signs a transaction based on the provided payload of type P and broadcasts it to the network.
*/
export abstract class TatumSdkWalletProvider<T, P> extends TatumSdkExtension {
abstract getWallet(): Promise<T>
abstract signAndBroadcast(payload: P): Promise<TxId>
}
export type WalletProviderConstructor = new (
tatumSdkContainer: ITatumSdkContainer,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
...args: any[]
) => // eslint-disable-next-line @typescript-eslint/no-explicit-any
TatumSdkWalletProvider<any, any>
export type WalletProviderWithConfig = {
type: WalletProviderConstructor
// eslint-disable-next-line @typescript-eslint/no-explicit-any
config: any
}
export type WalletProviderConstructorOrConfig = WalletProviderConstructor | WalletProviderWithConfig