@bigmi/client
Version:
Reactive primitives for Bitcoin apps.
55 lines (54 loc) • 1.85 kB
TypeScript
import { type Account, type Address, type AddressPurpose } from '@bigmi/core';
import type { UTXOConnectorParameters, UTXOWalletProvider } from './types.js';
interface GetAccountsRequest {
purposes: AddressPurpose[];
}
type CtrlResponse<T> = {
status: 'success';
result: T;
error?: never;
} | {
status: 'error';
error: string;
result?: never;
};
interface CtrlSignPsbtResult {
psbt: string;
txid: string;
}
interface CtrlAccount {
address: string;
publicKey: string;
purpose: AddressPurpose;
addressType: string;
walletType: string;
}
export type CtrlBitcoinEventMap = {
accountsChanged(accounts: Address[]): void;
};
export type CtrlBitcoinEvents = {
addListener<TEvent extends keyof CtrlBitcoinEventMap>(event: TEvent, listener: CtrlBitcoinEventMap[TEvent]): void;
removeListener<TEvent extends keyof CtrlBitcoinEventMap>(event: TEvent, listener: CtrlBitcoinEventMap[TEvent]): void;
};
type CtrlConnectorProperties = {
getAccounts(): Promise<readonly Account[]>;
onAccountsChanged(accounts: Address[]): void;
getInternalProvider(): Promise<CtrlBitcoinProvider>;
} & UTXOWalletProvider;
type CtrlBitcoinProvider = {
signPsbt({ psbt, }: {
psbt: string;
broadcast: boolean;
}): Promise<CtrlResponse<CtrlSignPsbtResult>>;
requestAccounts(): Promise<Address[]>;
getAccounts(): Promise<Address[]>;
request({ method, params, }: {
method: 'request_accounts_and_keys';
params: GetAccountsRequest;
}): Promise<CtrlResponse<CtrlAccount[]>>;
} & CtrlBitcoinEvents;
export declare function ctrl(parameters?: UTXOConnectorParameters): import("../index.js").CreateConnectorFn<UTXOWalletProvider | undefined, CtrlConnectorProperties, Record<string, unknown>>;
export declare namespace ctrl {
var type: "UTXO";
}
export {};