import React from 'react';
import type { ModelBadgeKind } from './badges';
import { type FolderSwitcherFolder } from './primitives/FolderSwitcher';
import type { DiscoveryModel, ModelTag } from './types';
import { type PlatformRequestContext } from './usePlatformAccess';
import type { GroupStrategy } from './utils';
export type ModelPickerVariant = 'searchable' | 'virtualized';
export type ModelPickerChangeHandler = (model: DiscoveryModel) => void;
export interface ModelPickerSlotContext {
    selected: DiscoveryModel | null;
    close: () => void;
}
export interface ModelPickerSlots {
    triggerExtra?: (model: DiscoveryModel | null) => React.ReactNode;
    popupHeader?: () => React.ReactNode;
    searchLeading?: () => React.ReactNode;
    listFooter?: (ctx: ModelPickerSlotContext) => React.ReactNode;
    popupFooter?: null | ((ctx: ModelPickerSlotContext) => React.ReactNode);
    optionMeta?: (model: DiscoveryModel) => React.ReactNode;
    optionActions?: (model: DiscoveryModel) => React.ReactNode;
}
export interface ModelPickerProps {
    models: DiscoveryModel[];
    value?: string | null;
    onChange?: ModelPickerChangeHandler;
    label?: string;
    required?: boolean;
    placeholder?: string;
    disabled?: boolean;
    invalid?: boolean;
    errorText?: string;
    variant?: ModelPickerVariant;
    groupBy?: GroupStrategy;
    allowGroupingChange?: boolean;
    homeRegion?: string;
    recommendedModelIds?: readonly string[];
    previewModelIds?: readonly string[];
    filter?: (model: DiscoveryModel) => boolean;
    badgesFor?: (model: DiscoveryModel) => readonly ModelBadgeKind[];
    customTagsFor?: (model: DiscoveryModel) => readonly ModelTag[];
    customTagVariants?: Record<string, string>;
    canManageByo?: boolean;
    onUseCustomModel?: () => void;
    requestContext?: PlatformRequestContext;
    enableFolders?: boolean;
    folders?: readonly FolderSwitcherFolder[];
    folder?: string | null;
    onFolderChange?: (next: string | null) => void;
    allFoldersLabel?: string;
    loading?: boolean;
    error?: Error | null;
    showGroupHeaders?: boolean;
    slots?: ModelPickerSlots;
}
export declare const ModelPicker: React.ForwardRefExoticComponent<ModelPickerProps & React.RefAttributes<HTMLButtonElement>>;
//# sourceMappingURL=ModelPicker.d.ts.map