import { OrmGenerics } from "../../types/ormGenerics";
import { ConditionBuilder } from "./ConditionBuilder";
export declare abstract class JoinBuilder<G extends OrmGenerics> extends ConditionBuilder<G> {
    private indexHintCache?;
    protected createSelectBuilder(_request: any): {
        build(table: string, isSubSelect: boolean): {
            sql: string;
            params: any[] | Record<string, any>;
        };
    };
    protected resetIndexHints(): void;
    private normalizeIndexHintKey;
    private normalizeHintTargetKey;
    private hasIndexHintKeys;
    private normalizeHintSpec;
    private formatIndexHintClause;
    private normalizeIndexHints;
    protected getIndexHintClause(table: string, alias?: string): string;
    buildJoinClauses(joinArgs: any, params: any[] | Record<string, any>): string;
    protected integrateSubSelectParams(subSql: string, subParams: any[] | Record<string, any>, target: any[] | Record<string, any>): string;
    protected buildScalarSubSelect(subRequest: any, params: any[] | Record<string, any>): string;
}
