import { AbstractInput, LevelMeter } from "../voice/RecorderBase"; import { Registry } from "../events"; export declare type DeviceQueryResult = {}; export interface AudioRecorderBacked { createInput(): AbstractInput; createLevelMeter(device: IDevice): Promise; getDeviceList(): DeviceList; isRnNoiseSupported(): boolean; toggleRnNoise(target: boolean): any; } export interface DeviceListEvents { notify_list_updated: { removedDeviceCount: number; addedDeviceCount: number; }; notify_state_changed: { oldState: DeviceListState; newState: DeviceListState; }; notify_permissions_changed: { oldState: PermissionState; newState: PermissionState; }; } export declare type DeviceListState = "healthy" | "uninitialized" | "no-permissions" | "error"; export interface IDevice { deviceId: string; driver: string; name: string; } export declare namespace IDevice { const NoDeviceId = "none"; const DefaultDeviceId = "default"; } export declare type PermissionState = "granted" | "denied" | "unknown"; export interface DeviceList { getEvents(): Registry; isRefreshAvailable(): boolean; refresh(): Promise; requestPermissions(): Promise; getPermissionState(): PermissionState; getStatus(): DeviceListState; getDevices(): IDevice[]; getDefaultDeviceId(): string; awaitHealthy(): Promise; awaitInitialized(): Promise; } export declare abstract class AbstractDeviceList implements DeviceList { protected readonly events: Registry; protected listState: DeviceListState; protected permissionState: PermissionState; protected constructor(); getStatus(): DeviceListState; getPermissionState(): PermissionState; protected setState(state: DeviceListState): void; protected setPermissionState(state: PermissionState): void; awaitInitialized(): Promise; awaitHealthy(): Promise; abstract getDefaultDeviceId(): string; abstract getDevices(): IDevice[]; abstract getEvents(): Registry; abstract isRefreshAvailable(): boolean; abstract refresh(): Promise; abstract requestPermissions(): Promise; } export declare function getRecorderBackend(): AudioRecorderBacked; export declare function setRecorderBackend(instance: AudioRecorderBacked): void;