import { RefObject, ChangeEvent, KeyboardEvent, MouseEvent as ReactMouseEvent } from "react";
import CSS from "csstype";
import { Cache } from "../cache/cache";
import { Choice, Choices, ChoiceDefinition, Selection, SelectProps } from "../types";
import { OptionType } from "../types/optionType";
import { LookUp } from "../types/choiceDefinition";
import { Comparison } from "../types/comparison";
import { Operand } from "../types/operand";
import { GridApi } from "ag-grid-community";
export interface AgGridQuickFilterModel {
    definitionMap: Map<string, ChoiceDefinition<any>>;
    lookUpGuidMap: Map<string, string>;
    lookUpChoiceMap: Map<string, OptionType[]>;
    cache?: Cache;
    inputText: string;
    filterText: string;
    showChoices: boolean;
    highlightedIndex: number;
    visibleChoices: Choices[];
    visibleChoiceCount: number;
    selected: Selection[];
    listPosition: CSS.Property.Top;
    token: string;
    selectId: string;
    comparison?: Comparison;
    operand?: Operand;
    agGridApi?: GridApi;
    props: SelectProps;
    inputRef?: RefObject<HTMLInputElement>;
    selectRef?: RefObject<HTMLDivElement>;
    active?: number;
    refresh?: () => void;
    updateProps: (props: SelectProps) => void;
    updateRefs: (inputRef?: RefObject<HTMLInputElement>, selectRef?: RefObject<HTMLDivElement>) => void;
    updateDisplay: () => void;
    signalChange: () => void;
    fetchChoices: (text: string) => void;
    buildVisibleChoices: () => void;
    includeItemText: (item: OptionType, exact: boolean, lookUp?: LookUp) => boolean;
    includeItemValue: (item: OptionType, exact: boolean, lookUp?: LookUp) => boolean;
    includeItem: (definition: ChoiceDefinition<any>, item: OptionType, exact: boolean) => boolean;
    updateVisibleChoices: () => void;
    hideList: () => void;
    showList: () => void;
    updateListPosition: () => void;
    clickedAway: (mouseEvent: MouseEvent) => void;
    setFocus: () => void;
    updateFilterText: (text: string) => void;
    textInputClicked: () => void;
    textChanged: (event: ChangeEvent<HTMLInputElement>) => void;
    updateAgGrid: (definition?: ChoiceDefinition<any>) => void;
    updateSelection: () => void;
    selectItem: (choice: Choice) => void;
    deselectItem: (selection: Selection) => void;
    clearSelection: (event: ReactMouseEvent) => void;
    makeItemVisible: (index: number) => void;
    adjustHighlightedIndex: (index: number) => void;
    adjustHighlightedIndexOnly: (index: number) => void;
    getItemAtIndex: () => Choice | undefined;
    inputKeyPressed: (event: KeyboardEvent<HTMLDivElement>) => void;
}
export declare const createAgGridQuickFilterModel: (initialProps: SelectProps) => AgGridQuickFilterModel;
