import ConditionTree from './nodes/base';
import ConditionTreeLeaf from './nodes/leaf';
import { Operator } from './nodes/operators';
import { ColumnType, PrimitiveTypes } from '../../schema';
export type Replacer = (leaf: ConditionTreeLeaf, timezone: string, isDateOnly?: boolean) => ConditionTree;
export type Alternative = {
    dependsOn: Operator[];
    replacer: Replacer;
    forTypes?: PrimitiveTypes[];
};
export default class ConditionTreeEquivalent {
    private static alternatives;
    static getEquivalentTree(leaf: ConditionTreeLeaf, operators: Set<Operator>, columnType: ColumnType, timezone: string): ConditionTree;
    static hasEquivalentTree(operator: Operator, operators: Set<Operator>, columnType: ColumnType): boolean;
    /** Find a way to replace an operator by recursively exploring the transforms graph */
    private static getReplacer;
    private static getAlternatives;
}
//# sourceMappingURL=equivalence.d.ts.map