import { Request, Response } from 'express';
import type { components } from '../../types/api';
import type { FilterValue } from './types';
import { Services } from '../../types/Services';
import { FiltersType } from './filtersTypeEnum';
/**
 * Given a FilterValue[], will update the values to match the req.query values if present
 *
 * @param {FilterValue[]} filters
 * @param {Request} req
 * @param {string} [prefix='filters.']
 * @return {*}  {FilterValue[]}
 */
export declare const setFilterValuesFromRequest: (filters: FilterValue[], req: Request, prefix?: string) => FilterValue[];
export declare const getFiltersFromDefinition: (fields: components["schemas"]["FieldDefinition"][], interactive?: boolean) => FilterValue[];
export declare const setRequestQueryFromFilterValues: (filterValues: FilterValue[], verbose?: boolean) => {};
export declare const getPersonalisedFilters: (filters: FilterValue[], req: Request, res: Response, services: Services, filtersType: FiltersType) => Promise<{
    filters: FilterValue[];
    defaultFilterValues: import("../../utils/Personalisation/types").defaultFilterValue[] | undefined;
}>;
export declare const getFilters: ({ fields, req, res, prefix, services, filtersType, }: {
    fields: components["schemas"]["FieldDefinition"][];
    req: Request;
    res?: Response | undefined;
    prefix?: string;
    services?: Services | undefined;
    filtersType: FiltersType;
}) => Promise<{
    filters: FilterValue[];
    selectedFilters: {
        text: string;
        displayValue: string;
        key: string;
        value: (string | import("./types").DateRange)[];
        disabled: boolean;
        constraints: {
            key: string;
            value: string;
        }[] | undefined;
        classes: string;
        attributes: {
            'aria-label': string;
        };
    }[];
    hasDefaults: boolean | undefined;
    canSaveDefaults: boolean;
}>;
declare const _default: {
    getFiltersFromDefinition: (fields: components["schemas"]["FieldDefinition"][], interactive?: boolean) => FilterValue[];
    setFilterValuesFromRequest: (filters: FilterValue[], req: Request, prefix?: string) => FilterValue[];
    getFilters: ({ fields, req, res, prefix, services, filtersType, }: {
        fields: components["schemas"]["FieldDefinition"][];
        req: Request;
        res?: Response | undefined;
        prefix?: string;
        services?: Services | undefined;
        filtersType: FiltersType;
    }) => Promise<{
        filters: FilterValue[];
        selectedFilters: {
            text: string;
            displayValue: string;
            key: string;
            value: (string | import("./types").DateRange)[];
            disabled: boolean;
            constraints: {
                key: string;
                value: string;
            }[] | undefined;
            classes: string;
            attributes: {
                'aria-label': string;
            };
        }[];
        hasDefaults: boolean | undefined;
        canSaveDefaults: boolean;
    }>;
    setRequestQueryFromFilterValues: (filterValues: FilterValue[], verbose?: boolean) => {};
    getPersonalisedFilters: (filters: FilterValue[], req: Request, res: Response, services: Services, filtersType: FiltersType) => Promise<{
        filters: FilterValue[];
        defaultFilterValues: import("../../utils/Personalisation/types").defaultFilterValue[] | undefined;
    }>;
};
export default _default;
