import { Query } from "./query/query";
import { Insert } from "./insert/insert";
import { Update } from "./update/update";
import { MetadataTable } from "../metadata-table";
import { Delete } from "./delete/delete";
import { DatabaseBase } from "../definitions/database-definition";
import { GetMapper } from "../mapper/interface-get-mapper";
import { QueryBuilder } from "./query/query-builder";
import { MetadataTableBase } from "../metadata-table-base";
import { ConfigDatabase } from "./config-database";
export declare class Crud {
    private _config;
    enableLog: boolean;
    private _database;
    private _getMapper;
    constructor(_config: ConfigDatabase, { getMapper, database, enableLog }?: {
        getMapper?: GetMapper;
        database?: DatabaseBase;
        enableLog?: boolean;
    });
    delete<T>(typeT: new () => T, { modelToSave, metadata, database }?: {
        modelToSave?: T;
        metadata?: MetadataTable<T>;
        database?: DatabaseBase;
    }): Delete<T>;
    deleteByKey<T>(typeT: new () => T, key: any, { metadata, database }?: {
        metadata?: MetadataTable<T>;
        database?: DatabaseBase;
    }): Delete<T>;
    update<T>(typeT: new () => T, { toSave, alias, metadata, database }?: {
        toSave?: T;
        alias?: string;
        metadata?: MetadataTable<T>;
        database?: DatabaseBase;
    }): Update<T>;
    insert<T>(typeT: new () => T, { toSave, alias, metadata, database }?: {
        toSave?: T | Array<T>;
        alias?: string;
        metadata?: MetadataTable<T>;
        database?: DatabaseBase;
    }): Insert<T>;
    query<T>(typeT: (new () => T) | QueryBuilder<T> | {
        _builder: () => QueryBuilder<T>;
    }, { alias, metadata, database }?: {
        alias?: string;
        metadata?: MetadataTableBase<T>;
        database?: DatabaseBase;
    }): Query<T>;
    private getDatabase;
    private getMapper;
}
