uom-types 5.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -41,79 +41,44 @@ export type MultiplyExponents<A extends Exponent, B extends Exponent> = A extend
41
41
  * @group Exponent Functions
42
42
  */
43
43
  export type DivideExponents<A extends Exponent, B extends Exponent> = B extends 0 ? never : B extends 1 ? A extends 0 ? 0 : A extends 1 ? 1 : A extends -1 ? -1 : A extends 2 ? 2 : A extends -2 ? -2 : A extends 3 ? 3 : A extends -3 ? -3 : A extends 4 ? 4 : A extends -4 ? -4 : A extends 5 ? 5 : A extends -5 ? -5 : A extends 6 ? 6 : A extends -6 ? -6 : A extends 7 ? 7 : A extends -7 ? -7 : A extends 8 ? 8 : A extends -8 ? -8 : A extends 9 ? 9 : A extends -9 ? -9 : A extends 10 ? 10 : A extends -10 ? -10 : A extends 11 ? 11 : A extends -11 ? -11 : A extends 12 ? 12 : A extends -12 ? -12 : never : B extends -1 ? A extends 0 ? 0 : A extends 1 ? -1 : A extends -1 ? 1 : A extends 2 ? -2 : A extends -2 ? 2 : A extends 3 ? -3 : A extends -3 ? 3 : A extends 4 ? -4 : A extends -4 ? 4 : A extends 5 ? -5 : A extends -5 ? 5 : A extends 6 ? -6 : A extends -6 ? 6 : A extends 7 ? -7 : A extends -7 ? 7 : A extends 8 ? -8 : A extends -8 ? 8 : A extends 9 ? -9 : A extends -9 ? 9 : A extends 10 ? -10 : A extends -10 ? 10 : A extends 11 ? -11 : A extends -11 ? 11 : A extends 12 ? -12 : A extends -12 ? 12 : never : B extends 2 ? A extends 0 ? 0 : A extends 2 ? 1 : A extends -2 ? -1 : A extends 4 ? 2 : A extends -4 ? -2 : A extends 6 ? 3 : A extends -6 ? -3 : A extends 8 ? 4 : A extends -8 ? -4 : A extends 10 ? 5 : A extends -10 ? -5 : A extends 12 ? 6 : A extends -12 ? -6 : never : B extends -2 ? A extends 0 ? 0 : A extends 2 ? -1 : A extends -2 ? 1 : A extends 4 ? -2 : A extends -4 ? 2 : A extends 6 ? -3 : A extends -6 ? 3 : A extends 8 ? -4 : A extends -8 ? 4 : A extends 10 ? -5 : A extends -10 ? 5 : A extends 12 ? -6 : A extends -12 ? 6 : never : B extends 3 ? A extends 0 ? 0 : A extends 3 ? 1 : A extends -3 ? -1 : A extends 6 ? 2 : A extends -6 ? -2 : A extends 9 ? 3 : A extends -9 ? -3 : A extends 12 ? 4 : A extends -12 ? -4 : never : B extends -3 ? A extends 0 ? 0 : A extends 3 ? -1 : A extends -3 ? 1 : A extends 6 ? -2 : A extends -6 ? 2 : A extends 9 ? -3 : A extends -9 ? 3 : A extends 12 ? -4 : A extends -12 ? 4 : never : B extends 4 ? A extends 0 ? 0 : A extends 4 ? 1 : A extends -4 ? -1 : A extends 8 ? 2 : A extends -8 ? -2 : A extends 12 ? 3 : A extends -12 ? -3 : never : B extends -4 ? A extends 0 ? 0 : A extends 4 ? -1 : A extends -4 ? 1 : A extends 8 ? -2 : A extends -8 ? 2 : A extends 12 ? -3 : A extends -12 ? 3 : never : B extends 5 ? A extends 0 ? 0 : A extends 5 ? 1 : A extends -5 ? -1 : A extends 10 ? 2 : A extends -10 ? -2 : never : B extends -5 ? A extends 0 ? 0 : A extends 5 ? -1 : A extends -5 ? 1 : A extends 10 ? -2 : A extends -10 ? 2 : never : B extends 6 ? A extends 0 ? 0 : A extends 6 ? 1 : A extends -6 ? -1 : A extends 12 ? 2 : A extends -12 ? -2 : never : B extends -6 ? A extends 0 ? 0 : A extends 6 ? -1 : A extends -6 ? 1 : A extends 12 ? -2 : A extends -12 ? 2 : never : B extends 7 ? A extends 0 ? 0 : A extends 7 ? 1 : A extends -7 ? -1 : never : B extends -7 ? A extends 0 ? 0 : A extends 7 ? -1 : A extends -7 ? 1 : never : B extends 8 ? A extends 0 ? 0 : A extends 8 ? 1 : A extends -8 ? -1 : never : B extends -8 ? A extends 0 ? 0 : A extends 8 ? -1 : A extends -8 ? 1 : never : B extends 9 ? A extends 0 ? 0 : A extends 9 ? 1 : A extends -9 ? -1 : never : B extends -9 ? A extends 0 ? 0 : A extends 9 ? -1 : A extends -9 ? 1 : never : B extends 10 ? A extends 0 ? 0 : A extends 10 ? 1 : A extends -10 ? -1 : never : B extends -10 ? A extends 0 ? 0 : A extends 10 ? -1 : A extends -10 ? 1 : never : B extends 11 ? A extends 0 ? 0 : A extends 11 ? 1 : A extends -11 ? -1 : never : B extends -11 ? A extends 0 ? 0 : A extends 11 ? -1 : A extends -11 ? 1 : never : B extends 12 ? A extends 0 ? 0 : A extends 12 ? 1 : A extends -12 ? -1 : never : B extends -12 ? A extends 0 ? 0 : A extends 12 ? -1 : A extends -12 ? 1 : never : never;
