@bsv/wallet-toolbox-client
Version:
Client only Wallet Storage
103 lines • 3.87 kB
TypeScript
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