// Type definitions for react-select 1.0
// Project: https://github.com/JedWatson/react-select
// Definitions by: ESQUIBET Hugo
// Gilad Gray
// Izaak Baker
// Tadas Dailyda
// Mark Vujevits
// Mike Deverell
// MartynasZilinskas
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.3
import * as React from 'react';
export = ReactSelectClass;
declare namespace ReactSelectClass {
// Other components
class Creatable extends React.Component { }
class Async extends React.Component { }
class AsyncCreatable extends React.Component { }
type HandlerRendererResult = JSX.Element | null | false;
// Handlers
type FocusOptionHandler = (option: Option) => void;
type SelectValueHandler = (option: Option) => void;
type ArrowRendererHandler = (props: ArrowRendererProps) => HandlerRendererResult;
type FilterOptionHandler = (option: Option, filter: string) => Option;
type FilterOptionsHandler = (options: Options, filter: string, currentValues: Options) => Options;
type InputRendererHandler = (props: { [key: string]: any }) => HandlerRendererResult;
type MenuRendererHandler = (props: MenuRendererProps) => HandlerRendererResult;
type OnCloseHandler = () => void;
type OnInputChangeHandler = (inputValue: string) => void;
type OnInputKeyDownHandler = React.KeyboardEventHandler;
type OnMenuScrollToBottomHandler = () => void;
type OnOpenHandler = () => void;
type OnFocusHandler = React.FocusEventHandler;
type OnBlurHandler = React.FocusEventHandler;
type OptionRendererHandler = (option: Option) => HandlerRendererResult;
type ValueRendererHandler = (option: Option) => HandlerRendererResult;
type OnValueClickHandler = (value: string, event: React.MouseEvent) => void;
type IsOptionUniqueHandler = (arg: { option: Option, options: Options, labelKey: string, valueKey: string }) => boolean;
type IsValidNewOptionHandler = (arg: { label: string }) => boolean;
type NewOptionCreatorHandler = (arg: { label: string, labelKey: string, valueKey: string }) => Option;
type PromptTextCreatorHandler = (filterText: string) => string;
type ShouldKeyDownEventCreateNewOptionHandler = (arg: { keyCode: number }) => boolean;
type OnChangeSingleHandler = OnChangeHandler