import { Primitive } from './primitive'; declare type AnyObject = { [k: string]: any; }; declare type IsAny = any extends T ? (T extends any ? true : false) : false; declare type IsNever = never extends T ? (T extends never ? true : false) : false; declare type IsTrue = true extends T ? (T extends true ? true : false) : false; declare type IsObject = T extends { [k: string]: any; } ? T extends Array ? false : true : false; declare type IsObjectArray = T extends Array<{ [k: string]: any; }> ? true : false; export declare namespace maskUtil { type Params = { array: T extends Array ? true | { [k in keyof U]?: true | Params; } : never; object: T extends AnyObject ? { [k in keyof T]?: true | Params; } : never; rest: never; never: never; }[T extends null | undefined | Primitive | Array ? 'never' : any extends T ? 'never' : T extends Array ? 'array' : IsObject extends true ? 'object' : 'rest']; type PickTest = P extends true ? 'true' : true extends IsObject ? 'object' : true extends IsObjectArray ? 'array' : 'rest'; type Pick = null extends T ? undefined extends T ? BasePick, P> | null | undefined : BasePick, P> | null : undefined extends T ? BasePick, P> | undefined : BasePick, P>; type BasePick = { primitive: T; primitivearray: T; true: T; object: { [k in keyof P]: k extends keyof T ? Pick : never; }; array: T extends (infer U)[] ? Pick[] : never; never: never; any: any; }[IsAny extends true ? 'any' : IsNever extends true ? 'never' : IsNever

extends true ? 'true' : IsTrue

extends true ? 'true' : true extends IsObject ? 'object' : true extends IsObjectArray ? 'array' : 'any']; } export {};