import { LitElement } from 'lit';
import '../icon-button/icon-button.js';
import '../slider/slider.js';
import '../../icons/icon-media-pause.js';
import '../../icons/icon-media-play.js';
/**
 * Audio recording status
 */
export declare enum AudioRecordingStatus {
    Recording = "recording",
    Paused = "paused",
    Playback = "playback"
}
/**
 * `<obc-audio-recording-item>` – An audio waveform visualization component for voice recording feedback.
 *
 * Displays a real-time waveform visualization of audio levels during voice recording, with an optional play/pause control and duration counter. Use this component to provide visual feedback when users are recording voice messages or audio notes.
 *
 * ## Features
 *
 * - **Waveform visualization:**
 *   - Displays audio levels as animated vertical bars that grow based on input amplitude.
 *   - Empty slots render as small dots; bars appear from right to left as new audio data arrives.
 *   - Automatically adapts bar count to container width via ResizeObserver.
 * - **Status states:**
 *   - `recording`: Active recording state with live waveform updates (no play/pause button).
 *   - `playback`: Playback mode with progress indicator and play/pause button.
 * - **Duration display:**
 *   - Shows elapsed time in MM:SS format (e.g., "01:23").
 * - **Play/pause control:**
 *   - In playback mode, shows play/pause button controlled by `isPlaying` property.
 *   - Button icon shows pause when playing, play when paused.
 * - **Playback indicator:**
 *   - In playback mode, displays a progress indicator showing current playback position (not interactive).
 * - **Enhanced style:**
 *   - Optional `enhanced` mode applies neutral enhanced color to waveform bars.
 *
 * ## Usage Guidelines
 *
 * Use `<obc-audio-recording-item>` as part of a voice message input flow (e.g., inside `<obc-textarea-field>`). The parent component is responsible for:
 * - Capturing actual audio and passing `audioLevels` array (values 0–1).
 * - Updating `duration` as recording progresses.
 * - Handling the `status-toggle` event to start/stop playback (toggle `isPlaying`).
 * - Updating `playbackPosition` as audio plays back.
 *
 * This component provides UI feedback only—it does NOT handle audio capture or playback.
 *
 * **Keywords:** waveform, audio visualization, voice recording, microphone input, audio levels, recording indicator
 *
 * ## Events
 *
 * - `status-toggle` – Fired when the play/pause button is clicked in playback mode, with the desired `isPlaying` state in the event detail.
 *
 * ## Example
 *
 * ```html
 * <!-- Recording mode - shows waveform, no play/pause button -->
 * <obc-audio-recording-item
 *   .audioLevels=${[0.2, 0.5, 0.8, 0.3, 0.6]}
 *   .duration=${45}
 *   status="recording"
 * ></obc-audio-recording-item>
 *
 * <!-- Playback mode - shows slider and play/pause button -->
 * <obc-audio-recording-item
 *   .duration=${45}
 *   status="playback"
 *   .playbackPosition=${0.5}
 *   .isPlaying=${true}
 *   hasActionButton
 *   @status-toggle=${(e) => console.log('Toggle playback:', e.detail.isPlaying)}
 * ></obc-audio-recording-item>
 * ```
 *
 * ---
 *
 * @fires status-toggle {CustomEvent<{isPlaying: boolean}>} Fired when the play/pause button is clicked, containing the desired isPlaying state.
 */
export declare class ObcAudioRecordingItem extends LitElement {
    /**
     * Array of audio level values (0-1) for waveform visualization.
     * New values should be added to the end (right side) and old values shift left.
     */
    audioLevels: number[];
    /**
     * Current duration in seconds, displayed as MM:SS.
     */
    duration: number;
    /**
     * Recording status - 'recording', 'paused', or 'playback'.
     */
    status: AudioRecordingStatus;
    /**
     * Current playback position (0-1) for playback mode slider.
     */
    playbackPosition: number;
    /**
     * Whether audio is currently playing (only relevant in playback mode).
     * When true, shows pause icon; when false, shows play icon.
     */
    isPlaying: boolean;
    /**
     * Enhanced style that displays waveform bars with neutral enhanced color.
     */
    enhanced: boolean;
    private barCount;
    private resizeObserver?;
    private audioRecordingContainer?;
    private resizeObserverConnected;
    private getCssVar;
    firstUpdated(): void;
    updated(changedProperties: Map<string, unknown>): Promise<void>;
    disconnectedCallback(): void;
    private setupResizeObserver;
    private connectResizeObserver;
    private formatDuration;
    private handleStatusToggle;
    private renderWaveform;
    private renderPlaybackSlider;
    render(): import('lit-html').TemplateResult<1>;
    static styles: import('lit').CSSResult;
}
declare global {
    interface HTMLElementTagNameMap {
        'obc-audio-recording-item': ObcAudioRecordingItem;
    }
}
//# sourceMappingURL=audio-recording-item.d.ts.map