import type React from 'react';
import type { DivAttributes } from '../_utils/types';
import type * as defaultComponents from './SuperSelect.components';
import type { isOptgroupSymbol } from './SuperSelect.constants';
import type { useSuperSelect } from './useSuperSelect';
export interface TokenNavigationProps {
    activeIndex?: number | null;
    enabled?: boolean;
    onChange?: (value: SuperSelectValue) => void;
    onNavigate?: (index: number | null) => void;
    value?: SuperSelectValue;
}
export interface KeyboardSelectionProps {
    enabled?: boolean;
    onSelect?: () => void;
}
export declare type SuperSelectValuePrimitive = boolean | string | number;
export declare type SuperSelectValue = SuperSelectValuePrimitive | Array<SuperSelectValuePrimitive> | null;
export declare type SuperSelectOption = any;
export declare type SuperSelectPreset = '' | 'pill' | 'filter' | 'contacts';
export interface SuperSelectPresetProps {
    filter?: {
        filterName?: string;
    };
    pill?: {};
    contacts?: {};
    ''?: {};
}
export interface SuperSelectConfig {
    block?: boolean;
    components?: Partial<typeof defaultComponents>;
    defaultValue?: SuperSelectValue;
    disabled?: boolean;
    draggable?: boolean;
    emptyMessage?: string;
    error?: boolean;
    footer?: React.ReactElement;
    getOptionGroup?: (option: SuperSelectOption) => string;
    getOptionIsBatch?: (option: SuperSelectOption) => boolean;
    getOptionIsDisabled?: (option: SuperSelectOption) => boolean;
    getOptionLabel?: (option: SuperSelectOption) => string;
    getOptionValue?: (option: SuperSelectOption) => SuperSelectValuePrimitive;
    header?: React.ReactElement;
    loading?: boolean;
    multiple?: boolean;
    onChange?: (value: SuperSelectValue) => void;
    onManualSort?: (options: SuperSelectOption[]) => void;
    onScrollBottom?: () => void;
    onOpenChange?: (open: boolean) => void;
    options?: SuperSelectOption[];
    placeholder?: string;
    preset?: SuperSelectPreset;
    presetProps?: SuperSelectPresetProps;
    search?: boolean;
    selectionStyle?: 'highlight' | 'checkbox' | 'checkmark';
    setOptionGroup?: (option: SuperSelectOption, group: string) => SuperSelectOption;
    sort?: boolean;
    tabIndex?: number;
    value?: SuperSelectValue;
    overlayMatchesTriggerWidth?: boolean;
}
export declare type SuperSelectProps = SuperSelectConfig;
export declare type SuperSelectApi = ReturnType<typeof useSuperSelect>;
export interface SuperSelectTriggerProps {
    block?: boolean;
    disabled?: boolean;
    error?: boolean;
    loading?: boolean;
    placeholder?: string;
    search?: boolean;
    tabIndex?: number;
}
export interface SuperSelectOptgroup {
    label: string;
    id: string;
    [isOptgroupSymbol]: true;
}
export interface SuperSelectMenuItemProps extends DivAttributes {
    isDragging?: boolean;
    'data-known-size'?: number;
    'data-index': number;
}
