/** Helper no-op, parametric type to expand intellisense for alias types. */ export type Alias = T extends infer U ? { [K in keyof U]: U[K] } : never export type Assert = (value: unknown) => R export type Asserted = A extends (value: unknown) => infer U ? U : never export type Awaited = T extends PromiseLike ? Awaited : T export type Keyed = Record /** @deprecated use {@link Nullish} */ export type NilOr = | undefined | null | T export type Nullish = | undefined | null | T export type UndefinedOr = | undefined | T export type Nullable = | null | T export type Defined = Exclude export type NonNullish = Exclude export type Predicate = (value: T) => boolean export type Primitive = | undefined | null | boolean | number | string | symbol | bigint export type Exact = T extends I ? Exclude extends never ? T : never : never export type OptionalIfUndefinedOnly = { [K in keyof T as undefined extends T[K] ? K : never]?: T[K] } export type OptionalIfUndefined = Omit> & OptionalIfUndefinedOnly export type IntersectionOfUnion = (T extends unknown ? (_: T) => unknown : never) extends (_: infer R) => unknown ? R : never