import { RefObject } from 'react';
import { GroupBase, StylesConfig } from 'react-select';
import { NewSelectProps } from './NewSelect';
declare module 'react-select/base' {
    interface Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> {
        error?: boolean;
        isFocused?: boolean;
        onMenuInputFocus?: () => void;
        optionKeyName?: keyof Option;
        labelKeyName?: keyof Option;
        noBorder?: boolean;
        searchBarProps?: NewSelectProps<Option>['searchBarProps'];
        footerButtonProps?: NewSelectProps<Option>['footerButtonProps'];
        isOffscreenRight: boolean;
        menuRef: RefObject<HTMLDivElement>;
        menuWidth?: number;
        hasMore?: boolean;
        getData?: () => void;
    }
}
export type SelectGroupType<OptionType> = {
    label: string;
    options: OptionType[];
    rightLabel?: string;
};
type GetStylesType<OptionType> = StylesConfig<OptionType, boolean, GroupBase<OptionType>>;
export declare const getStyles: <OptionType>() => GetStylesType<OptionType>;
type ClickOutsideOfSelectProps = {
    setIsFocused: (val: boolean) => void;
    setInputValue: (val: string) => void;
};
export declare const useClickOutOfSelect: ({ setIsFocused, setInputValue, }: ClickOutsideOfSelectProps) => RefObject<HTMLDivElement>;
type OptionElement<OptionType> = React.ReactElement<{
    data: OptionType;
    [key: string]: unknown;
}>;
type GroupElement<OptionType> = React.ReactElement<{
    children: OptionElement<OptionType>[];
    [key: string]: unknown;
}>;
export type OptionsArray<OptionType> = Array<OptionElement<OptionType> | GroupElement<OptionType>>;
export declare const extractElementsFromOptionsArray: <OptionType>(elements: OptionsArray<OptionType>) => OptionElement<OptionType>[];
export declare const useBottomEdgeProximityDetector: (parentRef: React.RefObject<HTMLElement>, menuHeight: number) => boolean;
export declare const useRightEdgeDetector: (menuRef: React.RefObject<HTMLDivElement>, isOpen: boolean) => boolean;
export {};
