import { EVENTS } from './constants';
import EventEmitter from './event';
import I18n from './i18n';
import type { Destroyable, PlayerEvent, PlayerEventName, PlayerListener, PlayerOptions, PlayerPlugin, Source } from './types';
export declare class Player<Context extends Record<string, any> = Record<string, any>> {
    static players: Player[];
    container: HTMLElement;
    options: Required<PlayerOptions>;
    locales: I18n;
    eventEmitter: EventEmitter;
    plugins: PlayerPlugin[];
    context: Context;
    loader?: Destroyable;
    $root: HTMLDivElement;
    $video: HTMLVideoElement;
    listeners: Record<(typeof EVENTS)[number] | 'fullscreenchange' | 'fullscreenerror', Function>;
    hasError: boolean;
    isSourceChanging: boolean;
    constructor(el: HTMLElement | string, options?: PlayerOptions | string);
    static make<Context extends Record<string, any> = Record<string, any>>(el: HTMLElement | string, options?: PlayerOptions | string): Player<Context>;
    use(plugins: PlayerPlugin[]): this;
    create(): this;
    initEvent(): void;
    render(): void;
    load(source: Source): Promise<Source>;
    applyPlugin(plugin: PlayerPlugin, init?: boolean): void;
    on(name: PlayerEventName | PlayerListener, listener?: PlayerListener): this;
    once(name: PlayerEventName | PlayerListener, listener?: PlayerListener): void;
    off(name: PlayerEventName, listener: PlayerListener): void;
    emit(name: PlayerEventName, payload?: PlayerEvent['payload']): void;
    setPoster(poster: string): void;
    play(): Promise<void> | undefined;
    pause(): void;
    togglePlay(): void | Promise<void>;
    mute(): void;
    unmute(): void;
    toggleMute(): void;
    setVolume(volume: number): void;
    setPlaybackRate(rate: number): void;
    seek(time: number): void;
    setLoop(loop: boolean): void;
    enterFullscreen(): Promise<void>;
    exitFullscreen(): Promise<void>;
    get isFullscreenEnabled(): any;
    get isFullScreen(): boolean;
    toggleFullScreen(): Promise<void>;
    get isPipEnabled(): boolean;
    enterPip(): Promise<PictureInPictureWindow>;
    exitPip(): false | Promise<void>;
    get isInPip(): boolean;
    togglePip(): false | Promise<void> | Promise<PictureInPictureWindow>;
    changeQuality(source: Omit<Source, 'poster'> | Promise<Omit<Source, 'poster'>>): Promise<void>;
    changeSource(source: Source | Promise<Source>, keepPlaying?: boolean): Promise<void>;
    _loader(sourceLike: Source | Promise<Source>, options: {
        event: string;
        preEvent: string;
        brokenEvent: string;
        keepPlaying: boolean;
        keepTime?: boolean;
    }): Promise<void>;
    destroy(): void;
    get isNativeUI(): boolean;
    get state(): number;
    get isPlaying(): boolean;
    get isMuted(): boolean;
    get isEnded(): boolean;
    get isLoop(): boolean;
    get isAutoPlay(): boolean;
    get duration(): number;
    get buffered(): TimeRanges;
    get currentTime(): number;
    get volume(): number;
    get playbackRate(): number;
    get _requestFullscreen(): Element['requestFullscreen'];
    get _exitFullscreen(): Document['exitFullscreen'];
    static get version(): string;
}
//# sourceMappingURL=player.d.ts.map