import { OptionDefinition, ParseOptions } from 'command-line-args'; import { Section } from 'command-line-usage'; export interface BaseTypedOptionDefinition extends Omit { description?: string; typeLabel?: string; required?: boolean; } export interface TypedOptionDefinitionMultiple extends BaseTypedOptionDefinition { multiple: true; type: (input: string) => T; defaultValue?: T[]; } export interface TypedOptionDefinitionSingle extends BaseTypedOptionDefinition { multiple?: false; type: (input: string) => T; defaultValue?: T; } export declare type TypedOptionDefinitions = { [K in keyof T]: T[K] extends any[] ? TypedOptionDefinitionMultiple : TypedOptionDefinitionSingle; }; export declare type WithUnknown = T & { _unknown?: string[]; }; export declare function typedCommandLineArgs(typedDefinition: TypedOptionDefinitions, parseOptions?: ParseOptions): WithUnknown; export declare function isRequired(option: BaseTypedOptionDefinition): boolean; export declare type Synopsis = Array; export interface UsageGuideOptions { command: string; typedDefinition: TypedOptionDefinitions; precedingSections?: Section[]; followingSections?: Section[]; synopses?: Array>; } export declare function generateUsageGuide({ command, typedDefinition, precedingSections, followingSections, synopses }: UsageGuideOptions): string; export declare function validateOptions(definitions: TypedOptionDefinitions, options: T): boolean; //# sourceMappingURL=typed-command-line-arguments.d.ts.map