import { type TTrim } from './internal/trim'; import { type TTake } from './internal/take'; import { type TMany } from './internal/many'; import { type TDigit, type TUnderScore } from './internal/char'; import { type TDot } from './internal/char'; import { type TUnsignedInteger } from './unsigned_integer'; type TAllowedDigits = [...TDigit, TUnderScore]; type TIsLeadingDot = (TTake<[TDot], Input> extends [string, string] ? true : false); type TTakeFractional = (TMany extends [infer Digits extends string, infer DigitsRest extends string] ? Digits extends '' ? [] : [Digits, DigitsRest] : []); type TLeadingDot = (TTake<[TDot], Input> extends [infer Dot extends string, infer DotRest extends string] ? TTakeFractional extends [infer Fractional extends string, infer FractionalRest extends string] ? [`0${Dot}${Fractional}`, FractionalRest] : [] : []); type TLeadingInteger = (TUnsignedInteger extends [infer Integer extends string, infer IntegerRest extends string] ? TTake<[TDot], IntegerRest> extends [infer Dot extends string, infer DotRest extends string] ? TTakeFractional extends [infer Fractional extends string, infer FractionalRest extends string] ? [`${Integer}${Dot}${Fractional}`, FractionalRest] : [`${Integer}`, DotRest] : [`${Integer}`, IntegerRest] : []); type TTakeUnsignedNumber = (TIsLeadingDot extends true ? TLeadingDot : TLeadingInteger); /** Matches if next is a UnsignedNumber */ export type TUnsignedNumber = (TTakeUnsignedNumber>); /** Matches if next is a UnsignedNumber */ export declare function UnsignedNumber(input: Input): TUnsignedNumber; export {};