import { AllFalse, And, Not } from "./boolean"; export declare type Is = (<_>() => _ extends T ? 0 : 1) extends <_>() => _ extends U ? 0 : 1 ? true : false; export declare type IsSubtype = T extends U ? true : false; export declare type IsAny = IsSubtype<[T], T & []>; export declare type IsNever = IsSubtype<[T], [never]>; export declare type IsUnknown = And>, IsSubtype>; export declare type IsReified = AllFalse<[IsAny, IsUnknown, IsNever]>; export declare type IsCompatible = IsSubtype<[T, U], [U, T]>;