import { Container } from "@earendil-works/pi-tui";
export interface ContextWindowChoice {
    /** Raw token count; the stable identity for this choice. */
    contextWindow: number;
    /** `String(contextWindow)` — stable selection value, independent of display label. */
    value: string;
    /** Semantic tier label, e.g. "Default" / "Long context" (falls back to a size for extra tiers). */
    label: string;
    /** True for the model's native (smallest) window, rendered with a `(default)` tag. */
    isDefault: boolean;
    /** Right-column display, e.g. "400k tokens" / "1m tokens". */
    tokensLabel: string;
}
export interface ContextWindowChoices {
    choices: ContextWindowChoice[];
    currentIndex: number;
}
/**
 * Build the ordered, deduped context-window choices for the picker. The smallest
 * window is the model's native default ("Default"), the largest is "Long context",
 * and any extra tiers fall back to their formatted size. Raw token counts remain the
 * stable identity so colliding display labels never affect selection.
 */
export declare function buildContextWindowChoices(availableContextWindows: readonly number[], currentContextWindow: number): ContextWindowChoices;
/**
 * Faithful re-creation of the GitHub Copilot CLI context-window picker, surfaced as a
 * follow-up step in the `/model` flow for models that expose more than one window.
 *
 * Renders numbered rows with a `❯` caret, semantic tier labels, a dim `(default)` tag,
 * and right-aligned dim token counts:
 *
 * ```
 * Select Context Window for GPT-5.5
 *
 *    1. Default (default)   400k tokens
 *  ❯ 2. Long context        1m tokens
 *
 *  1-2 select · up/down navigate · enter confirm · esc cancel
 * ```
 */
export declare class ContextWindowSelectorComponent extends Container {
    private readonly choices;
    private readonly listContainer;
    private selectedIndex;
    private readonly onSelectCallback;
    private readonly onCancelCallback;
    constructor(modelName: string, availableContextWindows: readonly number[], currentContextWindow: number, onSelect: (contextWindow: number) => void, onCancel: () => void);
    private getHintBar;
    private updateList;
    handleInput(keyData: string): void;
    private confirm;
}
//# sourceMappingURL=context-window-selector.d.ts.map