UNPKG

@bsv/wallet-toolbox-client

Version:
103 lines 3.87 kB
import { PrivateKey, PublicKey, KeyDeriverApi } from '@bsv/sdk'; import { Wallet } from './Wallet'; import { Chain } from './sdk/types'; import { WalletStorageManager } from './storage/WalletStorageManager'; import { Services } from './services/Services'; import { Monitor } from './monitor/Monitor'; import { WalletStorageProvider } from './sdk/WalletStorage.interfaces'; /** * When creating a BRC-100 compatible `Wallet`, many components come into play. * * All of the `createWallet` functions in the `Setup` and `SetupClient` classes return * an object with direct access to each component to facilitate experimentation, testing * and customization. */ export interface SetupWallet { /** * The rootKey of the `KeyDeriver`. The private key from which other keys are derived. */ rootKey: PrivateKey; /** * The pubilc key associated with the `rootKey` which also serves as the wallet's identity. */ identityKey: string; /** * The `KeyDeriver` component used by the wallet for key derivation and cryptographic functions. */ keyDeriver: KeyDeriverApi; /** * The chain ('main' or 'test') which the wallet accesses. */ chain: Chain; /** * The `WalletStorageManager` that manages all the configured storage providers (active and backups) * accessed by the wallet. */ storage: WalletStorageManager; /** * The network `Services` component which provides the wallet with access to external services hosted * on the public network. */ services: Services; /** * The background task `Monitor` component available to the wallet to offload tasks * that speed up wallet operations and maintain data integrity. */ monitor: Monitor; /** * The actual BRC-100 `Wallet` to which all the other properties and components contribute. * * Note that internally, the wallet is itself linked to all these properties and components. * They are included in this interface to facilitate access after wallet construction for * experimentation, testing and customization. Any changes made to the configuration of these * components after construction may disrupt the normal operation of the wallet. */ wallet: Wallet; } /** * A private key and associated public key and address. */ export interface KeyPairAddress { privateKey: PrivateKey; publicKey: PublicKey; address: string; } /** * Arguments used by `createWallet` to construct a `SetupWallet`. * * Extension `SetupWalletClientArgs` used by `createWalletClient` to construct a `SetupWalletClient`. * * Extension `SetupWalletIdbArgs` used by `createWalletIdb` to construct a `SetupWalletIdb`. */ export interface SetupClientWalletArgs { chain: Chain; /** * The non-privileged private key used to initialize the `KeyDeriver` and determine the `identityKey`. */ rootKeyHex: string; /** * Optional. The privileged private key getter used to initialize the `PrivilegedKeyManager`. * Defaults to undefined. */ privilegedKeyGetter?: () => Promise<PrivateKey>; /** * Optional. Active wallet storage. Can be added later. */ active?: WalletStorageProvider; /** * Optional. One or more storage providers managed as backup destinations. Can be added later. */ backups?: WalletStorageProvider[]; taalApiKey?: string; } /** * Extension `SetupWalletClient` of `SetupWallet` is returned by `createWalletClient` */ export interface SetupWalletClient extends SetupWallet { /** * The endpoint URL of the service hosting the `StorageServer` JSON-RPC service to * which a `StorageClient` instance is connected to function as * the active storage provider of the wallet. */ endpointUrl: string; } //# sourceMappingURL=SetupWallet.d.ts.map