export type ConnectionStatus = {
    type: "healthy",
    /* only for component stati */
    bytesReceived?: number,
    bytesSend?: number
} | {
    type: "unhealthy",
    reason: string,
    retryTimestamp: number
} | {
    type: "connecting-signalling",
    state: "initializing" | "connecting" | "authentication"
} | {
    type: "connecting-voice"
} | {
    type: "connecting-video"
} | {
    type: "disconnected"
} | {
    type: "unsupported",
    side: "server" | "client"
}

export type ConnectionComponent = "signaling" | "video" | "voice";

export interface ConnectionStatusEvents {
    action_toggle_component_detail: { shown: boolean | undefined },

    query_component_detail_state: {},
    query_component_status: { component: ConnectionComponent },
    query_connection_status: {},

    notify_component_detail_state: {
        shown: boolean
    },
    notify_component_status: {
        component: ConnectionComponent,
        status: ConnectionStatus
    },
    notify_connection_status: {
        status: ConnectionStatus,
    }
}