/**
 * Keybinding configuration and matching for the interactive shell.
 *
 * Merges user overrides (from ~/.shortcut/keybindings.json) with built-in
 * defaults for both application-level actions (interrupt, model cycling,
 * theme toggle, etc.) and editor-level actions (cursor movement, selection).
 * The KeybindingsManager is created once at startup and shared across the TUI.
 */
import { type EditorAction, type KeyId } from '../tui/index.js';
/**
 * Application-level actions (coding agent specific).
 */
export type AppAction = 'interrupt' | 'clear' | 'exit' | 'suspend' | 'cycleThinkingLevel' | 'toggleFastMode' | 'toggleAutoApprove' | 'toggleRuntimePermissionBypass' | 'cycleModelForward' | 'cycleModelBackward' | 'selectModel' | 'expandTools' | 'toggleThinking' | 'toggleSessionNamedFilter' | 'externalEditor' | 'followUp' | 'dequeue' | 'pasteImage' | 'newSession' | 'tree' | 'fork' | 'resume' | 'cycleMode';
/**
 * All configurable actions.
 */
export type KeyAction = AppAction | EditorAction;
/**
 * Full keybindings configuration (app + editor actions).
 */
export type KeybindingsConfig = {
    [K in KeyAction]?: KeyId | KeyId[];
};
/**
 * Default application keybindings.
 */
export declare const DEFAULT_APP_KEYBINDINGS: Record<AppAction, KeyId | KeyId[]>;
/**
 * All default keybindings (app + editor).
 */
export declare const DEFAULT_KEYBINDINGS: Required<KeybindingsConfig>;
/**
 * Manages all keybindings (app + editor).
 */
export declare class KeybindingsManager {
    private config;
    private appActionToKeys;
    /** Private constructor — use `create()` or `inMemory()` to build instances. */
    private constructor();
    /**
     * Create from config file and set up editor keybindings.
     */
    static create(agentDir?: string): KeybindingsManager;
    /**
     * Create in-memory.
     */
    static inMemory(config?: KeybindingsConfig): KeybindingsManager;
    /** Load keybindings JSON from disk; return empty config if missing or invalid. */
    private static loadFromFile;
    /** Build the action→keys map from defaults plus user overrides. */
    private buildMaps;
    /**
     * Check if input matches an app action.
     */
    matches(data: string, action: AppAction): boolean;
    /**
     * Get keys bound to an app action.
     */
    getKeys(action: AppAction): KeyId[];
    /**
     * Get the full effective config.
     */
    getEffectiveConfig(): Required<KeybindingsConfig>;
}
export type { EditorAction, KeyId };
//# sourceMappingURL=keybindings.d.ts.map