/** 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;