type StringOptions = { allowEmpty?: boolean; allowInline?: boolean; missingValueMessage?: string; rejectShortOptions?: boolean; repeatable?: boolean; transform?: (value: string) => unknown; }; type ConsumedFlag> = { flag?: string; nextIndex: number; repeatable?: boolean; apply(target: T): void; }; type FlagSpec> = { consume(argv: readonly string[], index: number, args: T): ConsumedFlag | null; }; type ParseOptions> = { allowUnknownOptions?: boolean; duplicateOptionMessage?: (flag: string) => string; ignoreDoubleDash?: boolean; onUnhandledArg?: (arg: string, args: T) => "handled" | void; }; export type BoundedUnsignedDecimalResult = | { kind: "syntax" } | { kind: "below" } | { kind: "above" } | { kind: "value"; value: number }; export function readFlagValue(args: readonly string[], name: string): string | undefined; export function stripLeadingPackageManagerSeparator(argv: string[]): string[]; export function parseStrictBooleanArg(value: unknown, label: string): boolean; export function classifyBoundedUnsignedDecimal( value: unknown, min: number, max: number, ): BoundedUnsignedDecimalResult; export function parsePermissiveBooleanToken(value: unknown): boolean | undefined; export function stringFlag>( flag: string, key: string, options?: StringOptions, ): FlagSpec; export function stringListFlag>( flag: string, key: string, options?: Omit, ): FlagSpec; export function intFlag>( flag: string, key: string, options?: { min?: number }, ): FlagSpec; export function booleanFlag>( flag: string, key: string, value?: unknown, options?: { repeatable?: boolean }, ): FlagSpec; export function parseFlagArgs>( argv: readonly string[], args: T, specs: readonly FlagSpec[], options?: ParseOptions, ): T;