import { PartialRequired, type Player, type PlayerPlugin, type Source } from '@oplayer/core';
import type shaka from 'shaka-player';
export type Matcher = (source: Source) => boolean;
export interface ShakaPluginOptions {
    library?: string;
    matcher?: Matcher;
    /**
     *shaka config
     * @type {object}
     */
    config?: any;
    requestFilter?: shaka.extern.RequestFilter;
    /**
     *default: 'menu'
     */
    qualityControlType?: 'menu' | 'setting';
    qualityControl?: boolean;
    audioControl?: boolean;
    textControl?: boolean;
}
declare class ShakaPlugin implements PlayerPlugin {
    key: string;
    name: string;
    version: string;
    static library: typeof shaka;
    player: Player;
    instance?: shaka.Player & {
        eventManager: shaka.util.EventManager;
    };
    options: PartialRequired<ShakaPluginOptions, 'matcher'>;
    constructor(options?: ShakaPluginOptions);
    apply(player: Player): this;
    load(player: Player, source: Source): Promise<false | this>;
    getCurrentTime(): number;
    get seekRange(): {
        start: number;
        end: number;
    };
    get _duration(): number;
    destroy(): Promise<void>;
    setupQuality: (player: Player, instance: shaka.Player, qualityControlType: ShakaPluginOptions["qualityControlType"]) => void;
    setupAudioSelection: (player: Player, instance: shaka.Player) => void;
    setupTextSelection: (player: Player, instance: shaka.Player) => void;
    settingUpdater(arg: {
        icon: string;
        name: string;
        settings: {
            name: string;
            default: boolean;
            value: any;
        }[];
        player: Player;
        onChange: (it: {
            value: any;
        }) => void;
    }): void;
    getResolutionLabel_(track: shaka.extern.Track, tracks: shaka.extern.Track[]): string;
}
export default function create(options?: ShakaPluginOptions): ShakaPlugin;
export {};
//# sourceMappingURL=index.d.ts.map