export interface ParseFlagsOptions< TFlagOptions extends FlagOptions = FlagOptions,> { flags?: Array<TFlagOptions>; parse?: TypeHandler<unknown>; option?: (option: TFlagOptions, value?: unknown) => void; stopEarly?: boolean; stopOnUnknown?: boolean; allowEmpty?: boolean; ignoreDefaults?: Record<string, unknown>; dotted?: boolean;}
export interface FlagOptions extends ArgumentOptions { name: string; args?: ArgumentOptions[]; aliases?: string[]; standalone?: boolean; default?: DefaultValue; required?: boolean; depends?: string[]; conflicts?: string[]; value?: ValueHandler; collect?: boolean; equalsSign?: boolean;}
export interface ArgumentOptions { type?: ArgumentType | string; optionalValue?: boolean; requiredValue?: boolean; variadic?: boolean; list?: boolean; separator?: string;}
export type ArgumentType = "string" | "boolean" | "number" | "integer";
export type DefaultValue<TValue = unknown> = | TValue | DefaultValueHandler<TValue>;
export type DefaultValueHandler<TValue = unknown> = () => TValue;
export type ValueHandler<TValue = any, TReturn = TValue> = ( val: TValue, previous?: TReturn,) => TReturn;
export interface ParseFlagsContext< TFlags extends Record<string, any> = Record<string, any>, TStandaloneOption extends FlagOptions = FlagOptions,> { flags: TFlags; unknown: Array<string>; literal: Array<string>; standalone?: TStandaloneOption; stopEarly: boolean; stopOnUnknown: boolean;}
export interface ArgumentValue { label: string; type: string; name: string; value: string;}
export type TypeHandler<TReturn = unknown> = (arg: ArgumentValue) => TReturn;