import { CSSProperties, Dispatch, ReactNode, SetStateAction } from 'react';
export interface OptionsItem {
    prefix?: ReactNode | string;
    color?: string;
    id: string | number;
    parentId?: string | number;
    name: string | ReactNode | HTMLElement;
    disabled?: boolean;
    totalChild?: number;
}
type GetOptionsFn = (params: {
    length: number;
    search?: string;
    parentId?: string | number;
}) => Promise<{
    data: OptionsItem[];
    totalCount: number;
}>;
interface BaseProps {
    id?: string;
    options: Required<OptionsItem[]>;
    getOptions?: GetOptionsFn;
    placeholder?: string;
    disabled?: boolean;
    readOnly?: boolean;
    /** default: size40: body-3 · recommend: size48 | size32 | size24 */
    className?: string;
    helperText?: string;
    helperTextColor?: string;
    style?: CSSProperties;
    prefix?: ReactNode;
    suffix?: ReactNode;
    simpleStyle?: boolean;
    customOptionsList?: ReactNode;
    dropdownClassName?: string;
    dropdownStyle?: CSSProperties;
    hiddenSearchOptions?: boolean;
}
interface SingleProps extends BaseProps {
    multiple?: false;
    value?: string | number;
    onChange?: (v?: OptionsItem) => void;
    optionStyle?: 'default' | 'solid' | 'ghost';
    hideAutoSuffix?: boolean;
    showClearValueButton?: never;
    previewMaxLength?: never;
    customPreviewValue?: never;
}
interface MultipleProps extends BaseProps {
    multiple: true;
    value?: Array<string | number>;
    onChange?: (value?: Array<string | number>) => void;
    showClearValueButton?: boolean;
    previewMaxLength?: number;
    customPreviewValue?: ReactNode;
    optionStyle?: never;
    hideAutoSuffix?: never;
}
export type SelectDropdownProps = SingleProps | MultipleProps;
export interface SelectDropdownRef {
    element: HTMLDivElement;
    isOpen: boolean;
    setIsOpen: Dispatch<SetStateAction<boolean>>;
    options: OptionsItem[];
    setOptions: Dispatch<SetStateAction<OptionsItem[]>>;
    onOpenOptions: () => void;
}
export declare const SelectDropdown: import('react').ForwardRefExoticComponent<SelectDropdownProps & import('react').RefAttributes<SelectDropdownRef>>;
export {};
//# sourceMappingURL=select-dropdown.d.ts.map