import { FilterValue, FilterValues } from '../../Filters/Filters.model';
interface StringKeyedObject {
    [key: string]: unknown;
}
export type FilterFunction = (value: FilterValue) => Record<string, unknown> | boolean;
type FilterMap<K> = {
    [U in keyof K]: string | string[] | FilterFunction;
};
/**
 * Function to transform @axinom/mosaic-ui FilterValues to PostGraphile filters
 * @param filters FilterValues from @axinom/mosaic-ui
 * @param map Object containing paths of PostGraphile filters.
 *
 * @example
 * filterToPostGraphileFilter<MovieFilter>(filters, {
      title: 'includes', // Resolves to {title: {includes: ${value}}}
      tags: ['some', 'name', 'includes'] // Resolves to {tags: {some: {name: {includes: ${value}}}}}
      createdDate: value => {
        const values = String(value).split('|');
        return {
          greaterThan: values[0],
          lessThan: values[1],
        };
      }, // Resolves to {createdDate: {greaterThan: ${values[0]}, lessThan: ${values[1]}}}
    };
 */
export declare const filterToPostGraphileFilter: <T extends StringKeyedObject>(filters: FilterValues<unknown>, map: FilterMap<T>) => T | undefined;
export {};
//# sourceMappingURL=FilterTransformer.d.ts.map