import { GroupBase } from 'react-select';
import { BreakpointCustomizable, Optional } from '../../../types';
import { ComboboxAriaTranslations, ComboboxLanguage, ComboboxOption, ComboboxOptionsGroup, ComboboxOptionsOrOptGroups, ComboboxSize } from '../Combobox.utils';
import { PublicBaseSelectProps } from 'react-select/dist/declarations/src/Select';
import { StateManagerProps } from 'react-select/dist/declarations/src/useStateManager';
type IncludedReactSelectKeys = 'className' | 'form' | 'inputValue' | 'menuIsOpen' | 'name' | 'onBlur' | 'onFocus' | 'openMenuOnClick' | 'openMenuOnFocus' | 'tabIndex';
type PickedReactSelectProps<OptionType, IsMulti extends boolean, GroupType extends GroupBase<OptionType>> = Optional<Pick<PublicBaseSelectProps<OptionType, IsMulti, GroupType>, IncludedReactSelectKeys>, IncludedReactSelectKeys>;
type PickedReactSelectStateManagerProps<OptionType, IsMulti extends boolean, GroupType extends GroupBase<OptionType>> = Optional<Pick<StateManagerProps<OptionType, IsMulti, GroupType>, 'defaultInputValue'>, 'defaultInputValue'>;
export interface CustomReactSelectProps<IsMulti extends boolean> extends PickedReactSelectProps<ComboboxOption, IsMulti, ComboboxOptionsGroup>, PickedReactSelectStateManagerProps<ComboboxOption, IsMulti, ComboboxOptionsGroup> {
    /** Unique id for the DSCombobox. */
    id: string;
    /** Label text displayed above the DSCombobox. */
    label: string;
    /**
     * Defines the options, can be a mixed array of options and option groups.
     *  `type ComboboxOption = {label: string; value: string | number; leadingIconName?: IconName; isDisabled?: boolean;}`
     *  `type ComboboxOptionsGroup = {label: string; options: ComboboxOption[];}`
     *  `type ComboboxOptionsOrOptGroups = (ComboboxOption | ComboboxOptionsGroup)[];`
     * */
    options: ComboboxOptionsOrOptGroups;
    /** The value of autoComplete to use for the DSCombobox. */
    autoComplete?: string;
    /** Value of the selected Option in **uncontrolled DSCombobox** component. */
    defaultValue?: IsMulti extends true ? ComboboxOption[] : ComboboxOption;
    /** Disables the DSCombobox, preventing user interaction.
     * @default false
     */
    disabled?: boolean;
    /** Hides the DSCombobox label, can be responsive.
     *  `boolean | { base: boolean; s?: boolean; m?: boolean; l?: boolean; xl?: boolean; }`
     * @default false
     */
    hideLabel?: BreakpointCustomizable<boolean>;
    /** Short descriptive text displayed beneath the label. */
    hint?: string;
    /** Marks the DSCombobox as invalid, typically used for form validation.
     * @default false
     */
    invalid?: boolean;
    /** Allows selection of multiple options.
     * @default false
     */
    isMulti: boolean;
    /** Sets language to use for the screen reader messages and "No options found" message, if no translations object is provided.
     * @default 'en'
     */
    lang?: ComboboxLanguage;
    /** Indicates that the DSCombobox is required.
     * @default false
     */
    required?: boolean;
    /** Size of the Combobox.
     * @default 'medium'
     */
    size?: ComboboxSize;
    /** Defines a system feedback message, shown when `invalid={true}`- */
    systemFeedback?: string;
    /** Translations for the DSCombobox. Use our [customization page](/?path=/story/components-combobox-translations--documentation) for creating custom translations. */
    translations?: ComboboxAriaTranslations;
    /** Value of the DSCombobox. */
    value?: IsMulti extends true ? ComboboxOption[] : ComboboxOption;
    /** Callback function called when the selection of the DSCombobox changes. */
    onValueChange?: (newValue: IsMulti extends true ? ComboboxOption[] : ComboboxOption) => void;
    /** Callback function called when the value of the DSCombobox input changes. */
    onInputChange?: (newValue: string) => void;
}
/**
 * Internal customized react select component, which is in parts exposed to our consumers
 * via the DSCombobox component.
 * */
export declare const CustomReactSelect: import('react').ForwardRefExoticComponent<CustomReactSelectProps<boolean> & import('react').RefAttributes<HTMLInputElement>>;
export {};
