import { type HarnessOption } from "./harness.js";
/** Props for {@link ModelSelector}. */
export interface ModelSelectorProps {
    /** Currently selected model ID. */
    readonly value?: string;
    /** Called when the user picks a different model. Receives the `modelId`. */
    readonly onValueChange: (modelId: string) => void;
    /**
     * Current harness. When provided as a single value, locks the selector
     * to that harness (dropdown hidden). When omitted, shows the harness dropdown.
     */
    readonly harness?: HarnessOption;
    /**
     * Initial harness value for the internal state when `harness` prop is
     * undefined (unlocked mode). Prevents desync when the parent knows the
     * active harness but delegates the dropdown to this component.
     *
     * When `harness` is provided (locked mode), this prop is ignored.
     */
    readonly initialHarness?: HarnessOption;
    /** Called when user changes harness in the dropdown. */
    readonly onHarnessChange?: (harness: HarnessOption) => void;
    /**
     * Restrict which harnesses appear in the dropdown.
     * When omitted, shows all registered harnesses that have models in the registry.
     */
    readonly availableHarnesses?: readonly HarnessOption[];
    /** Override the curated (featured) list for the current harness. */
    readonly curatedModels?: readonly string[];
    /** Grouping in the "Show All" expanded view. Default: "provider". */
    readonly groupBy?: "provider" | "tier" | "none";
    /** Show speed tier badge. Default: true. */
    readonly showSpeedBadge?: boolean;
    /** Show short descriptions in curated view. Default: true. */
    readonly showDescriptions?: boolean;
    /** Compact mode: smaller trigger, no descriptions. Default: false. */
    readonly compact?: boolean;
    /** Additional CSS class names for the trigger button. */
    readonly className?: string;
    /** When true, disables the selector. */
    readonly disabled?: boolean;
    /**
     * @deprecated Use {@link onHarnessChange} instead.
     */
    readonly onHarnessResolved?: (harness: HarnessOption) => void;
}
/**
 * Combined harness + model picker with a compact trigger button.
 *
 * Shows a harness dropdown at the top of the popover (when not locked
 * to a single harness), followed by a curated model list scoped to
 * the selected harness. Supports search and progressive disclosure
 * via "Show All Models."
 *
 * The trigger button displays the current selection in compact format:
 * `Harness · Model Name ▾` (or just `Model Name ▾` when harness is locked).
 *
 * @example
 * ```tsx
 * <ModelSelector
 *   value={modelId}
 *   onValueChange={setModelId}
 *   harness={harness}
 *   onHarnessChange={setHarness}
 * />
 * ```
 */
export declare function ModelSelector({ value, onValueChange, harness, initialHarness, onHarnessChange, onHarnessResolved, availableHarnesses, curatedModels, groupBy, showSpeedBadge, showDescriptions, compact, className, disabled, }: ModelSelectorProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=ModelSelector.d.ts.map