import { AbstractDatabaseAdapter } from "../database/AbstractDatabaseAdapter";
import { AbstractModel } from "../model/AbstractModel";
import { IQuery, QueryCondition, SubKeySet } from "../model/IQuery";
import { ITransaction } from "../model/ITransaction";
import { ModelMetadata } from "../model/ModelMetadata";
import { AbstractQuery } from "../model/AbstractQuery";
export declare class InMemoryAdapter<T> extends AbstractQuery<T> {
    private autoPrimaryKey;
    private readonly model;
    private readonly schema;
    constructor(model: {
        new (...args: any[]): T;
    }, modelMetadata: ModelMetadata, schema: {
        modelConnection: any;
    });
    private insert;
    private multipleSort;
    deleteMany(queries: QueryCondition<T>[]): Promise<number>;
    deleteOne(modelInstance: T): Promise<T>;
    private getObjectsFromFilters;
    getMany(queries?: QueryCondition<T>[], options?: {
        order?: {
            [key in SubKeySet<T>]?: "desc" | "asc";
        };
        projection?: SubKeySet<T>[];
        limit?: number;
        page?: number;
    }): Promise<T[]>;
    getOne(queries?: QueryCondition<T>[], options?: {
        order?: {
            [key in SubKeySet<T>]?: "desc" | "asc";
        };
        projection?: SubKeySet<T>[];
    }): Promise<T | undefined>;
    rawQuery(query: any): Promise<any>;
    saveMany(modelInstances: Partial<T>[]): Promise<T[]>;
    saveOne(modelInstance: Partial<T>): Promise<T>;
    updateMany(queries: QueryCondition<T>[], update: Partial<T>): Promise<number>;
    updateOne(modelInstance: T): Promise<T>;
    protected getQueryObjectFromQueryConditions(queries: QueryCondition<T>[]): {
        (records: any[]): any[];
    }[][];
}
export declare class DefaultInMemoryDatabaseAdapter extends AbstractDatabaseAdapter {
    private modelAdapters;
    constructor();
    use<T extends AbstractModel>(model: {
        new (...args: any[]): T;
    }): IQuery<T>;
    createTransaction(): Promise<ITransaction>;
}
//# sourceMappingURL=DefaultInMemoryDatabaseAdapter.d.ts.map