export interface Signal<T> {
    getter: () => T;
    setter: (newValue: T | ((prev: T) => T)) => void;
}
/**
 * Signals for the handful of visual concerns that were previously written from
 * multiple call sites each (play/pause button class, progress/time/buffered
 * display, volume icon+slider). One write site (the media/interaction
 * handlers) + one read site (`core/effects.ts`) replaces the scattered
 * `style.setProperty`/`.innerText` calls that used to live in every handler.
 */
export interface PlayerVisualSignals {
    isPlaying: Signal<boolean>;
    currentTime: Signal<number>;
    duration: Signal<number>;
    bufferedPercentage: Signal<number>;
    volume: Signal<number>;
}
export declare function createPlayerVisualSignals(): PlayerVisualSignals;
