import { BooleanAnd } from '../BooleanAnd.js'; import { BooleanOr } from '../BooleanOr.js'; import { MaybeReadonly } from '../MaybeReadonly.js'; type BooleanEvery = T extends [infer A extends boolean, ...infer B extends boolean[]] ? BooleanAnd> : true; type BooleanSome = T extends [infer A extends boolean, ...infer B extends boolean[]] ? BooleanOr> : false; type IsUnknown = [unknown] extends [T] ? true : false; type IsNever = [T] extends [never] ? true : false; type IsVoid = IsStrictEqual; type IsUndefined = IsStrictEqual; type IsNil = BooleanOr, IsVoid>; type IsString = string extends S ? true : false; type IsEmptyString = S extends '' ? true : false; type IsArray = any[] extends T ? true : readonly any[] extends T ? true : false; type IsTupleEmpty> = T extends MaybeReadonly<[]> ? true : false; type IsArrayOrTuple = BooleanOr, IsTuple>; type IsTuple = T extends MaybeReadonly<[any, ...infer B]> ? B extends [] ? true : IsTuple : false; type IsEqual = A extends B ? true : B extends A ? true : false; type IsNotEqual = A extends B ? false : B extends A ? false : true; type IsStrictEqual = A extends B ? B extends A ? true : false : false; type IsStrictNotEqual = A extends B ? B extends A ? false : true : true; type IsZero = N extends 0 ? true : false; type IsNumber = number extends N ? true : false; type IsPositive = `${N}` extends `-${number}` ? false : true; type IsNegative = `${N}` extends `-${number}` ? true : false; type IsInteger = `${N}` extends `${number}.${number}` ? false : true; type IsDecimal = `${N}` extends `${number}.${number}` ? true : false; type IsAllZero = BooleanAnd, IsZero>; type IsAllPositive = BooleanAnd, IsPositive>; type IsAllNegative = BooleanAnd, IsNegative>; type IsAnyZero = BooleanOr, IsZero>; type IsAnyNumber = BooleanOr, IsNumber>; type IsAnyPositive = BooleanOr, IsPositive>; type IsAnyNegative = BooleanOr, IsNegative>; type IsAnyDecimal = BooleanOr, IsDecimal>; type ExcludeEmptyObject = T extends object ? T extends [] ? T : never : T; type ExcludeEmptyArray = T extends [] ? never : T; export type { IsAnyPositive as A, BooleanEvery as B, IsAnyNegative as C, IsAnyDecimal as D, ExcludeEmptyObject as E, ExcludeEmptyArray as F, IsUnknown as I, BooleanSome as a, IsNever as b, IsVoid as c, IsUndefined as d, IsNil as e, IsString as f, IsEmptyString as g, IsArray as h, IsTupleEmpty as i, IsArrayOrTuple as j, IsTuple as k, IsEqual as l, IsNotEqual as m, IsStrictEqual as n, IsStrictNotEqual as o, IsZero as p, IsNumber as q, IsPositive as r, IsNegative as s, IsInteger as t, IsDecimal as u, IsAllZero as v, IsAllPositive as w, IsAllNegative as x, IsAnyZero as y, IsAnyNumber as z };