import type { FindManyOptions } from "./FindManyOptions";
import type { FindOneOptions } from "./FindOneOptions";
import type { SelectQueryBuilder } from "../query-builder/SelectQueryBuilder";
import type { EntityMetadata } from "../metadata/EntityMetadata";
import type { FindTreeOptions } from "./FindTreeOptions";
import type { ObjectLiteral } from "../common/ObjectLiteral";
/**
 * Utilities to work with FindOptions.
 */
export declare class FindOptionsUtils {
    /**
     * Checks if given object is really instance of FindOneOptions interface.
     * @param obj
     */
    static isFindOneOptions<Entity = any>(obj: any): obj is FindOneOptions<Entity>;
    /**
     * Checks if given object is really instance of FindManyOptions interface.
     * @param obj
     */
    static isFindManyOptions<Entity = any>(obj: any): obj is FindManyOptions<Entity>;
    /**
     * Checks if given object is really instance of FindOptions interface.
     * @param object
     */
    static extractFindManyOptionsAlias(object: any): string | undefined;
    static applyOptionsToTreeQueryBuilder<T extends ObjectLiteral>(qb: SelectQueryBuilder<T>, options?: FindTreeOptions): SelectQueryBuilder<T>;
    /**
     * Adds joins for all relations and sub-relations of the given relations provided in the find options.
     * @param qb
     * @param allRelations
     * @param alias
     * @param metadata
     * @param prefix
     */
    static applyRelationsRecursively(qb: SelectQueryBuilder<any>, allRelations: string[], alias: string, metadata: EntityMetadata, prefix: string): void;
    static joinEagerRelations(qb: SelectQueryBuilder<any>, alias: string, metadata: EntityMetadata): void;
}
