/** A wrapper around the lodash sortBy that supports treating upper case and lower case text as the same.
 * If the underlying property value is not a string (or is null or undefined) this function will behave just like lodash's original
 * The original array is not modified, and the result is a newly created array to avoid any side effects (just like the lodash implementation)
 * String properties are normalized by case for comparisons to prevent sorting AbC as ACb
 * @param items - the set of items to sort. Expected to be a set of complex objects to sort by the given properties
 * @param properties - a list of values, each of which can be number, date, string, etc property types.
 *        Can be the name or path to the property to look at, passed to the lodash get function so "address.line1" works if item is
 *        a meter object like {meterName: 'name', addres: { line1: '100 Factory Street' } }
 * @see https://lodash.com/docs/4.17.10#get
*/
export declare function sortByIgnoreCase<T>(items: T[], properties: string[]): T[];
/**
 * A wrapper around the lodash orderBy that supports treating upper case and lower case text as the same.
 * @param items - the set of items to sort. Expected to be a set of complex objects to sort by the given properties
 * @param properties - a list of values, each of which can be number, date, string, etc property types.
 * @param direction - the direction in which to sort, the pass in an array of directions to match an array of properties
 */
export declare function orderByIgnoreCase<T>(items: T[], properties: string[], direction?: Array<"asc" | "desc">): T[];
