333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../../src/driver/mongodb/typings.ts"],"names":[],"mappings":";;AAAA,8DAAgF","file":"typings.js","sourcesContent":["import { EventEmitter, Readable, Writable } from \"../../platform/PlatformTools\";\n\n/**\n * Creates a new MongoClient instance.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/MongoClient.html\n */\nexport declare class MongoClient extends EventEmitter {\n\n    constructor(uri: string, options?: MongoClientOptions);\n\n    /**\n     * Connect to MongoDB using a url as documented at docs.mongodb.org/manual/reference/connection-string/\n     * Note that for replicasets the replicaSet query parameter is required in the 2.0 driver.\n     *\n     * @param url The connection URI string.\n     * @param callback The command result callback.\n     */\n    static connect(url: string, callback: MongoCallback<Db>): void;\n\n    /**\n     * Connect to MongoDB using a url as documented at docs.mongodb.org/manual/reference/connection-string/\n     * Note that for replicasets the replicaSet query parameter is required in the 2.0 driver.\n     *\n     * @param url The connection URI string.\n     * @param options Optional settings.\n     */\n    static connect(url: string, options?: MongoClientOptions): Promise<Db>;\n\n    /**\n     * Connect to MongoDB using a url as documented at docs.mongodb.org/manual/reference/connection-string/\n     * Note that for replicasets the replicaSet query parameter is required in the 2.0 driver.\n     *\n     * @param url The connection URI string.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     */\n    static connect(url: string, options: MongoClientOptions, callback: MongoCallback<Db>): void;\n\n    /**\n     * Connect to MongoDB using a url as documented at docs.mongodb.org/manual/reference/connection-string/\n     * Note that for replicasets the replicaSet query parameter is required in the 2.0 driver.\n     */\n    connect(): Promise<MongoClient>;\n\n    /**\n     * Connect to MongoDB using a url as documented at docs.mongodb.org/manual/reference/connection-string/\n     * Note that for replicasets the replicaSet query parameter is required in the 2.0 driver.\n     *\n     * @param url The connection URI string.\n     * @param callback The command result callback.\n     */\n    connect(url: string, callback: MongoCallback<Db>): void;\n\n    /**\n     * Connect to MongoDB using a url as documented at docs.mongodb.org/manual/reference/connection-string/\n     * Note that for replicasets the replicaSet query parameter is required in the 2.0 driver.\n     *\n     * @param url The connection URI string.\n     * @param options Optional settings.\n     */\n    connect(url: string, options?: MongoClientOptions): Promise<Db>;\n\n    /**\n     * Connect to MongoDB using a url as documented at docs.mongodb.org/manual/reference/connection-string/\n     * Note that for replicasets the replicaSet query parameter is required in the 2.0 driver.\n     *\n     * @param url The connection URI string.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     */\n    connect(url: string, options: MongoClientOptions, callback: MongoCallback<Db>): void;\n\n    /**\n     * Close the db and its underlying connections.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html#close\n     */\n    close(callback: MongoCallback<void>): void;\n\n    /**\n     * Close the db and its underlying connections.\n     * @param force Force close, emitting no events.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html#close\n     */\n    close(force?: boolean): Promise<void>;\n\n    /**\n     * Close the db and its underlying connections.\n     * @param force Force close, emitting no events.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html#close\n     */\n    close(force: boolean, callback: MongoCallback<void>): void;\n\n    /**\n     * Create a new Db instance sharing the current socket connections. Be aware that the new db instances are\n     * related in a parent-child relationship to the original instance so that events are correctly emitted on child\n     * db instances. Child db instances are cached so performing db('db1') twice will return the same instance.\n     * You can control these behaviors with the options noListener and returnNonCachedInstance.\n     * @param dbName The name of the database we want to use. If not provided, use database name from connection string.\n     * @param options Optional settings.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html#db\n     */\n    db(dbName?: string, options?: MongoClientCommonOption): Db;\n\n    /**\n     * Check if MongoClient is connected.\n     * @param options Optional settings.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html#isConnected\n     */\n    isConnected(options?: MongoClientCommonOption): boolean;\n\n    /**\n     * Logout user from server, fire off on all connections and remove all auth info.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html#logout\n     */\n    logout(callback: MongoCallback<any>): void;\n    logout(options?: { dbName?: string }): Promise<any>;\n    logout(options: { dbName?: string }, callback: MongoCallback<any>): void;\n\n    /**\n     * Starts a new session on the server.\n     * @param options Optional settings.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html#startSession\n     */\n    startSession(options?: SessionOptions): ClientSession;\n\n    /**\n     * Create a new Change Stream, watching for new changes (insertions, updates, replacements, deletions, and invalidations) in this cluster.\n     * Will ignore all changes to system collections, as well as the local, admin, and config databases.\n     * @param pipeline An array of aggregation pipeline stages through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.\n     * @param options Optional settings.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#watch\n     */\n    watch(pipeline?: Object[], options?: ChangeStreamOptions & { startAtClusterTime?: Timestamp, session?: ClientSession }): ChangeStream;\n\n    /**\n     * Runs a given operation with an implicitly created session. The lifetime of the session will be handled without the need for user interaction.\n     * @param operation An operation to execute with an implicitly created session. The signature of this MUST be `(session) => {}`\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html#withSession\n     */\n    withSession(operation: (session: ClientSession) => Promise<any>): Promise<void>;\n\n    /**\n     * Runs a given operation with an implicitly created session. The lifetime of the session will be handled without the need for user interaction.\n     * @param options Optional settings to be appled to implicitly created session.\n     * @param operation An operation to execute with an implicitly created session. The signature of this MUST be `(session) => {}`\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html#withSession\n     */\n    withSession(options: SessionOptions, operation: (session: ClientSession) => Promise<any>): Promise<void>;\n}\n\n/**\n * The callback format for results.\n */\nexport interface MongoCallback<T> {\n\n    /**\n     * @param error An error instance representing the error during the execution.\n     * @param result The result of execution.\n     */\n    (error: MongoError, result: T): void;\n}\n\n// http://mongodb.github.io/node-mongodb-native/2.1/api/MongoError.html\nexport declare class MongoError extends Error {\n    constructor(message: string);\n    static create(options: Object): MongoError;\n}\n\n/**\n * Options for MongoClient#connect method.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.2/api/MongoClient.html#.connect\n */\nexport interface MongoClientOptions {\n\n    /**\n     * The maximum size of the individual server pool.\n     */\n    poolSize?: number;\n\n    /**\n     * Enable SSL connection.\n     */\n    ssl?: boolean;\n\n    /**\n     * SSL Certificate store binary buffer.\n     */\n    sslCA?: Buffer;\n\n    /**\n     * Uri decode the user name and password for authentication.\n     */\n    uri_decode_auth?: boolean;\n\n    /**\n     * A hash of options to set on the db object, see Db constructor.\n     */\n    db?: DbCreateOptions;\n\n    /**\n     * A hash of options to set on the server objects, see Server constructor**.\n     */\n    server?: ServerOptions;\n\n    /**\n     * A hash of options to set on the replSet object, see ReplSet constructor**.\n     */\n    replSet?: ReplSetOptions;\n\n    /**\n     * A hash of options to set on the mongos object, see Mongos constructor**.\n     */\n    mongos?: MongosOptions;\n\n    /**\n     * A Promise library class the application wishes to use such as Bluebird, must be ES6 compatible.\n     */\n    promiseLibrary?: Object;\n}\n\nexport interface CommandOptions {\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n\n    /**\n     * Number of milliseconds to wait before aborting the query.\n     */\n    maxTimeMS?: number;\n}\n\n/**\n * Options for Db class.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html\n */\nexport interface DbCreateOptions {\n\n    /**\n     * If the database authentication is dependent on another databaseName.\n     */\n    authSource?: string;\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * The current value of the parameter native_parser.\n     */\n    native_parser?: boolean;\n\n    /**\n     * Force server to assign _id values instead of driver.\n     */\n    forceServerObjectId?: boolean;\n\n    /**\n     * Serialize functions on any object.\n     */\n    serializeFunctions?: boolean;\n\n    /**\n     * Specify if the BSON serializer should ignore undefined fields.\n     */\n    ignoreUndefined?: boolean;\n\n    /**\n     * Return document results as raw BSON buffers.\n     */\n    raw?: boolean;\n\n    /**\n     * Promotes Long values to number if they fit inside the 53 bits resolution.\n     */\n    promoteLongs?: boolean;\n\n    /**\n     * Sets a cap on how many operations the driver will buffer up before giving up on getting a working connection, default is -1 which is unlimited.\n     */\n    bufferMaxEntries?: number;\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n\n    /**\n     * A primary key factory object for generation of custom _id keys.\n     */\n    pkFactory?: Object;\n\n    /**\n     * A Promise library class the application wishes to use such as Bluebird, must be ES6 compatible.\n     */\n    promiseLibrary?: Object;\n\n    /**\n     * Specify a read concern for the collection. (only MongoDB 3.2 or higher supported).\n     */\n    readConcern?: ReadConcern;\n}\n\n/**\n * Creates a new ReadPreference instance.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/ReadPreference.html\n */\nexport declare class ReadPreference {\n    constructor(mode: string, tags: Object);\n\n    /**\n     * The ReadPreference mode as listed above.\n     */\n    mode: string;\n\n    /**\n     * An object representing read preference tags.\n     */\n    tags: any;\n\n    /**\n     * Read from primary only. All operations produce an error (throw an exception where applicable) if primary is unavailable. Cannot be combined with tags (This is the default.).\n     */\n    static PRIMARY: string;\n\n    /**\n     * Read from primary if available, otherwise a secondary.\n     */\n    static PRIMARY_PREFERRED: string;\n\n    /**\n     * Read from secondary if available, otherwise error.\n     */\n    static SECONDARY: string;\n\n    /**\n     * Read from a secondary if available, otherwise read from the primary.\n     */\n    static SECONDARY_PREFERRED: string;\n\n    /**\n     * All modes read from among the nearest candidates, but unlike other modes, NEAREST will include both the primary and all secondaries in the random selection.\n     */\n    static NEAREST: string;\n\n    /**\n     * Validate if a mode is legal.\n     */\n    isValid(mode: string): boolean;\n\n    /**\n     * Validate if a mode is legal.\n     */\n    static isValid(mode: string): boolean;\n}\n\n/**\n * Creates a new Server instance.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Server.html\n */\nexport interface SocketOptions {\n\n    /**\n     * Reconnect on error.\n     */\n    autoReconnect?: boolean;\n\n    /**\n     * TCP Socket NoDelay option.\n     */\n    noDelay?: boolean;\n\n    /**\n     * TCP KeepAlive on the socket with a X ms delay before start.\n     */\n    keepAlive?: number;\n\n    /**\n     * TCP Connection timeout setting.\n     */\n    connectTimeoutMS?: number;\n\n    /**\n     * TCP Socket timeout setting.\n     */\n    socketTimeoutMS?: number;\n}\n\n/**\n * Creates a new Server instance.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Server.html\n */\nexport interface ServerOptions {\n\n    /**\n     * Number of connections in the connection pool for each server instance, set to 5 as default for legacy reasons.\n     */\n    poolSize?: number;\n\n    /**\n     * Use ssl connection (needs to have a mongod server with ssl support).\n     */\n    ssl?: boolean;\n\n    /**\n     * Validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslValidate?: Object;\n\n    /**\n     * Ensure we check server identify during SSL, set to false to disable checking. Only works for Node 0.12.x or higher. You can pass in a boolean or your own checkServerIdentity override function.\n     */\n    checkServerIdentity?: boolean | Function;\n\n    /**\n     * Array of valid certificates either as Buffers or Strings (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslCA?: Array<Buffer | string>;\n\n    /**\n     * String or buffer containing the certificate we wish to present (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslCert?: Buffer | string;\n\n    /**\n     * String or buffer containing the certificate private key we wish to present (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslKey?: Buffer | string;\n\n    /**\n     * String or buffer containing the certificate password (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslPass?: Buffer | string;\n\n    /**\n     * Socket options.\n     */\n    socketOptions?: SocketOptions;\n\n    /**\n     * Server attempt to reconnect #times.\n     */\n    reconnectTries?: number;\n\n    /**\n     * Server will wait # milliseconds between retries.\n     */\n    reconnectInterval?: number;\n}\n\n/**\n * Creates a new ReplSet instance.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/ReplSet.html\n */\nexport interface ReplSetOptions {\n\n    /**\n     * Turn on high availability monitoring.\n     */\n    ha?: boolean;\n\n    /**\n     * Time between each replicaset status check.\n     */\n    haInterval?: number;\n\n    /**\n     * The name of the replicaset to connect to.\n     */\n    replicaSet?: string;\n\n    /**\n     * Sets the range of servers to pick when using NEAREST (lowest ping ms + the latency fence, ex: range of 1 to (1 + 15) ms).\n     */\n    secondaryAcceptableLatencyMS?: number;\n\n    /**\n     * Sets if the driver should connect even if no primary is available.\n     */\n    connectWithNoPrimary?: boolean;\n\n    /**\n     * Number of connections in the connection pool for each server instance, set to 5 as default for legacy reasons.\n     */\n    poolSize?: number;\n\n    /**\n     * Use ssl connection (needs to have a mongod server with ssl support).\n     */\n    ssl?: boolean;\n\n    /**\n     * Validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslValidate?: Object;\n\n    /**\n     * Ensure we check server identify during SSL, set to false to disable checking. Only works for Node 0.12.x or higher. You can pass in a boolean or your own checkServerIdentity override function.\n     */\n    checkServerIdentity?: boolean | Function;\n\n    /**\n     * Array of valid certificates either as Buffers or Strings (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslCA?: Array<Buffer | string>;\n\n    /**\n     * String or buffer containing the certificate we wish to present (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslCert?: Buffer | string;\n\n    /**\n     * String or buffer containing the certificate private key we wish to present (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslKey?: Buffer | string;\n\n    /**\n     * String or buffer containing the certificate private key we wish to present (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslPass?: Buffer | string;\n\n    /**\n     * Socket options.\n     */\n    socketOptions?: SocketOptions;\n}\n\n/**\n * Creates a new Mongos instance.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Mongos.html\n */\nexport interface MongosOptions {\n\n    /**\n     * Turn on high availability monitoring.\n     */\n    ha?: boolean;\n\n    /**\n     * Time between each replicaset status check.\n     */\n    haInterval?: number;\n\n    /**\n     * Number of connections in the connection pool for each server instance, set to 5 as default for legacy reasons.\n     */\n    poolSize?: number;\n\n    /**\n     * Use ssl connection (needs to have a mongod server with ssl support).\n     */\n    ssl?: boolean;\n\n    /**\n     * Validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslValidate?: Object;\n\n    /**\n     * Ensure we check server identify during SSL, set to false to disable checking. Only works for Node 0.12.x or higher. You can pass in a boolean or your own checkServerIdentity override function.\n     */\n    checkServerIdentity?: boolean | Function;\n\n    /**\n     * Array of valid certificates either as Buffers or Strings (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslCA?: Array<Buffer | string>;\n\n    /**\n     * String or buffer containing the certificate we wish to present (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslCert?: Buffer | string;\n\n    /**\n     * String or buffer containing the certificate private key we wish to present (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslKey?: Buffer | string;\n\n    /**\n     * String or buffer containing the certificate password (needs to have a mongod server with ssl support, 2.4 or higher).\n     */\n    sslPass?: Buffer | string;\n\n    /**\n     * Socket options.\n     */\n    socketOptions?: SocketOptions;\n}\n\nexport interface DbOptions {\n\n    /**\n     * Do not make the db an event listener to the original connection.\n     */\n    noListener?: boolean;\n\n    /**\n     * Control if you want to return a cached instance or have a new one created.\n     */\n    returnNonCachedInstance?: boolean;\n}\n\nexport interface IndexInformationOptions {\n\n    /**\n     * Returns the full raw index information.\n     */\n    full?: boolean;\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY,\n     * ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY,\n     * ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n}\n\nexport interface ExecuteDbAdminCommandOptions {\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n\n    // maxTimeMS?: number;\n}\n\nexport interface ListCollectionsOptions {\n\n    /**\n     * The batchSize for the returned command cursor or if pre 2.8 the systems batch collection.\n     */\n    batchSize?: number;\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n}\n\n/**\n * Db.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html\n */\nexport declare class Db extends EventEmitter {\n\n    /**\n     *\n     * @param databaseName The name of the database this instance represents.\n     * @param serverConfig The server topology for the database.\n     * @param options Optional.\n     */\n    constructor(databaseName: string, serverConfig: Server | ReplSet | Mongos, options?: DbCreateOptions);\n\n    /**\n     * Get the current db topology.\n     */\n    serverConfig: Server | ReplSet | Mongos;\n\n    /**\n     * Current bufferMaxEntries value for the database.\n     */\n    bufferMaxEntries: number;\n\n    /**\n     * The name of the database this instance represents.\n     */\n    databaseName: string;\n\n    /**\n     * The options associated with the db instance.\n     */\n    options: any;\n\n    /**\n     * The current value of the parameter native_parser.\n     */\n    native_parser: boolean;\n\n    /**\n     * The current slaveOk value for the db instance.\n     */\n    slaveOk: boolean;\n\n    /**\n     * The current write concern values.\n     */\n    writeConcern: WriteConcern;\n\n    /**\n     * Add a user to the database.\n     *\n     * @param username The username.\n     * @param password The password.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#addUser\n     */\n    addUser(username: string, password: string, callback: MongoCallback<any>): void;\n\n    /**\n     * Add a user to the database.\n     *\n     * @param username The username.\n     * @param password The password.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#addUser\n     */\n    addUser(username: string, password: string, options?: DbAddUserOptions): Promise<any>;\n\n    /**\n     * Add a user to the database.\n     *\n     * @param username The username.\n     * @param password The password.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#addUser\n     */\n    addUser(username: string, password: string, options: DbAddUserOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Return the Admin db instance.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#admin\n     */\n    admin(): Admin;\n\n    /**\n     * Authenticate a user against the server.\n     *\n     * @param userName The username.\n     * @param password The password.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#authenticate\n     */\n    authenticate(userName: string, password: string, callback: MongoCallback<any>): void;\n\n    /**\n     * Authenticate a user against the server.\n     *\n     * @param userName The username.\n     * @param password The password.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#authenticate\n     */\n    authenticate(userName: string, password: string, options?: { authMechanism: string }): Promise<any>;\n\n    /**\n     * Authenticate a user against the server.\n     *\n     * @param userName The username.\n     * @param password The password.\n     * @param password\n     * @param options\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#authenticate\n     */\n    authenticate(userName: string, password: string, options: { authMechanism: string }, callback: MongoCallback<any>): void;\n\n    /**\n     * Close the db and its underlying connections.\n     *\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#close\n     */\n    close(callback: MongoCallback<void>): void;\n\n    /**\n     * Close the db and its underlying connections.\n     *\n     * @param forceClose Force close, emitting no events.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#close\n     */\n    close(forceClose?: boolean): Promise<void>;\n\n    /**\n     * Close the db and its underlying connections.\n     *\n     * @param forceClose Force close, emitting no events.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#close\n     */\n    close(forceClose: boolean, callback: MongoCallback<void>): void;\n\n    /**\n     * Fetch a specific collection (containing the actual collection information). If the application does not use strict mode you can\n     * can use it without a callback in the following way: var collection = db.collection('mycollection');\n     *\n     * @param name The collection name we wish to access.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#collection\n     */\n    collection(name: string): Collection<any>;\n\n    /**\n     * Fetch a specific collection (containing the actual collection information). If the application does not use strict mode you can\n     * can use it without a callback in the following way: var collection = db.collection('mycollection');\n     *\n     * @param name The collection name we wish to access.\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#collection\n     */\n    collection(name: string, callback: MongoCallback<Collection<any>>): Collection<any>;\n\n    /**\n     * Fetch a specific collection (containing the actual collection information). If the application does not use strict mode you can\n     * can use it without a callback in the following way: var collection = db.collection('mycollection');\n     *\n     * @param name The collection name we wish to access.\n     * @param options Optional settings.\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#collection\n     */\n    collection(name: string, options: DbCollectionOptions, callback: MongoCallback<Collection<any>>): Collection<any>;\n\n    /**\n     * Fetch all collections for the current db.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#collections\n     */\n    collections(): Promise<Collection<any>[]>;\n\n    /**\n     * Fetch all collections for the current db.\n     *\n     * @param callback The results callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#collections\n     */\n    collections(callback: MongoCallback<Collection<any>[]>): void;\n\n    /**\n     * Execute a command.\n     *\n     * @param command The command hash.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#command\n     */\n    command(command: Object, callback: MongoCallback<any>): void;\n\n    /**\n     * Execute a command.\n     *\n     * @param command The command hash.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#command\n     */\n    command(command: Object, options?: { readPreference: ReadPreference | string }): Promise<any>;\n\n    /**\n     * Execute a command.\n     *\n     * @param command The command hash.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#command\n     */\n    command(command: Object, options: { readPreference: ReadPreference | string }, callback: MongoCallback<any>): void;\n\n    /**\n     * Create a new collection on a server with the specified options. Use this to create capped collections.\n     *\n     * @param name The collection name we wish to access.\n     * @param callback The results callback\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#createCollection\n     */\n    createCollection(name: string, callback: MongoCallback<Collection<any>>): void;\n\n    /**\n     * Create a new collection on a server with the specified options. Use this to create capped collections.\n     *\n     * @param name The collection name we wish to access.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#createCollection\n     */\n    createCollection(name: string, options?: CollectionCreateOptions): Promise<Collection<any>>;\n\n    /**\n     * Create a new collection on a server with the specified options. Use this to create capped collections.\n     *\n     * @param name The collection name we wish to access.\n     * @param options Optional settings.\n     * @param callback The results callback\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#createCollection\n     */\n    createCollection(name: string, options: CollectionCreateOptions, callback: MongoCallback<Collection<any>>): void;\n\n    /**\n     * Creates an index on the db and collection collection.\n     *\n     * @param name Name of the collection to create the index on.\n     * @param fieldOrSpec Defines the index.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#createIndex\n     */\n    createIndex(name: string, fieldOrSpec: string | Object, callback: MongoCallback<any>): void;\n\n    /**\n     * Creates an index on the db and collection collection.\n     *\n     * @param name Name of the collection to create the index on.\n     * @param fieldOrSpec Defines the index.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#createIndex\n     */\n    createIndex(name: string, fieldOrSpec: string | Object, options?: MongodbIndexOptions): Promise<any>;\n\n    /**\n     * Creates an index on the db and collection collection.\n     *\n     * @param name Name of the collection to create the index on.\n     * @param fieldOrSpec Defines the index.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#createIndex\n     */\n    createIndex(name: string, fieldOrSpec: string | Object, options: MongodbIndexOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Create a new Db instance sharing the current socket connections. Be aware that the new db instances are\n     * related in a parent-child relationship to the original instance so that events are correctly emitted on child\n     * db instances. Child db instances are cached so performing db('db1') twice will return the same instance.\n     * You can control these behaviors with the options noListener and returnNonCachedInstance.\n     *\n     * @param dbName The name of the database we want to use.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#db\n     */\n    db(dbName: string): Db;\n\n    /**\n     * Create a new Db instance sharing the current socket connections. Be aware that the new db instances are\n     * related in a parent-child relationship to the original instance so that events are correctly emitted on child\n     * db instances. Child db instances are cached so performing db('db1') twice will return the same instance.\n     * You can control these behaviors with the options noListener and returnNonCachedInstance.\n     *\n     * @param dbName The name of the database we want to use.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#db\n     */\n    db(dbName: string, options: DbOptions): Db;\n\n    /**\n     * Drop a collection from the database, removing it permanently. New accesses will create a new collection.\n     *\n     * @param name Name of collection to drop.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#dropCollection\n     */\n    dropCollection(name: string): Promise<boolean>;\n\n    /**\n     * Drop a collection from the database, removing it permanently. New accesses will create a new collection.\n     *\n     * @param name Name of collection to drop.\n     * @param callback The results callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#dropCollection\n     */\n    dropCollection(name: string, callback: MongoCallback<boolean>): void;\n\n    /**\n     * Drop a database, removing it permanently from the server.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#dropDatabase\n     */\n    dropDatabase(): Promise<any>;\n\n    /**\n     * Drop a database, removing it permanently from the server.\n     *\n     * @param callback The results callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#dropDatabase\n     */\n    dropDatabase(callback: MongoCallback<any>): void;\n\n    // deprecated http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#ensureIndex\n    // ensureIndex(collectionName: any, fieldOrSpec: any, options: IndexOptions, callback: Function): void;\n    // deprecated http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#eval\n    // eval(code: any, parameters: any[], options?: any, callback?: MongoCallback<any>): void;\n\n    /**\n     * Runs a command on the database as admin.\n     *\n     * @param command The command hash.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#executeDbAdminCommand\n     */\n    executeDbAdminCommand(command: Object, callback: MongoCallback<any>): void;\n\n    /**\n     * Runs a command on the database as admin.\n     *\n     * @param command The command hash.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#executeDbAdminCommand\n     */\n    executeDbAdminCommand(command: Object, options?: ExecuteDbAdminCommandOptions): Promise<any>;\n\n    /**\n     * Runs a command on the database as admin.\n     *\n     * @param command The command hash.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#executeDbAdminCommand\n     */\n    executeDbAdminCommand(command: Object, options: ExecuteDbAdminCommandOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Retrieves this collections index info.\n     *\n     * @param name The name of the collection.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#indexInformation\n     */\n    indexInformation(name: string, callback: MongoCallback<any>): void;\n\n    /**\n     * Retrieves this collections index info.\n     *\n     * @param name The name of the collection.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#indexInformation\n     */\n    indexInformation(name: string, options?: IndexInformationOptions): Promise<any>;\n\n    /**\n     * Retrieves this collections index info.\n     *\n     * @param name The name of the collection.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#indexInformation\n     */\n    indexInformation(name: string, options: IndexInformationOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Get the list of all collection information for the specified db.\n     *\n     * @param filter Query to filter collections by.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#listCollections\n     */\n    listCollections(filter: Object, options?: ListCollectionsOptions): CommandCursor;\n\n    /**\n     * Logout user from server, fire off on all connections and remove all auth info.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#logout\n     */\n    logout(callback: MongoCallback<any>): void;\n\n    /**\n     * Logout user from server, fire off on all connections and remove all auth info.\n     *\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#logout\n     */\n    logout(options?: { dbName?: string }): Promise<any>;\n\n    /**\n     * Logout user from server, fire off on all connections and remove all auth info.\n     *\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#logout\n     */\n    logout(options: { dbName?: string }, callback: MongoCallback<any>): void;\n\n    /**\n     * Open the database.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#open\n     */\n    open(): Promise<Db>;\n\n    /**\n     * Open the database\n     *\n     * @param callback Callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#open\n     */\n    open(callback: MongoCallback<Db>): void;\n\n\n    /**\n     *\n     * @param username\n     * @param callback\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#removeUser\n     */\n    removeUser(username: string, callback: MongoCallback<any>): void;\n    removeUser(username: string, options?: { w?: number | string, wtimeout?: number, j?: boolean }): Promise<any>;\n    removeUser(username: string, options: { w?: number | string, wtimeout?: number, j?: boolean }, callback: MongoCallback<any>): void;\n\n    /**\n     * Rename a collection.\n     *\n     * @param fromCollection Name of current collection to rename.\n     * @param toCollection New name of of the collection.\n     * @param callback The results callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#renameCollection\n     */\n    renameCollection(fromCollection: string, toCollection: string, callback: MongoCallback<Collection<any>>): void;\n\n    /**\n     * Rename a collection.\n     *\n     * @param fromCollection Name of current collection to rename.\n     * @param toCollection New name of of the collection.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#renameCollection\n     */\n    renameCollection(fromCollection: string, toCollection: string, options?: { dropTarget?: boolean }): Promise<Collection<any>>;\n\n    /**\n     * Rename a collection.\n     *\n     * @param fromCollection Name of current collection to rename.\n     * @param toCollection New name of of the collection.\n     * @param options Optional settings.\n     * @param callback The results callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#renameCollection\n     */\n    renameCollection(fromCollection: string, toCollection: string, options: { dropTarget?: boolean }, callback: MongoCallback<Collection<any>>): void;\n\n    /**\n     * Get all the db statistics.\n     *\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#stats\n     */\n    stats(callback: MongoCallback<any>): void;\n\n    /**\n     * Get all the db statistics.\n     *\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#stats\n     */\n    stats(options?: { scale?: number }): Promise<any>;\n\n    /**\n     * Get all the db statistics.\n     *\n     * @param options Optional settings.\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#stats\n     */\n    stats(options: { scale?: number }, callback: MongoCallback<any>): void;\n\n    /**\n     * Create a new Change Stream, watching for new changes (insertions, updates, replacements, deletions, and invalidations) in this database. Will ignore all changes to system collections.\n     * @param pipeline An array of aggregation pipeline stages through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.\n     * @param options Optional settings.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#watch\n     */\n    watch(pipeline?: Object[], options?: ChangeStreamOptions & { startAtClusterTime?: Timestamp, session?: ClientSession }): ChangeStream;\n}\n\n/**\n * Server.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Server.html\n */\nexport declare class Server extends EventEmitter {\n\n    /**\n     *\n     * @param host The host for the server, can be either an IP4, IP6 or domain socket style host.\n     * @param port The server port if IP4.\n     * @param options Optional.\n     */\n    constructor(host: string, port: number, options?: ServerOptions);\n\n    /**\n     * All raw connections.\n     */\n    connections(): Array<any>;\n}\n\n/**\n * ReplSet.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/ReplSet.html\n */\nexport declare class ReplSet extends EventEmitter {\n\n    /**\n     *\n     * @param servers A seedlist of servers participating in the replicaset.\n     * @param options Optional.\n     */\n    constructor(servers: Array<Server>, options?: ReplSetOptions);\n\n    /**\n     * All raw connections\n     */\n    connections(): Array<any>;\n}\n\n/**\n * Mongos.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Mongos.html\n */\nexport declare class Mongos extends EventEmitter {\n\n    /**\n     *\n     * @param servers A seedlist of servers participating in the replicaset.\n     * @param options Optional.\n     */\n    constructor(servers: Array<Server>, options?: MongosOptions);\n\n    /**\n     * All raw connections\n     */\n    connections(): Array<any>;\n}\n\n/**\n * Creates a new Db instance.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#addUser\n */\nexport interface DbAddUserOptions {\n\n    /**\n     * The write concern.\n     */\n    w?: string | number;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * Custom data associated with the user (only Mongodb 2.6 or higher).\n     */\n    customData?: Object;\n\n    /**\n     * Roles associated with the created user (only Mongodb 2.6 or higher).\n     */\n    roles?: Object[];\n}\n\n/**\n * Creates a new Db instance.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#createCollection\n */\nexport interface CollectionCreateOptions {\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * Return document results as raw BSON buffers.\n     */\n    raw?: boolean;\n\n    /**\n     * A primary key factory object for generation of custom _id keys.\n     */\n    pkFactory?: Object;\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n\n    /**\n     * Serialize functions on any object.\n     */\n    serializeFunctions?: boolean;\n\n    /**\n     * Returns an error if the collection does not exist.\n     */\n    strict?: boolean;\n\n    /**\n     * Create a capped collection.\n     */\n    capped?: boolean;\n\n    /**\n     * The size of the capped collection in bytes.\n     */\n    size?: number;\n\n    /**\n     * The maximum number of documents in the capped collection.\n     */\n    max?: number;\n\n    /**\n     * Create an index on the _id field of the document, True by default on MongoDB 2.2 or higher off for version < 2.2.\n     */\n    autoIndexId?: boolean;\n}\n\n/**\n * Creates a new Db instance.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#collection\n */\nexport interface DbCollectionOptions {\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * Return document results as raw BSON buffers.\n     */\n    raw?: boolean;\n\n    /**\n     * A primary key factory object for generation of custom _id keys.\n     */\n    pkFactory?: Object;\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n\n    /**\n     * Serialize functions on any object.\n     */\n    serializeFunctions?: boolean;\n\n    /**\n     * Returns an error if the collection does not exist.\n     */\n    strict?: boolean;\n\n    /**\n     * Specify a read concern for the collection. (only MongoDB 3.2 or higher supported).\n     */\n    readConcern?: ReadConcern;\n}\n\n/**\n * Creates an index on the db and collection collection.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Db.html#createIndex\n */\nexport interface MongodbIndexOptions {\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * Creates an unique index.\n     */\n    unique?: boolean;\n\n    /**\n     * Creates a sparse index.\n     */\n    sparse?: boolean;\n\n    /**\n     * Creates the index in the background, yielding whenever possible.\n     */\n    background?: boolean;\n\n    /**\n     * A unique index cannot be created on a key that has pre-existing duplicate values.\n     * If you would like to create the index anyway, keeping the first document\n     * the database indexes and deleting all subsequent documents that have duplicate value.\n     */\n    dropDups?: boolean;\n\n    /**\n     * For geospatial indexes set the lower bound for the co-ordinates.\n     */\n    min?: number;\n\n    /**\n     * For geospatial indexes set the high bound for the co-ordinates.\n     */\n    max?: number;\n\n    /**\n     * Specify the format version of the indexes.\n     */\n    v?: number;\n\n    /**\n     * Allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher).\n     */\n    expireAfterSeconds?: number;\n\n    /**\n     * Override the autogenerated index name (useful if the resulting name is larger than 128 bytes).\n     */\n    name?: string;\n\n}\n\n/**\n * Admin.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html\n */\nexport interface Admin {\n\n    /**\n     * Add a user to the database.\n     *\n     * @param username The username.\n     * @param password The password.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#addUser\n     */\n    addUser(username: string, password: string, callback: MongoCallback<any>): void;\n\n    /**\n     * Add a user to the database.\n     *\n     * @param username The username.\n     * @param password The password.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#addUser\n     */\n    addUser(username: string, password: string, options?: AddUserOptions): Promise<any>;\n\n    /**\n     * Add a user to the database.\n     *\n     * @param username The username.\n     * @param password The password.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#addUser\n     */\n    addUser(username: string, password: string, options: AddUserOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Authenticate a user against the server.\n     *\n     * @param username The username.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#authenticate\n     */\n    authenticate(username: string, callback: MongoCallback<any>): void;\n\n    /**\n     * Authenticate a user against the server.\n     *\n     * @param username The username.\n     * @param password The password.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#authenticate\n     */\n    authenticate(username: string, password?: string): Promise<any>;\n\n    /**\n     * Authenticate a user against the server.\n     *\n     * @param username The username.\n     * @param password The password.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#authenticate\n     */\n    authenticate(username: string, password: string, callback: MongoCallback<any>): void;\n\n    /**\n     * Retrieve the server information for the current instance of the db client\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#buildInfo\n     */\n    buildInfo(): Promise<any>;\n\n    /**\n     * Retrieve the server information for the current instance of the db client\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#buildInfo\n     */\n    buildInfo(callback: MongoCallback<any>): void;\n\n    /**\n     * Execute a command.\n     *\n     * @param command The command hash.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#command\n     */\n    command(command: Object, callback: MongoCallback<any>): void;\n\n    /**\n     * Execute a command.\n     *\n     * @param command The command hash.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#command\n     */\n    command(command: Object, options?: CommandOptions): Promise<any>;\n\n    /**\n     * Execute a command.\n     *\n     * @param command The command hash.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#command\n     */\n    command(command: Object, options: CommandOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * List the available databases.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#listDatabases\n     */\n    listDatabases(): Promise<any>;\n\n    /**\n     * List the available databases.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#listDatabases\n     */\n    listDatabases(callback: MongoCallback<any>): void;\n\n    /**\n     * Logout user from server, fire off on all connections and remove all auth info.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#logout.\n     */\n    logout(): Promise<any>;\n\n    /**\n     * Logout user from server, fire off on all connections and remove all auth info.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#logout.\n     */\n    logout(callback: MongoCallback<any>): void;\n\n    /**\n     * Ping the MongoDB server and retrieve results.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#ping\n     */\n    ping(): Promise<any>;\n\n    /**\n     * Ping the MongoDB server and retrieve results.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#ping\n     */\n    ping(callback: MongoCallback<any>): void;\n\n    /**\n     * Retrive the current profiling information for MongoDB.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#profilingInfo\n     */\n    profilingInfo(): Promise<any>;\n\n    /**\n     * Retrive the current profiling information for MongoDB.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#profilingInfo\n     */\n    profilingInfo(callback: MongoCallback<any>): void;\n\n    /**\n     * Retrieve the current profiling Level for MongoDB.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#profilingLevel\n     */\n    profilingLevel(): Promise<any>;\n\n    /**\n     * Retrieve the current profiling Level for MongoDB.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#profilingLevel\n     */\n    profilingLevel(callback: MongoCallback<any>): void;\n\n    /**\n     * Remove a user from a database.\n     *\n     * @param username The username.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#removeUser\n     */\n    removeUser(username: string, callback: MongoCallback<any>): void;\n\n    /**\n     * Remove a user from a database.\n     *\n     * @param username The username.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#removeUser\n     */\n    removeUser(username: string, options?: FSyncOptions): Promise<any>;\n\n    /**\n     * Remove a user from a database.\n     *\n     * @param username The username.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#removeUser\n     */\n    removeUser(username: string, options: FSyncOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Get ReplicaSet status.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#replSetGetStatus\n     */\n    replSetGetStatus(): Promise<any>;\n\n    /**\n     * Get ReplicaSet status.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#replSetGetStatus\n     */\n    replSetGetStatus(callback: MongoCallback<any>): void;\n\n    /**\n     * Retrieve the server information for the current\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#serverInfo\n     */\n    serverInfo(): Promise<any>;\n\n    /**\n     * instance of the db client\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#serverInfo\n     * @param callback The command result callback.\n     */\n    serverInfo(callback: MongoCallback<any>): void;\n\n    /**\n     * Retrieve this db's server status.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#serverStatus\n     */\n    serverStatus(): Promise<any>;\n\n    /**\n     * Retrieve this db's server status.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#serverStatus\n     */\n    serverStatus(callback: MongoCallback<any>): void;\n\n    /**\n     * Set the current profiling level of MongoDB.\n     *\n     * @param level The new profiling level (off, slow_only, all).\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#setProfilingLevel\n     */\n    setProfilingLevel(level: string): Promise<any>;\n\n    /**\n     * Set the current profiling level of MongoDB.\n     *\n     * @param level The new profiling level (off, slow_only, all).\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#setProfilingLevel\n     */\n    setProfilingLevel(level: string, callback: MongoCallback<any>): void;\n\n    /**\n     * Validate an existing collection\n     *\n     * @param collectionNme The name of the collection to validate.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#validateCollection\n     */\n    validateCollection(collectionNme: string, callback: MongoCallback<any>): void;\n\n    /**\n     * Validate an existing collection\n     *\n     * @param collectionNme The name of the collection to validate.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#validateCollection\n     */\n    validateCollection(collectionNme: string, options?: Object): Promise<any>;\n\n    /**\n     * Validate an existing collection\n     *\n     * @param collectionNme The name of the collection to validate.\n     * @param options Optional settings.\n     * @param callback The command result callback\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#validateCollection\n     */\n    validateCollection(collectionNme: string, options: Object, callback: MongoCallback<any>): void;\n}\n\n/**\n * Add a user to the database.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#addUser\n */\nexport interface AddUserOptions {\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * Specify a file sync write concern.\n     */\n    fsync: boolean;\n\n    /**\n     * Custom data associated with the user (only Mongodb 2.6 or higher).\n     */\n    customData?: Object;\n\n    /**\n     * Roles associated with the created user (only Mongodb 2.6 or higher).\n     */\n    roles?: Object[];\n}\nexport interface ListIndexesOptions {\n\n    /**\n     * The batchSize for the returned command cursor or if pre 2.8 the systems batch collection.\n     */\n    batchSize?: number;\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n}\n\nexport interface GroupOptions {\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n}\n\n/**\n * Remove a user from a database.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Admin.html#removeUser\n */\nexport interface FSyncOptions {\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * Specify a file sync write concern.\n     */\n    fsync?: boolean;\n}\n\nexport interface FindOneAndDeleteOptions {\n\n    /**\n     * Limits the fields to return for all matching documents.\n     */\n    projection?: Object;\n\n    /**\n     * Determines which document the operation modifies if the query selects multiple documents.\n     */\n    sort?: Object;\n\n    /**\n     * The maximum amount of time to allow the query to run.\n     */\n    maxTimeMS?: number;\n}\n\n/**\n * Create a new ObjectID instance.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/ObjectID.html\n */\nexport declare class ObjectID {\n    constructor(s?: string | number);\n\n    /**\n     * The generation time of this ObjectId instance.\n     */\n    generationTime: number;\n\n    /**\n     * Creates an ObjectID from a hex string representation of an ObjectID.\n     */\n    static createFromHexString(hexString: string): ObjectID;\n\n    /**\n     * Creates an ObjectID from a second based number, with the rest of the ObjectID zeroed out. Used for comparisons or sorting the ObjectID.\n     */\n    static createFromTime(time: number): ObjectID;\n\n    /**\n     * Checks if a value is a valid bson ObjectId.\n     */\n    static isValid(id: any): boolean;\n\n    /**\n     * Compares the equality of this ObjectID with otherID.\n     */\n    equals(otherID: ObjectID): boolean;\n\n    /**\n     * Generate a 12 byte id buffer used in ObjectID's.\n     */\n    generate(time?: number): string;\n\n    /**\n     * Returns the generation date (accurate up to the second) that this ID was generated.\n     *\n     */\n    getTimestamp(): Date;\n\n    /**\n     * Return the ObjectID id as a 24 byte hex string representation.\n     */\n    toHexString(): string;\n\n    /**\n     * Get the timestamp and validate correctness.\n     */\n    toString(): string;\n}\n\n/**\n * A class representation of the BSON Binary type.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Binary.html\n */\nexport declare class Binary {\n\n    /**\n     * @param buffer A buffer object containing the binary data.\n     * @param subType The option binary type.\n     */\n    constructor(buffer: Buffer, subType?: number);\n\n    /**\n     * Byte Array BSON type.\n     */\n    static SUBTYPE_BYTE_ARRAY: number;\n\n    /**\n     * Default BSON type.\n     */\n    static SUBTYPE_DEFAULT: number;\n\n    /**\n     * Function BSON type.\n     */\n    static SUBTYPE_FUNCTION: number;\n\n    /**\n     * MD5 BSON type.\n     */\n    static SUBTYPE_MD5: number;\n\n    /**\n     * User BSON type.\n     */\n    static SUBTYPE_USER_DEFINED: number;\n\n    /**\n     * UUID BSON type.\n     */\n    static SUBTYPE_UUID: number;\n\n    /**\n     * OLD UUID BSON type\n     */\n    static SUBTYPE_UUID_OLD: number;\n\n    /**\n     * The length of the binary.\n     */\n    length(): number;\n\n    /**\n     * Updates this binary with byte_value.\n     *\n     * @param byte_value A single byte we wish to write.\n     */\n    put(byte_value: number | string): void;\n\n    /**\n     * Reads length bytes starting at position.\n     *\n     * @param position Read from the given position in the Binary.\n     * @param length The number of bytes to read.\n     */\n    read(position: number, length: number): Buffer;\n\n    /**\n     * Returns the value of this binary as a string.\n     */\n    value(): string;\n\n    /**\n     * Writes a buffer or string to the binary\n     *\n     * @param buffer A string or buffer to be written to the Binary BSON object.\n     * @param offset Specify the binary of where to write the content.\n     */\n    write(buffer: Buffer | string, offset: number): void;\n}\n/**\n * A class representation of the BSON Double type.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Double.html\n */\nexport declare class Double {\n\n    /**\n     * @param value The number we want to represent as a double.\n     */\n    constructor(value: number);\n\n    /**\n     * Access the number value.\n     */\n    valueOf(): number;\n}\n\n/**\n * Long\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Long.html\n */\nexport declare class Long {\n\n    /**\n     * @param low The low (signed) 32 bits of the Long.\n     * @param high The high (signed) 32 bits of the Long.\n     */\n    constructor(low: number, high: number);\n\n    static MAX_VALUE: Long;\n    static MIN_VALUE: Long;\n    static NEG_ONE: Long;\n    static ONE: Long;\n    static ZERO: Long;\n\n    /**\n     * Returns a Long representing the 64-bit integer that comes by concatenating the given high and low bits.\n     * Each is assumed to use 32 bits.\n     *\n     * @param lowBits The low 32-bits.\n     * @param highBits The high 32-bits.\n     */\n    static fromBits(lowBits: number, highBits: number): Long;\n\n    /**\n     * Returns a Long representing the given (32-bit) integer value.\n     *\n     * @param value The 32-bit integer in question.\n     */\n    static fromInt(value: number): Long;\n\n    /**\n     * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n     *\n     * @param value The number in question.\n     */\n    static fromNumber(value: number): Long;\n\n    /**\n     * Returns a Long representation of the given string, written using the given radix.\n     *\n     * @param str The textual representation of the Long.\n     * @param radix The radix in which the text is written.\n     */\n    static fromString(str: string, radix?: number): Long;\n\n    /**\n     * Returns the sum of this and the given Long.\n     *\n     * @param other Long to add to this one.\n     */\n    add(other: Long): Long;\n\n    /**\n     * Returns the bitwise-AND of this Long and the given one.\n     *\n     * @param other The Long with which to AND.\n     */\n    and(other: Long): Long;\n\n    /**\n     * Compares this Long with the given one.\n     *\n     * @param other Long to compare against.\n     */\n    compare(other: Long): number;\n\n    /**\n     * Returns this Long divided by the given one.\n     *\n     * @param other Long by which to divide.\n     */\n    div(other: Long): Long;\n\n    /**\n     * Return whether this Long equals the other.\n     *\n     * @param other Long to compare against.\n     */\n    equals(other: Long): boolean;\n\n    /**\n     * Return the high 32-bits value.\n     */\n    getHighBits(): number;\n\n    /**\n     * Return the low 32-bits value.\n     */\n    getLowBits(): number;\n\n    /**\n     * Return the low unsigned 32-bits value.\n     */\n    getLowBitsUnsigned(): number;\n\n    /**\n     * Returns the number of bits needed to represent the absolute value of this Long.\n     */\n    getNumBitsAbs(): number;\n\n    /**\n     * Return whether this Long is greater than the other.\n     *\n     * @param other Long to compare against.\n     */\n    greaterThan(other: Long): number;\n\n    /**\n     * Return whether this Long is greater than or equal to the other.\n     *\n     * @param other Long to compare against.\n     */\n    greaterThanOrEqual(other: Long): number;\n\n    /**\n     * Return whether this value is negative.\n     */\n    isNegative(): boolean;\n\n    /**\n     * Return whether this value is odd.\n     */\n    isOdd(): boolean;\n\n    /**\n     * Return whether this value is zero.\n     */\n    isZero(): boolean;\n\n    /**\n     * Return whether this Long is less than the other.\n     *\n     * @param other Long to compare against.\n     */\n    lessThan(other: Long): boolean;\n\n    /**\n     * Return whether this Long is less than or equal to the other.\n     *\n     * @param other Long to compare against.\n     */\n    lessThanOrEqual(other: Long): boolean;\n\n    /**\n     * Returns this Long modulo the given one.\n     *\n     * @param other Long by which to mod.\n     */\n    modulo(other: Long): Long;\n\n    /**\n     * Returns the product of this and the given Long.\n     *\n     * @param other Long to multiply with this.\n     */\n    multiply(other: Long): Long;\n\n    /**\n     * The negation of this value.\n     */\n    negate(): Long;\n\n    /**\n     * The bitwise-NOT of this value.\n     */\n    not(): Long;\n\n    /**\n     * Return whether this Long does not equal the other.\n     *\n     * @param other Long to compare against.\n     */\n    notEquals(other: Long): boolean;\n\n    /**\n     * Returns the bitwise-OR of this Long and the given one.\n     *\n     * @param other The Long with which to OR.\n     */\n    or(other: Long): Long;\n\n    /**\n     * Returns this Long with bits shifted to the left by the given amount.\n     *\n     * @param other The number of bits by which to shift.\n     */\n    shiftLeft(other: number): Long;\n\n    /**\n     * Returns this Long with bits shifted to the right by the given amount.\n     *\n     * @param other The number of bits by which to shift.\n     */\n    shiftRight(other: number): Long;\n\n    /**\n     * Returns this Long with bits shifted to the right by the given amount, with the new top bits matching the current sign bit.\n     *\n     * @param other The number of bits by which to shift.\n     */\n    shiftRightUnsigned(other: number): Long;\n\n    /**\n     * Returns the difference of this and the given Long.\n     *\n     * @param other Long to subtract from this.\n     */\n    subtract(other: Long): Long;\n\n    /**\n     * Return the int value.\n     */\n    toInt(): number;\n\n    /**\n     * Return the JSON value.\n     */\n    toJSON(): string;\n\n    /**\n     * Return the Number value.\n     */\n    toNumber(): number;\n\n    /**\n     * Return the String value.\n     *\n     * @param opt_radix The radix in which the text should be written.\n     */\n    toString(opt_radix?: number): string;\n\n    /**\n     * Returns the bitwise-XOR of this Long and the given one.\n     *\n     * @param other The Long with which to XOR.\n     */\n    xor(other: Long): Long;\n}\n\n/**\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/MaxKey.html\n */\nexport declare class MaxKey { }\n\n/**\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/MinKey.html\n */\nexport declare class MinKey { }\n\n/**\n * Timestamp.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Timestamp.html\n */\nexport declare class Timestamp {\n\n    /**\n     * @param low The low (signed) 32 bits of the Timestamp.\n     * @param high The high (signed) 32 bits of the Timestamp.\n     */\n    constructor(low: number, high: number);\n\n    static MAX_VALUE: Timestamp;\n    static MIN_VALUE: Timestamp;\n    static NEG_ONE: Timestamp;\n    static ONE: Timestamp;\n    static ZERO: Timestamp;\n\n    /**\n     * Returns a Timestamp representing the 64-bit integer that comes by concatenating the\n     * given high and low bits. Each is assumed to use 32 bits..\n     *\n     * @param lowBits The low 32-bits.\n     * @param highBits The high 32-bits.\n     */\n    static fromBits(lowBits: number, highBits: number): Timestamp;\n\n    /**\n     * Returns a Timestamp representing the given (32-bit) integer value.\n     *\n     * @param value The 32-bit integer in question.\n     */\n    static fromInt(value: number): Timestamp;\n\n    /**\n     * Returns a Timestamp representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n     *\n     * @param value The number in question.\n     */\n    static fromNumber(value: number): Timestamp;\n\n    /**\n     * Returns a Timestamp representation of the given string, written using the given radix.\n     *\n     * @param str The textual representation of the Timestamp.\n     * @param radix The radix in which the text is written.\n     */\n    static fromString(str: string, radix?: number): Timestamp;\n\n    /**\n     * Returns the sum of this and the given Timestamp.\n     *\n     * @param other Timestamp to add to this one.\n     */\n    add(other: Timestamp): Timestamp;\n\n    /**\n     * Returns the bitwise-AND of this Timestamp and the given one.\n     *\n     * @param other Timestamp to add to this one.\n     */\n    and(other: Timestamp): Timestamp;\n\n    /**\n     * Compares this Timestamp with the given one.\n     *\n     * @param other Timestamp to compare against.\n     */\n    compare(other: Timestamp): number;\n\n    /**\n     * Returns this Timestamp divided by the given one.\n     *\n     * @param other Timestamp by which to divide.\n     */\n    div(other: Timestamp): Timestamp;\n\n    /**\n     * Return whether this Timestamp equals the other\n     *\n     * @param other\n     */\n    equals(other: Timestamp): boolean;\n\n    /**\n     * Return the high 32-bits value.\n     */\n    getHighBits(): number;\n\n    /**\n     * Return the low 32-bits value.\n     */\n    getLowBits(): number;\n\n    /**\n     * Return the low unsigned 32-bits value.\n     */\n    getLowBitsUnsigned(): number;\n\n    /**\n     * Returns the number of bits needed to represent the absolute value of this Timestamp.\n     */\n    getNumBitsAbs(): number;\n\n    /**\n     * Return whether this Timestamp is greater than the other.\n     *\n     * @param other Timestamp to compare against.\n     */\n    greaterThan(other: Timestamp): number;\n\n    /**\n     * Return whether this Timestamp is greater than or equal to the other.\n     *\n     * @param other Timestamp to compare against.\n     */\n    greaterThanOrEqual(other: Timestamp): number;\n\n    /**\n     * Return whether this value is negative.\n     */\n    isNegative(): boolean;\n\n    /**\n     * IsOdd.\n     * Return whether this value is odd.\n     */\n    isOdd(): boolean;\n\n    /**\n     * Return whether this value is zero.\n     */\n    isZero(): boolean;\n\n    /**\n     * Return whether this Timestamp is less than the other.\n     *\n     * @param other Timestamp to compare against.\n     */\n    lessThan(other: Timestamp): boolean;\n\n    /**\n     * Return whether this Timestamp is less than or equal to the other.\n     *\n     * @param other Timestamp to compare against.\n     */\n    lessThanOrEqual(other: Timestamp): boolean;\n\n    /**\n     * Returns this Timestamp modulo the given one.\n     *\n     * @param other Timestamp by which to mod.\n     */\n    modulo(other: Timestamp): Timestamp;\n\n    /**\n     * Returns the product of this and the given Timestamp.\n     *\n     * @param other Timestamp to multiply with this.\n     */\n    multiply(other: Timestamp): Timestamp;\n\n    /**\n     * The negation of this value.\n     */\n    negate(): Timestamp;\n\n    /**\n     * The bitwise-NOT of this value.\n     */\n    not(): Timestamp;\n\n    /**\n     * Return whether this Timestamp does not equal the other.\n     *\n     * @param other Timestamp to compare against.\n     */\n    notEquals(other: Timestamp): boolean;\n\n    /**\n     * Returns the bitwise-OR of this Timestamp and the given one.\n     *\n     * @param other The Timestamp with which to OR.\n     */\n    or(other: Timestamp): Timestamp;\n\n    /**\n     * Returns this Timestamp with bits shifted to the left by the given amount.\n     *\n     * @param other The number of bits by which to shift.\n     */\n    shiftLeft(other: number): Timestamp;\n\n    /**\n     * Returns this Timestamp with bits shifted to the right by the given amount.\n     *\n     * @param other The number of bits by which to shift.\n     */\n    shiftRight(other: number): Timestamp;\n\n    /**\n     * Returns this Timestamp with bits shifted to the right by the given amount, with the new top bits matching the current sign bit.\n     *\n     * @param other\n     */\n    shiftRightUnsigned(other: number): Timestamp;\n\n    /**\n     * Returns the difference of this and the given Timestamp.\n     *\n     * @param other Timestamp to subtract from this.\n     */\n    subtract(other: Timestamp): Timestamp;\n\n    /**\n     * Return the int value.\n     */\n    toInt(): number;\n\n    /**\n     * Return the JSON value.\n     */\n    toJSON(): string;\n\n    /**\n     * Return the Number value.\n     */\n    toNumber(): number;\n\n    /**\n     * Return the String value.\n     *\n     * @param radix The radix in which the text should be written.\n     */\n    toString(radix?: number): string;\n\n    /**\n     * Returns the bitwise-XOR of this Timestamp and the given one.\n     *\n     * @param other The Timestamp with which to XOR.\n     */\n    xor(other: Timestamp): Timestamp;\n}\n\nexport interface CollectionDeleteOneOptions {\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimmeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * Allow driver to bypass schema validation in MongoDB 3.2 or higher.\n     */\n    bypassDocumentValidation?: boolean;\n}\n\nexport interface CollectionDistinctOptions {\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n}\n\n/**\n * Create a new ObjectID instance.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html\n */\nexport interface Collection<T> {\n\n    /**\n     * Get the collection name.\n     */\n    collectionName: string;\n\n    /**\n     * Get the full collection namespace.\n     */\n    namespace: string;\n\n    /**\n     * The current write concern values.\n     */\n    writeConcern: WriteConcern;\n\n    /**\n     * The current read concern values.\n     */\n    readConcern: ReadConcern;\n\n    /**\n     * Get current index hint for collection.\n     */\n    hint: any;\n\n    /**\n     * Execute an aggregation framework pipeline against the collection, needs MongoDB >= 2.2\n     *\n     * @param pipeline Array containing all the aggregation framework commands for the execution.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#aggregate\n     */\n    aggregate(pipeline: Object[], callback: MongoCallback<any>): AggregationCursor<any>;\n\n    /**\n     * Execute an aggregation framework pipeline against the collection, needs MongoDB >= 2.2\n     *\n     * @param pipeline Array containing all the aggregation framework commands for the execution.\n     * @param options Optional.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#aggregate\n     */\n    aggregate(pipeline: Object[], options?: CollectionAggregationOptions, callback?: MongoCallback<any>): AggregationCursor<any>;\n\n    /**\n     * Execute an aggregation framework pipeline against the collection, needs MongoDB >= 2.2\n     *\n     * @param pipeline Array containing all the aggregation framework commands for the execution.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#aggregate\n     */\n    aggregate<T>(pipeline: Object[], callback: MongoCallback<any>): AggregationCursor<T>;\n\n    /**\n     * Execute an aggregation framework pipeline against the collection, needs MongoDB >= 2.2\n     *\n     * @param pipeline Array containing all the aggregation framework commands for the execution.\n     * @param options Optional.\n     * @param callback Optional\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#aggregate\n     */\n    aggregate<T>(pipeline: Object[], options?: CollectionAggregationOptions, callback?: MongoCallback<any>): AggregationCursor<T>;\n\n    /**\n     * BulkWrite.\n     *\n     * @param operations Bulk operations to perform.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#bulkWrite\n     */\n    bulkWrite(operations: Object[], callback: MongoCallback<BulkWriteOpResultObject>): void;\n\n    /**\n     * BulkWrite.\n     *\n     * @param operations Bulk operations to perform.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#bulkWrite\n     */\n    bulkWrite(operations: Object[], options?: CollectionBulkWriteOptions): Promise<BulkWriteOpResultObject>;\n\n    /**\n     * BulkWrite.\n     *\n     * @param operations Bulk operations to perform.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#bulkWrite\n     */\n    bulkWrite(operations: Object[], options: CollectionBulkWriteOptions, callback: MongoCallback<BulkWriteOpResultObject>): void;\n\n    /**\n     * Count number of matching documents in the db to a query.\n     *\n     * @param query The query for the count.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#count\n     */\n    count(query: FilterQuery<T>, callback: MongoCallback<number>): void;\n\n    /**\n     * Count number of matching documents in the db to a query.\n     *\n     * @param query The query for the count.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#count\n     */\n    count(query: FilterQuery<T>, options?: MongoCountPreferences): Promise<number>;\n\n    /**\n     * Count number of matching documents in the db to a query.\n     *\n     * @param query The query for the count=\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#count\n     */\n    count(query: FilterQuery<T>, options: MongoCountPreferences, callback: MongoCallback<number>): void;\n\n    /**\n     * Count number of matching documents in the db to a query.\n     *\n     * @param query The query for the countDocuments.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#countDocumentst\n     */\n    countDocuments(query: FilterQuery<T>, callback: MongoCallback<number>): void;\n\n    /**\n     * Count number of matching documents in the db to a query.\n     *\n     * @param query The query for the count.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#countDocuments\n     */\n    countDocuments(query: FilterQuery<T>, options?: MongoCountPreferences): Promise<number>;\n\n    /**\n     * Count number of matching documents in the db to a query.\n     *\n     * @param query The query for the count=\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#countDocuments\n     */\n    countDocuments(query: FilterQuery<T>, options: MongoCountPreferences, callback: MongoCallback<number>): void;\n\n    /**\n     * Creates an index on the db and collection collection.\n     *\n     * @param fieldOrSpec Defines the index.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#createIndex\n     */\n    createIndex(fieldOrSpec: string | any, callback: MongoCallback<string>): void;\n\n    /**\n     * Creates an index on the db and collection collection.\n     *\n     * @param fieldOrSpec Defines the index.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#createIndex\n     */\n    createIndex(fieldOrSpec: string | any, options?: MongodbIndexOptions): Promise<string>;\n\n    /**\n     * Creates an index on the db and collection collection.\n     *\n     * @param fieldOrSpec Defines the index.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#createIndex\n     */\n    createIndex(fieldOrSpec: string | any, options: MongodbIndexOptions, callback: MongoCallback<string>): void;\n\n    /**\n     * CreateIndexes.\n     *\n     * @param indexSpecs An array of index specifications to be created.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#createIndexes and http://docs.mongodb.org/manual/reference/command/createIndexes/\n     */\n    createIndexes(indexSpecs: Object[]): Promise<any>;\n\n    /**\n     * CreateIndexes.\n     *\n     * @param indexSpecs An array of index specifications to be created.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#createIndexes and http://docs.mongodb.org/manual/reference/command/createIndexes/\n     */\n    createIndexes(indexSpecs: Object[], callback: MongoCallback<any>): void;\n\n    /**\n     * Delete multiple documents on MongoDB.\n     *\n     * @param filter The Filter used to select the documents to remove.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#deleteMany\n     */\n    deleteMany(filter: FilterQuery<T>, callback: MongoCallback<DeleteWriteOpResultObject>): void;\n\n    /**\n     * Delete multiple documents on MongoDB.\n     *\n     * @param filter The Filter used to select the documents to remove.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#deleteMany\n     */\n    deleteMany(filter: FilterQuery<T>, options?: CollectionOptions): Promise<DeleteWriteOpResultObject>;\n\n    /**\n     * Delete multiple documents on MongoDB.\n     *\n     * @param filter The Filter used to select the documents to remove.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#deleteMany\n     */\n    deleteMany(filter: FilterQuery<T>, options: CollectionOptions, callback: MongoCallback<DeleteWriteOpResultObject>): void;\n\n    /**\n     * Delete a document on MongoDB.\n     *\n     * @param filter The Filter used to select the document to remove.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#deleteOne\n     */\n    deleteOne(filter: FilterQuery<T>, callback: MongoCallback<DeleteWriteOpResultObject>): void;\n\n    /**\n     * Delete a document on MongoDB.\n     *\n     * @param filter The Filter used to select the document to remove.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#deleteOne\n     */\n    deleteOne(filter: FilterQuery<T>, options?: CollectionDeleteOneOptions): Promise<DeleteWriteOpResultObject>;\n\n    /**\n     * Delete a document on MongoDB.\n     *\n     * @param filter The Filter used to select the document to remove.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#deleteOne\n     */\n    deleteOne(filter: FilterQuery<T>, options: CollectionDeleteOneOptions, callback: MongoCallback<DeleteWriteOpResultObject>): void;\n\n    /**\n     * The distinct command returns returns a list of distinct values for the given key across a collection.\n     *\n     * @param key Field of the document to find distinct values for.\n     * @param query The query for filtering the set of documents to which we apply the distinct filter.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#distinct\n     */\n    distinct(key: string, query: FilterQuery<T>, callback: MongoCallback<any>): void;\n\n    /**\n     * The distinct command returns returns a list of distinct values for the given key across a collection.\n     *\n     * @param key Field of the document to find distinct values for.\n     * @param query The query for filtering the set of documents to which we apply the distinct filter.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#distinct\n     */\n    distinct(key: string, query: FilterQuery<T>, options?: CollectionDistinctOptions): Promise<any>;\n\n    /**\n     * The distinct command returns returns a list of distinct values for the given key across a collection.\n     *\n     * @param key Field of the document to find distinct values for.\n     * @param query The query for filtering the set of documents to which we apply the distinct filter.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#distinct\n     */\n    distinct(key: string, query: FilterQuery<T>, options: CollectionDistinctOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Drop the collection from the database, removing it permanently. New accesses will create a new collection.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#drop\n     */\n    drop(): Promise<any>;\n\n    /**\n     * Drop the collection from the database, removing it permanently. New accesses will create a new collection.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#drop\n     */\n    drop(callback: MongoCallback<any>): void;\n\n    /**\n     * Drops an index from this collection.\n     *\n     * @param indexName Name of the index to drop.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#dropIndex\n     */\n    dropIndex(indexName: string, callback: MongoCallback<any>): void;\n\n    /**\n     * Drops an index from this collection.\n     *\n     * @param indexName Name of the index to drop.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#dropIndex\n     */\n    dropIndex(indexName: string, options?: CollectionOptions): Promise<any>;\n\n    /**\n     * Drops an index from this collection.\n     *\n     * @param indexName Name of the index to drop.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#dropIndex\n     */\n    dropIndex(indexName: string, options: CollectionOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Drops all indexes from this collection.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#dropIndexes\n     */\n    dropIndexes(): Promise<any>;\n\n    /**\n     * Drops all indexes from this collection.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#dropIndexes\n     */\n    dropIndexes(callback?: MongoCallback<any>): void;\n\n    /**\n     * Creates a cursor for a query that can be used to iterate over results from MongoDB.\n     *\n     * @param query The cursor query object.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#find\n     */\n    find(query?: Object): Cursor<any>;\n\n    /**\n     * Creates a cursor for a query that can be used to iterate over results from MongoDB.\n     *\n     * @param query The cursor query object.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#find\n     */\n    find<T>(query?: FilterQuery<T>): Cursor<T>;\n\n    /** @deprecated */\n    find(query: FilterQuery<T>, fields?: Object, skip?: number, limit?: number, timeout?: number): Cursor<any>;\n\n    /**\n     * Fetches the first document that matches the query.\n     *\n     * @param query Query for find Operation.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOne\n     * @deprecated use find().limit(1).next(function(err, doc){}).\n     */\n    findOne(query: FilterQuery<T>, callback: MongoCallback<any>): void;\n\n    /**\n     * Fetches the first document that matches the query.\n     *\n     * @param query Query for find Operation.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOne\n     * @deprecated use find().limit(1).next(function(err, doc){}).\n     */\n    findOne(query: FilterQuery<T>, options?: MongodbFindOneOptions): Promise<any>;\n\n    /**\n     * Fetches the first document that matches the query.\n     *\n     * @param query Query for find Operation.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOne\n     * @deprecated use find().limit(1).next(function(err, doc){}).\n     */\n    findOne(query: FilterQuery<T>, options: MongodbFindOneOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Find a document and delete it in one atomic operation, requires a write lock for the duration of the operation.\n     *\n     * @param filter Document selection filter.\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOneAndDelete\n     */\n    findOneAndDelete(filter: FilterQuery<T>, callback: MongoCallback<FindAndModifyWriteOpResultObject>): void;\n\n    /**\n     * Find a document and delete it in one atomic operation, requires a write lock for the duration of the operation.\n     *\n     * @param filter Document selection filter.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOneAndDelete\n     */\n    findOneAndDelete(filter: FilterQuery<T>, options?: FindOneAndDeleteOptions): Promise<FindAndModifyWriteOpResultObject>;\n\n    /**\n     * Find a document and delete it in one atomic operation, requires a write lock for the duration of the operation.\n     *\n     * @param filter Document selection filter.\n     * @param options Optional settings.\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOneAndDelete\n     */\n    findOneAndDelete(filter: FilterQuery<T>, options: FindOneAndDeleteOptions, callback: MongoCallback<FindAndModifyWriteOpResultObject>): void;\n\n    /**\n     * Find a document and replace it in one atomic operation, requires a write lock for the duration of the operation.\n     *\n     * @param filter Document selection filter.\n     * @param replacement Document replacing the matching document.\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOneAndReplace\n     */\n    findOneAndReplace(filter: FilterQuery<T>, replacement: Object, callback: MongoCallback<FindAndModifyWriteOpResultObject>): void;\n\n    /**\n     * Find a document and replace it in one atomic operation, requires a write lock for the duration of the operation.\n     *\n     * @param filter Document selection filter.\n     * @param replacement Document replacing the matching document.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOneAndReplace\n     */\n    findOneAndReplace(filter: FilterQuery<T>, replacement: Object, options?: FindOneAndReplaceOption): Promise<FindAndModifyWriteOpResultObject>;\n\n    /**\n     * Find a document and replace it in one atomic operation, requires a write lock for the duration of the operation.\n     *\n     * @param filter Document selection filter.\n     * @param replacement Document replacing the matching document.\n     * @param options Optional settings.\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOneAndReplace\n     */\n    findOneAndReplace(filter: FilterQuery<T>, replacement: Object, options: FindOneAndReplaceOption, callback: MongoCallback<FindAndModifyWriteOpResultObject>): void;\n\n    /**\n     * Find a document and update it in one atomic operation, requires a write lock for the duration of the operation.\n     *\n     * @param filter Document selection filter.\n     * @param update Update operations to be performed on the document.\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOneAndUpdate\n     */\n    findOneAndUpdate(filter: FilterQuery<T>, update: UpdateQuery<T>, callback: MongoCallback<FindAndModifyWriteOpResultObject>): void;\n\n    /**\n     * Find a document and update it in one atomic operation, requires a write lock for the duration of the operation.\n     *\n     * @param filter Document selection filter.\n     * @param update Update operations to be performed on the document.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOneAndUpdate\n     */\n    findOneAndUpdate(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: FindOneAndReplaceOption): Promise<FindAndModifyWriteOpResultObject>;\n\n    /**\n     * Find a document and update it in one atomic operation, requires a write lock for the duration of the operation.\n     *\n     * @param filter Document selection filter.\n     * @param update Update operations to be performed on the document.\n     * @param options Optional settings.\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOneAndUpdate\n     */\n    findOneAndUpdate(filter: FilterQuery<T>, update: UpdateQuery<T>, options: FindOneAndReplaceOption, callback: MongoCallback<FindAndModifyWriteOpResultObject>): void;\n\n    /**\n     * Execute a geo search using a geo haystack index on a collection.\n     *\n     * @param x Point to search on the x axis, ensure the indexes are ordered in the same order.\n     * @param y Point to search on the y axis, ensure the indexes are ordered in the same order.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#geoHaystackSearch\n     */\n    geoHaystackSearch(x: number, y: number, callback: MongoCallback<any>): void;\n\n    /**\n     * Execute a geo search using a geo haystack index on a collection.\n     *\n     * @param x Point to search on the x axis, ensure the indexes are ordered in the same order.\n     * @param y Point to search on the y axis, ensure the indexes are ordered in the same order.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#geoHaystackSearch\n     */\n    geoHaystackSearch(x: number, y: number, options?: GeoHaystackSearchOptions): Promise<any>;\n\n    /**\n     * Execute a geo search using a geo haystack index on a collection.\n     *\n     * @param x Point to search on the x axis, ensure the indexes are ordered in the same order.\n     * @param y Point to search on the y axis, ensure the indexes are ordered in the same order.\n     * @param options Optional settings\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#geoHaystackSearch\n     */\n    geoHaystackSearch(x: number, y: number, options: GeoHaystackSearchOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Execute the geoNear command to search for items in the collection.\n     *\n     * @param x Point to search on the x axis, ensure the indexes are ordered in the same order.\n     * @param y Point to search on the y axis, ensure the indexes are ordered in the same order.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#geoNear\n     */\n    geoNear(x: number, y: number, callback: MongoCallback<any>): void;\n\n    /**\n     * Execute the geoNear command to search for items in the collection.\n     *\n     * @param x Point to search on the x axis, ensure the indexes are ordered in the same order.\n     * @param y Point to search on the y axis, ensure the indexes are ordered in the same order.\n     * @param options Optionals.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#geoNear\n     */\n    geoNear(x: number, y: number, options?: GeoNearOptions): Promise<any>;\n\n    /**\n     * Execute the geoNear command to search for items in the collection.\n     *\n     * @param x Point to search on the x axis, ensure the indexes are ordered in the same order.\n     * @param y Point to search on the y axis, ensure the indexes are ordered in the same order.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#geoNear\n     */\n    geoNear(x: number, y: number, options: GeoNearOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Run a group command across a collection.\n     *\n     * @param keys An object, array or function expressing the keys to group by.\n     * @param condition An optional condition that must be true for a row to be considered.\n     * @param initial Initial value of the aggregation counter object.\n     * @param reduce The reduce function aggregates (reduces) the objects iterated.\n     * @param finalize An optional function to be run on each item in the result set just before the item is returned.\n     * @param command Specify if you wish to run using the internal group command or using eval, default is true.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#group\n     */\n    group(keys: Object | Array<any> | Function | Code, condition: Object, initial: Object, reduce: Function | Code, finalize: Function | Code, command: boolean, callback: MongoCallback<any>): void;\n\n    /**\n     * Run a group command across a collection.\n     *\n     * @param keys An object, array or function expressing the keys to group by.\n     * @param condition An optional condition that must be true for a row to be considered.\n     * @param initial Initial value of the aggregation counter object.\n     * @param reduce The reduce function aggregates (reduces) the objects iterated.\n     * @param finalize An optional function to be run on each item in the result set just before the item is returned.\n     * @param command Specify if you wish to run using the internal group command or using eval, default is true.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#group\n     */\n    group(keys: Object | Array<any> | Function | Code, condition: Object, initial: Object, reduce: Function | Code, finalize: Function | Code, command: boolean, options?: GroupOptions): Promise<any>;\n\n    /**\n     * Run a group command across a collection.\n     *\n     * @param keys An object, array or function expressing the keys to group by.\n     * @param condition An optional condition that must be true for a row to be considered.\n     * @param initial Initial value of the aggregation counter object.\n     * @param reduce The reduce function aggregates (reduces) the objects iterated.\n     * @param finalize An optional function to be run on each item in the result set just before the item is returned.\n     * @param command Specify if you wish to run using the internal group command or using eval, default is true.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#group\n     */\n    group(keys: Object | Array<any> | Function | Code, condition: Object, initial: Object, reduce: Function | Code, finalize: Function | Code, command: boolean, options: GroupOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Retrieve all the indexes on the collection.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#indexes\n     */\n    indexes(): Promise<any>;\n\n    /**\n     * Retrieve all the indexes on the collection.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#indexes\n     */\n    indexes(callback: MongoCallback<any>): void;\n\n    /**\n     * Checks if one or more indexes exist on the collection, fails on first non-existing index.\n     *\n     * @param indexes One or more index names to check.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#indexExists\n     */\n    indexExists(indexes: string | string[]): Promise<boolean>;\n\n    /**\n     * Checks if one or more indexes exist on the collection, fails on first non-existing index.\n     *\n     * @param indexes One or more index names to check.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#indexExists\n     */\n    indexExists(indexes: string | string[], callback: MongoCallback<boolean>): void;\n\n    /**\n     * Retrieves this collections index info.\n     *\n     * @param callback The command result callback\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#indexInformation\n     */\n    indexInformation(callback: MongoCallback<any>): void;\n\n    /**\n     * Retrieves this collections index info.\n     *\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#indexInformation\n     */\n    indexInformation(options?: { full: boolean }): Promise<any>;\n\n    /**\n     * Retrieves this collections index info.\n     *\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#indexInformation\n     */\n    indexInformation(options: { full: boolean }, callback: MongoCallback<any>): void;\n\n    /**\n     * Initiate an In order bulk write operation, operations will be serially executed in the order they are added,\n     * creating a new operation for each switch in types.\n     *\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#initializeOrderedBulkOp\n     */\n    initializeOrderedBulkOp(options?: CollectionOptions): OrderedBulkOperation;\n\n    /**\n     * Initiate a Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order.\n     *\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#initializeUnorderedBulkOp\n     */\n    initializeUnorderedBulkOp(options?: CollectionOptions): UnorderedBulkOperation;\n\n    // http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#insertOne\n    /** @deprecated Use insertOne, insertMany or bulkWrite */\n    insert(docs: Object, callback: MongoCallback<InsertOneWriteOpResult>): void;\n    /** @deprecated Use insertOne, insertMany or bulkWrite */\n    insert(docs: Object, options?: CollectionInsertOneOptions): Promise<InsertOneWriteOpResult>;\n    /** @deprecated Use insertOne, insertMany or bulkWrite */\n    insert(docs: Object, options: CollectionInsertOneOptions, callback: MongoCallback<InsertOneWriteOpResult>): void;\n\n    /**\n     * InsertMany.\n     *\n     * @param docs Documents to insert.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#insertMany\n     */\n    insertMany(docs: Object[], callback: MongoCallback<InsertWriteOpResult>): void;\n\n    /**\n     * InsertMany.\n     *\n     * @param docs Documents to insert.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#insertMany\n     */\n    insertMany(docs: Object[], options?: CollectionInsertManyOptions): Promise<InsertWriteOpResult>;\n\n    /**\n     * InsertMany.\n     *\n     * @param docs Documents to insert.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#insertMany\n     */\n    insertMany(docs: Object[], options: CollectionInsertManyOptions, callback: MongoCallback<InsertWriteOpResult>): void;\n\n    /**\n     * InsertOne.\n     *\n     * @param docs Document to insert.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#insertOne\n     */\n    insertOne(docs: Object, callback: MongoCallback<InsertOneWriteOpResult>): void;\n\n    /**\n     * InsertOne.\n     *\n     * @param docs Document to insert.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#insertOne\n     */\n    insertOne(docs: Object, options?: CollectionInsertOneOptions): Promise<InsertOneWriteOpResult>;\n\n    /**\n     * InsertOne.\n     *\n     * @param docs Document to insert.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#insertOne\n     */\n    insertOne(docs: Object, options: CollectionInsertOneOptions, callback: MongoCallback<InsertOneWriteOpResult>): void;\n\n    /**\n     * Returns if the collection is a capped collection.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#isCapped\n     */\n    isCapped(): Promise<any>;\n\n    /**\n     * Returns if the collection is a capped collection.\n     *\n     * @param callback The results callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#isCapped\n     */\n    isCapped(callback: MongoCallback<any>): void;\n\n    /**\n     * Get the list of all indexes information for the collection.\n     *\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#listIndexes\n     */\n    listIndexes(options?: ListIndexesOptions): CommandCursor;\n\n    /**\n     * Run Map Reduce across a collection. Be aware that the inline option for out will return an array of results not a collection.\n     *\n     * @param map The mapping function.\n     * @param reduce The reduce function.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#mapReduce\n     */\n    mapReduce(map: Function | string, reduce: Function | string, callback: MongoCallback<any>): void;\n\n    /**\n     * Run Map Reduce across a collection. Be aware that the inline option for out will return an array of results not a collection.\n     *\n     * @param map The mapping function.\n     * @param reduce The reduce function.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#mapReduce\n     */\n    mapReduce(map: Function | string, reduce: Function | string, options?: MapReduceOptions): Promise<any>;\n\n    /**\n     * Run Map Reduce across a collection. Be aware that the inline option for out will return an array of results not a collection.\n     *\n     * @param map The mapping function.\n     * @param reduce The reduce function.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#mapReduce\n     */\n    mapReduce(map: Function | string, reduce: Function | string, options: MapReduceOptions, callback: MongoCallback<any>): void;\n\n    /**\n     * Returns the options of the collection.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#options\n     */\n    options(): Promise<any>;\n\n    /**\n     * Returns the options of the collection.\n     *\n     * @param callback The results callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#options\n     */\n    options(callback: MongoCallback<any>): void;\n\n    /**\n     * Return N number of parallel cursors for a collection allowing parallel reading of entire collection. There are\n     * no ordering guarantees for returned results.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#parallelCollectionScan\n     */\n    parallelCollectionScan(callback: MongoCallback<Cursor<any>[]>): void;\n\n    /**\n     * Return N number of parallel cursors for a collection allowing parallel reading of entire collection. There are\n     * no ordering guarantees for returned results.\n     *\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#parallelCollectionScan\n     */\n    parallelCollectionScan(options?: ParallelCollectionScanOptions): Promise<Cursor<any>[]>;\n\n    /**\n     * Return N number of parallel cursors for a collection allowing parallel reading of entire collection. There are\n     * no ordering guarantees for returned results.\n     *\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#parallelCollectionScan\n     */\n    parallelCollectionScan(options: ParallelCollectionScanOptions, callback: MongoCallback<Cursor<any>[]>): void;\n\n    /**\n     * Reindex all indexes on the collection.\n     *\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#reIndex\n     */\n    reIndex(): Promise<any>;\n\n    /**\n     * Reindex all indexes on the collection.\n     *\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#reIndex\n     */\n    reIndex(callback: MongoCallback<any>): void;\n\n    // http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#remove\n    /** @deprecated Use use deleteOne, deleteMany or bulkWrite */\n    remove(selector: Object, callback: MongoCallback<WriteOpResult>): void;\n    /** @deprecated Use use deleteOne, deleteMany or bulkWrite */\n    remove(selector: Object, options?: CollectionOptions & { single?: boolean }): Promise<WriteOpResult>;\n    /** @deprecated Use use deleteOne, deleteMany or bulkWrite */\n    remove(selector: Object, options?: CollectionOptions & { single?: boolean }, callback?: MongoCallback<WriteOpResult>): void;\n\n    /**\n     * Rename the collection.\n     *\n     * @param newName New name of of the collection.\n     * @param callback The results callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#rename\n     */\n    rename(newName: string, callback: MongoCallback<Collection<T>>): void;\n\n    /**\n     * Rename the collection.\n     *\n     * @param newName New name of of the collection.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#rename\n     */\n    rename(newName: string, options?: { dropTarget?: boolean }): Promise<Collection<T>>;\n\n    /**\n     * Rename the collection.\n     *\n     * @param newName New name of of the collection.\n     * @param options Optional settings.\n     * @param callback The results callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#rename\n     */\n    rename(newName: string, options: { dropTarget?: boolean }, callback: MongoCallback<Collection<T>>): void;\n\n    /**\n     * Replace a document on MongoDB.\n     *\n     * @param filter The Filter used to select the document to update.\n     * @param doc The Document that replaces the matching document.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#replaceOne\n     */\n    replaceOne(filter: FilterQuery<T>, doc: Object, callback: MongoCallback<UpdateWriteOpResult>): void;\n\n    /**\n     * Replace a document on MongoDB.\n     *\n     * @param filter The Filter used to select the document to update.\n     * @param doc The Document that replaces the matching document.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#replaceOne\n     */\n    replaceOne(filter: FilterQuery<T>, doc: Object, options?: ReplaceOneOptions): Promise<UpdateWriteOpResult>;\n\n    /**\n     * Replace a document on MongoDB.\n     *\n     * @param filter The Filter used to select the document to update.\n     * @param doc The Document that replaces the matching document.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#replaceOne\n     */\n    replaceOne(filter: FilterQuery<T>, doc: Object, options: ReplaceOneOptions, callback: MongoCallback<UpdateWriteOpResult>): void;\n\n    // http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#save\n    /** @deprecated Use insertOne, insertMany, updateOne or updateMany */\n    save(doc: Object, callback: MongoCallback<WriteOpResult>): void;\n    /** @deprecated Use insertOne, insertMany, updateOne or updateMany */\n    save(doc: Object, options?: CollectionOptions): Promise<WriteOpResult>;\n    /** @deprecated Use insertOne, insertMany, updateOne or updateMany */\n    save(doc: Object, options: CollectionOptions, callback: MongoCallback<WriteOpResult>): void;\n\n    /**\n     * Get all the collection statistics.\n     *\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#stats\n     */\n    stats(callback: MongoCallback<CollStats>): void;\n\n    /**\n     * Get all the collection statistics.\n     *\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#stats\n     */\n    stats(options?: { scale: number }): Promise<CollStats>;\n\n    /**\n     * Get all the collection statistics.\n     *\n     * @param options Optional settings.\n     * @param callback The collection result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#stats\n     */\n    stats(options: { scale: number }, callback: MongoCallback<CollStats>): void;\n\n    // http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#update\n    /** @deprecated use updateOne, updateMany or bulkWrite */\n    update(filter: FilterQuery<T>, update: UpdateQuery<T>, callback: MongoCallback<WriteOpResult>): void;\n    /** @deprecated use updateOne, updateMany or bulkWrite */\n    update(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: ReplaceOneOptions & { multi?: boolean }): Promise<WriteOpResult>;\n    /** @deprecated use updateOne, updateMany or bulkWrite */\n    update(filter: FilterQuery<T>, update: UpdateQuery<T>, options: ReplaceOneOptions & { multi?: boolean }, callback: MongoCallback<WriteOpResult>): void;\n\n    /**\n     * Update multiple documents on MongoDB.\n     *\n     * @param filter The Filter used to select the document to update.\n     * @param update The update operations to be applied to the document.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#updateMany\n     */\n    updateMany(filter: FilterQuery<T>, update: UpdateQuery<T>, callback: MongoCallback<UpdateWriteOpResult>): void;\n\n    /**\n     * Update multiple documents on MongoDB.\n     *\n     * @param filter The Filter used to select the document to update.\n     * @param update The update operations to be applied to the document.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#updateMany\n     */\n    updateMany(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: UpdateManyOptions): Promise<UpdateWriteOpResult>;\n\n    /**\n     * Update multiple documents on MongoDB.\n     *\n     * @param filter The Filter used to select the document to update.\n     * @param update The update operations to be applied to the document.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#updateMany\n     */\n    updateMany(filter: FilterQuery<T>, update: UpdateQuery<T>, options: UpdateManyOptions, callback: MongoCallback<UpdateWriteOpResult>): void;\n\n    /**\n     * Update a single document on MongoDB.\n     *\n     * @param filter The Filter used to select the document to update.\n     * @param update The update operations to be applied to the document.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#updateOne\n     */\n    updateOne(filter: FilterQuery<T>, update: UpdateQuery<T>, callback: MongoCallback<UpdateWriteOpResult>): void;\n\n    /**\n     * Update a single document on MongoDB.\n     *\n     * @param filter The Filter used to select the document to update.\n     * @param update The update operations to be applied to the document.\n     * @param options Optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#updateOne\n     */\n    updateOne(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: ReplaceOneOptions): Promise<UpdateWriteOpResult>;\n\n    /**\n     * Update a single document on MongoDB.\n     *\n     * @param filter The Filter used to select the document to update.\n     * @param update The update operations to be applied to the document.\n     * @param options Optional settings.\n     * @param callback The command result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#updateOne\n     */\n    updateOne(filter: FilterQuery<T>, update: UpdateQuery<T>, options: ReplaceOneOptions, callback: MongoCallback<UpdateWriteOpResult>): void;\n\n    /**\n     * Create a new Change Stream, watching for new changes (insertions, updates, replacements, deletions, and invalidations) in this collection.\n     * @param pipeline An array of aggregation pipeline stages through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.\n     * @param options Optional settings.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#watch\n     */\n    watch(pipeline?: Object[], options?: ChangeStreamOptions & { startAtClusterTime?: Timestamp, session?: ClientSession }): ChangeStream;\n\n}\n\n/**\n * Condition.\n */\nexport type Condition<T, P extends keyof T> = {\n    $eq?: T[P];\n    $gt?: T[P];\n    $gte?: T[P];\n    $in?: T[P][];\n    $lt?: T[P];\n    $lte?: T[P];\n    $ne?: T[P];\n    $nin?: T[P][];\n    $and?: (FilterQuery<T[P]> | T[P])[];\n    $or?: (FilterQuery<T[P]> | T[P])[];\n    $not?: (FilterQuery<T[P]> | T[P])[] | T[P];\n    $expr?: any;\n    $jsonSchema?: any;\n    $mod?: [number, number];\n    $regex?: RegExp;\n    $options?: string;\n    $text?: {\n        $search: string;\n        $language?: string;\n        $caseSensitive?: boolean;\n        $diacraticSensitive?: boolean;\n    };\n    $where?: Object;\n    $geoIntersects?: Object;\n    $geoWithin?: Object;\n    $near?: Object;\n    $nearSphere?: Object;\n    $elemMatch?: Object;\n    $size?: number;\n    $bitsAllClear?: Object;\n    $bitsAllSet?: Object;\n    $bitsAnyClear?: Object;\n    $bitsAnySet?: Object;\n    [key: string]: any;\n};\n\n/**\n * @see https://docs.mongodb.com/manual/reference/operator/update\n */\nexport type UpdateQuery<T> = {\n    $inc?: { [P in keyof T]?: number } | { [key: string]: number };\n    $min?: { [P in keyof T]?: number } | { [key: string]: number };\n    $max?: { [P in keyof T]?: number } | { [key: string]: number };\n    $mul?: { [P in keyof T]?: number } | { [key: string]: number };\n    $set?: Partial<T> | { [key: string]: any };\n    $setOnInsert?: Partial<T> | { [key: string]: any };\n    $unset?: { [P in keyof T]?: \"\" } | { [key: string]: \"\" };\n    $rename?: { [key: string]: keyof T } | { [key: string]: string };\n    $currentDate?: { [P in keyof T]?: (true | { $type: \"date\" | \"timestamp\" }) } | { [key: string]: (true | { $type: \"date\" | \"timestamp\" }) };\n    $addToSet?: Partial<T> | { [key: string]: any };\n    $pop?: { [P in keyof T]?: -1 | 1 } | { [key: string]: -1 | 1 };\n    $pull?: Partial<T> | { [key: string]: Condition<T, keyof T> };\n    $push?: Partial<T> | { [key: string]: any };\n    $pushAll?: Partial<T> | { [key: string]: Array<any> };\n    $each?: Partial<T> | { [key: string]: Array<any> };\n    $bit?: { [P in keyof T]?: any } | { [key: string]: any };\n};\n\nexport type FilterQuery<T> = {\n    [P in keyof T]?: T[P] | Condition<T, P>;\n} | { [key: string]: any };\n\n/**\n * The name of the target collection.\n *\n * @see http://docs.mongodb.org/manual/reference/command/collStats/\n */\nexport interface CollStats {\n\n    /**\n     * Namespace.\n     */\n    ns: string;\n\n    /**\n     * The number of objects or documents in this collection.\n     */\n    count: number;\n\n    /**\n     * Collection size in bytes.\n     */\n    size: number;\n\n    /**\n     * Average object size in bytes.\n     */\n    avgObjSize: number;\n\n    /**\n     * (Pre)allocated space for the collection in bytes.\n     */\n    storageSize: number;\n\n    /**\n     * Number of extents (contiguously allocated chunks of datafile space).\n     */\n    numExtents: number;\n\n    /**\n     * Number of indexes.\n     */\n    nindexes: number;\n\n    /**\n     * Size of the most recently created extent in bytes.\n     */\n    lastExtentSize: number;\n\n    /**\n     * Padding can speed up updates if documents grow.\n     */\n    paddingFactor: number;\n\n    /**\n     * A number that indicates the user-set flags on the collection. userFlags\n     * only appears when using the mmapv1 storage engine.\n     */\n    userFlags: number;\n\n    /**\n     * Total index size in bytes.\n     */\n    totalIndexSize: number;\n\n    /**\n     * Size of specific indexes in bytes.\n     */\n    indexSizes: {\n        _id_: number;\n        username: number;\n    };\n\n    /**\n     * This field will be “true” if the collection is capped.\n     */\n    capped: boolean;\n\n    /**\n     * Shows the maximum size of a capped collection.\n     */\n    maxSize: boolean;\n\n    /**\n     * This document contains data reported directly by the WiredTiger engine and other data for internal diagnostic use.\n     */\n    wiredTiger: any;\n\n    /**\n     * A document that reports data from the WiredTiger storage engine for each index in the collection.\n     * Other storage engines will return an empty document.\n     */\n    indexDetails: any;\n\n    /**\n     *\n     */\n    ok: number;\n}\n\n/**\n * CollectionAggregationOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#aggregate\n */\nexport interface CollectionAggregationOptions {\n\n    readPreference?: ReadPreference | string;\n\n    /**\n     * Return the query as cursor, on 2.6 > it returns as a real cursor on pre 2.6 it returns as an emulated cursor.\n     */\n    cursor?: { batchSize: number };\n\n    /**\n     * Explain returns the aggregation execution plan (requires mongodb 2.6 >).\n     */\n    explain?: boolean;\n\n    /**\n     * allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 >).\n     */\n    allowDiskUse?: boolean;\n\n    /**\n     * maxTimeMS specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point.\n     */\n    maxTimeMS?: boolean;\n\n    /**\n     * Allow driver to bypass schema validation in MongoDB 3.2 or higher.\n     */\n    bypassDocumentValidation?: boolean;\n}\n\n/**\n * CollectionInsertManyOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#insertMany\n */\nexport interface CollectionInsertManyOptions {\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * Serialize functions on any object.\n     */\n    serializeFunctions?: boolean;\n\n    /**\n     * Force server to assign _id values instead of driver.\n     */\n    forceServerObjectId?: boolean;\n}\n\nexport interface UpdateManyOptions {\n\n    /**\n     * Update operation is an upsert.\n     */\n    upsert?: boolean;\n\n    /**\n     * The write concern.\n     */\n    w?: any;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n}\n\n/**\n * CollectionBulkWriteOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#bulkWrite\n */\nexport interface CollectionBulkWriteOptions {\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * Serialize functions on any object.\n     */\n    serializeFunctions?: boolean;\n\n    /**\n     * Execute write operation in ordered or unordered fashion.\n     */\n    ordered?: boolean;\n\n    /**\n     * Allow driver to bypass schema validation in MongoDB 3.2 or higher.\n     */\n    bypassDocumentValidation?: boolean;\n}\n\n/**\n * BulkWriteOpResultObject.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#~BulkWriteOpResult\n */\nexport interface BulkWriteOpResultObject {\n\n    /**\n     * Number of documents inserted.\n     */\n    insertedCount?: number;\n\n    /**\n     * Number of documents matched for update.\n     */\n    matchedCount?: number;\n\n    /**\n     * Number of documents modified.\n     */\n    modifiedCount?: number;\n\n    /**\n     * Number of documents deleted.\n     */\n    deletedCount?: number;\n\n    /**\n     * Number of documents upserted.\n     */\n    upsertedCount?: number;\n\n    /**\n     * Inserted document generated Id's, hash key is the index of the originating operation.\n     */\n    insertedIds?: any;\n\n    /**\n     * Upserted document generated Id's, hash key is the index of the originating operation.\n     */\n    upsertedIds?: any;\n\n    /**\n     * The command result object.\n     */\n    result?: any;\n}\n\n/**\n * MongoCountPreferences.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#count\n */\nexport interface MongoCountPreferences {\n\n    /**\n     * The limit of documents to count.\n     */\n    limit?: number;\n\n    /**\n     * The number of documents to skip for the count.\n     */\n    skip?: boolean;\n\n    /**\n     * An index name hint for the query.\n     */\n    hint?: string;\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n}\n\n/**\n * DeleteWriteOpResultObject.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#~deleteWriteOpResult\n */\nexport interface DeleteWriteOpResultObject {\n\n    /**\n     * The raw result returned from MongoDB, field will vary depending on server version.\n     * @param ok Is 1 if the command executed correctly.\n     * @param n The total count of documents deleted.\n     */\n    result: {\n        ok?: number;\n        n?: number;\n    };\n\n    /**\n     * The connection object used for the operation.\n     */\n    connection?: any;\n\n    /**\n     * The number of documents deleted.\n     */\n    deletedCount?: number;\n}\n\n/**\n * FindAndModifyWriteOpResultObject.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#~findAndModifyWriteOpResult\n */\nexport interface FindAndModifyWriteOpResultObject {\n\n    /**\n     * Document returned from findAndModify command.\n     */\n    value?: any;\n\n    /**\n     * The raw lastErrorObject returned from the command.\n     */\n    lastErrorObject?: any;\n\n    /**\n     * Is 1 if the command executed correctly.\n     */\n    ok?: number;\n}\n\n/**\n * FindOneAndReplaceOption.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOneAndReplace\n */\nexport interface FindOneAndReplaceOption {\n\n    /**\n     * Limits the fields to return for all matching documents.\n     */\n    projection?: Object;\n\n    /**\n     * Determines which document the operation modifies if the query selects multiple documents.\n     */\n    sort?: Object;\n\n    /**\n     * The maximum amount of time to allow the query to run.\n     */\n    maxTimeMS?: number;\n\n    /**\n     * Upsert the document if it does not exist.\n     */\n    upsert?: boolean;\n\n    /**\n     * When false, returns the updated document rather than the original. The default is true.\n     */\n    returnOriginal?: boolean;\n}\n\n/**\n * GeoHaystackSearchOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#geoHaystackSearch\n */\nexport interface GeoHaystackSearchOptions {\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n\n    /**\n     * Include results up to maxDistance from the point.\n     */\n    maxDistance?: number;\n\n    /**\n     * Filter the results by a query.\n     */\n    search?: Object;\n\n    /**\n     * Max number of results to return.\n     */\n    limit?: number;\n}\n\n/**\n * GeoNearOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#geoNear\n */\nexport interface GeoNearOptions {\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n\n    /**\n     * Max number of results to return.\n     */\n    num?: number;\n\n    /**\n     * Include results starting at minDistance from a point (2.6 or higher).\n     */\n    minDistance?: number;\n\n    /**\n     * Include results up to maxDistance from the point.\n     */\n    maxDistance?: number;\n\n    /**\n     * Include a value to multiply the distances with allowing for range conversions.\n     */\n    distanceMultiplier?: number;\n\n    /**\n     * Filter the results by a query.\n     */\n    query?: Object;\n\n    /**\n     * Perform query using a spherical model.\n     */\n    spherical?: boolean;\n\n    /**\n     * The closest location in a document to the center of the search region will always be returned MongoDB > 2.X.\n     */\n    uniqueDocs?: boolean;\n\n    /**\n     * Include the location data fields in the top level of the results MongoDB > 2.X.\n     */\n    includeLocs?: boolean;\n}\n\n/**\n * A class representation of the BSON Code type.\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Code.html\n */\nexport declare class Code {\n    /**\n     *\n     * @param code a string or function.\n     * @param scope optional\n     */\n    constructor(code: string | Function, scope?: Object)\n\n    /**\n     * A string or function.\n     */\n    code: string | Function;\n\n    /**\n     * An optional scope for the function.\n     */\n    scope: any;\n}\n\n/**\n * CollectionOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#deleteMany\n */\nexport interface CollectionOptions {\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n}\n\n/**\n * Create a new OrderedBulkOperation instance (INTERNAL TYPE, do not instantiate directly).\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/OrderedBulkOperation.html\n */\nexport interface OrderedBulkOperation {\n    /**\n     * Get the number of operations in the bulk.\n     */\n    length: number;\n\n    /**\n     * Execute the ordered bulk operation.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/OrderedBulkOperation.html#execute\n     */\n    execute(callback: MongoCallback<BulkWriteResult>): void;\n\n    /**\n     * Execute the ordered bulk operation.\n     * @param options optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/OrderedBulkOperation.html#execute\n     */\n    execute(options?: FSyncOptions): Promise<BulkWriteResult>;\n\n    /**\n     * Execute the ordered bulk operation.\n     * @param options Optional settings.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/OrderedBulkOperation.html#execute\n     */\n    execute(options: FSyncOptions, callback: MongoCallback<BulkWriteResult>): void;\n\n    /**\n     * Initiate a find operation for an update/updateOne/remove/removeOne/replaceOne.\n     * @param selector The selector for the bulk operation.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/OrderedBulkOperation.html#find\n     */\n    find(selector: Object): FindOperatorsOrdered;\n\n    /**\n     * Add a single insert document to the bulk operation.\n     * @param doc The document to insert\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/OrderedBulkOperation.html#insert\n     */\n    insert(doc: Object): OrderedBulkOperation;\n}\n\n/**\n * BulkWriteResult.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/BulkWriteResult.html\n */\nexport interface BulkWriteResult {\n\n    /**\n     * Did bulk operation correctly execute.\n     */\n    ok: number;\n\n    /**\n     * number of inserted documents.\n     */\n    nInserted: number;\n\n    /**\n     * number of documents updated logically.\n     */\n    nUpdated: number;\n\n    /**\n     * Number of upserted documents.\n     */\n    nUpserted: number;\n\n    /**\n     *\n     Number of documents updated physically on disk.\n     */\n    nModified: number;\n\n    /**\n     * Number of removed documents.\n     */\n    nRemoved: number;\n\n    /**\n     * Return an array of inserted ids.\n     */\n    getInsertedIds(): Array<Object>;\n\n    /**\n     * Retrieve lastOp if available.\n     */\n    getLastOp(): Object;\n\n    /**\n     * Return raw internal result.\n     */\n    getRawResponse(): Object;\n\n    /**\n     * Return the upserted id at position x.\n     */\n    getUpsertedIdAt(index: number): Object;\n\n    /**\n     * Return an array of upserted ids.\n     */\n    getUpsertedIds(): Array<Object>;\n\n    /**\n     * Retrieve the write concern error if any.\n     */\n    getWriteConcernError(): WriteConcernError;\n\n    /**\n     * Returns a specific write error object.\n     */\n    getWriteErrorAt(index: number): WriteError;\n\n    /**\n     * Returns the number of write errors off the bulk operation.\n     */\n    getWriteErrorCount(): number;\n\n    /**\n     * Retrieve all write errors.\n     */\n    getWriteErrors(): Array<Object>;\n\n    /**\n     * Returns true if the bulk operation contains a write error.\n     */\n    hasWriteErrors(): boolean;\n}\n\n/**\n * Create a new WriteError instance (INTERNAL TYPE, do not instantiate directly).\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/WriteError.html\n */\nexport interface WriteError {\n\n    /**\n     * Write concern error code.\n     */\n    code: number;\n\n    /**\n     * Write concern error original bulk operation index.\n     */\n    index: number;\n\n    /**\n     * Write concern error message.\n     */\n    errmsg: string;\n}\n\n/**\n * Create a new WriteConcernError instance (INTERNAL TYPE, do not instantiate directly).\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/WriteConcernError.html\n */\nexport interface WriteConcernError {\n\n    /**\n     * Write concern error code.\n     */\n    code: number;\n\n    /**\n     * Write concern error message.\n     */\n    errmsg: string;\n}\n\n/**\n * Create a FindOperatorsOrdered instance (INTERNAL TYPE, do not instantiate directly).\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/FindOperatorsOrdered.html\n */\nexport interface FindOperatorsOrdered {\n\n    /**\n     * Add a remove operation to the bulk operation.\n     */\n    delete(): OrderedBulkOperation;\n\n    /**\n     * Add a remove one operation to the bulk operation.\n     */\n    deleteOne(): OrderedBulkOperation;\n\n    /**\n     * Add a replace one operation to the bulk operation.\n     */\n    replaceOne(doc: Object): OrderedBulkOperation;\n\n    /**\n     * Add a single update document to the bulk operation.\n     */\n    update(doc: Object): OrderedBulkOperation;\n\n    /**\n     * Add a single update one document to the bulk operation.\n     */\n    updateOne(doc: Object): OrderedBulkOperation;\n\n    /**\n     * Upsert modifier for update bulk operation.\n     */\n    upsert(): FindOperatorsOrdered;\n}\n\n/**\n * Create a new UnorderedBulkOperation instance (INTERNAL TYPE, do not instantiate directly).\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/UnorderedBulkOperation.html\n */\nexport interface UnorderedBulkOperation {\n\n    /**\n     * Get the number of operations in the bulk.\n     */\n    length: number;\n\n    /**\n     * Execute the ordered bulk operation.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/UnorderedBulkOperation.html#execute\n     */\n    execute(callback: MongoCallback<BulkWriteResult>): void;\n\n    /**\n     * Execute the ordered bulk operation.\n     * @param options optional.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/UnorderedBulkOperation.html#execute\n     */\n    execute(options?: FSyncOptions): Promise<BulkWriteResult>;\n\n    /**\n     * Execute the ordered bulk operation.\n     * @param options Optional settings.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/UnorderedBulkOperation.html#execute\n     */\n    execute(options: FSyncOptions, callback: MongoCallback<BulkWriteResult>): void;\n\n    /**\n     * Initiate a find operation for an update/updateOne/remove/removeOne/replaceOne.\n     * @param selector The selector for the bulk operation.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/UnorderedBulkOperation.html#find\n     */\n    find(selector: Object): FindOperatorsUnordered;\n\n    /**\n     * Add a single insert document to the bulk operation.\n     * @param doc The document to insert.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/UnorderedBulkOperation.html#insert\n     */\n    insert(doc: Object): UnorderedBulkOperation;\n}\n\n/**\n * Create a FindOperatorsUnordered instance (INTERNAL TYPE, do not instantiate directly).\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/FindOperatorsUnordered.html\n */\nexport interface FindOperatorsUnordered {\n\n    /**\n     * Get the number of operations in the bulk.\n     */\n    length: number;\n\n    /**\n     * Add a remove operation to the bulk operation.\n     */\n    remove(): UnorderedBulkOperation;\n\n    /**\n     * Add a remove one operation to the bulk operation.\n     */\n    removeOne(): UnorderedBulkOperation;\n\n    /**\n     * Add a replace one operation to the bulk operation.\n     * @param doc The new document to replace the existing one with.\n     */\n    replaceOne(doc: Object): UnorderedBulkOperation;\n\n    /**\n     * Add a single update document to the bulk operation.\n     * @param doc Update operations\n     */\n    update(doc: Object): UnorderedBulkOperation;\n\n    /**\n     * Add a single update one document to the bulk operation.\n     * @param doc Update operations\n     */\n    updateOne(doc: Object): UnorderedBulkOperation;\n\n    /**\n     * Upsert modifier for update bulk operation.\n     */\n    upsert(): FindOperatorsUnordered;\n}\n\n/**\n * MongodbFindOneOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#findOne\n */\nexport interface MongodbFindOneOptions {\n\n    /**\n     * Sets the limit of documents returned in the query.\n     */\n    limit?: number;\n\n    /**\n     * Set to sort the documents coming back from the query. Array of indexes, [['a', 1]] etc.\n     */\n    sort?: Array<any> | Object;\n\n    /**\n     * The fields to return in the query. Object of fields to include or exclude (not both), {'a':1}.\n     */\n    fields?: Object;\n\n    /**\n     * Set to skip N documents ahead in your query (useful for pagination).\n     */\n    skip?: number;\n\n    /**\n     * Tell the query to use specific indexes in the query. Object of indexes to use, {'_id':1}.\n     */\n    hint?: Object;\n\n    /**\n     * Explain the query instead of returning the data.\n     */\n    explain?: boolean;\n\n    /**\n     * Snapshot query.\n     */\n    snapshot?: boolean;\n\n    /**\n     * Specify if the cursor can timeout.\n     */\n    timeout?: boolean;\n\n    /**\n     * Specify if the cursor is tailable.\n     */\n    tailable?: boolean;\n\n    /**\n     * Set the batchSize for the getMoreCommand when iterating over the query results.\n     */\n    batchSize?: number;\n\n    /**\n     * Only return the index key.\n     */\n    returnKey?: boolean;\n\n    /**\n     * Limit the number of items to scan.\n     */\n    maxScan?: number;\n\n    /**\n     * Set index bounds.\n     */\n    min?: number;\n\n    /**\n     * Set index bounds.\n     */\n    max?: number;\n\n    /**\n     * Show disk location of results.\n     */\n    showDiskLoc?: boolean;\n\n    /**\n     * You can put a $comment field on a query to make looking in the profiler logs simpler.\n     */\n    comment?: string;\n\n    /**\n     * Return document results as raw BSON buffers.\n     */\n    raw?: boolean;\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n\n    /**\n     * Specify if the cursor should return partial results when querying against a sharded system.\n     */\n    partial?: boolean;\n\n    /**\n     * Number of milliseconds to wait before aborting the query.\n     */\n    maxTimeMs?: number;\n}\n\n/**\n * InsertWriteOpResult.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#~insertWriteOpResult\n */\nexport interface InsertWriteOpResult {\n\n    /**\n     * The total amount of documents inserted.\n     */\n    insertedCount: number;\n\n    /**\n     * All the documents inserted using insertOne/insertMany/replaceOne.\n     * Documents contain the _id field if forceServerObjectId == false for insertOne/insertMany.\n     */\n    ops: Array<any>;\n\n    /**\n     * All the generated _id's for the inserted documents.\n     */\n    insertedIds: Array<ObjectID>;\n\n    /**\n     * The connection object used for the operation.\n     */\n    connection: any;\n\n    /**\n     * The raw command result object returned from MongoDB (content might vary by server version).\n     * @param ok Is 1 if the command executed correctly.\n     * @param n The total count of documents inserted.\n     */\n    result: { ok: number, n: number };\n}\n\n/**\n * CollectionInsertOneOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#insertOne\n */\nexport interface CollectionInsertOneOptions {\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * Serialize functions on any object.\n     */\n    serializeFunctions?: boolean;\n\n    /**\n     * Force server to assign _id values instead of driver.\n     */\n    forceServerObjectId?: boolean;\n\n    /**\n     * Allow driver to bypass schema validation in MongoDB 3.2 or higher.\n     */\n    bypassDocumentValidation?: boolean;\n}\n\n/**\n * InsertOneWriteOpResult.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#~insertOneWriteOpResult\n */\nexport interface InsertOneWriteOpResult {\n\n    /**\n     * The total amount of documents inserted.\n     */\n    insertedCount: number;\n\n    /**\n     * All the documents inserted using insertOne/insertMany/replaceOne.\n     * Documents contain the _id field if forceServerObjectId == false for insertOne/insertMany.\n     */\n    ops: Array<any>;\n\n    /**\n     * The driver generated ObjectId for the insert operation.\n     */\n    insertedId: ObjectID;\n\n    /**\n     * The connection object used for the operation.\n     */\n    connection: any;\n\n    /**\n     * The raw command result object returned from MongoDB (content might vary by server version).\n     * @param ok Is 1 if the command executed correctly.\n     * @param n The total count of documents inserted.\n     */\n    result: { ok: number, n: number };\n}\n\n/**\n * ParallelCollectionScanOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#parallelCollectionScan\n */\nexport interface ParallelCollectionScanOptions {\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n\n    /**\n     * Set the batchSize for the getMoreCommand when iterating over the query results.\n     */\n    batchSize?: number;\n\n    /**\n     * The maximum number of parallel command cursors to return (the number of returned cursors will be in the range 1:numCursors).\n     */\n    numCursors?: number;\n\n    /**\n     * Return all BSON documents as Raw Buffer documents.\n     */\n    raw?: boolean;\n}\n\n/**\n * ParallelCollectionScanOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#replaceOne\n */\nexport interface ReplaceOneOptions {\n\n    /**\n     * Update operation is an upsert.\n     */\n    upsert?: boolean;\n\n    /**\n     * The write concern.\n     */\n    w?: number | string;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * Specify a journal write concern.\n     */\n    j?: boolean;\n\n    /**\n     * Allow driver to bypass schema validation in MongoDB 3.2 or higher.\n     */\n    bypassDocumentValidation?: boolean;\n}\n\n/**\n * ParallelCollectionScanOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#~updateWriteOpResult\n */\nexport interface UpdateWriteOpResult {\n\n    /**\n     * The raw result returned from MongoDB, field will vary depending on server version.\n     * @param ok Is 1 if the command executed correctly.\n     * @param n The total count of documents scanned.\n     * @param nModified The total count of documents modified.\n     */\n    result: { ok: number, n: number, nModified: number };\n\n    /**\n     * The connection object used for the operation.\n     */\n    connection: any;\n\n    /**\n     * The number of documents that matched the filter.\n     */\n    matchedCount: number;\n\n    /**\n     * The number of documents that were modified.\n     */\n    modifiedCount: number;\n\n    /**\n     * The number of documents upserted.\n     */\n    upsertedCount: number;\n\n    /**\n     * The upserted id.\n     * @param _id The upserted _id returned from the server.\n     */\n    upsertedId: { _id: ObjectID };\n}\n\n/**\n * ParallelCollectionScanOptions.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#mapReduce\n */\nexport interface MapReduceOptions {\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n\n    /**\n     * Sets the output target for the map reduce job.\n     * {inline:1} | {replace:'collectionName'} | {merge:'collectionName'} | {reduce:'collectionName'}.\n     */\n    out?: Object;\n\n    /**\n     * Query filter object.\n     */\n    query?: Object;\n\n    /**\n     * Sorts the input objects using this key. Useful for optimization, like sorting by the emit key for fewer reduces.\n     */\n    sort?: Object;\n\n    /**\n     * Number of objects to return from collection.\n     */\n    limit?: number;\n\n    /**\n     * Keep temporary data.\n     */\n    keeptemp?: boolean;\n\n    /**\n     * Finalize function.\n     */\n    finalize?: Function | string;\n\n    /**\n     * Can pass in variables that can be access from map/reduce/finalize.\n     */\n    scope?: Object;\n\n    /**\n     * It is possible to make the execution stay in JS. Provided in MongoDB > 2.0.X.\n     */\n    jsMode?: boolean;\n\n    /**\n     * Provide statistics on job execution time.\n     */\n    verbose?: boolean;\n\n    /**\n     * Allow driver to bypass schema validation in MongoDB 3.2 or higher.\n     */\n    bypassDocumentValidation?: boolean;\n}\n\n/**\n * WriteOpResult.\n *\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#~WriteOpResult\n */\nexport interface WriteOpResult {\n\n    /**\n     * All the documents inserted using insertOne/insertMany/replaceOne.\n     * Documents contain the _id field if forceServerObjectId == false for insertOne/insertMany.\n     */\n    ops: Array<any>;\n\n    /**\n     * The connection object used for the operation.\n     */\n    connection: any;\n\n    /**\n     * The command result object.\n     */\n    result: any;\n}\n\n/**\n * WriteOpResult.\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#~resultCallback\n */\nexport type CursorResult = any | void | boolean;\n\n/**\n * Creates a new Cursor instance (INTERNAL TYPE, do not instantiate directly).\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html\n */\nexport declare class Cursor<T> extends Readable {\n\n    /**\n     * Cursor query sort setting.\n     */\n    sortValue: string;\n\n    /**\n     * Is Cursor able to time out.\n     */\n    timeout: boolean;\n\n    /**\n     * Get cursor ReadPreference.\n     */\n    readPreference: ReadPreference;\n\n    /**\n     * @param flag The flag to set, must be one of following ['tailable', 'oplogReplay', 'noCursorTimeout', 'awaitData', 'partial'].\n     * @param value The flag boolean value.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#addCursorFlag\n     */\n    addCursorFlag(flag: string, value: boolean): Cursor<T>;\n\n    /**\n     * @param name The query modifier (must start with $, such as $orderby etc).\n     * @param value The flag boolean value.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#addQueryModifier\n     */\n    addQueryModifier(name: string, value: boolean): Cursor<T>;\n\n    /**\n     * @param value The batchSize for the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#batchSize\n     */\n    batchSize(value: number): Cursor<T>;\n\n    /**\n     * Clone the cursor.\n     * still returns the same type.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#clone\n     */\n    clone(): Cursor<T>;\n\n    /**\n     * Close the cursor, sending a KillCursor command and emitting close.\n     * The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#close\n     */\n    close(): Promise<CursorResult>;\n\n    /**\n     * Close the cursor, sending a KillCursor command and emitting close.\n     * The result callback.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#close\n     */\n    close(callback: MongoCallback<CursorResult>): void;\n\n    /**\n     * Add a comment to the cursor query allowing for tracking the comment in the log.\n     * @param value The comment attached to this query.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#comment\n     */\n    comment(value: string): Cursor<T>;\n\n    /**\n     * Get the count of documents for this cursor.\n     * @param applySkipLimit Should the count command apply limit and skip settings on the cursor or in the passed in options.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#count\n     */\n    count(applySkipLimit: boolean, callback: MongoCallback<number>): void;\n\n    /**\n     * Get the count of documents for this cursor.\n     * @param applySkipLimit Should the count command apply limit and skip settings on the cursor or in the passed in options.\n     * @param options Optional settings.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#count\n     */\n    count(applySkipLimit: boolean, options?: CursorCommentOptions): Promise<number>;\n\n    /**\n     * Get the count of documents for this cursor.\n     * @param applySkipLimit Should the count command apply limit and skip settings on the cursor or in the passed in options.\n     * @param options Optional settings.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#count\n     */\n    count(applySkipLimit: boolean, options: CursorCommentOptions, callback: MongoCallback<number>): void;\n\n    /**\n     * Execute the explain for the cursor.\n     * returns Promise if no callback passed.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#explain\n     */\n    explain(): Promise<CursorResult>;\n\n    /**\n     * Execute the explain for the cursor.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#explain\n     */\n    explain(callback: MongoCallback<CursorResult>): void;\n\n    /**\n     * Set the cursor query.\n     * @param filter The filter object used for the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#filter\n     */\n    filter(filter: Object): Cursor<T>;\n\n    /**\n     * Iterates over all the documents for this cursor using the iterator, callback pattern.\n     * @param iterator The iteration callback.\n     * @param callback The end callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#forEach\n     */\n    forEach(iterator: IteratorCallback<T>, callback: EndCallback): void;\n\n    /**\n     * Check if there is any document still available in the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#hasNext\n     */\n    hasNext(): Promise<boolean>;\n\n    /**\n     * Check if there is any document still available in the cursor.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#hasNext\n     */\n    hasNext(callback: MongoCallback<boolean>): void;\n\n    /**\n     * Set the cursor hint.\n     * @param hint If specified, then the query system will only consider plans using the hinted index.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#hint\n     */\n    hint(hint: Object): Cursor<T>;\n\n    /**\n     * Is the cursor closed.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#isClosed\n     */\n    isClosed(): boolean;\n\n    /**\n     * Set the limit for the cursor.\n     * @param value The limit for the cursor query.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#limit\n     */\n    limit(value: number): Cursor<T>;\n\n    /**\n     * SMap all documents using the provided function.\n     * @param transform The mapping transformation method.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#map\n     */\n    map(transform: Function): Cursor<T>;\n\n    /**\n     * Set the cursor max.\n     * @param max Specify a $max value to specify the exclusive upper bound for a specific index in\n     * order to constrain the results of find(). The $max specifies the upper bound for\n     * all keys of a specific index in order.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#max\n     */\n    max(max: number): Cursor<T>;\n\n    /**\n     * Set a maxAwaitTimeMS on a tailing cursor query to allow to customize the\n     * timeout value for the option awaitData (Only supported on MongoDB 3.2 or higher, ignored otherwise).\n     * @param value Number of milliseconds to wait before aborting the tailed query.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#maxAwaitTimeMS\n     */\n    maxAwaitTimeMS(value: number): Cursor<T>;\n\n    /**\n     * Set the cursor maxScan.\n     * @param maxScan Constrains the query to only scan the specified number of documents when fulfilling the query.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#maxScan\n     */\n    maxScan(maxScan: Object): Cursor<T>;\n\n    /**\n     * Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher).\n     * @param value Number of milliseconds to wait before aborting the query.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#maxTimeMS\n     */\n    maxTimeMS(value: number): Cursor<T>;\n\n    /**\n     * Set the cursor min.\n     * @param min Specify a $min value to specify the inclusive lower bound for a specific index in order to\n     * constrain the results of find(). The $min specifies the lower bound for all keys of a specific index in order.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#min\n     */\n    min(min: number): Cursor<T>;\n\n    /**\n     * Get the next available document from the cursor, returns null if no more documents are available.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#next\n     */\n    next(): Promise<CursorResult>;\n\n    /**\n     * Get the next available document from the cursor, returns null if no more documents are available.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#next\n     */\n    next(callback: MongoCallback<CursorResult>): void;\n\n    /**\n     * Sets a field projection for the query.\n     * @param value The field projection object.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#project\n     */\n    project(value: Object): Cursor<T>;\n\n    /**\n     * The read() method pulls some data out of the internal buffer and returns it.\n     * If there is no data available, then it will return null.\n     * @param size Optional argument to specify how much data to read.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#read\n     */\n    read(size: number): string | Buffer | void;\n\n    /**\n     * Set the cursor returnKey.\n     * @param returnKey Only return the index field or fields for the results of the query. If $returnKey is set\n     * to true and the query does not use an index to perform the read operation,\n     * the returned documents will not contain any fields. Use one of the following forms:\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#next\n     */\n    returnKey(returnKey: Object): Cursor<T>;\n\n    /**\n     * Resets the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#rewind\n     */\n    rewind(): void;\n\n    /**\n     * Set a node.js specific cursor option.\n     * @param field The cursor option to set ['numberOfRetries', 'tailableRetryInterval'].\n     * @param value The field value.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#setCursorOption\n     */\n    setCursorOption(field: string, value: Object): Cursor<T>;\n\n    /**\n     * Set the ReadPreference for the cursor.\n     * @param readPreference The new read preference for the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#setReadPreference\n     */\n    setReadPreference(readPreference: string | ReadPreference): Cursor<T>;\n\n    /**\n     * Set the cursor showRecordId.\n     * @param showRecordId The $showDiskLoc option has now been deprecated and replaced with the\n     * showRecordId field. $showDiskLoc will still be accepted for OP_QUERY stye find.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#showRecordId\n     */\n    showRecordId(showRecordId: Object): Cursor<T>;\n\n    /**\n     * Set the skip for the cursor.\n     * @param value The skip for the cursor query.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#skip\n     */\n    skip(value: number): Cursor<T>;\n\n    /**\n     * Set the cursor snapshot.\n     * @param snapshot The $snapshot operator prevents the cursor from returning a document more than\n     * once because an intervening write operation results in a move of the document.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#snapshot\n     */\n    snapshot(snapshot: Object): Cursor<T>;\n\n    /**\n     * Sets the sort order of the cursor query.\n     * @param keyOrList The key or keys set for the sort.\n     * @param direction The direction of the sorting (1 or -1).\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#sort\n     */\n    sort(keyOrList: string | Object[] | Object, direction?: number): Cursor<T>;\n\n    /**\n     * Return a modified Readable stream including a possible transform method.\n     * @param options Optional settings.\n     * @param transform A transformation method applied to each document emitted by the stream.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#stream\n     */\n    stream(options?: { transform?: Function }): Cursor<T>;\n\n    /**\n     * Returns an array of documents. The caller is responsible for making sure that there is enough\n     * memory to store the results. Note that the array only contain partial results when this cursor had\n     * been previously accessed. In that case, cursor.rewind() can be used to reset the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#toArray\n     */\n    toArray(): Promise<T[]>;\n\n    /**\n     * Returns an array of documents. The caller is responsible for making sure that there is enough\n     * memory to store the results. Note that the array only contain partial results when this cursor had\n     * been previously accessed. In that case, cursor.rewind() can be used to reset the cursor.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#toArray\n     */\n    toArray(callback: MongoCallback<T[]>): void;\n\n    /**\n     * This is useful in certain cases where a stream is being consumed by a parser, which needs to \"un-consume\" some\n     * data that it has optimistically pulled out of the source, so that the stream can be passed on to some other party.\n     * @param stream Chunk of data to unshift onto the read queue.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#unshift\n     */\n    unshift(stream: Buffer | string): void;\n}\n\n/**\n * Get the count of documents for this cursor.\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#count\n */\nexport interface CursorCommentOptions {\n\n    /**\n     * The number of documents to skip.\n     */\n    skip?: number;\n\n    /**\n     * The maximum amounts to count before aborting.\n     */\n    limit?: number;\n\n    /**\n     * Number of miliseconds to wait before aborting the query.\n     */\n    maxTimeMS?: number;\n\n    /**\n     * An index name hint for the query.\n     */\n    hint?: string;\n\n    /**\n     * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED,\n     * ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).\n     */\n    readPreference?: ReadPreference | string;\n}\n\n/**\n * Creates a new Change Stream instance.\n * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ChangeStream.html\n */\nexport declare class ChangeStream extends Readable {\n\n    constructor(changeDomain: MongoClient | Db | Collection<any>, pipeline: Object[], options?: ChangeStreamOptions);\n\n    /**\n     * Close the Change Stream.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ChangeStream.html#close\n     */\n    close(): Promise<any>;\n\n    /**\n     * Close the Change Stream.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ChangeStream.html#close\n     */\n    close(callback: MongoCallback<any>): void;\n\n    /**\n     * Check if there is any document still available in the Change Stream.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ChangeStream.html#hasNext\n     */\n    hasNext(): Promise<any>;\n\n    /**\n     * Check if there is any document still available in the Change Stream.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ChangeStream.html#hasNext\n     */\n    hasNext(callback: MongoCallback<any>): void;\n\n    /**\n     * Is the cursor closed.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ChangeStream.html#isClosed\n     */\n    isClosed(): boolean;\n\n    /**\n     * Get the next available document from the Change Stream, returns null if no more documents are available.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ChangeStream.html#next\n     */\n    next(): Promise<any>;\n\n    /**\n     * Get the next available document from the Change Stream, returns null if no more documents are available.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ChangeStream.html#next\n     */\n    next(callback: MongoCallback<any>): void;\n\n    /**\n     * Return a modified Readable stream including a possible transform method.\n     * @param options Optional settings.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ChangeStream.html#stream\n     */\n    stream(options?: { transform: Function }): Cursor<any>;\n}\n\n/**\n * ChangeStreamOptions\n */\nexport interface ChangeStreamOptions {\n\n    /**\n     * Allowed values: ‘default’, ‘updateLookup’.\n     * When set to ‘updateLookup’, the change stream will include both a delta describing the changes to the document,\n     * as well as a copy of the entire document that was changed from some time after the change occurred.\n     */\n    fullDocument?: string;\n\n    /**\n     * The maximum amount of time for the server to wait on new documents to satisfy a change stream query\n     */\n    maxAwaitTimeMS?: number;\n\n    /**\n     * Specifies the logical starting point for the new change stream.\n     * This should be the _id field from a previously returned change stream document.\n     */\n    resumeAfter?: Object;\n\n    /**\n     * The number of documents to return per batch.\n     */\n    batchSize?: number;\n\n    /**\n     * Specify collation settings for operation.\n     */\n    collation?: CollationDocument;\n\n    /**\n     * The read preference. Defaults to the read preference of the database or collection.\n     */\n    readPreference?: ReadPreference;\n}\n\n/**\n * CollationDocument\n */\nexport interface CollationDocument {\n    locale: string;\n    strength?: number;\n    caseLevel?: boolean;\n    caseFirst?: string;\n    numericOrdering?: boolean;\n    alternate?: string;\n    maxVariable?: string;\n    backwards?: boolean;\n    normalization?: boolean;\n\n}\n\n/**\n * A class representing a client session on the server.\n * WARNING: not meant to be instantiated directly.\n * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html\n */\nexport interface ClientSession extends EventEmitter {\n\n    /**\n     * The server id associated with this session\n     */\n    id: any;\n\n    /**\n     * Aborts the currently active transaction in this session.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html#abortTransaction\n     */\n    abortTransaction(): Promise<void>;\n\n    /**\n     * Aborts the currently active transaction in this session.\n     * @param callback Optional callback for completion of this operation\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html#abortTransaction\n     */\n    abortTransaction(callback?: MongoCallback<void>): Promise<void>;\n\n    /**\n     * Advances the operationTime for a ClientSession.\n     * @param operationTime the BSON.Timestamp of the operation type it is desired to advance to.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html#advanceOperationTime\n     */\n    advanceOperationTime(operationTime: Timestamp): void;\n\n    /**\n     * Commits the currently active transaction in this session.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html#commitTransaction\n     */\n    commitTransaction(): Promise<void>;\n\n    /**\n     * Commits the currently active transaction in this session.\n     * @param callback Optional callback for completion of this operation.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html#commitTransaction\n     */\n    commitTransaction(callback?: MongoCallback<void>): Promise<void>;\n\n    /**\n     * Ends this session on the server.\n     * @param callback Optional callback for completion of this operation.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html#endSession\n     */\n    endSession(callback?: MongoCallback<void>): void;\n\n    /**\n     * Ends this session on the server.\n     * @param options Optional settings. Currently reserved for future use.\n     * @param callback Optional callback for completion of this operation.\n     * @see @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html#endSession\n     */\n    endSession(options?: any, callback?: MongoCallback<void>): void;\n\n    /**\n     * Used to determine if this session equals another.\n     * @param session A class representing a client session on the server.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html#equals\n     */\n    equals(session: ClientSession): boolean;\n\n    /**\n     * Increment the transaction number on the internal ServerSession.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html#incrementTransactionNumber\n     */\n    incrementTransactionNumber(): void;\n\n    /**\n     * Check this session is currently in a transaction or not.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html#inTransaction\n     */\n    inTransaction(): boolean;\n\n    /**\n     * Starts a new transaction with the given options.\n     * @param options Optional settings.\n     * @see http://mongodb.github.io/node-mongodb-native/3.1/api/ClientSession.html#startTransaction\n     */\n    startTransaction(options?: TransactionOptions): void;\n\n}\n\n/**\n * Options to pass when creating a Client Session\n * @see http://mongodb.github.io/node-mongodb-native/3.1/api/global.html#SessionOptions\n */\nexport interface SessionOptions {\n\n    /**\n     * Whether causal consistency should be enabled on this session\n     */\n    causalConsistency?: boolean;\n\n    /**\n     * The default TransactionOptions to use for transactions started on this session.\n     */\n    defaultTransactionOptions?: TransactionOptions;\n}\n\n/**\n * TransactionOptions\n */\nexport interface TransactionOptions {\n\n    readConcern?: ReadConcern;\n    writeConcern?: WriteConcern;\n    readPreference?: ReadPreference;\n}\n\n/**\n * MongoClientCommonOption\n */\nexport interface MongoClientCommonOption {\n    /**\n     * Do not make the db an event listener to the original connection.\n     */\n    noListener?: boolean;\n\n    /**\n     * Control if you want to return a cached instance or have a new one created\n     */\n    returnNonCachedInstance?: boolean;\n}\n\n/**\n * @see http://mongodb.github.io/node-mongodb-native/3.1/api/global.html#ReadConcern\n */\nexport type ReadConcernLevel = \"local\" | \"available\" | \"majority\" | \"linearizable\" | \"snapshot\";\n\n/**\n * The MongoDB ReadConcern, which allows for control of the consistency and isolation properties\n * of the data read from replica sets and replica set shards.\n * @see http://mongodb.github.io/node-mongodb-native/3.1/api/global.html#ReadConcern\n */\nexport interface ReadConcern {\n    level?: ReadConcernLevel;\n}\n\n/**\n * A MongoDB WriteConcern, which describes the level of acknowledgement\n * requested from MongoDB for write operations.\n * @see http://mongodb.github.io/node-mongodb-native/3.1/api/global.html#WriteConcern\n */\nexport interface WriteConcern {\n\n    /**\n     * requests acknowledgement that the write operation has\n     * propagated to a specified number of mongod hosts\n     */\n    w?: number | \"majority\" | string;\n\n    /**\n     * requests acknowledgement from MongoDB that the write operation has\n     * been written to the journal\n     */\n    j?: boolean;\n\n    /**\n     * a time limit, in milliseconds, for the write concern\n     */\n    wtimeout?: number;\n}\n\n/**\n * The callback format for the forEach iterator method.\n * @param doc An emitted document for the iterator.\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#~iteratorCallback\n */\nexport interface IteratorCallback<T> {\n    (doc: T): void;\n}\n\n/**\n * The callback error format for the forEach iterator method.\n * @param error An error instance representing the error during the execution.\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#~endCallback\n */\nexport interface EndCallback {\n    (error: MongoError): void;\n}\n\n/**\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#~resultCallback\n */\nexport type AggregationCursorResult = any | void;\n\n/**\n * Creates a new Aggregation Cursor instance (INTERNAL TYPE, do not instantiate directly),\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html\n */\nexport interface AggregationCursor<T> extends Readable {\n\n    /**\n     * Set the batch size for the cursor.\n     * @param value The batchSize for the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#batchSize\n     */\n    batchSize(value: number): AggregationCursor<T>;\n\n    /**\n     * Clone the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#clone\n     */\n    clone(): AggregationCursor<T>;\n\n    /**\n     * Close the cursor, sending a AggregationCursor command and emitting close.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#close\n     */\n    close(): Promise<AggregationCursorResult>;\n\n    /**\n     * Close the cursor, sending a AggregationCursor command and emitting close.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#close\n     */\n    close(callback: MongoCallback<AggregationCursorResult>): void;\n\n    /**\n     * Iterates over all the documents for this cursor. As with {cursor.toArray}, not all of the elements will\n     * be iterated if this cursor had been previouly accessed. In that case, {cursor.rewind} can be used to reset\n     * the cursor. However, unlike {cursor.toArray}, the cursor will only hold a maximum of batch size elements\n     * at any given time if batch size is specified. Otherwise, the caller is responsible for making sure\n     * that the entire result can fit the memory.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#each\n     */\n    each(callback: MongoCallback<AggregationCursorResult>): void;\n\n    /**\n     * Execute the explain for the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#explain\n     */\n    explain(): Promise<AggregationCursorResult>;\n\n    /**\n     * Execute the explain for the cursor.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#explain\n     */\n    explain(callback: MongoCallback<AggregationCursorResult>): void;\n\n    /**\n     * Add a geoNear stage to the aggregation pipeline.\n     * @param document The geoNear stage document.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#geoNear\n     */\n    geoNear(document: Object): AggregationCursor<T>;\n\n    /**\n     * Add a group stage to the aggregation pipeline.\n     * @param document The group stage document.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#group\n     */\n    group(document: Object): AggregationCursor<T>;\n\n    /**\n     * Is the cursor closed.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#isClosed\n     */\n    isClosed(): boolean;\n\n    /**\n     * Add a limit stage to the aggregation pipeline.\n     * @param value The state limit value.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#limit\n     */\n    limit(value: number): AggregationCursor<T>;\n\n    /**\n     * Add a match stage to the aggregation pipeline.\n     * @param document The match stage document.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#match\n     */\n    match(document: Object): AggregationCursor<T>;\n\n    /**\n     * Add a maxTimeMS stage to the aggregation pipeline.\n     * @param value The state maxTimeMS value.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#maxTimeMS\n     */\n    maxTimeMS(value: number): AggregationCursor<T>;\n\n    /**\n     * Get the next available document from the cursor, returns null if no more documents are available.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#next\n     */\n    next(): Promise<AggregationCursorResult>;\n\n    /**\n     * Get the next available document from the cursor, returns null if no more documents are available.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#next\n     */\n    next(callback: MongoCallback<AggregationCursorResult>): void;\n\n    /**\n     * Add a out stage to the aggregation pipeline.\n     * @param destination The destination name.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#out\n     */\n    out(destination: string): AggregationCursor<T>;\n\n    /**\n     * Add a project stage to the aggregation pipeline.\n     * @param document The project stage document.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#project\n     */\n    project(document: Object): AggregationCursor<T>;\n\n    /**\n     * The read() method pulls some data out of the internal buffer and returns it.\n     * If there is no data available, then it will return null.\n     * @param size Optional argument to specify how much data to read.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#read\n     */\n    read(size: number): string | Buffer | void;\n\n    /**\n     * Add a redact stage to the aggregation pipeline.\n     * @param document The redact stage document.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#redact\n     */\n    redact(document: Object): AggregationCursor<T>;\n\n    /**\n     * Resets the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#rewind\n     */\n    rewind(): AggregationCursor<T>;\n\n    /**\n     * Add a skip stage to the aggregation pipeline.\n     * @param value The state skip value.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#setEncoding\n     */\n    skip(value: number): AggregationCursor<T>;\n\n    /**\n     * Add a sort stage to the aggregation pipeline.\n     * @param document The sort stage document.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#sort\n     */\n    sort(document: Object): AggregationCursor<T>;\n\n    /**\n     * Returns an array of documents. The caller is responsible for making sure that there\n     * is enough memory to store the results. Note that the array only contain partial\n     * results when this cursor had been previouly accessed. In that case,\n     * cursor.rewind() can be used to reset the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#toArray\n     */\n    toArray(): Promise<T[]>;\n\n    /**\n     * Returns an array of documents. The caller is responsible for making sure that there\n     * is enough memory to store the results. Note that the array only contain partial\n     * results when this cursor had been previouly accessed. In that case,\n     * cursor.rewind() can be used to reset the cursor.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#toArray\n     */\n    toArray(callback: MongoCallback<T[]>): void;\n\n    /**\n     * This is useful in certain cases where a stream is being consumed by a parser,\n     * which needs to \"un-consume\" some data that it has optimistically pulled out of the source,\n     * so that the stream can be passed on to some other party.\n     * @param stream Chunk of data to unshift onto the read queue.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#unshift\n     */\n    unshift(stream: Buffer | string): void;\n\n    /**\n     * Add a unwind stage to the aggregation pipeline.\n     * @param field The unwind field name.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/AggregationCursor.html#unwind\n     */\n    unwind(field: string): AggregationCursor<T>;\n}\n\n/**\n * CommandCursor.\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html\n */\nexport interface CommandCursor extends Readable {\n\n    /**\n     * Set the batch size for the cursor.\n     * @param value The batchSize for the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#batchSize\n     */\n    batchSize(value: number): CommandCursor;\n\n    /**\n     * Clone the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#clone\n     */\n    clone(): CommandCursor;\n\n    /**\n     * Close the cursor, sending a KillCursor command and emitting close.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#close\n     */\n    close(): Promise<AggregationCursorResult>;\n\n    /**\n     * Close the cursor, sending a KillCursor command and emitting close.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#close\n     */\n    close(callback: MongoCallback<AggregationCursorResult>): void;\n\n    /**\n     * Each\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#each\n     */\n    each(callback: MongoCallback<AggregationCursorResult>): void;\n\n    /**\n     * Is the cursor closed.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#isClosed\n     */\n    isClosed(): boolean;\n\n    /**\n     * Add a maxTimeMS stage to the aggregation pipeline.\n     * @param value The state maxTimeMS value.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#maxTimeMS\n     */\n    maxTimeMS(value: number): CommandCursor;\n\n    /**\n     * Get the next available document from the cursor, returns null if no more documents are available.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#next\n     */\n    next(): Promise<AggregationCursorResult>;\n\n    /**\n     * Get the next available document from the cursor, returns null if no more documents are available.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#next\n     */\n    next(callback: MongoCallback<AggregationCursorResult>): void;\n\n    /**\n     * The read() method pulls some data out of the internal buffer and returns it.\n     * If there is no data available, then it will return null.\n     * @param size Optional argument to specify how much data to read.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#read\n     */\n    read(size: number): string | Buffer | void;\n\n    /**\n     * Resets the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#rewind\n     */\n    rewind(): CommandCursor;\n\n    /**\n     * Set the ReadPreference for the cursor.\n     * @param readPreference The new read preference for the cursor.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#setReadPreference\n     */\n    setReadPreference(readPreference: string | ReadPreference): CommandCursor;\n\n    /**\n     * Returns an array of documents. The caller is responsible for making sure that there is enough memory\n     * to store the results. Note that the array only contain partial results when this cursor had been previouly accessed.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#toArray\n     */\n    toArray(): Promise<any[]>;\n\n    /**\n     * Returns an array of documents. The caller is responsible for making sure that there is enough memory\n     * to store the results. Note that the array only contain partial results when this cursor had been previouly accessed.\n     * @param callback The result callback.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#toArray\n     */\n    toArray(callback: MongoCallback<any[]>): void;\n\n    /**\n     * This is useful in certain cases where a stream is being consumed by a parser,\n     * which needs to \"un-consume\" some data that it has optimistically pulled out of the source,\n     * so that the stream can be passed on to some other party.\n     * @param stream Chunk of data to unshift onto the read queue.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/CommandCursor.html#unshift\n     */\n    unshift(stream: Buffer | string): void;\n}\n\n/**\n * GridFSBucket.\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html\n */\nexport declare class GridFSBucket {\n\n    /**\n     *\n     * @param db A db handle.\n     * @param options Optional settings.\n     */\n    constructor(db: Db, options?: GridFSBucketOptions);\n\n    /**\n     * Deletes a file with the given id.\n     * @param id The id of the file doc\n     * @param callback The result callback\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html#delete\n     */\n    delete(id: ObjectID, callback?: GridFSBucketErrorCallback): void;\n\n    /**\n     * Removes this bucket's files collection, followed by its chunks collection.\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html#drop\n     */\n    drop(callback?: GridFSBucketErrorCallback): void;\n\n    /**\n     * Convenience wrapper around find on the files collection\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html#find\n     */\n    find(filter?: Object, options?: GridFSBucketFindOptions): Cursor<any>;\n\n    /**\n     * Returns a readable stream (GridFSBucketReadStream) for streaming file.\n     * @param id The id of the file doc.\n     * @param options Optional settings\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html#openDownloadStream\n     */\n    openDownloadStream(id: ObjectID, options?: { start: number, end: number }): GridFSBucketReadStream;\n\n    /**\n     * Returns a readable stream (GridFSBucketReadStream) for streaming file\n     * @param filename The id of the file doc\n     * @param options Optional settings\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html#openDownloadStreamByName\n     */\n\n    openDownloadStreamByName(filename: string, options?: { revision: number, start: number, end: number }): GridFSBucketReadStream;\n\n    /**\n     * Returns a writable stream (GridFSBucketWriteStream) for writing buffers to GridFS.\n     * The stream's 'id' property contains the resulting file's id.\n     * @param filename The value of the 'filename' key in the files doc.\n     * @param options Optional settings\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html#openUploadStream\n     */\n    openUploadStream(filename: string, options?: GridFSBucketOpenUploadStreamOptions): GridFSBucketWriteStream;\n\n    /**\n     * Returns a writable stream (GridFSBucketWriteStream) for writing buffers to GridFS for a custom file id.\n     * The stream's 'id' property contains the resulting file's id.\n     * @param id A custom id used to identify the file.\n     * @param filename The value of the 'filename' key in the files doc.\n     * @param options Optional settings\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html#openUploadStreamWithId\n     */\n    openUploadStreamWithId(id: string | number | Object, filename: string, options?: GridFSBucketOpenUploadStreamOptions): GridFSBucketWriteStream;\n\n    /**\n     * Renames the file with the given _id to the given string.\n     * @param id the id of the file to rename.\n     * @param filename new name for the file.\n     * @param callback The result callback\n     * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html#rename\n     */\n    rename(id: ObjectID, filename: string, callback?: GridFSBucketErrorCallback): void;\n}\n\n/**\n * Constructor for a streaming GridFS interface.\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html\n */\nexport interface GridFSBucketOptions {\n\n    /**\n     * The 'files' and 'chunks' collections will be prefixed with the bucket name followed by a dot.\n     */\n    bucketName?: string;\n\n    /**\n     * Number of bytes stored in each chunk. Defaults to 255KB.\n     */\n    chunkSizeBytes?: number;\n\n    /**\n     * Optional write concern to be passed to write operations, for instance { w: 1 }.\n     */\n    writeConcern?: WriteConcern;\n\n    /**\n     * Optional read preference to be passed to read operations.\n     */\n    ReadPreference?: ReadPreference;\n}\n\n/**\n * GridFSBucketErrorCallback.\n * @param err An error instance representing any errors that occurred.\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html#~errorCallback\n */\nexport interface GridFSBucketErrorCallback {\n    (err?: MongoError): void;\n}\n\n/**\n * GridFSBucketFindOptions.\n * @see http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html#find\n */\nexport interface GridFSBucketFindOptions {\n\n    /**\n     * Optional batch size for cursor.\n     */\n    batchSize?: number;\n\n    /**\n     * Optional limit for cursor.\n     */\n    limit?: number;\n\n    /**\n     * Optional maxTimeMS for cursor.\n     */\n    maxTimeMS?: number;\n\n    /**\n     * Optionally set cursor's noCursorTimeout flag.\n     */\n    noCursorTimeout?: boolean;\n\n    /**\n     * Optional skip for cursor.\n     */\n    skip?: number;\n\n    /**\n     * Optional sort for cursor.\n     */\n    sort?: Object;\n}\n\n/**\n * GridFSBucketOpenUploadStreamOptions.\n * @see https://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html#openUploadStream\n */\nexport interface GridFSBucketOpenUploadStreamOptions {\n\n    /**\n     * Optional overwrite this bucket's chunkSizeBytes for this file.\n     */\n    chunkSizeBytes?: number;\n\n    /**\n     * Optional object to store in the file document's metadata field.\n     */\n    metadata?: Object;\n\n    /**\n     * Optional string to store in the file document's contentType field.\n     */\n    contentType?: string;\n\n    /**\n     * Optional array of strings to store in the file document's aliases field.\n     */\n    aliases?: Array<string>;\n}\n\n/**\n * GridFSBucketReadStream.\n * @see https://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucketReadStream.html\n */\nexport declare class GridFSBucketReadStream extends Readable {\n\n    /**\n     *\n     * @param chunks Handle for chunks collection.\n     * @param files Handle for files collection.\n     * @param readPreference The read preference to use.\n     * @param filter The query to use to find the file document.\n     * @param options Optional settings.\n     */\n    constructor(chunks: Collection<any>, files: Collection<any>, readPreference: Object, filter: Object, options?: GridFSBucketReadStreamOptions);\n}\n\n/**\n * GridFSBucketReadStreamOptions.\n * @see https://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucketReadStream.html\n */\nexport interface GridFSBucketReadStreamOptions {\n\n    /**\n     * Optional sort for the file find query.\n     */\n    sort?: number;\n\n    /**\n     * Optional skip for the file find query.\n     */\n    skip?: number;\n\n    /**\n     * Optional 0-based offset in bytes to start streaming from.\n     */\n    start?: number;\n\n    /**\n     * Optional 0-based offset in bytes to stop streaming before.\n     */\n    end?: number;\n}\n\n/**\n * GridFSBucketWriteStream\n * @see https://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucketWriteStream.html\n */\nexport declare class GridFSBucketWriteStream extends Writable {\n\n    /**\n     *\n     * @param bucket Handle for this stream's corresponding bucket.\n     * @param filename The value of the 'filename' key in the files doc.\n     * @param options Optional settings.\n     */\n    constructor(bucket: GridFSBucket, filename: string, options?: GridFSBucketWriteStreamOptions);\n}\n\n/**\n * GridFSBucketWriteStreamOptions.\n * @see https://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucketWriteStream.html\n */\nexport interface GridFSBucketWriteStreamOptions {\n\n    /**\n     * Custom file id for the GridFS file.\n     */\n    id?: string | number | Object;\n\n    /**\n     * The chunk size to use, in bytes.\n     */\n    chunkSizeBytes?: number;\n\n    /**\n     * The write concern.\n     */\n    w?: number;\n\n    /**\n     * The write concern timeout.\n     */\n    wtimeout?: number;\n\n    /**\n     * The journal write concern.\n     */\n    j?: number;\n}\n"],"sourceRoot":"../.."}