// @internal export type NOT_EQUAL_INTERNAL = UnionToIntersection extends UnionToIntersection ? UnionToIntersection extends UnionToIntersection ? false : true : true export type Expect = T export type ExpectTrue = T export type ExpectFalse = T export type NotEqual = true extends NOT_EQUAL_INTERNAL ? true : false export type Equal = NotEqual extends false ? true : false // https://stackoverflow.com/questions/49927523/disallow-call-with-any/49928360#49928360 export type IsAny = 0 extends (1 & T) ? true : false export type NotAny = true extends IsAny ? false : true export type Debug = { [K in keyof T]: T[K] } export type ExpectExtends = EXPECTED extends VALUE ? true : false export type ExpectValidArgs any, ARGS extends any[]> = ARGS extends Parameters ? true : false export type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never