import { LitElement, PropertyValueMap } from 'lit';
import { AudioSpan } from '../transcoding/types/index.ts';
import { UrlGenerator } from '../transcoding/utils/UrlGenerator.ts';
declare global {
    var EF_FRAMEGEN: import("../EF_FRAMEGEN.js").EFFramegen;
}
export declare class IgnorableError extends Error {
}
export declare const deepGetMediaElements: (element: Element, medias?: EFMedia[]) => EFMedia[];
declare const EFMedia_base: (new (...args: any[]) => import('./EFSourceMixin.js').EFSourceMixinInterface) & (new (...args: any[]) => import('./EFTemporal.js').TemporalMixinInterface) & (new (...args: any[]) => import('./FetchMixin.js').FetchMixinInterface) & typeof LitElement;
export declare class EFMedia extends EFMedia_base {
    static readonly VIDEO_SAMPLE_BUFFER_SIZE = 30;
    static readonly AUDIO_SAMPLE_BUFFER_SIZE = 120;
    static get observedAttributes(): string[];
    static styles: import('lit').CSSResult[];
    currentTimeMs: number;
    /**
     * Duration in milliseconds for audio buffering ahead of current time
     * @domAttribute "audio-buffer-duration"
     */
    audioBufferDurationMs: number;
    /**
     * Maximum number of concurrent audio segment fetches for buffering
     * @domAttribute "max-audio-buffer-fetches"
     */
    maxAudioBufferFetches: number;
    /**
     * Enable/disable audio buffering system
     * @domAttribute "enable-audio-buffering"
     */
    enableAudioBuffering: boolean;
    /**
     * Mute/unmute the media element
     * @domAttribute "mute"
     */
    mute: boolean;
    /**
     * FFT size for frequency analysis
     * @domAttribute "fft-size"
     */
    fftSize: number;
    /**
     * FFT decay rate for frequency analysis
     * @domAttribute "fft-decay"
     */
    fftDecay: number;
    /**
     * FFT gain for frequency analysis
     * @domAttribute "fft-gain"
     */
    fftGain: number;
    /**
     * Enable/disable frequency interpolation
     * @domAttribute "interpolate-frequencies"
     */
    interpolateFrequencies: boolean;
    get FREQ_WEIGHTS(): Float32Array;
    get shouldInterpolateFrequencies(): boolean;
    get urlGenerator(): UrlGenerator;
    mediaEngineTask: import('@lit/task').Task<readonly [string, string | null], import('../transcoding/types/index.ts').MediaEngine>;
    audioSegmentIdTask: import('@lit/task').Task<readonly [import('../transcoding/types/index.ts').MediaEngine | undefined, number], number | undefined>;
    audioInitSegmentFetchTask: import('@lit/task').Task<readonly [import('../transcoding/types/index.ts').MediaEngine | undefined], ArrayBuffer>;
    audioSegmentFetchTask: import('@lit/task').Task<readonly [import('../transcoding/types/index.ts').MediaEngine | undefined, number | undefined], ArrayBuffer>;
    audioInputTask: import('./EFMedia/shared/MediaTaskUtils.ts').InputTask;
    audioSeekTask: import('@lit/task').Task<readonly [number, import('./EFMedia/BufferedSeekingInput.ts').BufferedSeekingInput | undefined], import('mediabunny').VideoSample | undefined>;
    audioBufferTask: import('@lit/task').Task<readonly [number], import('./EFMedia/audioTasks/makeAudioBufferTask.ts').AudioBufferState>;
    byteTimeDomainTask: import('@lit/task').Task<readonly [import('@lit/task').TaskStatus, number, number, number, number, boolean], Uint8Array | null>;
    frequencyDataTask: import('@lit/task').Task<readonly [import('@lit/task').TaskStatus, number, number, number, number, boolean], Uint8Array | null>;
    /**
     * The unique identifier for the media asset.
     * This property can be set programmatically or via the "asset-id" attribute.
     * @domAttribute "asset-id"
     */
    assetId: string | null;
    get intrinsicDurationMs(): number;
    protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    get hasOwnDuration(): boolean;
    private _desiredSeekTimeMs;
    get desiredSeekTimeMs(): number;
    set desiredSeekTimeMs(value: number);
    protected executeSeek(seekToMs: number): Promise<void>;
    /**
     * Main integration method for EFTimegroup audio playback
     * Now powered by clean, testable utility functions
     */
    fetchAudioSpanningTime(fromMs: number, toMs: number, signal?: AbortSignal): Promise<AudioSpan>;
}
export {};
