import type { ReactiveController, ReactiveControllerHost } from "lit";
interface DevicesControllerHost extends ReactiveControllerHost {
    devices?: MediaDeviceInfo[];
    selectedDevice?: MediaDeviceInfo;
    dispatchEvent(event: CustomEvent): boolean;
    requestUpdate(): void;
    _devices?: MediaDeviceInfo[];
}
/**
 * Controller that manages automatic device loading.
 * Loads devices when they're not present and handles device changes.
 * Reacts to updates and automatically loads devices when needed.
 */
export declare class DevicesController implements ReactiveController {
    #private;
    host: DevicesControllerHost;
    constructor(host: DevicesControllerHost);
    initialize(): void;
    hostDisconnected(): void;
    hostUpdate(): void;
    /**
     * Clear the auto-loaded flag (when devices are set externally)
     */
    clearAutoLoadedFlag(): void;
}
export {};
