import { TypeCrud } from "./enums/type-crud";
import { DatabaseBase, DatabaseResult } from "../definitions/database-definition";
import { CrudBaseBuilder } from "./crud-base-builder";
import { ColumnsValuesBuilder } from "../core/columns-values-builder";
import { MapperTable } from "../mapper-table";
import { QueryCompiled } from "../core/query-compiled";
import { SqlBase } from "./sql-base";
import { Observable } from "rxjs";
export declare abstract class CrudBase<T, TBuilder extends CrudBaseBuilder<T, TColumnsBuilder>, TColumnsBuilder extends ColumnsValuesBuilder<T, TColumnsBuilder>> extends SqlBase<T> {
    private _typeCrud;
    readonly __allowInTransaction: boolean;
    protected readonly _builder: TBuilder;
    constructor(_typeCrud: TypeCrud, { mapperTable, builder, database, enableLog }: {
        mapperTable: MapperTable;
        builder: TBuilder;
        database?: DatabaseBase;
        enableLog?: boolean;
    });
    protected dependencies(): MapperTable[];
    protected model(): T | Array<T>;
    protected builderCompiled(): QueryCompiled | QueryCompiled[];
    protected checkDatabaseResult(observable: Observable<DatabaseResult[]>): Observable<DatabaseResult[]>;
    /**
     * rowsAffected: 3
     * id: 6
     */
    protected setKeyByResult(models: Array<T>, result: DatabaseResult): T[];
}
