export declare function asArray(maybeArray: T | T[]): T[]; type PropertiesOf

= Extract; type Require = T & { [P in K]-?: T[P] }; type Ensure = K extends keyof U ? Require : U & Record; /** * Type aware version of Object.protoype.hasOwnProperty. * See https://fettblog.eu/typescript-hasownproperty/ */ export declare function hasOwnProperty(obj: X, prop: Y): obj is Ensure; /** * Maps `obj` to a new object. The `mapper` function receives an entry array of key and value and * is allowed to manipulate both. It can also return `null` to omit a property from the result. */ export declare function mapProperties(obj: P, mapper: >(old: [K, P[K]]) => [L, U] | null): Record; /** * Maps an objects' property keys. The result is a new object with the mapped keys, but the same values. */ export declare function mapKeys(obj: Record, mapper: (old: string) => string): Record; /** * Maps an objects' property values. The result is a new object with the same keys, but mapped values. */ export declare function mapValues(obj: P, mapper: (old: P[PropertiesOf

], key: PropertiesOf

) => V): Record, V>; /** * Filters an objects' property values. Similar to `array.filter` but for objects. The result is a new * object with all the properties removed for which `filter` returned `false`. */ export declare function filterValues(obj: Record, filter: (old: P) => old is Q): Record; export declare function filterValues

(obj: P, filter: (old: P[keyof P]) => boolean): Partial

; export declare function filterValues(obj: Record, filter: (old: U) => boolean): Record; /** * Filters an objects' property keys. Similar to `array.filter` but for objects. The result is a new * object with all the properties removed for which `filter` returned `false`. */ export declare function filterKeys

(obj: P, filter: (old: keyof P) => boolean): Partial

; export declare function filterKeys(obj: Record, filter: (old: string) => boolean): Record; /** * Compares the properties of two objects. Returns `true` if all properties are strictly equal, `false` * otherwise. * Pass a subset of properties to only compare those. */ export declare function equalProperties

(obj1: P, obj2: P, subset?: (keyof P)[]): boolean; export {};