export declare type ParseFn = (input: string) => T; export interface IArg { name: string; description?: string; required?: boolean; hidden?: boolean; parse?: ParseFn; default?: T | (() => T); options?: string[]; } export interface ArgBase { name?: string; description?: string; hidden?: boolean; parse: ParseFn; default?: T | (() => T); input?: string; options?: string[]; } export declare type RequiredArg = ArgBase & { required: true; value: T; }; export declare type OptionalArg = ArgBase & { required: false; value?: T; }; export declare type Arg = RequiredArg | OptionalArg; export declare function newArg(arg: IArg & { Parse: ParseFn; }): Arg; export declare function newArg(arg: IArg): Arg; export interface Output { [name: string]: any; } export declare type Input = IArg[];