import { DatabaseObject, DatabaseResult } from "../definitions/database-definition";
import { DatabaseCreatorContract } from "../definitions/database-creator-contract";
import { DatabaseConfig } from "../definitions/database-config";
import { WebSqlTransactionInterface } from "../definitions/websql-interface";
export declare abstract class BaseDatabaseAdapter<DatabaseNativeInterface> implements DatabaseCreatorContract {
    private _singleTransactionManager;
    constructor();
    create(config: DatabaseConfig): Promise<DatabaseObject>;
    protected abstract createDatabaseNative(config: DatabaseConfig): Promise<DatabaseNativeInterface>;
    protected abstract convertToExecuteSql(databaseNative: DatabaseNativeInterface): (sql: string, values: any) => Promise<DatabaseResult>;
    protected abstract convertToTransaction(databaseNative: DatabaseNativeInterface): (fn: (transaction: WebSqlTransactionInterface) => void) => Promise<any>;
    protected abstract convertToSqlBatch(databaseNative: DatabaseNativeInterface): (sqlStatements: Array<(string | string[] | any)>) => Promise<DatabaseResult[]>;
    protected convertDatabaseNativeToDatabaseObject(databaseNative: DatabaseNativeInterface): DatabaseObject;
    protected injectManagedTransactionInDatabase(databaseObject: DatabaseObject): DatabaseObject;
}
