import { BaseProvider, PlayerStates } from '../core/esl-media-provider';
import type { ESLMedia } from '../core/esl-media';
import type { ProviderObservedParams } from '../core/esl-media-provider';
import type { VideoJsPlayer } from 'video.js';
export interface BCPlayerAccount {
    playerId: string | null;
    accountId: string | null;
}
/**
 * Brightcove API provider for {@link ESLMedia}
 * @author Julia Murashko
 */
export declare class BrightcoveProvider extends BaseProvider {
    static readonly providerName: string;
    protected videojsClasses: string;
    protected _api: VideoJsPlayer;
    protected _account: BCPlayerAccount;
    protected _autoplay: boolean;
    /**
     * @returns settings, get from element by default
     */
    protected static getAccount(el: ESLMedia): BCPlayerAccount;
    /** Loads player API according defined settings */
    protected static loadAPI(account: BCPlayerAccount): Promise<Event>;
    /** Build video brightcove element */
    protected buildVideo(): HTMLElement;
    /** Utility method to convert api event to promise */
    protected $$fromEvent(eventName: string): Promise<void>;
    /**
     * Executes as soon as api script detected or loaded.
     * @returns promise with provided API
     */
    protected onAPILoaded(): Promise<void> | void;
    /**
     * Executes after API ready state resolved
     * Basic onAPIReady should be called to subscribe to API state
     */
    protected onAPIReady(): Promise<void> | void;
    bind(): void;
    unbind(): void;
    protected onConfigChange(param: ProviderObservedParams, value: boolean): void;
    focus(): void;
    get state(): PlayerStates;
    get defaultAspectRatio(): number;
    get currentTime(): number;
    get duration(): number;
    seekTo(pos: number): void;
    play(): void;
    pause(): void;
    stop(): void;
    safePlay(): Promise<any>;
    safeStop(): Promise<any>;
}
declare global {
    interface Window {
        bc?: (el: HTMLElement, ...args: any[]) => VideoJsPlayer;
    }
}