44
- /**
45
- * Available for providing custom branding.
46
- */
47
- export interface Brand {
44
+ interface Brand {
48
45
  }
49
- /**
50
- * Brand with the unit meta.
51
- */
52
- export type BrandUnitMeta<UM extends UnknownUnitMeta> = Brand & {
46
+ type BrandUnitMeta<UM extends UnknownUnitMeta> = Brand & {
53
47
  __uom_types: {
54
48
  unitMeta: UM;
55
49
  };
56
50
  };
57
- /**
58
- * Brand with the unit class.
59
- */
60
- export type BrandUnitClass<UC extends UnknownUnitClass> = Brand & {
51
+ type BrandUnitClass<UC extends UnknownUnitClass> = Brand & {
61
52
  __uom_types: {
62
53
  unitClass: UC;
63
54
  };
64
55
  };
65
- /**
66
- * Brand that it is a unit class.
67
- */
68
- export type BrandUnitClassType = Brand & {
56
+ type BrandUnitClassType = Brand & {
69
57
  __uom_types: {
70
58
  unitClassType: true;
71
59
  };
72
60
  };
73
- /**
74
- * Brand with the unit keys and value.
75
- */
76
- export type BrandUnitKeyValues<K, V> = Brand & Readonly<{
61
+ type BrandUnitKeyValues<K, V> = Brand & Readonly<{
77
62
  __uom_types: {
78
63
  keys: K;
79
64
  value: V;
80
65
  };
81
66
  }>;
82
- /**
83
- * Remove all key from the object that are `never`.
84
- */
85
- export type RemoveNeverValues<T extends object> = {
67
+ type RemoveNeverValues<T extends object> = {
86
68
  [K in keyof T as [
87
69
  T[K]
88
70
  ] extends [
89
71
  never
90
72
  ] ? never : K]: T[K];
91
73
  };
92
- /**
93
- * Exclude all unit subvalues with an exponent value of zero.
94
- */
95
- export type ExcludeUnitZeroSubvalues<U extends UnitSubvalues> = {
74
+ type ExcludeUnitZeroSubvalues<U extends UnitSubvalues> = {
96
75
  [S in keyof U as S extends string ? (U[S] extends 0 ? never : S) : never]: U[S];
97
76
  };
98
- /**
99
- * Get the exponent value of the given key.
100
- */
101
- export type GetExponent<C extends UnitSubvalues, S> = S extends keyof C ? C[S] : 0;
102
- /**
103
- * Flatten a complex type such as a union or intersection of objects into a
104
- * single object.
105
- *
106
- * @internal
107
- */
108
- export type FlatternAlias<T> = {
77
+ type GetExponent<C extends UnitSubvalues, S> = S extends keyof C ? C[S] : 0;
78
+ type FlatternAlias<T> = {
109
79
  [P in keyof T]: T[P];
110
80
  } & {};
111
- /**
112
- * Make `T` exactly `T`.
113
- *
114
- * @internal
115
- */
116
- export type Exactify<T, U extends T> = T & {
81
+ type Exactify<T, U extends T> = T & {
117
82
  [K in keyof U]: K extends keyof T ? U[K] : never;
118
83
  };
119
84
  /**
@@ -201,115 +166,22 @@ export type UnknownUnitClass = UnknownUnitKeyValues & BrandUnitClassType;
201
166
  export type UnknownUnitMeta = UnknownUnitKeyValues & Readonly<{
202
167
  __uno_types__unit_meta_type: true;
203
168
  }>;
204
- /**
205
- * @internal
206
- */
207
- export type UnitKeyValues<T extends UnitSubvalues> = BrandUnitKeyValues<keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never, RemoveNeverValues<T>>;
208
- /**
209
- * @internal
210
- */
211
- export type UnknownUnitKeyValues = BrandUnitKeyValues<string, {}>;
169
+ type UnitKeyValues<T extends UnitSubvalues> = BrandUnitKeyValues<keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never, RemoveNeverValues<T>>;
170
+ type UnknownUnitKeyValues = BrandUnitKeyValues<string, {}>;
212
171
  /**
213
172
  * A mapping of subvalue of a unit its magnitude.
214
173
  *
215
174
  * @group Unit Components
216
175
  */
217
176
  export type UnitSubvalues = Record<string, Exponent>;
218
- /**
219
- * Take the inverse of a unit.
220
- *
221
- * @group Unit Functions
222
- * @returns `1/X`.
223
- */
224
- export type Inverse<X extends number> = Pow<X, -1>;
225
- /**
226
- * Inverses each of the subvalues.
227
- *
228
- * @group Unit Subvalue Functions
229
- */
230
- export type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
231
- /**
232
- * Multiply a unit by another unit.
233
- *
234
- * @group Unit Functions
235
- * @returns `A⋅B`
236
- */
237
- export type Multiply<A extends number, B extends number> = A extends UnknownUnit ? MultiplyHelperUnit<A, B> : B extends UnknownUnit ? MultiplyHelperUnit<B, A> : A extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<A, B> : B extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<B, A> : A extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<A, B> : B extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<B, A> : number;
238
- /**
239
- * Multiple a Unit by a Unit, AbstractUnit, UnitConversionRate or number
240
- *
241
- * @internal
242
- */
243
- export type MultiplyHelperUnit<A extends UnknownUnit, B extends number> = A extends Unit<infer AClass, infer AMeta> ? B extends Unit<infer BClass, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends AbstractUnit<infer BClass> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, AMeta> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
244
- /**
245
- * Multiple an AbstractUnit by an AbstractUnit, UnitConversionRate or number
246
- *
247
- * @internal
248
- */
249
- export type MultiplyHelperAbstractUnit<A extends UnknownAbstractUnit, B extends number> = A extends AbstractUnit<infer AClass> ? B extends AbstractUnit<infer BClass> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, BMeta> : A : never;
250
- /**
251
- * Multiple an UnitConversionRate by a UnitConversionRate or number
252
- *
253
- * @internal
254
- */
255
- export type MultiplyHelperUnitConversionRate<A extends UnknownUnitConversionRate, B extends number> = A extends UnitConversionRate<infer AMeta> ? B extends UnitConversionRate<infer BMeta> ? UnitConversionRate<FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
256
- /**
257
- * Multiply each of the subvalues from a unit with the corresponding once from another unit.
258
- *
259
- * @group Unit Subvalue Functions
260
- */
261
- export type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
262
- [S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
263
- }>;
264
- /**
265
- * Divide a unit by another unit.
266
- *
267
- * @group Unit Functions
268
- * @returns `A/B`
269
- */
270
- export type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
271
- /**
272
- * Divide each of the subvalues from a unit with the corresponding once from another unit.
273
- *
274
- * @group Unit Subvalue Functions
275
- */
276
- export type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
277
- /**
278
- * Put a unit to the power of an exponent.
279
- *
280
- * @group Unit Functions
281
- */
282
- export type Pow<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Class, E>>, FlatternAlias<PowUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<PowUnitSubvalues<Meta, E>>> : number;
283
- /**
284
- * Put each subvalue of a unit to the power of an exponent.
285
- *
286
- * @group Unit Subvalue Functions
287
- */
288
- export type PowUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
289
- [S in keyof B]: MultiplyExponents<GetExponent<B, S>, E>;
290
- }>;
291
- /**
292
- * Take the nth root of a unit.
293
- *
294
- * @group Unit Functions
295
- */
296
- export type Root<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Class, E>>, FlatternAlias<RootUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<RootUnitSubvalues<Meta, E>>> : number;
297
- /**
298
- * Take the nth root of each subvalue of a unit.
299
- *
300
- * @group Unit Subvalue Functions
301
- */
302
- export type RootUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
303
- [S in keyof B]: DivideExponents<GetExponent<B, S>, E>;
304
- }>;
305
- export type SiUnitKeys = "Second" | "Meter" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
177
+ type SiUnitKeys = "Second" | "Meter" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
306
178
  /**
307
179
  * The {@link UnitClass} that is the base of all {@link Unit}s defined by this library.
308
180
  *
309
181
  * @group Unit Classes
310
182
  */
311
183
  export type BaseUnitClass<T extends Exactify<SiUnitConfig, T>> = UnitClass<T>;
312
- export type SiUnitConfig = Partial<Record<SiUnitKeys, Exponent>>;
184
+ type SiUnitConfig = Partial<Record<SiUnitKeys, Exponent>>;
313
185
  /**
314
186
  * @group Unit Classes
315
187
  * @category Angle (Plane)
@@ -1230,6 +1102,78 @@ export type MagneticPermeabilityUnitFrom<M extends UnknownUnitMeta> = UnitFrom<M
1230
1102
  * @symbol `H/m`
1231
1103
  */
1232
1104
  export type HenryPerMeter = MagneticPermeabilityUnit<{}>;
1105
+ /**
1106
+ * Take the inverse of a unit.
1107
+ *
1108
+ * @group Unit Functions
1109
+ * @returns `1/X`.
1110
+ */
1111
+ export type Inverse<X extends number> = Pow<X, -1>;
1112
+ /**
1113
+ * Inverses each of the subvalues.
1114
+ *
1115
+ * @group Unit Subvalue Functions
1116
+ */
1117
+ export type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
1118
+ /**
1119
+ * Multiply a unit by another unit.
1120
+ *
1121
+ * @group Unit Functions
1122
+ * @returns `A⋅B`
1123
+ */
1124
+ export type Multiply<A extends number, B extends number> = A extends UnknownUnit ? MultiplyHelperUnit<A, B> : B extends UnknownUnit ? MultiplyHelperUnit<B, A> : A extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<A, B> : B extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<B, A> : A extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<A, B> : B extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<B, A> : number;
1125
+ type MultiplyHelperUnit<A extends UnknownUnit, B extends number> = A extends Unit<infer AClass, infer AMeta> ? B extends Unit<infer BClass, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends AbstractUnit<infer BClass> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, AMeta> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
1126
+ type MultiplyHelperAbstractUnit<A extends UnknownAbstractUnit, B extends number> = A extends AbstractUnit<infer AClass> ? B extends AbstractUnit<infer BClass> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, BMeta> : A : never;
1127
+ type MultiplyHelperUnitConversionRate<A extends UnknownUnitConversionRate, B extends number> = A extends UnitConversionRate<infer AMeta> ? B extends UnitConversionRate<infer BMeta> ? UnitConversionRate<FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
1128
+ /**
1129
+ * Multiply each of the subvalues from a unit with the corresponding once from another unit.
1130
+ *
1131
+ * @group Unit Subvalue Functions
1132
+ */
1133
+ export type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
1134
+ [S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
1135
+ }>;
1136
+ /**
1137
+ * Divide a unit by another unit.
1138
+ *
1139
+ * @group Unit Functions
1140
+ * @returns `A/B`
1141
+ */
1142
+ export type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
1143
+ /**
1144
+ * Divide each of the subvalues from a unit with the corresponding once from another unit.
1145
+ *
1146
+ * @group Unit Subvalue Functions
1147
+ */
1148
+ export type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
1149
+ /**
1150
+ * Put a unit to the power of an exponent.
1151
+ *
1152
+ * @group Unit Functions
1153
+ */
1154
+ export type Pow<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Class, E>>, FlatternAlias<PowUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<PowUnitSubvalues<Meta, E>>> : number;
1155
+ /**
1156
+ * Put each subvalue of a unit to the power of an exponent.
1157
+ *
1158
+ * @group Unit Subvalue Functions
1159
+ */
1160
+ export type PowUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
1161
+ [S in keyof B]: MultiplyExponents<GetExponent<B, S>, E>;
1162
+ }>;
1163
+ /**
1164
+ * Take the nth root of a unit.
1165
+ *
1166
+ * @group Unit Functions
1167
+ */
1168
+ export type Root<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Class, E>>, FlatternAlias<RootUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<RootUnitSubvalues<Meta, E>>> : number;
1169
+ /**
1170
+ * Take the nth root of each subvalue of a unit.
1171
+ *
1172
+ * @group Unit Subvalue Functions
1173
+ */
1174
+ export type RootUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
1175
+ [S in keyof B]: DivideExponents<GetExponent<B, S>, E>;
1176
+ }>;
1233
1177
  /**
1234
1178
  * Put the given {@link Unit} to the power of 2.
1235
1179
  *
@@ -4180,7 +4124,7 @@ export declare function cubicMetersToLiters(volume: Cubic<Meter>): Liter;
4180
4124
  * Convert {@link Liter} to {@link Cubic}<{@link Meter}>.
4181
4125
  */
4182
4126
  export declare function litersToCubicMeters(volume: Liter): Cubic<Meter>;
4183
- export type OperationIO<T extends number> = [
4127
+ type OperationIO<T extends number> = [
4184
4128
  T
4185
4129
  ] extends [
4186
4130
  UnknownUnit | UnknownAbstractUnit
@@ -4275,10 +4219,10 @@ export declare function modSafe<T extends number>(a: OperationIO<T>, b: Operatio
4275
4219
  * @returns A function that takes a integer and returns an integer between zero (inclusive) and `b` (exclusive).
4276
4220
  */
4277
4221
  export declare function modSafe<T extends number>(b: OperationIO<T>): (a: OperationIO<T>) => OperationIO<T>;
4278
- export type PowResult<B extends number, E extends number> = E extends Unitless ? PowResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Pow<B, E> : E extends 0.5 ? Root<B, 2> : B extends Unitless ? B : number;
4279
- export type PowFunction<B extends number, E extends number> = (b: B) => PowResult<B, E>;
4280
- export type RootResult<B extends number, E extends number> = E extends Unitless ? RootResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Root<B, E> : E extends 0.5 ? Pow<B, 2> : B extends Unitless ? B : number;
4281
- export type RootFunction<B extends number, E extends number> = (b: B) => RootResult<B, E>;
4222
+ type PowResult<B extends number, E extends number> = E extends Unitless ? PowResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Pow<B, E> : E extends 0.5 ? Root<B, 2> : B extends Unitless ? B : number;
4223
+ type PowFunction<B extends number, E extends number> = (b: B) => PowResult<B, E>;
4224
+ type RootResult<B extends number, E extends number> = E extends Unitless ? RootResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Root<B, E> : E extends 0.5 ? Pow<B, 2> : B extends Unitless ? B : number;
4225
+ type RootFunction<B extends number, E extends number> = (b: B) => RootResult<B, E>;
4282
4226
  /**
4283
4227
  * Raise a number to the power of another.
4284
4228
  *
package/dist/index.d.mts CHANGED
@@ -41,79 +41,44 @@ export type MultiplyExponents<A extends Exponent, B extends Exponent> = A extend
41
41
  * @group Exponent Functions
42
42
  */
43
43
  export type DivideExponents<A extends Exponent, B extends Exponent> = B extends 0 ? never : B extends 1 ? A extends 0 ? 0 : A extends 1 ? 1 : A extends -1 ? -1 : A extends 2 ? 2 : A extends -2 ? -2 : A extends 3 ? 3 : A extends -3 ? -3 : A extends 4 ? 4 : A extends -4 ? -4 : A extends 5 ? 5 : A extends -5 ? -5 : A extends 6 ? 6 : A extends -6 ? -6 : A extends 7 ? 7 : A extends -7 ? -7 : A extends 8 ? 8 : A extends -8 ? -8 : A extends 9 ? 9 : A extends -9 ? -9 : A extends 10 ? 10 : A extends -10 ? -10 : A extends 11 ? 11 : A extends -11 ? -11 : A extends 12 ? 12 : A extends -12 ? -12 : never : B extends -1 ? A extends 0 ? 0 : A extends 1 ? -1 : A extends -1 ? 1 : A extends 2 ? -2 : A extends -2 ? 2 : A extends 3 ? -3 : A extends -3 ? 3 : A extends 4 ? -4 : A extends -4 ? 4 : A extends 5 ? -5 : A extends -5 ? 5 : A extends 6 ? -6 : A extends -6 ? 6 : A extends 7 ? -7 : A extends -7 ? 7 : A extends 8 ? -8 : A extends -8 ? 8 : A extends 9 ? -9 : A extends -9 ? 9 : A extends 10 ? -10 : A extends -10 ? 10 : A extends 11 ? -11 : A extends -11 ? 11 : A extends 12 ? -12 : A extends -12 ? 12 : never : B extends 2 ? A extends 0 ? 0 : A extends 2 ? 1 : A extends -2 ? -1 : A extends 4 ? 2 : A extends -4 ? -2 : A extends 6 ? 3 : A extends -6 ? -3 : A extends 8 ? 4 : A extends -8 ? -4 : A extends 10 ? 5 : A extends -10 ? -5 : A extends 12 ? 6 : A extends -12 ? -6 : never : B extends -2 ? A extends 0 ? 0 : A extends 2 ? -1 : A extends -2 ? 1 : A extends 4 ? -2 : A extends -4 ? 2 : A extends 6 ? -3 : A extends -6 ? 3 : A extends 8 ? -4 : A extends -8 ? 4 : A extends 10 ? -5 : A extends -10 ? 5 : A extends 12 ? -6 : A extends -12 ? 6 : never : B extends 3 ? A extends 0 ? 0 : A extends 3 ? 1 : A extends -3 ? -1 : A extends 6 ? 2 : A extends -6 ? -2 : A extends 9 ? 3 : A extends -9 ? -3 : A extends 12 ? 4 : A extends -12 ? -4 : never : B extends -3 ? A extends 0 ? 0 : A extends 3 ? -1 : A extends -3 ? 1 : A extends 6 ? -2 : A extends -6 ? 2 : A extends 9 ? -3 : A extends -9 ? 3 : A extends 12 ? -4 : A extends -12 ? 4 : never : B extends 4 ? A extends 0 ? 0 : A extends 4 ? 1 : A extends -4 ? -1 : A extends 8 ? 2 : A extends -8 ? -2 : A extends 12 ? 3 : A extends -12 ? -3 : never : B extends -4 ? A extends 0 ? 0 : A extends 4 ? -1 : A extends -4 ? 1 : A extends 8 ? -2 : A extends -8 ? 2 : A extends 12 ? -3 : A extends -12 ? 3 : never : B extends 5 ? A extends 0 ? 0 : A extends 5 ? 1 : A extends -5 ? -1 : A extends 10 ? 2 : A extends -10 ? -2 : never : B extends -5 ? A extends 0 ? 0 : A extends 5 ? -1 : A extends -5 ? 1 : A extends 10 ? -2 : A extends -10 ? 2 : never : B extends 6 ? A extends 0 ? 0 : A extends 6 ? 1 : A extends -6 ? -1 : A extends 12 ? 2 : A extends -12 ? -2 : never : B extends -6 ? A extends 0 ? 0 : A extends 6 ? -1 : A extends -6 ? 1 : A extends 12 ? -2 : A extends -12 ? 2 : never : B extends 7 ? A extends 0 ? 0 : A extends 7 ? 1 : A extends -7 ? -1 : never : B extends -7 ? A extends 0 ? 0 : A extends 7 ? -1 : A extends -7 ? 1 : never : B extends 8 ? A extends 0 ? 0 : A extends 8 ? 1 : A extends -8 ? -1 : never : B extends -8 ? A extends 0 ? 0 : A extends 8 ? -1 : A extends -8 ? 1 : never : B extends 9 ? A extends 0 ? 0 : A extends 9 ? 1 : A extends -9 ? -1 : never : B extends -9 ? A extends 0 ? 0 : A extends 9 ? -1 : A extends -9 ? 1 : never : B extends 10 ? A extends 0 ? 0 : A extends 10 ? 1 : A extends -10 ? -1 : never : B extends -10 ? A extends 0 ? 0 : A extends 10 ? -1 : A extends -10 ? 1 : never : B extends 11 ? A extends 0 ? 0 : A extends 11 ? 1 : A extends -11 ? -1 : never : B extends -11 ? A extends 0 ? 0 : A extends 11 ? -1 : A extends -11 ? 1 : never : B extends 12 ? A extends 0 ? 0 : A extends 12 ? 1 : A extends -12 ? -1 : never : B extends -12 ? A extends 0 ? 0 : A extends 12 ? -1 : A extends -12 ? 1 : never : never;
44
- /**
45
- * Available for providing custom branding.
46
- */
47
- export interface Brand {
44
+ interface Brand {
48
45
  }
49
- /**
50
- * Brand with the unit meta.
51
- */
52
- export type BrandUnitMeta<UM extends UnknownUnitMeta> = Brand & {
46
+ type BrandUnitMeta<UM extends UnknownUnitMeta> = Brand & {
53
47
  __uom_types: {
54
48
  unitMeta: UM;
55
49
  };
56
50
  };
57
- /**
58
- * Brand with the unit class.
59
- */
60
- export type BrandUnitClass<UC extends UnknownUnitClass> = Brand & {
51
+ type BrandUnitClass<UC extends UnknownUnitClass> = Brand & {
61
52
  __uom_types: {
62
53
  unitClass: UC;
63
54
  };
64
55
  };
65
- /**
66
- * Brand that it is a unit class.
67
- */
68
- export type BrandUnitClassType = Brand & {
56
+ type BrandUnitClassType = Brand & {
69
57
  __uom_types: {
70
58
  unitClassType: true;
71
59
  };
72
60
  };
73
- /**
74
- * Brand with the unit keys and value.
75
- */
76
- export type BrandUnitKeyValues<K, V> = Brand & Readonly<{
61
+ type BrandUnitKeyValues<K, V> = Brand & Readonly<{
77
62
  __uom_types: {
78
63
  keys: K;
79
64
  value: V;
80
65
  };
81
66
  }>;
82
- /**
83
- * Remove all key from the object that are `never`.
84
- */
85
- export type RemoveNeverValues<T extends object> = {
67
+ type RemoveNeverValues<T extends object> = {
86
68
  [K in keyof T as [
87
69
  T[K]
88
70
  ] extends [
89
71
  never
90
72
  ] ? never : K]: T[K];
91
73
  };
92
- /**
93
- * Exclude all unit subvalues with an exponent value of zero.
94
- */
95
- export type ExcludeUnitZeroSubvalues<U extends UnitSubvalues> = {
74
+ type ExcludeUnitZeroSubvalues<U extends UnitSubvalues> = {
96
75
  [S in keyof U as S extends string ? (U[S] extends 0 ? never : S) : never]: U[S];
97
76
  };
98
- /**
99
- * Get the exponent value of the given key.
100
- */
101
- export type GetExponent<C extends UnitSubvalues, S> = S extends keyof C ? C[S] : 0;
102
- /**
103
- * Flatten a complex type such as a union or intersection of objects into a
104
- * single object.
105
- *
106
- * @internal
107
- */
108
- export type FlatternAlias<T> = {
77
+ type GetExponent<C extends UnitSubvalues, S> = S extends keyof C ? C[S] : 0;
78
+ type FlatternAlias<T> = {
109
79
  [P in keyof T]: T[P];
110
80
  } & {};
111
- /**
112
- * Make `T` exactly `T`.
113
- *
114
- * @internal
115
- */
116
- export type Exactify<T, U extends T> = T & {
81
+ type Exactify<T, U extends T> = T & {
117
82
  [K in keyof U]: K extends keyof T ? U[K] : never;
118
83
  };
119
84
  /**
@@ -201,115 +166,22 @@ export type UnknownUnitClass = UnknownUnitKeyValues & BrandUnitClassType;
201
166
  export type UnknownUnitMeta = UnknownUnitKeyValues & Readonly<{
202
167
  __uno_types__unit_meta_type: true;
203
168
  }>;
204
- /**
205
- * @internal
206
- */
207
- export type UnitKeyValues<T extends UnitSubvalues> = BrandUnitKeyValues<keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never, RemoveNeverValues<T>>;
208
- /**
209
- * @internal
210
- */
211
- export type UnknownUnitKeyValues = BrandUnitKeyValues<string, {}>;
169
+ type UnitKeyValues<T extends UnitSubvalues> = BrandUnitKeyValues<keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never, RemoveNeverValues<T>>;
170
+ type UnknownUnitKeyValues = BrandUnitKeyValues<string, {}>;
212
171
  /**
213
172
  * A mapping of subvalue of a unit its magnitude.
214
173
  *
215
174
  * @group Unit Components
216
175
  */
217
176
  export type UnitSubvalues = Record<string, Exponent>;
218
- /**
219
- * Take the inverse of a unit.
220
- *
221
- * @group Unit Functions
222
- * @returns `1/X`.
223
- */
224
- export type Inverse<X extends number> = Pow<X, -1>;
225
- /**
226
- * Inverses each of the subvalues.
227
- *
228
- * @group Unit Subvalue Functions
229
- */
230
- export type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
231
- /**
232
- * Multiply a unit by another unit.
233
- *
234
- * @group Unit Functions
235
- * @returns `A⋅B`
236
- */
237
- export type Multiply<A extends number, B extends number> = A extends UnknownUnit ? MultiplyHelperUnit<A, B> : B extends UnknownUnit ? MultiplyHelperUnit<B, A> : A extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<A, B> : B extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<B, A> : A extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<A, B> : B extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<B, A> : number;
238
- /**
239
- * Multiple a Unit by a Unit, AbstractUnit, UnitConversionRate or number
240
- *
241
- * @internal
242
- */
243
- export type MultiplyHelperUnit<A extends UnknownUnit, B extends number> = A extends Unit<infer AClass, infer AMeta> ? B extends Unit<infer BClass, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends AbstractUnit<infer BClass> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, AMeta> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
244
- /**
245
- * Multiple an AbstractUnit by an AbstractUnit, UnitConversionRate or number
246
- *
247
- * @internal
248
- */
249
- export type MultiplyHelperAbstractUnit<A extends UnknownAbstractUnit, B extends number> = A extends AbstractUnit<infer AClass> ? B extends AbstractUnit<infer BClass> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, BMeta> : A : never;
250
- /**
251
- * Multiple an UnitConversionRate by a UnitConversionRate or number
252
- *
253
- * @internal
254
- */
255
- export type MultiplyHelperUnitConversionRate<A extends UnknownUnitConversionRate, B extends number> = A extends UnitConversionRate<infer AMeta> ? B extends UnitConversionRate<infer BMeta> ? UnitConversionRate<FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
256
- /**
257
- * Multiply each of the subvalues from a unit with the corresponding once from another unit.
258
- *
259
- * @group Unit Subvalue Functions
260
- */
261
- export type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
262
- [S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
263
- }>;
264
- /**
265
- * Divide a unit by another unit.
266
- *
267
- * @group Unit Functions
268
- * @returns `A/B`
269
- */
270
- export type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
271
- /**
272
- * Divide each of the subvalues from a unit with the corresponding once from another unit.
273
- *
274
- * @group Unit Subvalue Functions
275
- */
276
- export type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
277
- /**
278
- * Put a unit to the power of an exponent.
279
- *
280
- * @group Unit Functions
281
- */
282
- export type Pow<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Class, E>>, FlatternAlias<PowUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<PowUnitSubvalues<Meta, E>>> : number;
283
- /**
284
- * Put each subvalue of a unit to the power of an exponent.
285
- *
286
- * @group Unit Subvalue Functions
287
- */
288
- export type PowUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
289
- [S in keyof B]: MultiplyExponents<GetExponent<B, S>, E>;
290
- }>;
291
- /**
292
- * Take the nth root of a unit.
293
- *
294
- * @group Unit Functions
295
- */
296
- export type Root<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Class, E>>, FlatternAlias<RootUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<RootUnitSubvalues<Meta, E>>> : number;
297
- /**
298
- * Take the nth root of each subvalue of a unit.
299
- *
300
- * @group Unit Subvalue Functions
301
- */
302
- export type RootUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
303
- [S in keyof B]: DivideExponents<GetExponent<B, S>, E>;
304
- }>;
305
- export type SiUnitKeys = "Second" | "Meter" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
177
+ type SiUnitKeys = "Second" | "Meter" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
306
178
  /**
307
179
  * The {@link UnitClass} that is the base of all {@link Unit}s defined by this library.
308
180
  *
309
181
  * @group Unit Classes
310
182
  */
311
183
  export type BaseUnitClass<T extends Exactify<SiUnitConfig, T>> = UnitClass<T>;
312
- export type SiUnitConfig = Partial<Record<SiUnitKeys, Exponent>>;
184
+ type SiUnitConfig = Partial<Record<SiUnitKeys, Exponent>>;
313
185
  /**
314
186
  * @group Unit Classes
315
187
  * @category Angle (Plane)
@@ -1230,6 +1102,78 @@ export type MagneticPermeabilityUnitFrom<M extends UnknownUnitMeta> = UnitFrom<M
1230
1102
  * @symbol `H/m`
1231
1103
  */
1232
1104
  export type HenryPerMeter = MagneticPermeabilityUnit<{}>;
1105
+ /**
1106
+ * Take the inverse of a unit.
1107
+ *
1108
+ * @group Unit Functions
1109
+ * @returns `1/X`.
1110
+ */
1111
+ export type Inverse<X extends number> = Pow<X, -1>;
1112
+ /**
1113
+ * Inverses each of the subvalues.
1114
+ *
1115
+ * @group Unit Subvalue Functions
1116
+ */
1117
+ export type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
1118
+ /**
1119
+ * Multiply a unit by another unit.
1120
+ *
1121
+ * @group Unit Functions
1122
+ * @returns `A⋅B`
1123
+ */
1124
+ export type Multiply<A extends number, B extends number> = A extends UnknownUnit ? MultiplyHelperUnit<A, B> : B extends UnknownUnit ? MultiplyHelperUnit<B, A> : A extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<A, B> : B extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<B, A> : A extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<A, B> : B extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<B, A> : number;
1125
+ type MultiplyHelperUnit<A extends UnknownUnit, B extends number> = A extends Unit<infer AClass, infer AMeta> ? B extends Unit<infer BClass, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends AbstractUnit<infer BClass> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, AMeta> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
1126
+ type MultiplyHelperAbstractUnit<A extends UnknownAbstractUnit, B extends number> = A extends AbstractUnit<infer AClass> ? B extends AbstractUnit<infer BClass> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, BMeta> : A : never;
1127
+ type MultiplyHelperUnitConversionRate<A extends UnknownUnitConversionRate, B extends number> = A extends UnitConversionRate<infer AMeta> ? B extends UnitConversionRate<infer BMeta> ? UnitConversionRate<FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
1128
+ /**
1129
+ * Multiply each of the subvalues from a unit with the corresponding once from another unit.
1130
+ *
1131
+ * @group Unit Subvalue Functions
1132
+ */
1133
+ export type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
1134
+ [S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
1135
+ }>;
1136
+ /**
1137
+ * Divide a unit by another unit.
1138
+ *
1139
+ * @group Unit Functions
1140
+ * @returns `A/B`
1141
+ */
1142
+ export type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
1143
+ /**
1144
+ * Divide each of the subvalues from a unit with the corresponding once from another unit.
1145
+ *
1146
+ * @group Unit Subvalue Functions
1147
+ */
1148
+ export type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
1149
+ /**
1150
+ * Put a unit to the power of an exponent.
1151
+ *
1152
+ * @group Unit Functions
1153
+ */
1154
+ export type Pow<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Class, E>>, FlatternAlias<PowUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<PowUnitSubvalues<Meta, E>>> : number;
1155
+ /**
1156
+ * Put each subvalue of a unit to the power of an exponent.
1157
+ *
1158
+ * @group Unit Subvalue Functions
1159
+ */
1160
+ export type PowUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
1161
+ [S in keyof B]: MultiplyExponents<GetExponent<B, S>, E>;
1162
+ }>;
1163
+ /**
1164
+ * Take the nth root of a unit.
1165
+ *
1166
+ * @group Unit Functions
1167
+ */
1168
+ export type Root<B extends number, E extends Exponent> = B extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Class, E>>, FlatternAlias<RootUnitSubvalues<Meta, E>>> : B extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Class, E>>> : B extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<RootUnitSubvalues<Meta, E>>> : number;
1169
+ /**
1170
+ * Take the nth root of each subvalue of a unit.
1171
+ *
1172
+ * @group Unit Subvalue Functions
1173
+ */
1174
+ export type RootUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
1175
+ [S in keyof B]: DivideExponents<GetExponent<B, S>, E>;
1176
+ }>;
1233
1177
  /**
1234
1178
  * Put the given {@link Unit} to the power of 2.
1235
1179
  *
@@ -4180,7 +4124,7 @@ export declare function cubicMetersToLiters(volume: Cubic<Meter>): Liter;
4180
4124
  * Convert {@link Liter} to {@link Cubic}<{@link Meter}>.
4181
4125
  */
4182
4126
  export declare function litersToCubicMeters(volume: Liter): Cubic<Meter>;
4183
- export type OperationIO<T extends number> = [
4127
+ type OperationIO<T extends number> = [
4184
4128
  T
4185
4129
  ] extends [
4186
4130
  UnknownUnit | UnknownAbstractUnit
@@ -4275,10 +4219,10 @@ export declare function modSafe<T extends number>(a: OperationIO<T>, b: Operatio
4275
4219
  * @returns A function that takes a integer and returns an integer between zero (inclusive) and `b` (exclusive).
4276
4220
  */
4277
4221
  export declare function modSafe<T extends number>(b: OperationIO<T>): (a: OperationIO<T>) => OperationIO<T>;
4278
- export type PowResult<B extends number, E extends number> = E extends Unitless ? PowResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Pow<B, E> : E extends 0.5 ? Root<B, 2> : B extends Unitless ? B : number;
4279
- export type PowFunction<B extends number, E extends number> = (b: B) => PowResult<B, E>;
4280
- export type RootResult<B extends number, E extends number> = E extends Unitless ? RootResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Root<B, E> : E extends 0.5 ? Pow<B, 2> : B extends Unitless ? B : number;
4281
- export type RootFunction<B extends number, E extends number> = (b: B) => RootResult<B, E>;
4222
+ type PowResult<B extends number, E extends number> = E extends Unitless ? PowResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Pow<B, E> : E extends 0.5 ? Root<B, 2> : B extends Unitless ? B : number;
4223
+ type PowFunction<B extends number, E extends number> = (b: B) => PowResult<B, E>;
4224
+ type RootResult<B extends number, E extends number> = E extends Unitless ? RootResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Root<B, E> : E extends 0.5 ? Pow<B, 2> : B extends Unitless ? B : number;
4225
+ type RootFunction<B extends number, E extends number> = (b: B) => RootResult<B, E>;
4282
4226
  /**
4283
4227
  * Raise a number to the power of another.
4284
4228
  *