import React from 'react';
import { BaseComponentProps } from '../internal/base-component';
import { CancelableEventHandler, NonCancelableEventHandler } from '../internal/events';
import { FormFieldValidationControlProps } from '../internal/context/form-field-context';
import { OptionDefinition } from '../internal/components/option/interfaces';
import { DropdownStatusProps } from '../internal/components/dropdown-status';
import { BaseInputProps } from '../input/internal';
import { InputProps } from '../input';
export interface AutosuggestProps extends BaseComponentProps, BaseInputProps, FormFieldValidationControlProps, DropdownStatusProps {
    options?: AutosuggestProps.Options;
    filteringType?: AutosuggestProps.FilteringType;
    enteredTextLabel: AutosuggestProps.EnteredTextLabel;
    onLoadItems?: NonCancelableEventHandler<AutosuggestProps.LoadItemsDetail>;
    empty?: React.ReactNode;
    virtualScroll?: boolean;
    onKeyDown?: CancelableEventHandler<InputProps.KeyDetail>;
    onKeyUp?: CancelableEventHandler<InputProps.KeyDetail>;
}
export declare namespace AutosuggestProps {
    type FilteringType = 'auto' | 'manual';
    type Option = OptionDefinition;
    type Options = ReadonlyArray<Option | OptionGroup>;
    type AutosuggestItem = (Option | OptionGroup) & {
        type?: 'parent' | 'child' | 'use-entered';
    };
    type EnteredTextLabel = (value: string) => string;
    interface OptionGroup extends Option {
        label?: string;
        options: ReadonlyArray<Option>;
    }
    interface LoadItemsDetail {
        filteringText: string;
        firstPage: boolean;
        samePage: boolean;
    }
}
