import { ProjectionBuilder } from "../projection-builder";
import { JoinQueryBuilderContract } from "./join-query-builder-contract";
import { WhereCompiled } from "../where-compiled";
import { WhereBuilder } from "../where-builder";
import { QueryBuilderBase } from "./query-builder-base";
import { JoinType } from "../enums/join-type";
import { ParamType, ValueType } from "../../core/utils";
import { MapperTable } from "../../mapper-table";
import { MetadataTable } from "../../metadata-table";
import { QueryBuilder } from "./query-builder";
import { ProjectionModel } from "../projection-model";
export declare class JoinQueryBuilder<T> extends QueryBuilderBase<T, JoinQueryBuilder<T>> implements JoinQueryBuilderContract<T, JoinQueryBuilder<T>> {
    private _typeJoin;
    private readonly _on;
    constructor(queryT: (new () => T) | QueryBuilder<T>, onWhereCallback: (where: WhereBuilder<T>) => void, mapperTable: MapperTable, _typeJoin?: JoinType, alias?: string, getMapper?: (tKey: (new () => any) | string) => MetadataTable<any>, ignoreQueryFilters?: boolean);
    protected _getInstance(): JoinQueryBuilder<T>;
    _getOn(): WhereCompiled;
    _getTypeJoin(): string;
    _getWhere(): WhereCompiled;
    _getProjections(): ProjectionModel[];
    _getGroupBy(): string;
    _getHaving(): WhereCompiled;
    _getOrderBy(): string;
    _getParams(): ParamType[];
    addParamsOn(params: ValueType[]): JoinQueryBuilder<T>;
    protected createProjectionBuilder(): ProjectionBuilder<T>;
    protected compileWhere(current: WhereCompiled, compiled: WhereCompiled, addCommand?: boolean): void;
    protected compileGroupBy(groupBy: string, addCommand?: boolean): void;
    protected compileHaving(having: WhereCompiled, addCommand?: boolean): void;
    protected compileOrderBy(orderBy: string, addCommand?: boolean): void;
}
