import { TestedType } from "./misc"; /** * Type `true` if {@typeparam A} is a subtype of {@typeparam B}; * otherwise type `false`. * * @see [[`IsEqual`]] for a bidirectional variant. * @see [[`RequireSubType`]] for a stricter variant. */ export declare type IsSubType = A extends B ? true : false; /** * Type {@typeparam A} if {@typeparam A} is a subtype of {@typeparam B}; * otherwise type `never`. */ export declare type SubType = TestedType>; /** * A stricter version of [[`IsSubType`]]. * Type `true` if {@typeparam A} is a subtype of {@typeparam B}; * compile-time error otherwise. */ export declare type RequireSubType = IsSubType; /** * Type `true` if {@typeparam A} :< {@typeparam B} && {@typeparam B} :< {@typeparam A} * * @see [[`IsSubType`]] for a unidirectional variant. * @see [[`RequireEqual`]] for a stricter variant. */ export declare type IsEqual = IsSubType & IsSubType>; /** * Requires {@typeparam C} :< [[`IsSubType`]]``; * otherwise issues a compile-time error. * Has value equal to `IsSubType`. * * @warn * Misbehaves for ``: * errors out though it should be valid. * This is a false negative, and the only one I can find. * I conjecture there are no false positives. */ export declare type RequireEqual> = IsEqual;