export declare type Flag = (args: string[]) => ParseResult; export declare type ParseResult = { [key in N]: { value?: T; option: FlagOption; position?: number[]; }; }; export declare type NumberFlag = Flag; export declare type StringFlag = Flag; export declare type BooleanFlag = Flag; export declare type FlagOption = { alias?: string; default?: T; usage?: string; }; export declare function makeNumberFlag(name: N, option?: FlagOption): NumberFlag; export declare function makeStringFlag(name: N, option?: FlagOption): StringFlag; export declare function makeBooleanFlag(name: N, option?: FlagOption): BooleanFlag; export declare type TupleTypes = { [P in keyof T]: T[P]; } extends { [key: number]: (args: any) => infer V; } ? V : never; export declare type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; export declare function mergeFlag { [key: string]: any; }>>(...src: T): (args: string[]) => UnionToIntersection>; export declare function reduceFlag { [key: string]: any; }>>(...src: T): (args: string[]) => UnionToIntersection>;