@bigmi/client
Version:
Reactive primitives for Bitcoin apps.
60 lines (59 loc) • 2.15 kB
TypeScript
import type { UTXOWalletProvider } from './types.js';
import { type Address } from '@bigmi/core';
import type { UTXOConnectorParameters } from './types.js';
export type DynamicWalletConnectorEventMap = {
accountChange(props: {
accounts: string[];
}): void;
};
export type DynamicWalletConnectorEvents = {
addListener<TEvent extends keyof DynamicWalletConnectorEventMap>(event: TEvent, listener: DynamicWalletConnectorEventMap[TEvent]): void;
removeListener<TEvent extends keyof DynamicWalletConnectorEventMap>(event: TEvent, listener: DynamicWalletConnectorEventMap[TEvent]): void;
};
export type DynamicWalletConnector = {
providerId: string;
name: string;
id: string;
getAddress(): string;
_metadata: {
icon?: string;
};
} & DynamicWalletConnectorEvents;
type BitcoinAddress = {
address: string;
type: 'ordinals' | 'payment';
publicKey: string;
};
export type BitcoinSignPsbtRequestSignature = {
address: string;
signingIndexes: number[] | undefined;
disableAddressValidation?: boolean;
};
type BitcoinSignPsbtRequest = {
allowedSighash: number[];
unsignedPsbtBase64: string;
signature?: BitcoinSignPsbtRequestSignature[];
};
type BitcoinSignPsbtResponse = {
signedPsbt: string;
};
type DynamicBitcoinWallet = {
connector: DynamicWalletConnector;
additionalAddresses: BitcoinAddress[];
address: string;
isAuthenticated: boolean;
signPsbt(parameters: BitcoinSignPsbtRequest): Promise<BitcoinSignPsbtResponse | undefined>;
};
type DynamicConnectorProperties = {
getAccounts(): Promise<readonly Address[]>;
onAccountsChanged(accounts: Address[]): void;
getInternalProvider(): Promise<DynamicWalletConnector>;
} & UTXOWalletProvider;
type DynamicConnectorParameters = {
wallet: DynamicBitcoinWallet;
} & UTXOConnectorParameters;
export declare function dynamic(parameters: DynamicConnectorParameters): import("../factories/createConnector.js").CreateConnectorFn<UTXOWalletProvider | undefined, DynamicConnectorProperties, Record<string, unknown>>;
export declare namespace dynamic {
var type: "UTXO";
}
export {};