/** UTILITY CURSOR FUNCTIONS **/
/**
 * Creates the basis for a full iteration of a dbi with an evaluation function used to determine the logic inside the iteration
 * @param {lmdb.Transaction} transactionOrEnv
 * @param {String} hash_attribute
 * @param {String} 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 {[]}
 */
export declare function iterateFullIndex(this: any, transactionOrEnv: any, hash_attribute: any, attribute: any, reverse?: boolean, limit?: any, offset?: any): any;
/**
 * specific iterator function for perfroming betweens on numeric columns
 * for this function specifically it is important to remember that the buffer representations of numbers are stored in the following order:
 * 0,1,2,3,4,5,6.....1000,-1,-2,-3,-4,-5,-6....-1000
 * as such we need to do some work with the cursor in order to move to the point we need depending on the type of range we are searching.
 * another important point to remember is the search is always iterating forward.  this makes sense for positive number searches,
 * but get wonky for negative number searches and especially for a range of between -4 & 6.  the reason is we will start the iterator at 0, move forward to 6,
 * then we need to jump forward to the highest negative number and stop at the start of our range (-4).
 * @param {TableTransaction} transactionOrEnv
 * @param {String} hash_attribute
 * @param {String} attribute
 * @param {Number|String} lowerValue
 * @param {Number|String} upperValue
 * @param {boolean} reverse
 * @param {number} limit - defines the max number of entries to iterate
 * @param {number} offset - defines the entries to skip
 * @returns {Iterable}
 */
export declare function iterateRangeBetween(this: any, transactionOrEnv: any, hash_attribute: any, attribute: any, lowerValue: any, upperValue: any, reverse?: boolean, limit?: any, offset?: any, exclusiveLower?: boolean, exclusiveUpper?: boolean): any;
/**
 * @param {lmdb.Transaction|lmdb.RootDatabase} transactionOrEnv
 * @param {String} hash_attribute
 * @param {String} attribute
 * @param {Function} callback
 */
export declare function setupTransaction(this: any, transactionOrEnv: any, hash_attribute: any, attribute: any, callback: any): any;
export declare function getOverflowCheck(this: any, env: any, transaction: any, hash_attribute: any, attribute: any): (key: any, value: any) => any;
/**
 * 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 declare function searchAll(this: any, transactionOrEnv: any, hash_attribute: any, fetchAttributes: any, reverse?: boolean, limit?: any, offset?: any): 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 declare function searchAllToMap(this: any, transactionOrEnv: any, hash_attribute: any, fetchAttributes: any, reverse?: boolean, limit?: any, offset?: any): Map<any, any>;
/**
 * 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 declare function iterateDBI(this: any, transactionOrEnv: any, attribute: any, reverse?: boolean, limit?: any, offset?: any): any;
/**
 * 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 declare function countAll(this: any, env: any, hash_attribute: any): any;
/**
 * 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 declare function equals(this: any, transactionOrEnv: any, hash_attribute: any, attribute: any, searchValue: any, reverse?: boolean, limit?: any, offset?: any): any;
/**
 * 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 declare function count(this: any, env: any, attribute: any, searchValue: any): any;
/**
 * 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 declare function startsWith(this: any, transactionOrEnv: any, hash_attribute: any, attribute: any, searchValue: any, reverse?: boolean, limit?: any, offset?: any): any;
/**
 * 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 declare function endsWith(this: any, transaction: any, hash_attribute: any, attribute: any, searchValue: any, reverse?: boolean, limit?: any, offset?: any): any;
/**
 * 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 declare function contains(this: any, transactionOrEnv: any, hash_attribute: any, attribute: any, searchValue: any, reverse?: boolean, limit?: any, offset?: any, ends_with?: boolean): 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 declare function greaterThan(this: any, transactionOrEnv: any, hash_attribute: any, attribute: any, searchValue: any, reverse?: boolean, limit?: any, offset?: any): any;
/**
 * 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 declare function greaterThanEqual(this: any, transactionOrEnv: any, hash_attribute: any, attribute: any, searchValue: any, reverse?: boolean, limit?: any, offset?: any): any;
/**
 * 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 declare function lessThan(this: any, transactionOrEnv: any, hash_attribute: any, attribute: any, searchValue: any, reverse?: boolean, limit?: any, offset?: any): any;
/**
 * 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 declare function lessThanEqual(this: any, transactionOrEnv: any, hash_attribute: any, attribute: any, searchValue: any, reverse?: boolean, limit?: any, offset?: any): any;
/**
 * 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 declare function between(this: any, transactionOrEnv: any, hash_attribute: any, attribute: any, startValue: any, endValue: any, reverse?: boolean, limit?: any, offset?: any): any;
/**
 * 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 declare function searchByHash(this: any, transactionOrEnv: any, hash_attribute: any, fetchAttributes: any, id: 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 declare function checkHashExists(this: any, transactionOrEnv: any, hash_attribute: any, id: any): boolean;
/**
 * 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 declare function batchSearchByHash(this: any, transactionOrEnv: any, hash_attribute: any, fetchAttributes: any, ids: any, notFound?: 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 declare function batchSearchByHashToMap(this: any, transactionOrEnv: any, hash_attribute: any, fetchAttributes: any, ids: any, notFound?: any[]): 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 {Object}
 */
export declare function batchHashSearch(this: any, transactionOrEnv: any, hash_attribute: any, fetchAttributes: any, ids: any, notFound?: any[]): any;
/**
 * function used to intialize the batchSearchByHash functions
 * @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.
 */
export declare function initializeBatchSearchByHash(this: any, transactionOrEnv: any, hash_attribute: any, fetchAttributes: any, ids: any, _notFound: any): void;
/**
 * validates the fetchAttributes argument
 * @param fetchAttributes - string array of attributes to pull from the object
 */
export declare function validateFetchAttributes(this: any, fetchAttributes: any): void;
/**
 * common validation function for all of the comparison searches (equals, startsWith, endsWith, contains)
 * @param {lmdb.RootDatabase} env - The env used to interact with all data in an environment
 * @param attribute - name of the attribute (dbi) to search
 * @param searchValue - value to search
 */
export declare function validateComparisonFunctions(this: any, env: any, attribute: any, searchValue: any): void;
/**
 * 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 declare function setGetWholeRowAttributes(this: any, env: any, fetchAttributes: any): any;
