import { EventEmitter } from 'events';
import { VideoPlayerConfig, VideoSource, PlayerState, PlayerEvent, EventHandler, Quality, SubtitleTrack, AudioTrack, PlayerMetrics, PlayerError, DRMConfig } from './interfaces';
export declare abstract class VideoPlayer {
    protected config: VideoPlayerConfig;
    protected eventEmitter: EventEmitter;
    protected state: PlayerState;
    protected currentSource?: VideoSource;
    protected metrics: PlayerMetrics;
    protected errors: PlayerError[];
    constructor(config?: VideoPlayerConfig);
    abstract load(source: VideoSource): Promise<void>;
    abstract play(): Promise<void>;
    abstract pause(): void;
    abstract stop(): void;
    abstract seek(position: number): void;
    abstract setVolume(volume: number): void;
    abstract setPlaybackRate(rate: number): void;
    abstract getCurrentTime(): number;
    abstract getDuration(): number;
    abstract getVolume(): number;
    abstract getPlaybackRate(): number;
    abstract isMuted(): boolean;
    abstract setMuted(muted: boolean): void;
    abstract getAvailableQualities(): Quality[];
    abstract getCurrentQuality(): Quality | null;
    abstract setQuality(quality: Quality): void;
    abstract enableAutoQuality(enabled: boolean): void;
    abstract getSubtitleTracks(): SubtitleTrack[];
    abstract getCurrentSubtitleTrack(): SubtitleTrack | null;
    abstract setSubtitleTrack(track: SubtitleTrack | null): void;
    abstract getAudioTracks(): AudioTrack[];
    abstract getCurrentAudioTrack(): AudioTrack | null;
    abstract setAudioTrack(track: AudioTrack): void;
    abstract enterFullscreen(): void;
    abstract exitFullscreen(): void;
    abstract isFullscreen(): boolean;
    abstract enterPictureInPicture(): void;
    abstract exitPictureInPicture(): void;
    abstract isPictureInPicture(): boolean;
    on(event: PlayerEvent, handler: EventHandler): void;
    off(event: PlayerEvent, handler: EventHandler): void;
    once(event: PlayerEvent, handler: EventHandler): void;
    removeAllListeners(event?: PlayerEvent): void;
    protected emit(event: PlayerEvent, data?: any): void;
    getState(): PlayerState;
    protected setState(newState: PlayerState): void;
    getConfig(): VideoPlayerConfig;
    updateConfig(config: Partial<VideoPlayerConfig>): void;
    protected abstract applyConfig(): void;
    getMetrics(): PlayerMetrics;
    protected initializeMetrics(): PlayerMetrics;
    protected generateSessionId(): string;
    protected handleError(error: PlayerError): void;
    protected trackAnalytics(event: string, data?: any): void;
    protected abstract configureDRM(drmConfig: DRMConfig): Promise<void>;
    abstract destroy(): void;
    protected cleanup(): void;
    protected formatTime(seconds: number): string;
    private pad;
    abstract getBufferedRanges(): TimeRanges;
    abstract getSeekableRanges(): TimeRanges;
    protected isBuffering(): boolean;
    abstract getBandwidth(): number;
    abstract getNetworkState(): number;
    abstract getVideoWidth(): number;
    abstract getVideoHeight(): number;
    abstract getDroppedFrames(): number;
    abstract getDecodedFrames(): number;
}
//# sourceMappingURL=VideoPlayer.d.ts.map