type Flatten = { [Key in keyof T]: T[Key]; } & {}; type DeepFlatten = { [Key in keyof T]: DeepFlatten; } & {}; type Override = Flatten & Right>; type Simplify = T extends {} ? Flatten> : T; declare const simplify: (t: T) => Simplify; type IsEmptyObject = T extends {} ? keyof T extends never ? true : T[keyof T] extends never ? true : false : true; type DeepPartial = T extends {} ? Partial<{ [Key in keyof T]: DeepPartial; }> & {} : T; export { type DeepFlatten, type DeepPartial, type Flatten, type IsEmptyObject, type Override, type Simplify, simplify };