import { TraceError } from "../common/errors";
import { Argument, Option } from "./types";
export declare class ArgumentError extends TraceError {
    readonly argument: string;
    constructor(message: string, argument: string);
}
export declare class UnknownArgumentError extends ArgumentError {
    constructor(argument: string, message?: string);
}
export declare class UnknownOptionError extends ArgumentError {
    constructor(argument: string, message?: string);
}
export declare class OptionArgumentExpectedError extends ArgumentError {
    constructor(option: string, message?: string);
}
export type ParseResult = {
    arguments: ParsedArguments;
    options: ParsedOptions;
};
type ParsedArguments = {
    [name: string]: string | undefined;
};
type ParsedOptions = {
    [name: string]: string | undefined;
};
export default class ArgumentParser {
    private readonly helpFormatter;
    private readonly arguments;
    private readonly options;
    private readonly programName;
    private readonly description;
    constructor(params: {
        programName: string;
        description: string;
    });
    addArgument(argument: Argument): void;
    addOption(option: Option): void;
    parseArguments(args: string[]): ParseResult;
    private isOption;
    private parseOption;
    private findOption;
    formatHelp(): string;
}
export {};
