export type DeepPartial = T extends any[] ? T : T extends Set ? T : T extends object ? { [P in keyof T]?: DeepPartial; } : T;