/** * @file Math.Types.ts * @author Gage Sorrell * @copyright (c) 2026 Gage Sorrell * @license MIT */ import type * as InternalTypes from "./Math.Internal.Types.mjs"; import type { TBuildTuple, TInclusiveRangeFromTuple, TIsLessThanOrEqual } from "./Math.Internal.Types.mjs"; /** * Determines whether a given {@link NumberType} is a nonnegative integer. * * @template NumberType - The number type to check. This is expected, * but not required, to be a single number literal. * * @returns `true` iff the given {@link NumberType} is a numeric type, * and `false` otherwise. */ export type TIsNonNegativeInteger = `${NumberType}` extends `-${string}` ? false : `${NumberType}` extends `${bigint}` ? true : false; export declare namespace Symmetry { /** * The symmetric group of the five given type parameters. * * @template OneType - The first specified type. * @template TwoType - The second specified type. * @template ThreeType - The third specified type. * @template FourType - The fourth specified type. * @template FiveType - The fifth specified type. */ type Five = InternalTypes.Five; /** * The symmetric group of the four given type parameters. * * @template OneType - The first specified type. * @template TwoType - The second specified type. * @template ThreeType - The third specified type. * @template FourType - The fourth specified type. */ type Four = InternalTypes.Four; /** * The symmetric group of the three given type parameters. * * @template OneType - The first specified type. * @template TwoType - The second specified type. * @template ThreeType - The third specified type. */ type Three = InternalTypes.Three; /** * The symmetric group of the two given type parameters. * * @template OneType - The first specified type. * @template TwoType - The second specified type. */ type Two = InternalTypes.Two; } export declare namespace Permutations { /** * The symmetric group of the five given type parameters. * * @template OneType - The first specified type. * @template TwoType - The second specified type. * @template ThreeType - The third specified type. * @template FourType - The fourth specified type. * @template FiveType - The fifth specified type. */ type Five = InternalTypes.Five; /** * The symmetric group of the four given type parameters. * * @template OneType - The first specified type. * @template TwoType - The second specified type. * @template ThreeType - The third specified type. * @template FourType - The fourth specified type. */ type Four = InternalTypes.Four; /** * The symmetric group of the three given type parameters. * * @template OneType - The first specified type. * @template TwoType - The second specified type. * @template ThreeType - The third specified type. */ type Three = InternalTypes.Three; /** * The symmetric group of the two given type parameters. * * @template OneType - The first specified type. * @template TwoType - The second specified type. */ type Two = InternalTypes.Two; } /** * The union of integers from {@link StartValue} to {@link EndValue}, inclusive. * * @template StartValue - The least value in the range. * @template EndValue - The greatest value in the range. */ export type TIntegralRange = number extends StartValue ? never : number extends EndValue ? never : TIsNonNegativeInteger extends true ? TIsNonNegativeInteger extends true ? TIsLessThanOrEqual extends true ? TInclusiveRangeFromTuple, EndValue> : never : never : never; //# sourceMappingURL=Math.Types.d.mts.map