/**
 * iterates the entire  hash_attribute dbi and returns all objects back
 * @param {lmdb.Transaction} transaction - Transaction used to interact with all data in an environment
 * @param {String} hash_attribute - name of the hash_attribute for this environment
 * @param {Array.<String>} fetchAttributes - string array of attributes to pull from the object
 * @returns {Array.<Object>} - object array of fetched records
 * @param {boolean} reverse - defines if the iterator goes from last to first
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 */
export function searchAll(transactionOrEnv: any, hash_attribute: string, fetchAttributes: Array<string>, reverse?: boolean, limit?: number, offset?: number): Array<any>;
/**
* iterates the entire  hash_attribute dbi and returns all objects back in a map
* @param {lmdb.Transaction} transactionOrEnv - Transaction used to interact with all data in an environment
* @param {String} hash_attribute - name of the hash_attribute for this environment
* @param {Array.<String>} fetchAttributes - string array of attributes to pull from the object
 * @param {boolean} reverse - defines if the iterator goes from last to first
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
* @returns {{String|Number, Object}} - object array of fetched records

*/
export function searchAllToMap(transactionOrEnv: lmdb.Transaction, hash_attribute: string, fetchAttributes: Array<string>, reverse?: boolean, limit?: number, offset?: number): {};
/**
 * Counts the number of entries for a key of a named dbi, returning the count
 * @param {lmdb.RootDatabase} env - Transaction used to interact with all data in an environment
 * @param {String} hash_attribute
 * @param {String} attribute - name of the attribute (dbi) to search
 * @param searchValue - value to search
 */
export function count(env: lmdb.RootDatabase, attribute: string, searchValue: any): number;
/**
 * counts all records in an environment based on the count from stating the hash_attribute  dbi
 * @param {lmdb.RootDatabase} env - Transaction used to interact with all data in an environment
 * @param {String} hash_attribute - name of the hash_attribute for this environment
 * @returns {number} - number of records in the environment
 */
export function countAll(env: lmdb.RootDatabase, hash_attribute: string): number;
/**
 * performs an equal search on the key of a named dbi, returns a list of ids where their keys literally match the searchValue
 * @param {lmdb.Transaction} transactionOrEnv - Transaction used to interact with all data in an environment
 * @param {String} hash_attribute
 * @param {String} attribute - name of the attribute (dbi) to search
 * @param searchValue - value to search
 * @param {boolean} reverse - defines if the iterator goes from last to first
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 * @returns {[[],[]]} - ids matching the search
 */
export function equals(transactionOrEnv: lmdb.Transaction, hash_attribute: string, attribute: string, searchValue: any, reverse?: boolean, limit?: number, offset?: number): [[], []];
/**
 * performs an startsWith search on the key of a named dbi, returns a list of ids where their keys begin with the searchValue
 * @param {lmdb.Transaction} transactionOrEnv - Transaction used to interact with all data in an environment
 * @param {String} hash_attribute
 * @param {String} attribute - name of the attribute (dbi) to search
 * @param searchValue - value to search
 * @param {boolean} reverse - defines if the iterator goes from last to first
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 * @returns {lmdb.ArrayLikeIterable<unknown>} - ids matching the search
 */
export function startsWith(transactionOrEnv: lmdb.Transaction, hash_attribute: string, attribute: string, searchValue: any, reverse?: boolean, limit?: number, offset?: number): lmdb.ArrayLikeIterable<unknown>;
/**
 * performs an endsWith search on the key of a named dbi, returns a list of ids where their keys end with searchValue
 * @param {lmdb.Transaction} transaction - Transaction used to interact with all data in an environment
 * @param {String} hash_attribute
 * @param {String} attribute - name of the attribute (dbi) to search
 * @param searchValue - value to search
 * @param {boolean} reverse - defines if the iterator goes from last to first
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 * @returns {[[],[]]} - ids matching the search
 */
export function endsWith(transaction: lmdb.Transaction, hash_attribute: string, attribute: string, searchValue: any, reverse?: boolean, limit?: number, offset?: number): [[], []];
/**
 * performs a contains search on the key of a named dbi, returns a list of ids where their keys contain the searchValue
 * @param {lmdb.Transaction|lmdb.RootDatabase} transactionOrEnv - Transaction used to interact with all data in an
 * environment
 * @param {String} hash_attribute
 * @param {String} attribute - name of the attribute (dbi) to search
 * @param {String|Number} searchValue - value to search
 * @param {boolean} reverse - defines if the iterator goes from last to first
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 * @param {boolean} ends_with - Must only contain this value at the end
 * @returns {[[],[]]} - ids matching the search
 */
export function contains(transactionOrEnv: lmdb.Transaction | lmdb.RootDatabase, hash_attribute: string, attribute: string, searchValue: string | number, reverse?: boolean, limit?: number, offset?: number, ends_with?: boolean): [[], []];
/**
 * finds a single record based on the id passed
 * @param {lmdb.Transaction} transactionOrEnv - Transaction used to interact with all data in an environment
 * @param {String} hash_attribute - name of the hash_attribute for this environment
 * @param {Array.<String>} fetchAttributes - string array of attributes to pull from the object
 * @param {String} id - id value to search
 * @returns {{}} - object found
 */
