type AngleSymbol = typeof angleSymbols[number]; /** * Type predicate. * @param candidate The candidate to test. */ declare function isAngleSymbol(candidate: any): candidate is AngleSymbol; /** * All the Angle symbols. */ declare const angleSymbols: readonly ["°", "ʹ", "ʺ", "rad", "grad", "rev"]; /** * The object representation of a measurement. * * @template Unit The type of the unit of measurement. * @template Value The type of the value of the measurement. */ type Measurement$1 = Number & { readonly value: Value; readonly unit: Unit; }; /** * Represents a dimension measurement. * @template Units - The units of the dimension. */ type Measurement = Measurement$1 & Alternatives; /** * Represents a collection of alternative measurements for different units. * * @template Units - The string literal type representing the available units. */ type Alternatives = { readonly [unit in Units]: Measurement; }; /** * A dimension is a map of units to creation functions. * Each function takes a number value and returns a * dimension measurement. * @template Units - The units of the dimension. */ type Dimension = { readonly [unit in Units]: (value: number) => Measurement; }; type Angle = Measurement; declare const angle: Dimension<"°" | "ʹ" | "ʺ" | "rad" | "grad" | "rev">; declare const degrees: (value: number) => Measurement<"°" | "ʹ" | "ʺ" | "rad" | "grad" | "rev">; declare const arcMinutes: (value: number) => Measurement<"°" | "ʹ" | "ʺ" | "rad" | "grad" | "rev">; declare const arcSeconds: (value: number) => Measurement<"°" | "ʹ" | "ʺ" | "rad" | "grad" | "rev">; declare const radians: (value: number) => Measurement<"°" | "ʹ" | "ʺ" | "rad" | "grad" | "rev">; declare const gradians: (value: number) => Measurement<"°" | "ʹ" | "ʺ" | "rad" | "grad" | "rev">; declare const revolutions: (value: number) => Measurement<"°" | "ʹ" | "ʺ" | "rad" | "grad" | "rev">; export { angle, angleSymbols, arcMinutes, arcSeconds, degrees, gradians, isAngleSymbol, radians, revolutions }; export type { Angle, AngleSymbol };