export type HasOptionalProperties = keyof T extends infer K extends keyof T ? undefined extends T[K] ? T : null extends T[K] ? T : 'object with optional or nullable properties' : never; export type NonNullableProperties = keyof T extends infer K extends keyof T ? NonNullable extends never ? never : K : never; export type Prune = { [k in NonNullableProperties]: NonNullable; }; export declare function prune(object: HasOptionalProperties): Prune;