export function searchByHash(transactionOrEnv: lmdb.Transaction, hash_attribute: string, fetchAttributes: Array<string>, id: string): {};
/**
 * determines if the intent is to return the whole row based on fetchAttributes having 1 entry that is wildcard * or %
 * @param env
 * @param fetchAttributes
 * @returns {Array}
 */
export function setGetWholeRowAttributes(env: any, fetchAttributes: any): any[];
/**
 * finds an array of records based on the ids passed
 * @param {lmdb.Transaction} transactionOrEnv - Transaction used to interact with all data in an environment
 * @param {String} hash_attribute - name of the hash_attribute for this environment
 * @param {Array.<String>} fetchAttributes - string array of attributes to pull from the object
 * @param {Array.<String>} ids - list of ids to search
 * @param {[]} [notFound] - optional, meant to be an array passed by reference so that skipped ids can be aggregated.
 * @returns {Map} - Map of records found
 */
export function batchSearchByHash(transactionOrEnv: lmdb.Transaction, hash_attribute: string, fetchAttributes: Array<string>, ids: Array<string>, notFound?: []): Map<any, any>;
/**
 * finds an array of records based on the ids passed and returns a map of the results
 * @param {lmdb.Transaction} transactionOrEnv - Transaction used to interact with all data in an environment
 * @param {String} hash_attribute - name of the hash_attribute for this environment
 * @param {Array.<String>} fetchAttributes - string array of attributes to pull from the object
 * @param {Array.<String>} ids - list of ids to search
 * @param {[]} [notFound] - optional, meant to be an array passed by reference so that skipped ids can be aggregated.
 * @returns {Map} - Map of records found
 */
export function batchSearchByHashToMap(transactionOrEnv: lmdb.Transaction, hash_attribute: string, fetchAttributes: Array<string>, ids: Array<string>, notFound?: []): Map<any, any>;
/**
 * checks if a hash value exists based on the id passed
 * @param {lmdb.Transaction} transactionOrEnv - Transaction used to interact with all data in an environment
 * @param {String} hash_attribute - name of the hash_attribute for this environment
 * @param {String|Number} id - id value to check exists
 * @returns {boolean} - whether the hash exists (true) or not (false)
 */
export function checkHashExists(transactionOrEnv: lmdb.Transaction, hash_attribute: string, id: string | number): boolean;
/**
 * iterates a dbi and returns the key/value pairing for each entry
 * @param env
 * @param attribute
 * @param {boolean} reverse - defines if the iterator goes from last to first
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 * @returns {Array.<Array>}
 */
export function iterateDBI(transactionOrEnv: any, attribute: any, reverse?: boolean, limit?: number, offset?: number): Array<any[]>;
/** RANGE FUNCTIONS **/
/**
 * performs a greater than search for string / numeric search value
 * @param {lmdb.Transaction} transactionOrEnv
 * @param {String} hash_attribute
 * @param {String} attribute
 * @param {String|Number} searchValue
 * @param {boolean} reverse - determines direction to iterate
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 * @returns {[[],[]]}
 */
export function greaterThan(transactionOrEnv: lmdb.Transaction, hash_attribute: string, attribute: string, searchValue: string | number, reverse?: boolean, limit?: number, offset?: number): [[], []];
/**
 * performs a greater than equal search for string / numeric search value
 * @param {lmdb.Transaction} transactionOrEnv
 * @param {String} hash_attribute
 * @param {String} attribute
 * @param {String|Number} searchValue
 * @param {boolean} reverse - determines direction of iterator
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 * @returns {[[],[]]}
 */
export function greaterThanEqual(transactionOrEnv: lmdb.Transaction, hash_attribute: string, attribute: string, searchValue: string | number, reverse?: boolean, limit?: number, offset?: number): [[], []];
/**
 * performs a less than search for string / numeric search value
 * @param {lmdb.Transaction} transactionOrEnv
 * @param {String} hash_attribute
 * @param {String} attribute
 * @param {String|Number} searchValue
 * @param {boolean} reverse - determines direction of iterator
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 * @returns {[[],[]]}
 */
export function lessThan(transactionOrEnv: lmdb.Transaction, hash_attribute: string, attribute: string, searchValue: string | number, reverse?: boolean, limit?: number, offset?: number): [[], []];
/**
 * performs a less than equal search for string / numeric search value
 * @param {lmdb.Transaction} transactionOrEnv
 * @param {String} hash_attribute
 * @param {String} attribute
 * @param {String|Number} searchValue
 * @param {boolean} reverse - defines the direction to iterate
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 * @returns {[[],[]]}
 */
export function lessThanEqual(transactionOrEnv: lmdb.Transaction, hash_attribute: string, attribute: string, searchValue: string | number, reverse?: boolean, limit?: number, offset?: number): [[], []];
/**
 * performs a between search for string / numeric search value
 * @param {lmdb.Transaction} transactionOrEnv
 * @param {String} hash_attribute
 * @param {String} attribute
 * @param {String|Number} startValue
 * @param {String|Number}endValue
 * @param {boolean} reverse - defines if the iterator goes from last to first
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 * @returns {*[]}
 */
export function between(transactionOrEnv: lmdb.Transaction, hash_attribute: string, attribute: string, startValue: string | number, endValue: string | number, reverse?: boolean, limit?: number, offset?: number): any[];
import lmdb = require("lmdb");
