declare module 'react-dropdown-select' { import { ChangeEvent, CSSProperties, HTMLAttributes, KeyboardEvent, MouseEvent, PropsWithRef, RefObject } from 'react'; export interface SetStateFnArgs { dropdown?: boolean; values?: T[]; search?: string; selectBounds?: DOMRect | {}; cursor?: number | null; activeCursorItem?: any; } export interface SelectState { dropdown: boolean; values: T[]; search: string; selectBounds: object; cursor: number; } export interface SelectMethods { removeItem: (event: MouseEvent | null, item: T, close: boolean) => void; dropDown: (action: string, event?: MouseEvent | null) => void; addItem: (item: T) => void; setSearch: (event: ChangeEvent) => void; getInputSize: () => number; toggleSelectAll: () => void; clearAll: () => void; selectAll: (items?: T[]) => void; searchResults: () => T[]; getSelectRef: () => HTMLDivElement; isSelected: (item: T) => boolean; getSelectBounds: () => {} | DOMRect; areAllSelected: () => boolean; handleKeyDown: (event: KeyboardEvent) => void; activeCursorItem: (activeCursorItem: any) => void; createNew: (searchText: string) => void; sortBy: () => T[]; safeString: (input: string) => string; } export interface SelectRenderer { props: SelectProps; state: SelectState; methods: SelectMethods; } export interface SelectOnDropdownCloseRequest { props: SelectProps; state: SelectState; methods: SelectMethods; close: () => void; } export interface SelectKeyDown { event: KeyboardEvent; props: SelectProps; state: SelectState; methods: SelectMethods; setState: ( setter: ((args: SetStateFnArgs) => SetStateFnArgs) | SetStateFnArgs ) => void; } export interface SelectItemRenderer { item: T; itemIndex?: number; props: SelectProps; state: SelectState; methods: SelectMethods; } export interface SelectProps { backspaceDelete?: boolean; className?: string; addPlaceholder?: string; placeholder?: string; loading?: boolean; style?: CSSProperties; values: T[]; options: T[]; multi?: boolean; disabled?: boolean; searchBy?: string; sortBy?: string; clearable?: boolean; searchable?: boolean; dropdownHandle?: boolean; separator?: boolean; keepOpen?: boolean; noDataLabel?: string; createNewLabel?: string; disabledLabel?: string; dropdownGap?: number; closeOnScroll?: boolean; debounceDelay?: number; labelField?: string; valueField?: string; color?: string; keepSelectedInList?: boolean; closeOnSelect?: boolean; closeOnClickInput?: boolean; clearOnBlur?: boolean; clearOnSelect?: boolean; dropdownPosition?: 'top' | 'bottom' | 'auto'; dropdownHeight?: string; autoFocus?: boolean; portal?: HTMLElement; create?: boolean; direction?: 'ltr' | 'rtl'; name?: string; required?: boolean; pattern?: string; defaultMenuIsOpen?: boolean; onChange: (value: T[]) => void; onSelect?: (value: T[]) => void; onDeselect?: (value: T[]) => void; onDropdownOpen?: () => void; onDropdownClose?: () => void; onClearAll?: () => void; clearAllLabel?: string; onSelectAll?: () => void; onCreateNew?: (item: T) => void; onDropdownCloseRequest?: ({ props, state, methods, close }: SelectOnDropdownCloseRequest) => T[]; searchFn?: ({ props, state, methods }: SelectRenderer) => T[]; handleKeyDownFn?: ({ event, props, state, methods, setState }: SelectKeyDown) => void; clearRenderer?: ({ props, state, methods }: SelectRenderer) => JSX.Element; contentRenderer?: ({ props, state, methods }: SelectRenderer) => JSX.Element; dropdownRenderer?: ({ props, state, methods }: SelectRenderer) => JSX.Element; dropdownHandleRenderer?: ({ props, state, methods }: SelectRenderer) => JSX.Element; inputRenderer?: ({ props, state, methods, inputRef }: SelectRenderer & { inputRef: RefObject; }) => JSX.Element; itemRenderer?: ({ item, itemIndex, props, state, methods }: SelectItemRenderer) => JSX.Element; loadingRenderer?: ({ props }: SelectItemRenderer) => JSX.Element; noDataRenderer?: ({ props, state, methods }: SelectRenderer) => JSX.Element; optionRenderer?: ({ item, props, state, methods }: SelectItemRenderer) => JSX.Element; separatorRenderer?: ({ props, state, methods }: SelectRenderer) => JSX.Element; additionalProps?: HTMLAttributes; wrapperClassName?: string; selectAll?: boolean; selectAllLabel?: string; } export interface DropDownProps { selectBounds: DOMRect; dropdownGap: number; portal: HTMLElement; dropdownHeight: string; dropdownPosition: 'auto' | 'top' | 'bottom'; } const Select: ( props: PropsWithRef> ) => JSX.Element; export default Select; }