export type StateConnected = { status: "connected" connection: T disconnect?: () => Promise } export type StateConnecting = { status: "connecting" providerId: string, } export type StateInitializing = { status: "initializing" } export type StateDisconnected = { status: "disconnected" error?: any } const STATE_DISCONNECTED: StateDisconnected = { status: "disconnected" } export const STATE_INITIALIZING: StateInitializing = { status: "initializing" } export function getStateConnected(params: Omit, "status"> ): StateConnected { return { status: "connected", ...params } } export function getStateConnecting(params: Omit): StateConnecting { return { status: "connecting", ...params } } export function getStateDisconnected(params: Omit = {}): StateDisconnected { if (params.error === undefined) { return STATE_DISCONNECTED } return { status: "disconnected", ...params } } export type ConnectionState = StateConnected | StateConnecting | StateInitializing | StateDisconnected