import { ParsingInstruction, Condition } from '@ucast/core'; import { MongoQuery, MongoQueryFieldOperators } from '@ucast/mongo'; import { JsInterpreter, JsInterpretationOptions } from '@ucast/js'; type ThingFilter = { (object: T): boolean; ast: Condition; }; export interface FactoryOptions extends JsInterpretationOptions { forPrimitives: boolean; } export type Filter = , Q extends MongoQuery = MongoQuery>(query: Q) => ThingFilter; export type PrimitiveMongoQuery = MongoQueryFieldOperators & Partial<{ $and: MongoQueryFieldOperators[]; $or: MongoQueryFieldOperators[]; $nor: MongoQueryFieldOperators[]; }>; export type PrimitiveFilter = = PrimitiveMongoQuery>(query: Q) => ThingFilter; type FilterType = T['forPrimitives'] extends true ? PrimitiveFilter : Filter; export declare function createFactory>, I extends Record>, P extends { forPrimitives?: true; }>(instructions: T, interpreters: I, options?: Partial & P): FilterType

; export declare const guard: Filter; export declare const squire: PrimitiveFilter; export declare const filter: Filter; export {};