import Command from "./command";
import Argument from "./argument";
import Option from "./option";
export interface ErrorParameters {
    message?: string;
    reason: ErrorReason;
    parts: string[];
    params?: {
        origin: Argument;
        arg: string;
    } | {
        origin: Argument;
        opts: any;
        args: string[];
    } | {
        origin: Command<any, any>;
        args: string[];
    } | {
        option: Option;
        opts: any;
        args: string[];
    };
}
export declare enum ErrorReason {
    UnsupportedFormatArgument = "unsupported format",
    ArgumentsRequired = "1 or more arguments required",
    ArgumentRequired = "argument required",
    ParameterCantPlacedAfterVariadic = "parameter can not placed after variadic parameter",
    ParameterCannPlacedAfterOptional = "required parameter is not placed after optional parameter",
    UnknownOption = "unknown option",
    OptionNameMismatch = "short or long option name mismatch",
    OptionValueRequired = "option value required"
}
export declare class CommandpostError {
    params: ErrorParameters;
    stack?: string;
    constructor(params: ErrorParameters);
    readonly name: string;
    readonly message: string | undefined;
}
