type Falsy = false | null | undefined | '' | 0; type Maybe = X extends Falsy ? never : X | Falsy; type Some = X extends Falsy ? never : X; type DefinitelyHas = X & { [k in keyof X & Keys]: Some; }; type MaybeHas = Omit & { [k in keyof X & Keys]?: X[k]; }; type MightHave = Pick, Keys> & Omit; type PatchFnPatchArg = null | Partial; type PatchFnUpdaterArg = (current: T) => PatchFnPatchArg; type PatchFnArg = PatchFnPatchArg | PatchFnUpdaterArg; type PatchFn = (arg: PatchFnArg) => unknown; type Diff = { from: T; to: T; }; type WithId = { id: string; }; type IdIndex = Record; type Callback = T extends void ? () => unknown : (t: T) => unknown; type DeepPartial = { [P in keyof T]?: T[P] extends Array ? Array> : DeepPartial; }; type OmitSequelizeProvidedFields = Omit; type Writeable = { -readonly [P in keyof T]: T[P]; }; export { Callback, DeepPartial, DefinitelyHas, Diff, Falsy, IdIndex, Maybe, MaybeHas, MightHave, OmitSequelizeProvidedFields, PatchFn, PatchFnArg, Some, WithId, Writeable };