import ConditionTree from './nodes/base';
import { Aggregator } from './nodes/branch';
import { Operator } from './nodes/operators';
import { CompositeId, RecordData } from '../../record';
import { CollectionSchema } from '../../schema';
export type GenericTreeBranch = {
    aggregator: Aggregator;
    conditions: Array<GenericTree>;
};
export type GenericTreeLeaf = {
    field: string;
    operator: Operator;
    value?: unknown;
};
export type GenericTree = GenericTreeBranch | GenericTreeLeaf;
export default class ConditionTreeFactory {
    static MatchNone: ConditionTree;
    static MatchAll: ConditionTree;
    static matchRecords(schema: CollectionSchema, records: RecordData[]): ConditionTree;
    static matchIds(schema: CollectionSchema, ids: CompositeId[]): ConditionTree;
    static union(...trees: ConditionTree[]): ConditionTree;
    static intersect(...trees: ConditionTree[]): ConditionTree;
    static fromPlainObject(json: GenericTree): ConditionTree;
    private static matchFields;
    private static group;
    private static isLeaf;
    private static isBranch;
}
//# sourceMappingURL=factory.d.ts.map