import { WhereBuilder } from "./where-builder";
import { ColumnsValuesBuilder } from "../core/columns-values-builder";
import { ColumnsCompiled } from "../core/columns-compiled";
import { MapperTable } from "../mapper-table";
import { SqlBaseBuilder } from "./sql-base-builder";
import { QueryCompiled } from "../core/query-compiled";
import { ConfigDatabase } from "./config-database";
import { CommanderBuilder } from "./commander-builder";
export declare abstract class CrudBaseBuilder<T, TColumnsBuilder extends ColumnsValuesBuilder<T, TColumnsBuilder>> extends SqlBaseBuilder<T> {
    config: ConfigDatabase;
    private _columnsCompiled;
    protected readonly _commanderBuilder: CommanderBuilder;
    constructor(typeT: new () => T, mapperTable: MapperTable, config: ConfigDatabase, alias?: string);
    compile(): QueryCompiled | QueryCompiled[];
    protected getColumnsCompiled(): ColumnsCompiled;
    protected columnsBase<TBuilder extends CrudBaseBuilder<T, TColumnsBuilder>>(columnsCallback: (columns: TColumnsBuilder) => void, instanceSetColumnsBuilder: TColumnsBuilder, instanceReturn: TBuilder): TBuilder;
    protected whereBase<TBuilder extends CrudBaseBuilder<T, TColumnsBuilder>>(whereCallback: (where: WhereBuilder<T>) => void, instanceReturn: TBuilder, withAlias?: boolean): TBuilder;
    protected abstract setDefaultColumns(): void;
    abstract getModel(): T | Array<T>;
    private compileColumns;
    get specifiedColumns(): import("../core/column").Column[];
    private _columnsBuilder;
    protected get columnsBuilder(): TColumnsBuilder;
    protected abstract createColumnsBuilder(): TColumnsBuilder;
}
