UNPKG

@bigmi/client

Version:

Reactive primitives for Bitcoin apps.

64 lines (63 loc) 1.89 kB
import { CreateConnectorFn } from "../types/connector.js"; import { UTXOConnectorParameters, UTXOWalletProvider } from "./types.js"; import { Account, Address, AddressPurpose } from "@bigmi/core"; //#region src/connectors/ctrl.d.ts 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; } type CtrlBitcoinEventMap = { accountsChanged(accounts: Address[]): void; }; 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; declare function ctrl(parameters?: UTXOConnectorParameters): CreateConnectorFn<UTXOWalletProvider | undefined, CtrlConnectorProperties>; declare namespace ctrl { export var type: "UTXO"; } //#endregion export { CtrlBitcoinEventMap, CtrlBitcoinEvents, ctrl }; //# sourceMappingURL=ctrl.d.ts.map