/// <reference types="react" />
import type { Option, OptionValues, ReactSelectProps } from 'react-select';
import type { IFormInputProps, OmitControlledInputPropsFrom } from './interface';
export interface IReactSelectInputProps<T = OptionValues> extends IFormInputProps, OmitControlledInputPropsFrom<ReactSelectProps<T>> {
    stringOptions?: string[];
    mode?: 'TETHERED' | 'VIRTUALIZED' | 'PLAIN' | 'CREATABLE';
}
export declare const reactSelectValidationErrorStyle: {
    borderColor: string;
    WebkitBoxShadow: string;
    boxShadow: string;
};
/**
 * Given a IControlledInputProps "field" (i.e., from Formik), returns an onChange handler
 * somewhat compatible with the controlled input pattern
 */
export declare const reactSelectOnChangeAdapter: (name: string, onChange: IReactSelectInputProps['onChange']) => (selection: Option | Option[]) => any;
/**
 * Given a IControlledInputProps "field" (i.e., from Formik), returns an onBlur handler
 * somewhat compatible with the controlled input pattern
 */
export declare const reactSelectOnBlurAdapter: (name: string, value: any, onBlur: IReactSelectInputProps['onBlur']) => () => any;
/**
 * A react-select Input
 *
 * This input supports error validation state rendering. It adapts the onChange event to a controlled input event.
 *
 * This component does not attempt to support async loading
 */
export declare function ReactSelectInput<T = string>(props: IReactSelectInputProps<T>): JSX.Element;
