import { PlayerMode, StreamOpt, StreamSpeed, StyleSize } from "./model/playerModel";
import GlobalClient from "./globalClient.js";
interface AudioFormatInfo {
    codec: any;
    initCodec: any;
    mediaInfoCodec: any;
    originalCodec: any;
    sampleRate: any;
    channelCount: any;
    mimeType: any;
    playerType: 'video' | 'webgl';
    mediaElement: {
        muted: boolean;
        paused: boolean;
        readyState: number;
        currentTime: number;
        buffered: Array<{
            start: number;
            end: number;
        }>;
    } | null;
    mseAudio: {
        sourceBufferReady: boolean;
        sourceBufferUpdating: boolean;
        pendingSegments: number;
        buffered: Array<{
            start: number;
            end: number;
        }>;
        mediaSourceReadyState: any;
        segmentStats: any;
        demuxStats: any;
    } | null;
}
export declare class JPlayerMediaRecorder {
    mediaElement: unknown;
    private recorder;
    emitter: any;
    private timer$;
    private $stop;
    private subscriptiontimer;
    constructor(mediaElement: unknown, time: any);
    on(event: any, listener: any): void;
    off(event: any, listener: any): void;
    start(): void;
    stop(): void;
    destroy(): void;
}
export declare class JPlayer {
    el: HTMLElement;
    playerMode?: PlayerMode;
    static get version(): any;
    static isSupported(): any;
    private features;
    private globalClient;
    private nippleIns;
    private timelineIns;
    private e;
    private vid;
    private prefixName;
    private _rootHammertime;
    private vel;
    private cel;
    private wrapperel;
    private joystickele;
    private videoWrapperEl;
    private streamOpt;
    private playUrl;
    private streamId;
    private contextMenu;
    private rectBlock;
    private playerIns;
    private _lastMediaInfo;
    private _currentTime;
    private _audioCtrl;
    private _videoStream;
    private lastDecodedFrame;
    private readonly MAX_OPEN_STREAM_RETRY_COUNT;
    private recoveryController;
    private interactionController?;
    _talkCtrl: any;
    _vodPlayer: any;
    private osdTimeId;
    private _canPlayTimer;
    private videoRatio;
    private playerOnCanPlay;
    private _playing;
    private _ptzing;
    private _ptzLoad;
    private _drawing;
    private _setting;
    private _seeking;
    _ptzSpeed: number;
    private _isFullScreen;
    private _offsetObj;
    private _ponitDragClick;
    private _begintime;
    private _endtime;
    private _offsetTime;
    private _loading;
    private _recording;
    private _maxRetryTime;
    private _size;
    private _timer;
    private mediaRecorder;
    private $resize;
    private $click;
    private $dblclick;
    private $mouseenter;
    private $mouseout;
    private $mousemove;
    private $mousewheel;
    private $contextmenu;
    private $mousedown;
    private $mouseup;
    private _isMouseUp;
    private subscriptionWrapList$;
    private subscriptionToolbarList$;
    private $ptzSubject;
    private _liveFlow;
    private _OSDTime;
    emitter: any;
    private zoomScale;
    private _sequence;
    private _passageRepeat;
    private set sequence(value);
    get mediaInfo(): any;
    /**
     * 返回当前实际播放链路中的音频格式。
     * mediaInfo 可能不包含 PCM 转码后的音频信息，因此这里同时检查
     * MSE 初始化段和 WASM/PCM 播放参数。
     */
    get audioInfo(): AudioFormatInfo;
    private getAudioFormatInfo;
    private logAudioFormatOnUnmute;
    get loading(): boolean;
    get playerType(): "webgl" | "video";
    set playerType(type: "webgl" | "video");
    set loading(v: boolean);
    set styleSize(size: StyleSize);
    get size(): StyleSize;
    get seeking(): boolean;
    set seeking(v: boolean);
    get recording(): boolean;
    set recording(v: boolean);
    set messageError(err: any);
    private set loadingTxt(value);
    set error(v: any);
    get isFullScreen(): boolean;
    set isFullScreen(v: boolean);
    get speed(): string;
    get durationT(): number;
    set playing(v: boolean);
    get playing(): boolean;
    get ptzing(): boolean;
    set ptzing(v: boolean);
    private get setting();
    private set setting(value);
    get zooming(): boolean;
    set zooming(v: boolean);
    get streamSpeed(): StreamSpeed;
    set streamSpeed(v: StreamSpeed);
    set offsetTime(v: number);
    private get isMobile();
    constructor(globalClient: GlobalClient, el: HTMLElement, playerMode?: PlayerMode);
    private initHammer;
    on(event: any, listener: any): void;
    private emitPlayerError;
    init(stream?: StreamOpt): Promise<boolean>;
    getFeatureList(): any;
    initObservables(): void;
    unSubscribeObservables(): void;
    unSubscribeToolbarObservables(): void;
    initDom(): void;
    initToolBar(): void;
    creatPlayer(): Promise<any>;
    private startOsdTimeUpdater;
    /**
     * @deprecated 仅保留旧调用兼容，请使用播放器内部的 OSD 更新生命周期。
     */
    updateOsdTimeThrottle(): void;
    switchStream(streamNO: number): void;
    requestInfo(url: string): {
        url: string;
        aisleId: string;
        headers: {
            "Content-Type": string;
            Authorization: string;
        };
    };
    /**
     * 归一化重试次数配置。
     * 允许下游通过 init 传入，但最终不会超过播放器内部允许的最大值。
     */
    private normalizeRetryCount;
    sendCmdPtz(cmd: number, operate?: {
        index: number;
        name?: string;
        state?: number;
    }): Promise<void>;
    sendCmdDirection(direction: number): Promise<any>;
    sendCmdPreset({ index, name, state }: {
        index: number;
        name?: string;
        state?: number;
    }): Promise<any>;
    openStream(stream: StreamOpt): Promise<any>;
    private initContextMenu;
    private getRightMenu;
    private bindEvents;
    private unBindEvents;
    setFullScreen(value?: boolean): void;
    private fullScreenHandler;
    private setMCPosition;
    private getPtzPosition;
    /**
     *  3 2 1
     *  4 * 0
     *  5 6 7
     *
     */
    private getPtzPositionFlag;
    private appendMockCursor;
    private showToolbars;
    private hideToolbars;
    private showSettingMenu;
    private hideSettingMenu;
    hideContextMenu(): void;
    private checkEleSize;
    private addPtzClass;
    private clearPtzClass;
    play(isGive?: boolean): void;
    pause(): void;
    private resetPlayerStatus;
    refresh(streamOpt?: StreamOpt): Promise<boolean>;
    toggleVod(streamOpt?: StreamOpt): Promise<boolean>;
    private setCanvasSize;
    /**
     * 绘制矩形框
     **/
    private switchDraw;
    private videoIsOriginalState;
    private toggleDraw;
    drawBtnHandle(e: any): void;
    private setRectRatio;
    getShape(): Promise<any>;
    setFillRatio(): void;
    resetRatio(): void;
    ratioAdjust(W?: number, H?: number): void;
    record(time?: number): Promise<void>;
    /**
     * 抓取解复用前的 WebSocket 原始码流，用于音视频诊断。
     * 为避免调试数据长期占用内存，单次最长限制为 60 秒。
     */
    captureRawStream(seconds?: number): Promise<Blob>;
    screenshot(): void;
    toggleSetting(): void;
    togglePtz(): void;
    toggleZoom(): void;
    private emptyVideoDom;
    private emptyVideoTool;
    toggleVodOrigin(e: any): void;
    toggleVodOriginForNumber(vod: number): void;
    private updateProcess;
    private updateTimeLine;
    private updateProcessBarView;
    private updateProcessClockView;
    private getOffetTime;
    private getOffetClientTime;
    private getOffetX;
    initNipple(): void;
    sendPtzCmd(cmd: any, param?: number): void;
    sendAudio(): any;
    destroyNipple(): void;
    close(): void;
    private teardownPlaybackSession;
    clearOsdTimeId(): void;
    destroy(): void;
    private destroyMediaRecorder;
}
export default JPlayer;
