@bigmi/client
Version:
Reactive primitives for Bitcoin apps.
64 lines (63 loc) • 1.89 kB
TypeScript
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