/**
 * executes a specific search based on the evaluation of the searchObject & optional comparator & returns the results
 * @param {SearchObject} searchObject
 * @param {lmdbTerms.SEARCH_TYPES} searchType
 * @param {String} hash_attribute
 * @param {Boolean} returnMap
 */
export function executeSearch(searchObject: SearchObject, searchType: {
    EQUALS: string;
    STARTS_WITH: string;
    _STARTS_WITH: string;
    ENDS_WITH: string;
    _ENDS_WITH: string;
    CONTAINS: string;
    SEARCH_ALL: string;
    SEARCH_ALL_TO_MAP: string;
    BATCH_SEARCH_BY_HASH: string;
    BATCH_SEARCH_BY_HASH_TO_MAP: string;
    GREATER_THAN: string;
    _GREATER_THAN: string;
    GREATER_THAN_EQUAL: string;
    _GREATER_THAN_EQUAL: string;
    LESS_THAN: string;
    _LESS_THAN: string;
    LESS_THAN_EQUAL: string;
    _LESS_THAN_EQUAL: string;
    BETWEEN: string;
}, hash_attribute: string, returnMap: boolean): Promise<any>;
/**
 * evaluates the searchObject to determine what the searchType needs to be for later execution of queries
 * @param {SearchObject} searchObject
 * @param {String} hash_attribute
 * @param {hdbTerms.VALUE_SEARCH_COMPARATORS} comparator
 * @param {Boolean} returnMap
 * @returns {lmdbTerms.SEARCH_TYPES}
 */
export function createSearchTypeFromSearchObject(searchObject: SearchObject, hash_attribute: string, returnMap: boolean, comparator: {
    readonly LESS: "<";
    readonly LESS_OR_EQ: "<=";
    readonly GREATER: ">";
    readonly GREATER_OR_EQ: ">=";
    readonly BETWEEN: "...";
}): {
    EQUALS: string;
    STARTS_WITH: string;
    _STARTS_WITH: string;
    ENDS_WITH: string;
    _ENDS_WITH: string;
    CONTAINS: string;
    SEARCH_ALL: string;
    SEARCH_ALL_TO_MAP: string;
    BATCH_SEARCH_BY_HASH: string;
    BATCH_SEARCH_BY_HASH_TO_MAP: string;
    GREATER_THAN: string;
    _GREATER_THAN: string;
    GREATER_THAN_EQUAL: string;
    _GREATER_THAN_EQUAL: string;
    LESS_THAN: string;
    _LESS_THAN: string;
    LESS_THAN_EQUAL: string;
    _LESS_THAN_EQUAL: string;
    BETWEEN: string;
};
/**
 * gets the searchType & based on the size of the dbi being searched will either perform an in process search or launch a new process to perform a search
 * @param {SearchObject} searchObject
 * @param {hdbTerms.VALUE_SEARCH_COMPARATORS} comparator
 * @param {Boolean} returnMap
 * @returns {{}|[{}]}
 */
export function prepSearch(searchObject: SearchObject, comparator: {
    readonly LESS: "<";
    readonly LESS_OR_EQ: "<=";
    readonly GREATER: ">";
    readonly GREATER_OR_EQ: ">=";
    readonly BETWEEN: "...";
}, returnMap: boolean): {} | [{}];
/**
 *
 * @param {lmdb.Transaction} transactionOrEnv
 * @param {SearchObject} searchObject
 * @param {lmdbTerms.SEARCH_TYPES} searchType
 * @param {String} hash_attribute
 * @returns {null|Array<Object>|Number|Object|*[]|{}}
 */
export function searchByType(transactionOrEnv: lmdb.Transaction, searchObject: SearchObject, searchType: {
    EQUALS: string;
    STARTS_WITH: string;
    _STARTS_WITH: string;
    ENDS_WITH: string;
    _ENDS_WITH: string;
    CONTAINS: string;
    SEARCH_ALL: string;
    SEARCH_ALL_TO_MAP: string;
    BATCH_SEARCH_BY_HASH: string;
    BATCH_SEARCH_BY_HASH_TO_MAP: string;
    GREATER_THAN: string;
    _GREATER_THAN: string;
    GREATER_THAN_EQUAL: string;
    _GREATER_THAN_EQUAL: string;
    LESS_THAN: string;
    _LESS_THAN: string;
    LESS_THAN_EQUAL: string;
    _LESS_THAN_EQUAL: string;
    BETWEEN: string;
}, hash_attribute: string): null | Array<any> | number | any | any[] | {};
