import type { ReactiveController, ReactiveControllerHost } from "lit"; interface MediaControllerHost extends ReactiveControllerHost { _selectedDevice?: MediaDeviceInfo; _debug_displayAudio?: boolean; dispatchEvent(event: Event): boolean; } export declare class MediaController implements ReactiveController { #private; host: MediaControllerHost; constructor(host: MediaControllerHost); hostDisconnected(): void; initialize(onTrackEnded?: () => void, dataHandler?: (data: Blob) => void): Promise; getAudioLevel(): number; startAudioLevelMonitoring(onAudioLevelChange?: (level: number) => void): void; stopAudioLevelMonitoring(): void; cleanup(): Promise; /** * Stops the media recorder and waits for all buffered data to be flushed. * This ensures the final ondataavailable event fires before resolving. */ stopRecording(): Promise; get mediaRecorder(): MediaRecorder | null; get audioLevel(): number; } export {};