import { IVideoPlayer, VideoSource, PlayerConfig, PlayerState, PlayerError, Quality, SubtitleTrack } from './interfaces/IVideoPlayer';
import { PlayerEvent } from './interfaces';
import { EventEmitter } from './utils/EventEmitter';
export declare abstract class BasePlayer implements IVideoPlayer {
    protected container: HTMLElement | null;
    protected config: PlayerConfig;
    protected events: EventEmitter;
    protected state: PlayerState;
    protected source: VideoSource | null;
    protected subtitles: SubtitleTrack[];
    protected currentSubtitleIndex: number;
    constructor();
    protected getDefaultConfig(): PlayerConfig;
    protected getDefaultState(): PlayerState;
    initialize(container: HTMLElement | string, config?: PlayerConfig): Promise<void>;
    protected abstract setupPlayer(): Promise<void>;
    abstract destroy(): Promise<void>;
    abstract load(source: VideoSource): Promise<void>;
    play(): Promise<void>;
    pause(): void;
    stop(): void;
    abstract seek(time: number): void;
    setVolume(level: number): void;
    mute(): void;
    unmute(): void;
    toggleMute(): void;
    abstract getQualities(): Quality[];
    abstract getCurrentQuality(): Quality | null;
    abstract setQuality(index: number): void;
    abstract setAutoQuality(enabled: boolean): void;
    setPlaybackRate(rate: number): void;
    getPlaybackRate(): number;
    getCurrentTime(): number;
    getDuration(): number;
    getBufferedPercentage(): number;
    getState(): PlayerState;
    isPlaying(): boolean;
    isPaused(): boolean;
    isEnded(): boolean;
    abstract enterFullscreen(): Promise<void>;
    abstract exitFullscreen(): Promise<void>;
    toggleFullscreen(): Promise<void>;
    abstract enterPictureInPicture(): Promise<void>;
    abstract exitPictureInPicture(): Promise<void>;
    on(event: string, handler: Function): void;
    off(event: string, handler?: Function): void;
    once(event: string, handler: Function): void;
    protected emit(event: PlayerEvent, ...args: any[]): void;
    setFreeDuration?(seconds: number): void;
    resetFreePreviewGate?(): void;
    getSubtitles(): SubtitleTrack[];
    setSubtitleTrack(index: number): void;
    disableSubtitles(): void;
    protected abstract applySubtitleTrack(track: SubtitleTrack): void;
    protected abstract removeSubtitles(): void;
    protected handleError(error: PlayerError): void;
    protected updateTime(time: number): void;
    protected updateBuffered(percentage: number): void;
    protected setBuffering(isBuffering: boolean): void;
}
//# sourceMappingURL=BasePlayer.d.ts.map