import { ComponentType, ReactNode } from "react";
type OnChangeClearableSelectFn<T> = (option: T | undefined) => void;
type OnChangeNonClearableSelectFn<T> = (option: T) => void;
interface SelectBoxBaseProps<T> {
    options: T[] | undefined;
    optionLabel?: (option: T) => ReactNode;
    value?: T;
    onChange: OnChangeNonClearableSelectFn<T>;
    className?: string;
    by?: (keyof T & string) | ((a: T, z: T) => boolean);
    placeholder?: ReactNode;
    addNew?: () => void;
    addNewLabel?: string;
    disabled?: boolean;
    isClearable?: false;
    showFilter?: boolean | string;
    filterBy?: string | ((o: T) => string);
    ClearIcon?: ComponentType<any>;
    clearTitle?: string | undefined;
    label?: string | undefined;
}
interface ClearableSelectBoxProps<T> extends Omit<SelectBoxBaseProps<T>, 'isClearable' | 'onChange'> {
    onChange: OnChangeClearableSelectFn<T>;
    isClearable: true;
}
type SelectBoxProps<T> = ClearableSelectBoxProps<T> | SelectBoxBaseProps<T>;
export declare function SelectBox<T>({ clearTitle, ClearIcon, showFilter, filterBy, isClearable, disabled, by, options, value, onChange, className, addNew, addNewLabel, placeholder, optionLabel, label }: SelectBoxProps<T>): import("react/jsx-runtime").JSX.Element;
export declare function ListOption<T>({ option, optionLabel, onClick, className }: {
    option: T;
    optionLabel: (option: T) => ReactNode;
    onClick?: () => void;
    value?: T;
    className?: string;
}): import("react/jsx-runtime").JSX.Element;
export {};
//# sourceMappingURL=SelectBox.d.ts.map