import { Argument, Description, Group } from "./types"; export interface OppaOptions { name: string; version: string; usage: string; description: Description; noHelp: boolean; noHelpAlias: boolean; noVersionAlias: boolean; allowUnknown: boolean; throwOnError: boolean; noExit: boolean; } export declare type OppaSingleString = { type: 'string'; multi?: false; }; export declare type OppaSingleBoolean = { type: 'boolean'; multi?: false; }; export declare type OppaSingleNumber = { type: 'number'; multi?: false; }; export declare type OppaMultiString = { type: 'string'; multi: true; }; export declare type OppaMultiBoolean = { type: 'boolean'; multi: true; }; export declare type OppaMultiNumber = { type: 'number'; multi: true; }; export declare type Unknown = Array<{ name: string; value: string; }>; export interface Result { /** * Parsed arguments */ args: Arguments; /** * Unknown arguments */ unknown: Unknown; /** * "Commands" after the last argument (but before '--') */ rest: Array; /** * '--' *and* the arguments after '--' */ dashdash: Array; } export declare type Oppifyer = { [P in Name]: Type; }; export declare class Oppa { private readonly opts; private readonly arguments; private byLongs; private byShorts; constructor(opts: OppaOptions); group(group: Group): Oppa; add(argument: Argument & OppaSingleString): Oppa>; add(argument: Argument & OppaSingleBoolean): Oppa>; add(argument: Argument & OppaSingleNumber): Oppa>; add(argument: Argument & OppaMultiString): Oppa>>; add(argument: Argument & OppaMultiBoolean): Oppa>>; add(argument: Argument & OppaMultiNumber): Oppa>>; private _parse; parse(args?: ReadonlyArray): Result; showVersion(exit?: Exit): Exit extends true ? never : void; showHelp(exit?: Exit): Exit extends true ? never : void; } export declare function oppa(opts?: Partial): Oppa<{}>; export declare type TypeOf = T extends Oppa ? Result : never;