export class MongoAdapter {
    /**
     * Create a MongoAdapter instance.
     * @param {string|{client: MongoClient, db: import('mongodb').Db}} dbConnection A MongoDB connection string or an object containing a MongoClient instance (`client`) and a database instance (`db`).
     * @param {object} opts
     * @param {string} opts.collection Name of the collection where all documents are stored.
     * @param {boolean} opts.multipleCollections When set to true, each document gets an own
     * collection (instead of all documents stored in the same one).
     * When set to true, the option $collection gets ignored.
     */
    constructor(dbConnection: string | {
        client: MongoClient;
        db: import("mongodb").Db;
    }, { collection, multipleCollections }: {
        collection: string;
        multipleCollections: boolean;
    });
    collection: string;
    multipleCollections: boolean;
    client: MongoClient;
    db: import("mongodb").Db;
    /**
     * Get the MongoDB collection name for any docName
     * @param {import('mongodb').Filter<import('mongodb').Document>} query
     * @returns {string} collectionName
     */
    _getCollectionName({ docName }: import("mongodb").Filter<import("mongodb").Document>): string;
    /**
     *
     * @param {import('mongodb').Filter<import('mongodb').Document>} query
     * @param {{limit?: number; reverse?: boolean;}} [options]
     * @returns {Promise<import('mongodb').WithId<import('mongodb').Document>[]>}
     */
    find(query: import("mongodb").Filter<import("mongodb").Document>, options?: {
        limit?: number;
        reverse?: boolean;
    }): Promise<import("mongodb").WithId<import("mongodb").Document>[]>;
    /**
     * Apply a $query and get one document from MongoDB.
     * @param {import('mongodb').Filter<import('mongodb').Document>} query
     * @param {{limit?: number; reverse?: boolean;}} [options]
     * @returns {Promise<import('mongodb').WithId<import('mongodb').Document> | null>}
     */
    findOne(query: import("mongodb").Filter<import("mongodb").Document>, options?: {
        limit?: number;
        reverse?: boolean;
    }): Promise<import("mongodb").WithId<import("mongodb").Document> | null>;
    /**
     * Store one document in MongoDB.
     * @param {import('mongodb').Filter<import('mongodb').Document>} query
     * @param {import('mongodb').UpdateFilter<import('mongodb').Document>} values
     * @returns {Promise<import('mongodb').WithId<import('mongodb').Document> | null>} Stored document
     */
    put(query: import("mongodb").Filter<import("mongodb").Document>, values: import("mongodb").UpdateFilter<import("mongodb").Document>): Promise<import("mongodb").WithId<import("mongodb").Document> | null>;
    /**
     * Removes all documents that fit the $query
     * @param {import('mongodb').Filter<import('mongodb').Document>} query
     * @returns {Promise<import('mongodb').BulkWriteResult>} Contains status of the operation
     */
    delete(query: import("mongodb").Filter<import("mongodb").Document>): Promise<import("mongodb").BulkWriteResult>;
    /**
     * Close connection to MongoDB instance.
     */
    close(): Promise<void>;
    /**
     * Get all collection names stored on the MongoDB instance.
     * @returns {Promise<string[]>}
     */
    getCollectionNames(): Promise<string[]>;
    /**
     * Delete database
     */
    flush(): Promise<void>;
    /**
     * Delete collection
     * @param {string} collectionName
     */
    dropCollection(collectionName: string): Promise<boolean>;
}
import { MongoClient } from 'mongodb';
//# sourceMappingURL=mongo-adapter.d.ts.map