import * as plugins from './smartdata.plugins.js';
import { SmartdataCollection } from './smartdata.classes.collection.js';
import { EasyStore } from './smartdata.classes.easystore.js';
/**
 * interface - indicates the connection status of the db
 */
export type TConnectionStatus = 'initial' | 'disconnected' | 'connected' | 'failed';
export declare class SmartdataDb {
    smartdataOptions: plugins.tsclass.database.IMongoDescriptor;
    mongoDbClient: plugins.mongodb.MongoClient;
    mongoDb: plugins.mongodb.Db;
    status: TConnectionStatus;
    statusConnectedDeferred: plugins.smartpromise.Deferred<unknown>;
    smartdataCollectionMap: plugins.lik.ObjectMap<SmartdataCollection<any>>;
    constructor(smartdataOptions: plugins.tsclass.database.IMongoDescriptor);
    createEasyStore(nameIdArg: string): Promise<EasyStore<unknown>>;
    /**
     * connects to the database that was specified during instance creation
     */
    init(): Promise<any>;
    /**
     * closes the connection to the databse
     */
    close(): Promise<any>;
    addCollection(SmartdataCollectionArg: SmartdataCollection<any>): void;
    /**
     * Gets a collection's name and returns a SmartdataCollection instance
     * @param nameArg
     * @returns DbTable
     */
    getSmartdataCollectionByName<T>(nameArg: string): Promise<SmartdataCollection<T>>;
}
