import { Dispatch, SetStateAction } from 'react'; import { DownshiftProps, DownshiftState, StateChangeOptions } from 'downshift'; import * as O from 'fp-ts/lib/Option'; import { Nullable } from '@monorail/sharedHelpers/typeLevel'; import { DropdownItemValue, DropdownType } from './helpers'; import { DropdownParser } from './parsers'; export declare type StateReducer = (state: DownshiftState) => (changes: StateChangeOptions) => StateChangeOptions; export declare interface BehaviorController { stateReducer: StateReducer; getItems: (text: string) => Array; downshiftProps?: Partial & DownshiftProps>; } export declare type BehaviorControllerHook = (collection: Array, parser: DropdownParser) => BehaviorController; export declare const useAsFilter: (collection: T[], parser: DropdownParser) => BehaviorController; export declare const useAsSelect: (collection: T[], parser: DropdownParser) => BehaviorController; export declare const useControlledDropdown: (props: { value?: string | number | T | undefined; collection: T[]; parser: DropdownParser; }) => [O.Option, Dispatch>>, (prevItem: Nullable, item: Nullable) => boolean];