UNPKG

@bigmi/client

Version:

Reactive primitives for Bitcoin apps.

71 lines (70 loc) 2.47 kB
import type { Address, Chain, Client, Compute, HttpRpcClient } from '@bigmi/core'; import type { Emitter } from '../factories/createEmitter.js'; import type { Storage } from './storage.js'; export type Connector<createConnectorFn extends CreateConnectorFn = CreateConnectorFn> = ReturnType<createConnectorFn> & { emitter: Emitter<ConnectorEventMap>; uid: string; }; export type ConnectorEventMap = { change: { accounts?: readonly Address[] | undefined; chainId?: number | undefined; }; connect: { accounts: readonly Address[]; chainId: number; }; disconnect: never; error: { error: Error; }; message: { type: string; data?: unknown | undefined; }; }; export type CreateConnectorFn<provider = unknown, properties extends Record<string, unknown> = Record<string, unknown>, storageItem extends Record<string, unknown> = Record<string, unknown>> = (config: { chains: readonly [Chain, ...Chain[]]; emitter: Emitter<ConnectorEventMap>; storage?: Compute<Storage<storageItem>> | null | undefined; transports?: Record<number, HttpRpcClient> | undefined; }) => Compute<{ readonly icon?: string | undefined; readonly id: string; readonly name: string; readonly rdns?: string | readonly string[] | undefined; /** @deprecated */ readonly supportsSimulation?: boolean | undefined; readonly type: string; setup?(): Promise<void>; connect(parameters?: { chainId?: number | undefined; isReconnecting?: boolean | undefined; } | undefined): Promise<{ accounts: readonly Address[]; chainId: number; }>; disconnect(): Promise<void>; getAccounts(): Promise<readonly Address[]>; getChainId(): Promise<number>; getProvider(parameters?: { chainId?: number | undefined; } | undefined): Promise<provider>; getClient?(parameters?: { chainId?: number | undefined; } | undefined): Promise<Client>; isAuthorized(): Promise<boolean>; onAccountsChanged(accounts: string[]): void; onChainChanged(chainId: string): void; onConnect?(connectInfo: ProviderConnectInfo): void; onDisconnect(error?: Error | undefined): void; onMessage?(message: ProviderMessage): void; } & properties>; interface ProviderConnectInfo { readonly chainId: string; } interface ProviderMessage { readonly type: string; readonly data: unknown; } export {};