import { Digit } from "../utils"; import { AddDigits } from "./addition"; import { SubDigits } from "./substraction"; export type MulX2 = AddDigits; export type MulX3 = AddDigits>; export type MulX4 = MulX2>; export type MulX5 = AddDigits>; export type MulX6 = MulX2>; export type MulX7 = SubDigits, MulX3>; export type MulX8 = SubDigits, MulX2>; export type MulX9 = SubDigits, T>; export type MulX10 = [...T, 0]; export type MulByDigit = U extends 0 ? [0] : U extends 1 ? T : U extends 2 ? MulX2 : U extends 3 ? MulX3 : U extends 4 ? MulX4 : U extends 5 ? MulX5 : U extends 6 ? MulX6 : U extends 7 ? MulX7 : U extends 8 ? MulX8 : MulX9; export type MulDigits = U extends [infer N extends Digit, ...infer R extends Digit[]] ? MulDigits, MulX10>> : Acc;