export interface ItemSelectorOption<TValue extends string = string> {
    label: string;
    value: TValue;
}
interface ItemSelectorProps<TValue extends string = string> {
    title: string;
    items: ItemSelectorOption<TValue>[];
    onSelect: (value: TValue) => void;
    onCancel: () => void;
    loading?: boolean;
    loadingMessage?: string;
    error?: string | null;
    errorTitle?: string;
    errorHint?: string;
}
/**
 * Shared layout for selectors built on `TitledBoxWithPreferences` +
 * `SelectInput` + escape-to-cancel + loading/error states. Used by
 * `model-selector`. Selectors with bespoke layout
 * (e.g. session-selector, checkpoint-selector, ide-selector) do not use this
 * because they extend the pattern with additional state machines or layouts
 * that don't fit a generic shape.
 */
export declare function ItemSelector<TValue extends string = string>({ title, items, onSelect, onCancel, loading, loadingMessage, error, errorTitle, errorHint, }: ItemSelectorProps<TValue>): import("react").JSX.Element;
export {};
//# sourceMappingURL=item-selector.d.ts.map