export type ColorblindMode = 'none' | 'protanopia' | 'deuteranopia' | 'tritanopia' | 'achromatopsia';
export interface AccessibilityConfig {
    highContrast: boolean;
    colorblindMode: ColorblindMode;
    fontSize: number;
    reducedMotion: boolean;
    screenReaderEnabled: boolean;
    subtitlesEnabled: boolean;
    subtitleSize: number;
    subtitleBackground: boolean;
    hapticFeedback: boolean;
    autoAim: boolean;
    autoAimStrength: number;
    holdToPress: boolean;
    inputDeadzone: number;
    difficultyPreset: DifficultyPreset;
}
export type DifficultyPreset = 'easy' | 'normal' | 'hard' | 'custom' | 'assist';
export declare const DEFAULT_ACCESSIBILITY_CONFIG: AccessibilityConfig;
export interface DifficultySettings {
    damageMultiplier: number;
    enemyHealthMultiplier: number;
    enemyDamageMultiplier: number;
    resourceMultiplier: number;
    timeMultiplier: number;
    respawnPenalty: boolean;
    friendlyFire: boolean;
    checkpoints: boolean;
    invincibilityFrames: number;
}
export declare const DIFFICULTY_PRESETS: Record<DifficultyPreset, DifficultySettings>;
type ColorMatrix = [number, number, number, number, number, number, number, number, number];
export declare const COLORBLIND_MATRICES: Record<ColorblindMode, ColorMatrix>;
export declare function applyColorblindFilter(r: number, g: number, b: number, mode: ColorblindMode): {
    r: number;
    g: number;
    b: number;
};
/** Generate CSS filter string for colorblind mode (applied to canvas). */
export declare function getColorblindCSSFilter(mode: ColorblindMode): string;
export declare class ScreenReaderAnnouncer {
    private liveRegion;
    init(): void;
    announce(message: string, priority?: 'polite' | 'assertive'): void;
    dispose(): void;
}
export interface SubtitleEntry {
    speakerId: string;
    speakerName: string;
    text: string;
    startTime: number;
    endTime: number;
    color?: string;
}
export interface SubtitleTrack {
    language: string;
    entries: SubtitleEntry[];
}
export declare function getActiveSubtitles(track: SubtitleTrack, currentTime: number): SubtitleEntry[];
export interface ControlMapping {
    action: string;
    keyboard: string[];
    gamepadButton: number[];
    gamepadAxis: Array<{
        axis: number;
        direction: 1 | -1;
    }>;
    mouseButton: number[];
}
export declare class ControlMapper {
    private mappings;
    private defaults;
    register(mapping: ControlMapping): void;
    remap(action: string, update: Partial<ControlMapping>): void;
    getMapping(action: string): ControlMapping | undefined;
    resetToDefaults(): void;
    /** Export mappings as JSON for save/load. */
    serialize(): Array<[string, ControlMapping]>;
    load(data: Array<[string, ControlMapping]>): void;
    allActions(): string[];
}
export {};
