import type { PlaybackSnapshot } from './playback';
import type { PlayerMediaHandlers } from './media';
import type { PlayerContextState, PlayerRuntimeState } from './state';
import type { PlayerVisualSignals } from './store';
export type PlayerMediaDispatchRuntimeState = Pick<PlayerRuntimeState<PlaybackSnapshot>, 'moveProgress' | 'isSeeking' | 'isSwitchingSource' | 'pendingPlaybackRestore' | 'controllerBarTimeId'>;
export interface PlayerMediaDispatchRefs {
    playerBtn: HTMLElement;
    timeDivide: HTMLElement;
    playerController: HTMLElement;
}
export interface PlayerMediaDispatchDeps {
    refs: PlayerMediaDispatchRefs;
    state: PlayerMediaDispatchRuntimeState;
    ctx: Pick<PlayerContextState, 'currentState' | 'duration'>;
    visualSignals: PlayerVisualSignals;
    getVideo: () => HTMLVideoElement | undefined;
    rememberPosition: () => boolean;
    getSrc: () => string;
    change: (name: string, value: unknown) => void;
    setLoadingState: (loading: boolean) => void;
    resize: () => void;
    showErrorModal: (message: string) => void;
    restorePlaybackSnapshot: (snapshot: PlaybackSnapshot) => void;
    setCurrentTime: (n: number) => number;
    getCurrentTime: () => number;
    getTotalTime: () => number;
    getVolume: () => number;
    requestAnimationFrame: (fn: Function) => void;
    cancelAnimationFrame: () => void;
    updateCurrentProgress: () => void;
    updateBufferedProgress: () => void;
    showControllerBar: (e?: MouseEvent) => void;
}
/**
 * Native `<video>` event handlers — translates every event into `ctx`/signal
 * updates and a `change()` dispatch. Native events are the trigger for nearly
 * every other domain (loading state, resume position, the seek rAF loop, the
 * auto-hiding controller bar), so this module's deps interface enumerates
 * that fan-out explicitly as named callbacks rather than hiding it behind a
 * single opaque dependency — see `docs/PLAYER_ROADMAP.md`'s Phase 3 QoE
 * metrics, which taps this exact event stream.
 */
export declare function createMediaEventHandlers(deps: PlayerMediaDispatchDeps): PlayerMediaHandlers;
