declare const flagSymbol: unique symbol; declare function arg(spec: T, options?: arg.Options): arg.Result; declare namespace arg { export function flag(fn: T): T & { [flagSymbol]: true }; export const COUNT: Handler & { [flagSymbol]: true }; export type Handler = (value: string, name: string, previousValue?: T) => T; export interface Spec { [key: string]: string | Handler | [Handler]; } export type Result = { _: string[] } & { [K in keyof T]?: T[K] extends Handler ? ReturnType : T[K] extends [Handler] ? Array> : never }; export interface Options { argv?: string[]; permissive?: boolean; stopAtPositional?: boolean; } } export = arg;