import { Component } from 'react';
import { FilterManager } from '..';
import { OmniToken } from '../OmniToken';
import { OmniEntityReference, OmniFilterSet } from '../types';
declare type OmniFilterBarState = {
    boxOffset: number;
    filterShowing: boolean;
    activeToken: OmniToken | null;
    tokenInput: string;
    tokens: OmniToken[];
    inputElement: HTMLInputElement | null;
};
export declare type OmniFilterBarPropsShape = {
    filterSet: OmniFilterSet;
    filter: any;
    tokenAdded?: (sender: OmniFilterBar, token: OmniToken) => void;
    tokenRemoved?: (sender: OmniFilterBar, token: OmniToken) => void;
    tokenChanged?: (sender: OmniFilterBar, token: OmniToken) => void;
    tokenSetChanged?: (sender: OmniFilterBar) => void;
    ready?: (sender: OmniFilterBar) => void;
    placeholder?: string;
    filterManager?: typeof FilterManager;
    enableTokenGrouping?: boolean;
    tokenGroupSeparator?: string;
};
export declare class OmniFilterBar extends Component<OmniFilterBarPropsShape, OmniFilterBarState> {
    _inputElement: HTMLInputElement | null;
    _scrollElement: HTMLElement | null;
    _entities: OmniEntityReference[];
    _filterManagerClass: typeof FilterManager;
    _filterManager: FilterManager | null;
    constructor(props: OmniFilterBarPropsShape);
    initialize(): Promise<void>;
    updatePosition(stateObject?: Partial<OmniFilterBarState>): void;
    componentDidMount(): void;
    onSuggestionUpdated(newToken: OmniToken): void;
    onSuggestionCompleted(newToken: OmniToken): void;
    render(): JSX.Element;
    getTokens(): OmniToken[];
    indexOfToken(token: OmniToken): number;
    removeToken(token: OmniToken | undefined): void;
    private onTokenAdded;
    private onTokenRemoved;
    render_in(): JSX.Element;
}
export {};
