import type { EngineAdapter, EngineQualityLevel } from './adapters/types';
import type { PlaybackSnapshot } from './playback';
import type { PlayerRuntimeState } from './state';
export interface PlayerClarityRefs {
    clarityContainer: HTMLElement;
    player: HTMLDivElement;
}
export type PlayerClarityRuntimeState = Pick<PlayerRuntimeState<PlaybackSnapshot>, 'isSwitchingSource' | 'pendingPlaybackRestore'>;
export interface PlayerClarityCtx<TLevel extends EngineQualityLevel = EngineQualityLevel> {
    levels: TLevel[];
    levelMap: Map<string, string>;
    clarity: string;
}
export interface PlayerClarityDeps<TLevel extends EngineQualityLevel = EngineQualityLevel> {
    refs: PlayerClarityRefs;
    state: PlayerClarityRuntimeState;
    ctx: PlayerClarityCtx<TLevel>;
    getEngine: () => EngineAdapter | undefined;
    getVideo: () => HTMLVideoElement | undefined;
    getSrc: () => string;
    capturePlaybackSnapshot: () => PlaybackSnapshot;
    setLoadingState: (loading: boolean) => void;
    change: (name: string, value: unknown) => void;
    showErrorModal: (message: string) => void;
    /**
     * Self-forwarding entry for this module's own `createClaritySelect` —
     * `manifestLoaded` calls it through the RanPlayer wrapper instead of the
     * local closure below, so a `vi.spyOn(player, 'createClaritySelect')` set
     * up after construction still intercepts it.
     */
    createClaritySelect: () => void;
}
export interface PlayerClarityHandlers<TLevel extends EngineQualityLevel = EngineQualityLevel> {
    changeClarity: (e: Event) => void;
    createClaritySelect: () => void;
    manifestLoaded: (levels: TLevel[]) => void;
    hlsError: (payload: {
        fatal: boolean;
        detail: unknown;
    }) => void;
}
/**
 * Rendition/quality switching, generalized across whichever `EngineAdapter`
 * is currently loaded (`docs/PLAYER_ROADMAP.md` Phase 2) — no engine-specific
 * branching lives here, that's the adapter's job (`core/adapters/*.ts`). Kept
 * separate from `core/subtitles.ts` since subtitles are engine-independent.
 */
export declare function createClarityHandlers<TLevel extends EngineQualityLevel = EngineQualityLevel>(deps: PlayerClarityDeps<TLevel>): PlayerClarityHandlers<TLevel>;
