import type { Type } from './functor.js' import { tagged } from './functor.js' export function isNever(x: unknown): x is Type.Never { return tagged('never')(x) } export function isUnknown(x: unknown): x is Type.Unknown { return tagged('unknown')(x) } export function isAny(x: unknown): x is Type.Any { return tagged('any')(x) } export function isVoid(x: unknown): x is Type.Void { return tagged('any')(x) } export function isNull(x: unknown): x is Type.Null { return tagged('null')(x) } export function isUndefined(x: unknown): x is Type.Undefined { return tagged('undefined')(x) } export function isBoolean(x: unknown): x is Type.Boolean { return tagged('boolean')(x) } export function isInteger(x: unknown): x is Type.Integer { return tagged('integer')(x) } export function isNumber(x: unknown): x is Type.Number { return tagged('number')(x) } export function isBigInt(x: unknown): x is Type.BigInt { return tagged('bigInt')(x) } export function isString(x: unknown): x is Type.String { return tagged('string')(x) } export function isSymbol(x: unknown): x is Type.Symbol { return tagged('symbol')(x) } export function isDate(x: unknown): x is Type.Date { return tagged('date')(x) } export function isLiteral(x: unknown): x is Type.Literal { return tagged('literal')(x) } export function isArray(x: Type.F): x is Type.Array export function isArray(x: unknown): x is Type.Array export function isArray(x: unknown): x is Type.Array { return tagged('array')(x) } export function isTuple(x: Type.F): x is Type.Tuple export function isTuple(x: unknown): x is Type.Tuple export function isTuple(x: unknown): x is Type.Tuple { return tagged('tuple')(x) } export function isObject(x: Type.F): x is Type.Object export function isObject(x: unknown): x is Type.Object export function isObject(x: unknown): x is Type.Object { return tagged('object')(x) } export function isRecord(x: Type.F): x is Type.Record export function isRecord(x: unknown): x is Type.Record export function isRecord(x: unknown): x is Type.Record { return tagged('record')(x) } export function isUnion(x: Type.F): x is Type.Union export function isUnion(x: unknown): x is Type.Union export function isUnion(x: unknown): x is Type.Union { return tagged('anyOf')(x) } export function isIntersection(x: Type.F): x is Type.Intersect export function isIntersection(x: unknown): x is Type.Intersect export function isIntersection(x: unknown): x is Type.Intersect { return tagged('allOf')(x) }