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 {};