import { t } from '../common';
export declare type IMongoStoreArgs = {
    uri: string;
    db: string;
    collection: string;
    connect?: boolean;
};
export declare class MongoStore<G = any> implements t.IMongoStore<G> {
    static create<G = any>(args: IMongoStoreArgs): MongoStore<G>;
    private constructor();
    dispose(): void;
    private readonly _dispose$;
    readonly dispose$: import("rxjs").Observable<void>;
    private _args;
    private client;
    private db;
    private collection;
    private isConnected;
    get isDisposed(): boolean;
    private ensureConnected;
    insert<T extends G>(doc: T, options?: {
        escapeKeys?: boolean;
    }): Promise<T>;
    insertMany<T extends G>(docs: T[], options?: {
        escapeKeys?: boolean;
    }): Promise<T[]>;
    updateOne<T extends G>(query: any, update: any, options?: t.INedbStoreUpdateOptions): Promise<t.INedbStoreUpdateResponse<T>>;
    find<T extends G>(query: any): Promise<T[]>;
    findOne<T extends G>(query: any): Promise<T | undefined>;
    remove(query: any, options?: t.INedbStoreRemoveOptions): Promise<void>;
    drop(): Promise<void>;
    exists(): Promise<boolean>;
    private throwIfDisposed;
}
