import { Digit, TrimZeros } from "../utils"; import { _DivModDigits } from "./division"; import { MulDigits } from "./multiply"; export type PowerDigits = U extends [0] ? [1] : U extends [1] ? MulDigits : U extends [infer UN extends Digit, ...infer UR extends Digit[]] ? _DivModDigits extends { Quotient: infer Q extends Digit[]; Remainder: infer R extends Digit[]; } ? TrimZeros extends [0] ? PowerDigits, TrimZeros, Acc> : PowerDigits, TrimZeros, MulDigits> : never : Acc;