import { InputActionMeta } from "react-select";
import React, { KeyboardEventHandler, ReactNode } from "react";
import { TValueObjectType } from "../utils/getValueObject";
import { TPlaceholder, TInputSize, TStatusInput, TViewTypeInput } from "../InputBase/interfaces";
import { ITheme } from "../Pallette/themes";
export interface IPropsItem {
    label: string | number | null;
    value: string | number | null;
    isDisabled?: boolean;
    url?: string;
    [propName: string]: any;
}
export interface IItem extends IPropsItem {
    isSelected?: boolean;
}
export interface ISelectBaseCommonProps<TOption = unknown, IsMulti extends boolean = boolean, TFieldNameValue extends string = string, TFieldNameLabel extends string = string> {
    size?: TInputSize;
    placeholder?: TPlaceholder;
    name?: string;
    width?: string;
    options?: TOption[];
    onInputChange?: (newValue: string, actionMeta: InputActionMeta) => void;
    onBlur?: (value: any) => void;
    onFocus?: (e: any) => void;
    isDisabled?: boolean;
    menuIsOpen?: boolean;
    defaultValue?: IsMulti extends true ? TOption[] : TOption;
    isClearable?: boolean;
    isError?: boolean;
    isSearchable?: boolean;
    errorMessage?: string;
    value?: IsMulti extends true ? TOption[] | TValueObjectType<TOption, TFieldNameValue>[] : TOption | TValueObjectType<TOption, TFieldNameValue>;
    className?: string;
    onInnerMenuOpen?: (clientRect: ClientRect) => void;
    isRequired?: boolean;
    status?: TStatusInput;
    statusText?: string;
    fieldNames?: {
        label: TFieldNameLabel;
        value: TFieldNameValue;
    };
    iconLeft?: JSX.Element;
    iconRight?: JSX.Element;
    isAutoFocus?: boolean;
    onKeyDown?: KeyboardEventHandler;
    id?: string;
    type?: "avatar" | "basic";
    isDrawer?: boolean;
    viewType?: TViewTypeInput;
    isReadOnly?: boolean;
    testId?: string;
    buttonMenu?: JSX.Element;
    classNameButtonMenu?: string;
    onMenuInputFocus?: () => void;
    noOptionsMessage?: (obj: {
        inputValue: string;
    }) => ReactNode;
}
declare type TRef = ((instance: HTMLDivElement | null) => void) | React.RefObject<HTMLDivElement> | null | undefined;
export interface ISelectStyle extends ISelectBaseCommonProps {
    menuIsOpen?: boolean;
    isDisabled?: boolean;
    isFocused?: boolean;
    isSelected?: boolean;
    hasValue?: boolean;
    isError?: boolean;
    width?: string;
    theme: ITheme;
    ref?: TRef;
    iconRight?: JSX.Element;
    isMulti: boolean;
}
export {};
