import { ModelMetadata } from "..";
import { IQuery } from "../model/IQuery";
import { AbstractModel } from "../model/AbstractModel";
import { Initable } from "../system/Initable";
import { TransactionProvider } from "./TransactionProvider";
import { ITransaction } from "../model/ITransaction";
export declare enum SqlProvider {
    MY_SQL = "mysql",
    POSTGRES = "postgres"
}
export declare enum NoSqlProvider {
    MONGODB = "mongodb"
}
export declare abstract class AbstractDatabaseAdapter implements Initable, TransactionProvider {
    modelMetadata: ModelMetadata[];
    protected schemas: {
        [name: string]: {
            modelConnection: any;
        };
    };
    protected constructor();
    readonly models: {
        new (): AbstractModel;
    }[];
    abstract createTransaction(): Promise<ITransaction>;
    abstract use<T extends AbstractModel>(model: {
        new (...args: any[]): T;
    }): IQuery<T>;
    init(): Promise<void>;
    stop(): Promise<void>;
}
//# sourceMappingURL=AbstractDatabaseAdapter.d.ts.map