import { Filter } from './Filter';
export declare type TextElement = {
    type: 'text';
    value: string;
};
export declare type FilterElement = {
    type: 'filter';
    name: string;
    value: string;
    label?: string;
    negate: boolean;
    filter: Filter;
};
export declare type SelectAsyncFilterElement = FilterElement & {
    label: string;
};
export declare type QueryElement = TextElement | FilterElement | SelectAsyncFilterElement;
export declare namespace QueryElementHelpers {
    function isText(elem: QueryElement): elem is TextElement;
    function isFilter(elem: QueryElement): elem is FilterElement;
    const removeElement: (elements: QueryElement[], index: number) => (TextElement | FilterElement)[];
    const removeElements: (elements: QueryElement[], from: number, to: number) => (TextElement | FilterElement)[];
    const updateElementValue: (elements: QueryElement[], index: number, value: string, label?: string | undefined) => (TextElement | FilterElement)[];
    const replaceElement: (elements: QueryElement[], index: number, replacement: QueryElement[]) => (TextElement | FilterElement)[];
    const replaceElements: (elements: QueryElement[], from: number, to: number, replacement: QueryElement[]) => (TextElement | FilterElement)[];
    const appendQueryElement: (elements: QueryElement[], element: QueryElement) => (TextElement | FilterElement)[];
    const textElementFromValue: (value: string) => TextElement;
    const filterElementFromFilter: (filter: Filter, negate: boolean) => FilterElement;
}
