import { DateTime } from 'luxon';
/**
 * Get values both in arr1 and arr2
 * @param {*} arr1
 * @param {*} arr2
 * @param {*} key
 * @param {*} value
 */
export declare const getIntersection: (arr1: any[], arr2: any[], key?: undefined, value?: undefined) => any[];
/**
 * Get values in arr1 not in arr2
 * @param {*} arr1
 * @param {*} arr2
 */
export declare const getDifference: (arr1: any[], arr2: any[]) => any[];
/**
 * Get values not in arr1 and arr2
 * @param {*} arr1
 * @param {*} arr2
 */
export declare const getSymmetricDifference: (arr1: any[], arr2: any[]) => any[];
/**
 * Get values from union of arr1 and arr2 while removing common values
 * @param {*} arr1
 * @param {*} arr2
 */
export declare const getUnion: (arr1: any[], arr2: any[]) => any[];
/**
 * Native filter
 * @param {*} data
 * @param {*} key
 * @param {*} value
 */
export declare const nativeFilterItems: (data: any[], key: string, value: any) => any[];
export declare const nativeFilterItemsByDateRange: (data: any[], key: string, startDate: any, endDate: any) => any[];
/**
 * Generate Unique Identifiers defaults to uuid()
 * @param {*} pattern
 */
export declare const generateUniqueId: (pattern?: string) => string;
/**
 * Check if date is between the dates or equal to the boundaries.
 * @param {string} startDate
 * @param {string } date
 * @param { string } endDate
 */
export declare const checkDateValidity: (data: any, startDate: any, endDate: any) => any;
/**
* Validate errors after applying conditional updates
* @param {*} data
* @param {*} options
* @param {*} path
* @param {*} schema
*/
export declare const validateErrors: (data: any, options: any, path: string, schema: any) => boolean;
/**
* Get price of commodities
* @param {*} prices
* @param {*} date
*/
export declare const getPrice: (prices: any[], date?: DateTime) => any;
/**
* Filter Items by key matching an expression
* @param {*} items
* @param {*} expression e.g "'#/properties/id' == 'Test'"
* @param {*} itemValue
* @return { array }
*/
export declare const filterItemsByExpression: (items: any[], expression: any) => any[];
/**
* Filter/Search Items by key matching/has a item Value
* @param {*} items
* @param {*} key
* @param {*} itemValue
* @return { array }
*/
export declare const searchByKeyValue: (items: any[], key: string, itemValue: any) => any[];
/**
* Search Items for value
* @param {*} items
* @param {*} key
* @param {*} itemValue
* @return { array }
*/
export declare const searchValue: (items: any[], key: string, itemValue: any) => any[];
export declare const mapObjectToArray: (items: any[]) => any[];
/**
* Search multiple Items for values
* @param {*} items
* @param {*} searchKeys
* @return { array }
*/
export declare const multiSearchValue: (items: any[], filterKeys: any[]) => any[];
/**
* Filter Items by key matching an item Value
* @param {*} items
* @param {*} key
* @param {*} itemValue
* @return { array }
*/
export declare const filterItems: (items: any[], key: string, itemValue: any) => any[];
/**
* Get Items using a key
* @param {*} items
* @param {*} key
* @return { array } items
*/
export declare const getItemsByKey: (items: any[], key: string) => any[];
/**
 * Filter current item from all items
 * @param { string } itemId Item Id
 * @param { array } items All existing items in the data store
 * @returns { array }
 */
export declare const filterItemsById: (items: any[], itemId: any[], key: string) => any[];
/**
 * Get Value By property
 * @param {*} attributes
 * @param {*} property
 */
export declare const getValueByProperty: (attributes: any[], property: string) => any[];
/**
 * Remove property
 * @param {*} attributes
 * @param {*} properties
 */
export declare const removeProperty: (attributes: any[], properties: any) => any[];
export declare const countItems: (items: any[]) => {
    [x: number]: number;
}[];
/**
 * Find largest item in an array
 * @param {*} items
 */
export declare const findLargestArrayItem: (items: any[]) => number;
/**
 * Flatten an array with object with one key as array
 * @param {*} data
 * @param {*} omitKey
 */
/**
 * Group data based on a property.
 * @param {*} data
 * @param {*} prop
 */
export declare const groupDataBy: (data: any, prop: any) => {
    [x: string]: Pick<any, never>[];
};
