import { Cursor } from "./cursor";
import { Source } from "./lazy";
import type { AnyObject, Criteria, Options, Projection } from "./types";
/**
 * Represents a query object used to filter and match documents based on specified criteria.
 * All query, projection, and related expression operators are preloaded into the context by default.
 *
 * @example
 * ```typescript
 * const query = new Query({ age: { $gt: 18 } });
 * const result = query.test({ name: "John", age: 25 }); // true
 * ```
 */
export declare class Query<T = AnyObject> {
    #private;
    /**
     * Creates an instance of the query with the specified condition and options.
     * This object is preloaded with all query and projection operators.
     *
     * @param condition - The query condition object used to define the criteria for matching documents.
     * @param options - Optional configuration settings to customize the query behavior.
     */
    constructor(condition: Criteria<T>, options: Partial<Options>);
    private compile;
    private processOperator;
    /**
     * Tests whether the given object satisfies all compiled predicates.
     *
     * @template T - The type of the object to test.
     * @param obj - The object to be tested against the compiled predicates.
     * @returns `true` if the object satisfies all predicates, otherwise `false`.
     */
    test(obj: T): boolean;
    /**
     * Returns a cursor for iterating over the items in the given collection that match the query criteria.
     *
     * @typeParam T - The type of the items in the resulting cursor.
     * @param collection - The source collection to search through.
     * @param projection - An optional object specifying fields to include or exclude
     *                      in the returned items.
     * @returns A `Cursor` instance for iterating over the matching items.
     */
    find<R>(collection: Source, projection?: Projection<R>): Cursor<R>;
}
