export type DeepPartial = T | (T extends Array ? DeepPartial[] : T extends Map ? Map, DeepPartial> : T extends Set ? Set> : T extends object ? { [K in keyof T]?: DeepPartial; } : T);