@bsv/wallet-toolbox-client
Version:
Client only Wallet Storage
181 lines • 11.8 kB
TypeScript
import { AbortActionArgs, AbortActionResult, AcquireCertificateArgs, AcquireCertificateResult, AuthenticatedResult, Beef, BeefParty, CreateActionArgs, CreateActionResult, CreateHmacArgs, CreateHmacResult, CreateSignatureArgs, CreateSignatureResult, DiscoverByAttributesArgs, DiscoverByIdentityKeyArgs, DiscoverCertificatesResult, GetHeaderArgs, GetHeaderResult, GetHeightResult, GetNetworkResult, GetPublicKeyArgs, GetPublicKeyResult, GetVersionResult, InternalizeActionArgs, InternalizeActionResult, ListActionsArgs, ListActionsResult, ListCertificatesArgs, ListCertificatesResult, ListOutputsArgs, ListOutputsResult, OriginatorDomainNameStringUnder250Bytes, ProtoWallet, ProveCertificateArgs, ProveCertificateResult, PubKeyHex, RelinquishCertificateArgs, RelinquishCertificateResult, RelinquishOutputArgs, RelinquishOutputResult, RevealCounterpartyKeyLinkageArgs, RevealCounterpartyKeyLinkageResult, RevealSpecificKeyLinkageArgs, RevealSpecificKeyLinkageResult, SignActionArgs, SignActionResult, Transaction as BsvTransaction, TrustSelf, VerifyHmacArgs, VerifyHmacResult, VerifySignatureArgs, VerifySignatureResult, WalletDecryptArgs, WalletDecryptResult, WalletEncryptArgs, WalletEncryptResult, WalletInterface, LookupResolver, AtomicBEEF, BEEF, KeyDeriverApi } from '@bsv/sdk';
import { WalletSettingsManager } from './WalletSettingsManager';
import { WalletStorageManager } from './storage/WalletStorageManager';
import { Monitor } from './monitor/Monitor';
import { WalletSigner } from './signer/WalletSigner';
import { Chain, KeyPair, StorageIdentity, WalletBalance } from './sdk/types';
import { WalletServices } from './sdk/WalletServices.interfaces';
import { PrivilegedKeyManager } from './sdk/PrivilegedKeyManager';
import { ValidCreateActionArgs } from './sdk/validationHelpers';
import { StorageCreateActionResult } from './sdk/WalletStorage.interfaces';
export interface WalletArgs {
chain: Chain;
keyDeriver: KeyDeriverApi;
storage: WalletStorageManager;
services?: WalletServices;
monitor?: Monitor;
privilegedKeyManager?: PrivilegedKeyManager;
settingsManager?: WalletSettingsManager;
lookupResolver?: LookupResolver;
}
export declare class Wallet implements WalletInterface, ProtoWallet {
chain: Chain;
keyDeriver: KeyDeriverApi;
storage: WalletStorageManager;
settingsManager: WalletSettingsManager;
lookupResolver: LookupResolver;
services?: WalletServices;
monitor?: Monitor;
identityKey: string;
/**
* The wallet creates a `BeefParty` when it is created.
* All the Beefs that pass through the wallet are merged into this beef.
* Thus what it contains at any time is the union of all transactions and proof data processed.
* The class `BeefParty` derives from `Beef`, adding the ability to track the source of merged data.
*
* This allows it to generate beefs to send to a particular “party” (storage or the user)
* that includes “txid only proofs” for transactions they already know about.
* Over time, this allows an active wallet to drastically reduce the amount of data transmitted.
*/
beef: BeefParty;
/**
* If true, signableTransactions will include sourceTransaction for each input,
* including those that do not require signature and those that were also contained
* in the inputBEEF.
*/
includeAllSourceTransactions: boolean;
/**
* If true, txids that are known to the wallet's party beef do not need to be returned from storage.
*/
autoKnownTxids: boolean;
/**
* If true, beefs returned to the user may contain txidOnly transactions.
*/
returnTxidOnly: boolean;
trustSelf?: TrustSelf;
userParty: string;
proto: ProtoWallet;
privilegedKeyManager?: PrivilegedKeyManager;
pendingSignActions: Record<string, PendingSignAction>;
/**
* For repeatability testing, set to an array of random numbers from [0..1).
*/
randomVals?: number[];
constructor(argsOrSigner: WalletArgs | WalletSigner, services?: WalletServices, monitor?: Monitor, privilegedKeyManager?: PrivilegedKeyManager);
destroy(): Promise<void>;
getClientChangeKeyPair(): KeyPair;
getIdentityKey(): Promise<PubKeyHex>;
getPublicKey(args: GetPublicKeyArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetPublicKeyResult>;
revealCounterpartyKeyLinkage(args: RevealCounterpartyKeyLinkageArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RevealCounterpartyKeyLinkageResult>;
revealSpecificKeyLinkage(args: RevealSpecificKeyLinkageArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RevealSpecificKeyLinkageResult>;
encrypt(args: WalletEncryptArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<WalletEncryptResult>;
decrypt(args: WalletDecryptArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<WalletDecryptResult>;
createHmac(args: CreateHmacArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<CreateHmacResult>;
verifyHmac(args: VerifyHmacArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<VerifyHmacResult>;
createSignature(args: CreateSignatureArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<CreateSignatureResult>;
verifySignature(args: VerifySignatureArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<VerifySignatureResult>;
getServices(): WalletServices;
/**
* @returns the full list of txids whose validity this wallet claims to know.
*
* @param newKnownTxids Optional. Additional new txids known to be valid by the caller to be merged.
*/
getKnownTxids(newKnownTxids?: string[]): string[];
getStorageIdentity(): StorageIdentity;
private validateAuthAndArgs;
listActions(args: ListActionsArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListActionsResult>;
get storageParty(): string;
listOutputs(args: ListOutputsArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListOutputsResult>;
listCertificates(args: ListCertificatesArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListCertificatesResult>;
acquireCertificate(args: AcquireCertificateArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AcquireCertificateResult>;
relinquishCertificate(args: RelinquishCertificateArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RelinquishCertificateResult>;
proveCertificate(args: ProveCertificateArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ProveCertificateResult>;
discoverByIdentityKey(args: DiscoverByIdentityKeyArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<DiscoverCertificatesResult>;
discoverByAttributes(args: DiscoverByAttributesArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<DiscoverCertificatesResult>;
verifyReturnedTxidOnly(beef: Beef, knownTxids?: string[]): Beef;
verifyReturnedTxidOnlyAtomicBEEF(beef: AtomicBEEF, knownTxids?: string[]): AtomicBEEF;
verifyReturnedTxidOnlyBEEF(beef: BEEF): BEEF;
createAction(args: CreateActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<CreateActionResult>;
signAction(args: SignActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<SignActionResult>;
internalizeAction(args: InternalizeActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<InternalizeActionResult>;
abortAction(args: AbortActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AbortActionResult>;
relinquishOutput(args: RelinquishOutputArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RelinquishOutputResult>;
isAuthenticated(args: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AuthenticatedResult>;
waitForAuthentication(args: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AuthenticatedResult>;
getHeight(args: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetHeightResult>;
getHeaderForHeight(args: GetHeaderArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetHeaderResult>;
getNetwork(args: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetNetworkResult>;
getVersion(args: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetVersionResult>;
/**
* Transfer all possible satoshis held by this wallet to `toWallet`.
*
* @param toWallet wallet which will receive this wallet's satoshis.
*/
sweepTo(toWallet: Wallet): Promise<void>;
/**
* Uses `listOutputs` to iterate over chunks of up to 1000 outputs to
* compute the sum of output satoshis.
*
* @param {string} basket - Optional. Defaults to 'default', the wallet change basket.
* @returns {WalletBalance} total sum of output satoshis and utxo details (satoshis and outpoints)
*/
balanceAndUtxos(basket?: string): Promise<WalletBalance>;
/**
* Uses `listOutputs` special operation to compute the total value (of satoshis) for
* all spendable outputs in the 'default' basket.
*
* @returns {number} sum of output satoshis
*/
balance(): Promise<number>;
/**
* Uses `listOutputs` special operation to review the spendability via `Services` of
* outputs currently considered spendable. Returns the outputs that fail to verify.
*
* Ignores the `limit` and `offset` properties.
*
* @param all Defaults to false. If false, only change outputs ('default' basket) are reviewed. If true, all spendable outputs are reviewed.
* @param release Defaults to false. If true, sets outputs that fail to verify to un-spendable (spendable: false)
* @param optionalArgs Optional. Additional tags will constrain the outputs processed.
* @returns outputs which are/where considered spendable but currently fail to verify as spendable.
*/
reviewSpendableOutputs(all?: boolean, release?: boolean, optionalArgs?: Partial<ListOutputsArgs>): Promise<ListOutputsResult>;
/**
* Uses `listOutputs` special operation to update the 'default' basket's automatic
* change generation parameters.
*
* @param count target number of change UTXOs to maintain.
* @param satoshis target value for new change outputs.
*/
setWalletChangeParams(count: number, satoshis: number): Promise<void>;
/**
* Uses `listActions` special operation to return only actions with status 'nosend'.
*
* @param abort Defaults to false. If true, runs `abortAction` on each 'nosend' action.
* @returns {ListActionsResult} start `listActions` result restricted to 'nosend' (or 'failed' if aborted) actions.
*/
listNoSendActions(args: ListActionsArgs, abort?: boolean): Promise<ListActionsResult>;
/**
* Uses `listActions` special operation to return only actions with status 'failed'.
*
* @param unfail Defaults to false. If true, queues the action for attempted recovery.
* @returns {ListActionsResult} start `listActions` result restricted to 'failed' status actions.
*/
listFailedActions(args: ListActionsArgs, unfail?: boolean): Promise<ListActionsResult>;
}
export interface PendingStorageInput {
vin: number;
derivationPrefix: string;
derivationSuffix: string;
unlockerPubKey?: string;
sourceSatoshis: number;
lockingScript: string;
}
export interface PendingSignAction {
reference: string;
dcr: StorageCreateActionResult;
args: ValidCreateActionArgs;
tx: BsvTransaction;
amount: number;
pdi: PendingStorageInput[];
}
//# sourceMappingURL=Wallet.d.ts.map