/**
 * Interactive cursor-based selection menus.
 *
 * Provides arrow-key navigation for option selection in the terminal.
 * Pure functions live in select-menu.ts (rendering, input) and
 * select-viewport.ts (viewport scrolling).
 */
import { type SelectOptionItem } from './select-menu.js';
export { type SelectOptionItem, type KeyInputResult, renderMenu, countRenderedLines, handleKeyInput, } from './select-menu.js';
export interface InteractiveSelectCallbacks<T extends string> {
    /**
     * Custom key handler called before default key handling.
     * Return updated options to handle the key and re-render.
     * Return null to delegate to default handler.
     */
    onKeyPress?: (key: string, value: T, index: number) => SelectOptionItem<T>[] | null;
    /** Custom label for cancel option (default: "Cancel") */
    cancelLabel?: string;
}
/**
 * Prompt user to select from a list of options using cursor navigation.
 * @returns Selected option or null if cancelled
 */
export declare function selectOption<T extends string>(message: string, options: SelectOptionItem<T>[], callbacks?: InteractiveSelectCallbacks<T>): Promise<T | null>;
/**
 * Prompt user to select from a list of options with a default value.
 * @returns Selected option value, or null if cancelled (ESC pressed)
 */
export declare function selectOptionWithDefault<T extends string>(message: string, options: {
    label: string;
    value: T;
}[], defaultValue: T): Promise<T | null>;
//# sourceMappingURL=select.d.ts.map