import { ReactiveController, ReactiveControllerHost } from 'lit'; import { type AudioPlayerState, type PlaylistTrack } from '../utils/audio-context.js'; export interface AudioPlayerControllerOptions { src?: string; items?: PlaylistTrack[]; autoAdvance?: boolean; autoplay?: boolean; loop?: boolean; loopMode?: 'none' | 'all' | 'one'; provideContext?: boolean; } /** * A headless Lit ReactiveController that directly manages an HTMLAudioElement, * tracks playback state, orchestrates playlists, and optionally provides * audioPlayerContext down the host element's DOM tree via @lit/context. */ export declare class AudioPlayerController implements ReactiveController { host: ReactiveControllerHost & HTMLElement; audio: HTMLAudioElement; src: string; items: PlaylistTrack[]; autoAdvance: boolean; autoplay: boolean; loop: boolean; loopMode: 'none' | 'all' | 'one'; private _contextProvider?; private _audioContext?; private _analyserNode?; private _mediaSource?; private _animationFrameId; state: AudioPlayerState; constructor(host: ReactiveControllerHost & HTMLElement, options?: AudioPlayerControllerOptions); private _initAudio; hostConnected(): void; hostDisconnected(): void; setSrc(newSrc: string, autoPlayOverride?: boolean): void; setItems(items: PlaylistTrack[], startIndex?: number): void; setAutoAdvance(autoAdvance: boolean): void; setAutoplay(autoplay: boolean): void; setLoopMode(mode: 'none' | 'all' | 'one'): void; play(): void; pause(): void; togglePlay(): void; seek(time: number): void; reset(): void; setVolume(volume: number): void; toggleMute(): void; next(): void; previous(): void; select(index: number): void; private _updateState; private _setupAudioContext; private _handleLoadedMetadata; private _handleEnded; private _handlePlaying; private _handlePause; private _handleError; private _startTrackingTime; }