import Chaimu from "./client.js";
import { FetchFunction, FetchOpts } from "./types/controller.js";
export declare const videoLipSyncEvents: string[];
export declare function initAudioContext(): AudioContext | undefined;
export declare class BasePlayer {
    static name: string;
    chaimu: Chaimu;
    fetch: FetchFunction;
    _src?: string;
    fetchOpts?: FetchOpts;
    constructor(chaimu: Chaimu, src?: string);
    init(): Promise<this>;
    clear(): Promise<this>;
    lipSync(_mode?: false | string): this;
    handleVideoEvent: (event: Event) => this;
    removeVideoEvents(): this;
    addVideoEvents(): this;
    play(): Promise<this>;
    pause(): Promise<this>;
    get name(): string;
    set src(url: string | undefined);
    get src(): string | undefined;
    get currentSrc(): unknown;
    set volume(_value: number);
    get volume(): number;
    get playbackRate(): number;
    set playbackRate(_value: number);
    get currentTime(): number;
}
export declare class AudioPlayer extends BasePlayer {
    static name: string;
    audio: HTMLAudioElement;
    gainNode: GainNode | undefined;
    audioSource: MediaElementAudioSourceNode | undefined;
    constructor(chaimu: Chaimu, src?: string);
    initAudioBooster(): this;
    private disconnectAudioNodes;
    protected updateAudio(): this;
    init(): Promise<this>;
    audioErrorHandle: (e: DOMException) => void;
    lipSync(mode?: false | string): this;
    clear(): Promise<this>;
    syncPlay(): this;
    play(): Promise<this>;
    pause(): Promise<this>;
    set src(url: string | undefined);
    get src(): string | undefined;
    get currentSrc(): string;
    set volume(value: number);
    get volume(): number;
    get playbackRate(): number;
    set playbackRate(value: number);
    get currentTime(): number;
}
export declare class ChaimuPlayer extends BasePlayer {
    static name: string;
    audioBuffer: AudioBuffer | undefined;
    audioElement: HTMLAudioElement | undefined;
    mediaElementSource: MediaElementAudioSourceNode | undefined;
    gainNode: GainNode | undefined;
    blobUrl: string | undefined;
    private isClearing;
    private isInitializing;
    private clearingPromise;
    fetchAudio(): Promise<this>;
    initAudioBooster(): this;
    private disconnectAudioNodes;
    init(): Promise<this>;
    protected createAudioElement(): void;
    lipSync(mode?: false | string): this;
    reopenCtx(): Promise<this>;
    clear(): Promise<this>;
    start(): Promise<this>;
    pause(): Promise<this>;
    play(): Promise<this>;
    set src(url: string | undefined);
    get src(): string | undefined;
    get currentSrc(): string | undefined;
    set volume(value: number);
    get volume(): number;
    set playbackRate(value: number);
    get playbackRate(): number;
    get currentTime(): number;
}
//# sourceMappingURL=player.d.ts.map