import { StreamOpt } from '../model/playerModel';
export interface RecoveryConfig {
    enabled?: boolean;
    maxRecoverCount?: number;
    stablePlaySeconds?: number;
}
export interface RecoveryControllerOptions {
    onRecover: () => boolean | void | Promise<boolean | void>;
    onExhausted: () => void;
}
/**
 * 管理稳定播放后的断线恢复状态。
 *
 * JPlayer 仍负责真正创建和销毁播放器；此控制器只负责恢复策略、
 * 重试次数、稳定播放计时，以及直播/回放的恢复位置。
 */
export declare class RecoveryController {
    private readonly options;
    private static readonly MAX_RECOVER_COUNT;
    private static readonly DEFAULT_STABLE_PLAY_SECONDS;
    private static readonly MAX_STABLE_PLAY_SECONDS;
    private enabled;
    private maxRecoverCount;
    private recoverResetSeconds;
    private recoverCount;
    private resetTimer;
    private stablePlaying;
    private recovering;
    private recoveryAttemptId;
    constructor(options: RecoveryControllerOptions);
    configure(config: RecoveryConfig): void;
    shouldRecover(errorType: string | undefined, isNetworkDead: boolean, hasPlayer: boolean): boolean;
    tryRecover(onBeforeRecover?: () => void): boolean;
    markPlaybackStarted(): void;
    teardownSession(): void;
    prepareStreamState(stream: StreamOpt, currentSeconds: number): void;
    destroy(): void;
    private clearResetTimer;
    private handleRecoveryFailure;
    private normalizeNumber;
    private calculateNewBeginTime;
}
