/**
 * opens an existing named database from an environment
 * @param {lmdb.RootDatabase} env - environment object used thigh level to interact with all data in an environment
 * @param {String} dbiName - name of the dbi (KV store)
 * @returns {lmdb.Database} - returns reference to the dbi
 */
export function openDBI(env: lmdb.RootDatabase, dbiName: string): lmdb.Database;
/**
 * opens an environment
 * @returns {lmdb.RootDatabase} - lmdb environment object
 * @param {String} basePath - the base pase under which the envrinment resides
 * @param {String} envName -  the name of the environment
 * @param {Boolean} isTxn - defines if is a transactions environemnt
 */
export function openEnvironment(basePath: string, envName: string, isTxn?: boolean): lmdb.RootDatabase;
/***  ENVIRONMENT FUNCTIONS ***/
/**
 * creates a new environment
 * @param basePath - base path the environment will reside in
 * @param envName - name of the environment
 * @param {Boolean} isTxn - defines if is a transactions environment
 * @returns {Promise<lmdb.RootDatabase>} - LMDB environment object
 */
export function createEnvironment(basePath: any, envName: any, isTxn?: boolean, isV3?: boolean): Promise<lmdb.RootDatabase>;
/**
 * lists all dbis in an environment
 * @param {lmdb.RootDatabase} env - environment object used high level to interact with all data in an environment
 * @returns {[String]}
 */
export function listDBIs(env: lmdb.RootDatabase): [string];
/***  DBI FUNCTIONS ***/
/**
 * lists dbis in a map with their defintition as the value
 * @param {lmdb.RootDatabase} env - environment object used high level to interact with all data in an environment
 * @returns {{String, DBIDefinition}}
 */
export function listDBIDefinitions(env: lmdb.RootDatabase): {
    String: any;
    DBIDefinition: any;
};
/**
 * creates a new named database in an environment
 * @param {lmdb.RootDatabase} env - environment object used high level to interact with all data in an environment
 * @param {String} dbiName - name of the dbi (KV store)
 * @param {Boolean} [dupSort] - optional, determines if the dbi allows duplicate keys or not
 * @param {Boolean} isHashAttribute - defines if the dbi being created is the hash_attribute fro the environment / table
 * @returns {*} - reference to the dbi
 */
export function createDBI(env: lmdb.RootDatabase, dbiName: string, dupSort?: boolean, isHashAttribute?: boolean): any;
/**
 * removes a named database from an environment
 * @param {lmdb.RootDatabase} env - environment object used thigh level to interact with all data in an environment
 * @param {String} dbiName - name of the dbi (KV store)
 */
export function dropDBI(env: lmdb.RootDatabase, dbiName: string): void;
/**
 * gets the statistics for a named database from the environment
 * @param {lmdb.RootDatabase} env - environment object used thigh level to interact with all data in an environment
 * @param {String} dbiName - name of the dbi (KV store)
 * @returns {void | Promise<Stats> | *} - object holding stats for the dbi
 */
export function statDBI(env: lmdb.RootDatabase, dbiName: string): void | Promise<Stats> | any;
/**
 * deletes the environment from the file system & removes the reference from global
 * @param {String} basePath - top level path the environment folder and the .mdb file live under
 * @param {String} envName - name of environment
 * @param {Boolean} isTxn - defines if is a transactions environemnt
 */
export function deleteEnvironment(basePath: string, envName: string, isTxn?: boolean): Promise<void>;
/**
 * opens/ creates all specified attributes
 * @param {lmdb.RootDatabase} env - lmdb environment object
 * @param {String} hash_attribute - name of the table's hash attribute
 * @param {Array.<String>} writeAttributes - list of all attributes to write to the database
 */
export function initializeDBIs(env: lmdb.RootDatabase, hash_attribute: string, writeAttributes: Array<string>): void;
/**
 * takes an environment and closes it
 * @param {lmdb.RootDatabase} env
 */
export function closeEnvironment(env: lmdb.RootDatabase): Promise<void>;
import lmdb = require("lmdb");
