import type { Model } from "@oh-my-pi/pi-ai";
import { Container, Input, type SgrMouseEvent, type TUI } from "@oh-my-pi/pi-tui";
import type { ModelRegistry } from "../../config/model-registry.js";
import type { Settings } from "../../config/settings.js";
import { type ConfiguredThinkingLevel } from "../../thinking.js";
interface ScopedModelItem {
    model: Model;
    thinkingLevel?: string;
}
type ModelSelectorAction = "modelRole" | "retryFallback";
type RoleSelectCallback = (model: Model, role: string | null, thinkingLevel?: ConfiguredThinkingLevel, selector?: string, action?: ModelSelectorAction) => void;
/**
 * Component that renders a model selector with provider tabs and context menu.
 * - Tab/Arrow Left/Right: Switch between provider tabs
 * - Arrow Up/Down: Navigate model list
 * - Enter: Open context menu to select action
 * - Escape: Close menu or selector
 */
export declare class ModelSelectorComponent extends Container {
    #private;
    constructor(tui: TUI, _currentModel: Model | undefined, settings: Settings, modelRegistry: ModelRegistry, scopedModels: ReadonlyArray<ScopedModelItem>, onSelect: RoleSelectCallback, onCancel: () => void, options?: {
        temporaryOnly?: boolean;
        directSelect?: boolean;
        pickerHint?: string;
        initialSearchInput?: string;
        currentContextTokens?: number;
    });
    /**
     * Concatenate children like Container.render, recording where the model list
     * lands so routed mouse events can be hit-tested against it.
     */
    render(width: number): readonly string[];
    routeMouse(event: SgrMouseEvent, line: number, _col: number): void;
    handleInput(keyData: string): void;
    getSearchInput(): Input;
}
export {};
