import type { AnyObject, StringMap } from '@naturalcycles/js-lib/types';
export type ScrubberFn<T = any, PARAMS = AnyObject> = (value: T, params?: PARAMS) => T;
export type ScrubberSQLFn<PARAMS = AnyObject> = (params?: PARAMS) => string;
export interface ScrubberConfig {
    fields: StringMap<ScrubberFieldConfig>;
    /**
     * Populated at runtime from any config keys with dots, key is last component (after last dot) and array contains
     * preceeding components a.k.a "parents"
     */
    splitFields?: StringMap<string[][]>;
    throwOnError?: boolean;
    preserveFalsy?: boolean;
}
export interface ScrubberFieldConfig {
    scrubber: string;
    params?: StringMap<any>;
}
export interface ScrubbersMap {
    [scrubberName: string]: ScrubberFn<any, any>;
}
export interface ScrubbersSQLMap {
    [scrubberName: string]: ScrubberSQLFn<any>;
}
