import { QueryCompiled } from "../core/query-compiled";
import { WhereCompiled } from "./where-compiled";
import { MapperTable } from "../mapper-table";
import { QueryCompilable } from "../core/query-compilable";
import { QueryBuilder } from "./query/query-builder";
export declare abstract class SqlBaseBuilder<T> implements QueryCompilable {
    protected _newable: new () => T;
    mapperTable: MapperTable;
    protected readonly _alias: string;
    protected _tablename: string;
    protected whereCompiled: WhereCompiled;
    protected innerUsedAliasTest: Array<{
        hasAlias: (alias: string) => boolean;
    }>;
    private readonly WHERE;
    private NEXT_VALUE_ALIAS;
    constructor(queryT: (new () => T) | QueryBuilder<T>, _newable: new () => T, mapperTable: MapperTable, _alias?: string);
    protected createTablename<TTable>(_currentTypeT: new () => TTable, currentMapper: MapperTable): string;
    protected createAlias(currentAlias: string, currentTablename: string): string;
    getMapper(): MapperTable;
    hasAlias(alias: string): boolean;
    abstract compile(): QueryCompiled | QueryCompiled[];
    protected abstract buildBase(): QueryCompiled | QueryCompiled[];
    protected compileWhere(current: WhereCompiled, compiled: WhereCompiled, addCommand?: boolean): void;
    private defaultAlias;
    private createUniqueAlias;
}
