import { NonCancelableEventHandler } from '../internal/events';
import { I18nStringsOperators } from './i18n-utils';
import { ComparisonOperator, GroupText, I18nStrings, InternalFilteringOption, InternalFilteringProperty, InternalFreeTextFiltering, InternalQuery, InternalToken, InternalTokenGroup, JoinOperation, ParsedText, Query } from './interfaces';
type I18nStringsController = I18nStringsOperators & Pick<I18nStrings, 'operatorsText' | 'groupPropertiesText' | 'groupValuesText'>;
export declare const getQueryActions: ({ query, onChange, filteringOptions, enableTokenGroups, }: {
    query: InternalQuery;
    onChange: NonCancelableEventHandler<Query>;
    filteringOptions: readonly InternalFilteringOption[];
    enableTokenGroups: boolean;
}) => {
    addToken: (token: InternalToken) => void;
    updateToken: (updateIndex: number, updatedToken: InternalToken | InternalTokenGroup, releasedTokens: InternalToken[]) => void;
    updateOperation: (operation: JoinOperation) => void;
    removeToken: (removeIndex: number) => void;
    removeAllTokens: () => void;
};
export declare const getAllowedOperators: (property: InternalFilteringProperty) => ComparisonOperator[];
export declare const getAllowedFreeTextOperators: (freeText: InternalFreeTextFiltering) => ComparisonOperator[];
export declare const parseText: (filteringText: string, filteringProperties: readonly InternalFilteringProperty[], freeTextFiltering: InternalFreeTextFiltering) => ParsedText;
interface OptionGroup<T> {
    label: string;
    options: T[];
}
export declare function getPropertySuggestions<T>(filteringProperties: readonly InternalFilteringProperty[], customGroupsText: readonly GroupText[], i18nStrings: I18nStringsController, filteringPropertyToOption: (filteringProperty: InternalFilteringProperty) => T): OptionGroup<T>[];
export declare const getAutosuggestOptions: (parsedText: ParsedText, filteringProperties: readonly InternalFilteringProperty[], filteringOptions: readonly InternalFilteringOption[], customGroupsText: readonly GroupText[], i18nStrings: I18nStringsController) => {
    filterText: string;
    options: {
        options: {
            value: string;
            label: string;
            __labelPrefix: string;
            tags: readonly string[] | undefined;
            filteringTags: readonly string[] | undefined;
        }[];
        label: string;
    }[];
} | {
    filterText: string;
    options: (OptionGroup<{
        value: string;
        label: string;
        keepOpenOnSelect: boolean;
    }> | {
        options: {
            value: string;
            label: string;
            description: string | undefined;
            keepOpenOnSelect: boolean;
        }[];
        label: string | undefined;
    })[];
} | {
    filterText: string;
    options: (OptionGroup<import("../internal/components/option/interfaces").OptionDefinition> | OptionGroup<{
        value: string;
        label: string;
        keepOpenOnSelect: boolean;
    }>)[];
};
export {};
//# sourceMappingURL=controller.d.ts.map