import { Publication } from "@readium/shared";
import { WebAudioEngine } from "./engine/WebAudioEngine.ts";
import type { IAudioContentProtectionConfig } from "./AudioNavigator.ts";
export declare class AudioPoolManager {
    private readonly pool;
    private _audioEngine;
    private readonly _publication;
    private readonly _supportedAudioTypes;
    constructor(audioEngine: WebAudioEngine, publication: Publication, contentProtection?: IAudioContentProtectionConfig);
    private detectSupportedAudioTypes;
    private pickPlayableHref;
    get audioEngine(): WebAudioEngine;
    /**
     * Ensures an audio element exists in the pool for the given href.
     * If one already exists, it is left untouched (preserving its buffered data).
     */
    private ensure;
    /**
     * Updates the pool around the given index: ensures elements exist within
     * the LOWER_BOUNDARY and disposes those beyond the UPPER_BOUNDARY.
     * The current track is excluded — the primary engine element represents it.
     */
    private update;
    /**
     * Sets the current audio for playback at the given track index by changing
     * the src on the persistent primary element. This preserves the RemotePlayback
     * session and any Web Audio graph connections across track changes.
     */
    setCurrentAudio(currentIndex: number, _direction: 'forward' | 'backward'): void;
    destroy(): void;
}
