import { LitElement } from 'lit'; import type { DeviceController } from '@signalwire/js'; import '../UI/icons/sw-ui-icon.js'; import '../sw-local-camera.js'; import '../sw-audio-level.js'; /** * Single-button device settings popover. Opens a panel above the button * with sections for Microphone, Camera, and Speaker selection. * * When `show-preview` is enabled, the open panel also renders a live * camera preview, a microphone level meter for the currently selected * input devices, and a "Test speaker" button that plays a short tone * through the selected output. * * @fires sw-device-change - User picked a device. Detail: `{ type: 'microphone'|'camera'|'speaker', device: MediaDeviceInfo }`. * @cssprop --ctrl-* - all primitive ctrl tokens */ export declare class SwDeviceSelector extends LitElement { static styles: import("lit").CSSResult[]; deviceController?: DeviceController; /** * Render inline previews (camera video, mic level, speaker test) inside * each section while the panel is open. Streams are acquired only while * the panel is open and stopped when it closes. */ showPreview: boolean; private _videoStream; private _audioStream; private _testingSpeaker; private _audioIn; private _videoIn; private _audioOut; private _selAudioIn; private _selVideoIn; private _selAudioOut; private _open; private _subs; private _onDocumentClick; connectedCallback(): void; protected updated(changed: Map): void; disconnectedCallback(): void; protected willUpdate(changed: Map): void; private _subscribe; private _unsubscribe; private _toggle; private _selectMic; private _selectCamera; private _selectSpeaker; private _startVideoPreview; private _stopVideoPreview; private _startAudioPreview; private _stopAudioPreview; private static readonly _TEST_TONE_DATA_URI; private _testAudio?; private _testSpeaker; private _stopTestTone; private _emitChange; private _renderSection; private _renderCameraPreview; private _renderMicPreview; private _renderSpeakerPreview; render(): import("lit-html").TemplateResult<1>; } declare global { interface HTMLElementTagNameMap { 'sw-device-selector': SwDeviceSelector; } } //# sourceMappingURL=sw-device-selector.d.ts.map