export interface ShortcutDef {
    id: string;
    label: string;
    category: string;
    /** Default key combo, e.g. "Ctrl+Z", "Shift+Delete". */
    defaultKey: string;
    /** Current (possibly remapped) key combo. */
    currentKey: string;
    /** Action to execute. */
    action: () => void;
}
export interface ShortcutConfig {
    /** Map of shortcut ID → custom key combo. */
    overrides: Record<string, string>;
}
/** Convert a keyboard event to a key combo string. */
export declare function eventToKeyCombo(e: KeyboardEvent): string;
declare class ShortcutRegistryImpl {
    private shortcuts;
    private overrides;
    private listeners;
    /** Register a shortcut. */
    register(def: Omit<ShortcutDef, "currentKey">): void;
    /** Register multiple shortcuts at once. */
    registerAll(defs: Array<Omit<ShortcutDef, "currentKey">>): void;
    /** Unregister a shortcut. */
    unregister(id: string): void;
    /** Remap a shortcut to a new key combo. */
    remap(id: string, newKey: string): void;
    /** Reset a shortcut to its default. */
    resetToDefault(id: string): void;
    /** Reset all shortcuts to defaults. */
    resetAll(): void;
    /** Handle a keyboard event, triggering matching shortcuts. */
    handleKeyEvent(e: KeyboardEvent): boolean;
    /** Get all registered shortcuts. */
    getAll(): ShortcutDef[];
    /** Get shortcuts by category. */
    getByCategory(category: string): ShortcutDef[];
    /** Get all categories. */
    getCategories(): string[];
    /** Export custom overrides as JSON. */
    exportConfig(): ShortcutConfig;
    /** Import custom overrides from JSON. */
    importConfig(config: ShortcutConfig): void;
    /** Save overrides to localStorage. */
    save(storageKey?: string): void;
    /** Load overrides from localStorage. */
    load(storageKey?: string): void;
    /** Subscribe to changes. Returns unsubscribe function. */
    subscribe(fn: () => void): () => void;
    private notify;
}
/** Global shortcuts registry singleton. */
export declare const ShortcutRegistry: ShortcutRegistryImpl;
export declare const DEFAULT_SHORTCUTS: {
    readonly undo: {
        readonly id: "general.undo";
        readonly label: "Undo";
        readonly category: "General";
        readonly defaultKey: "Ctrl+Z";
    };
    readonly redo: {
        readonly id: "general.redo";
        readonly label: "Redo";
        readonly category: "General";
        readonly defaultKey: "Ctrl+Y";
    };
    readonly copy: {
        readonly id: "general.copy";
        readonly label: "Copy";
        readonly category: "General";
        readonly defaultKey: "Ctrl+C";
    };
    readonly paste: {
        readonly id: "general.paste";
        readonly label: "Paste";
        readonly category: "General";
        readonly defaultKey: "Ctrl+V";
    };
    readonly cut: {
        readonly id: "general.cut";
        readonly label: "Cut";
        readonly category: "General";
        readonly defaultKey: "Ctrl+X";
    };
    readonly delete: {
        readonly id: "general.delete";
        readonly label: "Delete";
        readonly category: "General";
        readonly defaultKey: "Delete";
    };
    readonly selectAll: {
        readonly id: "general.selectAll";
        readonly label: "Select All";
        readonly category: "General";
        readonly defaultKey: "Ctrl+A";
    };
    readonly save: {
        readonly id: "general.save";
        readonly label: "Save";
        readonly category: "General";
        readonly defaultKey: "Ctrl+S";
    };
    readonly duplicate: {
        readonly id: "general.duplicate";
        readonly label: "Duplicate";
        readonly category: "General";
        readonly defaultKey: "Ctrl+D";
    };
    readonly zoomIn: {
        readonly id: "view.zoomIn";
        readonly label: "Zoom In";
        readonly category: "View";
        readonly defaultKey: "Ctrl+=";
    };
    readonly zoomOut: {
        readonly id: "view.zoomOut";
        readonly label: "Zoom Out";
        readonly category: "View";
        readonly defaultKey: "Ctrl+-";
    };
    readonly zoomFit: {
        readonly id: "view.zoomFit";
        readonly label: "Zoom to Fit";
        readonly category: "View";
        readonly defaultKey: "Ctrl+0";
    };
    readonly toggleGrid: {
        readonly id: "view.toggleGrid";
        readonly label: "Toggle Grid";
        readonly category: "View";
        readonly defaultKey: "Ctrl+'";
    };
    readonly toggleRulers: {
        readonly id: "view.toggleRulers";
        readonly label: "Toggle Rulers";
        readonly category: "View";
        readonly defaultKey: "Ctrl+R";
    };
    readonly toggleMinimap: {
        readonly id: "view.toggleMinimap";
        readonly label: "Toggle Minimap";
        readonly category: "View";
        readonly defaultKey: "Ctrl+M";
    };
};
/** Hook to use shortcuts in a component. Attaches keyboard listener. */
export declare function useShortcuts(active?: boolean): ShortcutDef[];
export {};
