/** * Makes the object recursively optional * @internal */ export type DeepPartial = TObject extends object ? { [P in keyof TObject]?: DeepPartial } : TObject /** * Omits the key without removing a potential union * @internal */ export type DistributiveOmit = TObj extends any ? Omit : never /** * @internal */ export type IntersectionError = `The property '${TKey}' in your router collides with a built-in method, rename this router or procedure on your backend.` /** * @internal */ export type ProtectedIntersection = keyof TType & keyof TWith extends never ? TType & TWith : IntersectionError /** * Simple utility that overrides top level properties from `T` with the matching properties from `U`. */ export type Override = Omit & U