import { Add } from "../../numbers/impl/addition"; import { StringIterator as StrIter } from "./utils"; type LengthUp = StrIter.Double extends infer $DoubleIt extends StrIter.Iterator ? StrIter.CutAt extends `${infer $Rest}` ? StrIter.Size extends 12 ? LengthDown<$Rest, Add>, $DoubleIt> : LengthUp<$Rest, Add>, $DoubleIt> : StrIter.CutAt extends `${infer $Rest}` ? LengthUp<$Rest, Add>, It> : LengthDown> : never; type LengthDown = It extends StrIter.Iterator ? StrIter.CutAt extends `${infer $Rest}` ? LengthDown<$Rest, Add>, It> : LengthDown> : Length; export type Length = T extends "" ? 0 : LengthUp; export {};