import { ExpressionOrColumn, ValueTypeToParse } from "./utils";
import { MapperTable } from "../mapper-table";
import { Column } from "./column";
import { FieldType } from "./enums/field-type";
import { ColumnsCompiled } from "./columns-compiled";
import { PrimaryKeyType } from "./enums/primary-key-type";
export declare abstract class ColumnsBaseBuilder<TThis extends ColumnsBaseBuilder<TThis, T, TColumn>, T, TColumn extends Column> {
    protected readonly mapperTable: MapperTable;
    protected readonly toSave: T | Array<T>;
    protected _columns: TColumn[];
    private _databaseHelper;
    constructor(mapperTable: MapperTable, toSave: T | Array<T>);
    get columns(): TColumn[];
    allColumns(): void;
    setColumn(column: string, type: FieldType, primaryKeyType: PrimaryKeyType): TThis;
    set<TReturn extends ValueTypeToParse>(columnExpression: ExpressionOrColumn<TReturn, T>, primaryKeyType: PrimaryKeyType, type?: new () => TReturn): TThis;
    compile(): ColumnsCompiled;
    protected isCompositeKey(): boolean;
    protected abstract columnFormat(column: TColumn): string;
    protected abstract getInstance(): TThis;
    protected abstract setColumnValue(column: string, value: ValueTypeToParse[], fieldType: FieldType, primaryKeyType: PrimaryKeyType): TThis;
    private setAllColumns;
    private getFieldType;
}
