import type { PickerTranslator } from './i18n';
import type { AnnotatedModel } from './primitives/OptionList';
import type { DiscoveryModel } from './types';
import { type GroupStrategy } from './utils';
export interface UseModelPickerStateOptions {
    models: DiscoveryModel[];
    value?: string | null;
    onChange?: (model: DiscoveryModel) => void;
    groupBy?: GroupStrategy;
    recommendedModelIds?: readonly string[];
    previewModelIds?: readonly string[];
    filter?: (model: DiscoveryModel) => boolean;
    initiallyCollapsedGroups?: readonly string[];
    i18n?: PickerTranslator;
}
export interface UseModelPickerStateResult {
    open: boolean;
    setOpen: (next: boolean) => void;
    query: string;
    setQuery: (next: string) => void;
    groupBy: GroupStrategy;
    setGroupBy: (next: GroupStrategy) => void;
    visibleModels: DiscoveryModel[];
    annotated: AnnotatedModel[];
    filtered: AnnotatedModel[];
    groupCounts: Record<string, number>;
    collapsedGroups: ReadonlySet<string>;
    toggleGroup: (groupKey: string) => void;
    selected: DiscoveryModel | null;
    unknownValue: string | null;
    activeIndex: number;
    setActiveIndex: (i: number) => void;
    onSearchKeyDown: (e: React.KeyboardEvent) => void;
    choose: (m: DiscoveryModel) => void;
    id: string;
    triggerRef: React.RefObject<HTMLButtonElement | null>;
    searchRef: React.RefObject<HTMLInputElement | null>;
}
export declare function useModelPickerState(opts: UseModelPickerStateOptions): UseModelPickerStateResult;
//# sourceMappingURL=useModelPickerState.d.ts.map