UNPKG

@bigmi/client

Version:

Reactive primitives for Bitcoin apps.

55 lines (54 loc) 1.85 kB
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 {};