import * as React from 'react';
import { OptionType } from "../../../common.type";
import SelectList from "./SelectList";
import SelectOption from "./SelectOption";
import { SelectTriggerProps } from "./SelectTrigger";
import SearchInput from "./SearchInput";
import SelectEmptyTemplate from "./SelectEmptyTemplate";
import SelectFooter from "./SelectFooter";
import { BaseProps } from "../../../utils/types";
export declare type SelectStyleType = 'filled' | 'outlined';
export interface SelectProps extends BaseProps {
    multiSelect?: boolean;
    onSelect: (option?: OptionType | OptionType[]) => void;
    children?: React.ReactNode;
    width?: number | string;
    styleType?: SelectStyleType;
    popoverWidth?: number | string;
    maxHeight?: number;
    minHeight?: number;
    value?: OptionType | OptionType[];
    error?: boolean;
    boundaryElement?: React.RefObject<HTMLElement> | Element;
    appendToBody?: boolean;
    onOutsideClick?: () => void;
    onToggle?: (open: boolean) => void;
    trigger?: React.ReactElement;
    triggerOptions?: SelectTriggerProps;
    'aria-describedby'?: string;
    'aria-errormessage'?: string;
    trapFocus?: boolean;
}
export interface SelectMethods {
    setOpen: (open: boolean) => void;
    setFocusFirstItem: () => void;
    setFocusLastItem: () => void;
}
export interface SelectComponent extends React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<SelectMethods>> {
    Option: typeof SelectOption;
    List: typeof SelectList;
    SearchInput: typeof SearchInput;
    EmptyTemplate: typeof SelectEmptyTemplate;
    Footer: typeof SelectFooter;
}
export declare const Select: SelectComponent;
export default Select;
