import { type Model } from "@earendil-works/pi-ai";
import { Container, type Focusable, Input, type TUI } from "@earendil-works/pi-tui";
import type { ModelRuntime } from "../../../core/model-runtime.ts";
interface ScopedModelItem {
    model: Model<any>;
    thinkingLevel?: string;
}
interface DefaultModelReference {
    provider: string;
    id: string;
}
/**
 * Component that renders a model selector with search
 */
export declare class ModelSelectorComponent extends Container implements Focusable {
    private searchInput;
    private _focused;
    get focused(): boolean;
    set focused(value: boolean);
    private listContainer;
    private allModels;
    private scopedModelItems;
    private activeModels;
    private filteredModels;
    private selectedIndex;
    private currentModel?;
    private modelRuntime;
    private onSelectCallback;
    private onSelectAsDefaultCallback?;
    private onCancelCallback;
    private errorMessage?;
    private refreshStatusMessage;
    private refreshStatusSuccess;
    private tui;
    private scopedModels;
    private defaultModel?;
    private scope;
    private scopeText?;
    private scopeHintText?;
    private readonly refreshAbortController;
    private refreshTimeout?;
    private closed;
    constructor(tui: TUI, currentModel: Model<any> | undefined, modelRuntime: ModelRuntime, scopedModels: ReadonlyArray<ScopedModelItem>, onSelect: (model: Model<any>) => void, onCancel: () => void, initialSearchInput?: string, onSelectAsDefault?: (model: Model<any>) => void, defaultModel?: DefaultModelReference);
    private loadModelsFromSnapshot;
    private refreshModels;
    dispose(): void;
    private sortModels;
    private getScopeText;
    private getScopeHintText;
    private isDefaultModel;
    private isDefaultSearch;
    private setScope;
    private filterModels;
    private updateList;
    handleInput(keyData: string): void;
    private handleSelect;
    getSearchInput(): Input;
}
export {};
//# sourceMappingURL=model-selector.d.ts.map