import { DatabaseResult } from 'database-builder';
import { DatabaseManager } from './database-manager';
import { Crud, DatabaseObject, Ddl, GetMapper, Query } from 'database-builder';
import { DatabaseFactoryContract } from './database-factory-contract';
import { Observable } from 'rxjs';
import { PlatformLoad } from './platform-load';
import { DatabaseSettingsFactoryContract } from './database-settings-factory-contract';
import { Injector } from '@angular/core';
import { ManagedTransaction } from 'database-builder/src/transaction/managed-transaction';
export declare abstract class BuildableDatabaseManager extends DatabaseManager {
    protected _databaseSettings: DatabaseSettingsFactoryContract;
    protected _injector: Injector;
    private _mapper;
    enableLog: boolean;
    constructor(databaseFactory: DatabaseFactoryContract, _databaseSettings: DatabaseSettingsFactoryContract, _injector: Injector, _mapper: GetMapper, platformLoad: PlatformLoad, enableLog?: boolean);
    get mapper(): GetMapper;
    databaseInstance(): Promise<DatabaseObject>;
    managedTransaction(): Observable<ManagedTransaction>;
    /**
     * @deprecated Use managedTransaction()
     */
    beginTransaction(): Observable<Crud>;
    /**
     * @deprecated Use managedTransaction()
     */
    commitTransaction(): Observable<boolean>;
    /**
     * @deprecated Use managedTransaction()
     */
    rollbackTransaction(): Observable<boolean>;
    crud(): Observable<Crud>;
    sql(sql: string, params?: any[]): Observable<DatabaseResult>;
    query<T>(typeT: new () => T, alias?: string): Observable<Query<T>>;
    ddl(): Observable<Ddl>;
    protected abstract databaseName(): string;
    abstract version(): number;
}
