import { DisableNever } from "../never"; type NotOnlyTrue = [T] extends [true] ? never : unknown; type NotOnlyFalse = [T] extends [false] ? never : unknown; type NotBooleanLiteral = NotOnlyTrue & NotOnlyFalse; type IsBoolean = [T] extends [boolean] ? unknown : never; /** * Boolean type without union. (THIS CAN BE DANGEROUS WITH UNION TYPES LIKE UNDEFINED!) */ export type ExactlyBoolean = DisableNever & NotBooleanLiteral & IsBoolean;