import { ObjWithKeys } from '../../../typings/generic'
export function isObj(x: any): x is object | Array<any> | Function
export function isObjNotNull(x: any): x is object // !null
export function objTypeof(x: any): x is object | null
export function objPure(x: any): x is object // !Array
export function isObjWithKeys(x: any): x is ObjWithKeys
export function isObjLoose(o: any): 'o is typeof Obj' | boolean
// x[Primitive.toStringTag] is 'object'
export function isObjTag(o: any): boolean
export type notEmptyArray = [any]
interface ArrayWithNothing<T> extends Array<T> {
length: 0
}
// @todo
export function isBlankObject(x: any): x is object
// @todo
export function arrayToObj(x: Array<any>): Object
// @todo
export function toObjOf(x: any): Object
// @todo
export function toArrayOf(x: string): Array<string>
export function toArrayOf(x: boolean): Array<boolean>
export function toArrayOf(x: null | undefined): Array<null | undefined>
export function toArrayOf(x: Array<any>): Array<Array<any>>
export function toArrayOf(x: Function): Array<Function>
export function toArrayOf(x: string): Array<string>
export function toArrayOf(x: any): Array<any>
export function toArrayOf(): ArrayWithNothing<any>
export function toArrayOf<T>(x: Array<T>): Array<Array<T>>
export type NotPlainObjTypes =
| boolean
| Boolean
| number
| Number
| undefined
| null
| Function
| Array<any>
export function isObjPlain(x: Object): true
export function isObjPlain(x: NotPlainObjTypes): false
export function isNonEmptyArray(x: notEmptyArray): true
export function isNonEmptyArray(x: notEmptyArray): boolean
export { objPure as isObjPure }
export { objTypeof as isObjTypeof }
export { arrayToObj as fromArrayToObj }