export declare type FlagType = "boolean" | "string" | "number";
export interface CommandFlag {
    description: string;
    argument?: string;
    type?: FlagType;
    aliases?: string[];
    possibleValues?: (string | RegExp)[];
    deprecated?: boolean;
    hidden?: boolean;
}
export interface Command {
    name: string;
    help: string;
    onlineHelp?: boolean;
    priority?: number;
    advanced?: boolean;
    argString?: string;
    flags?: {
        [index: string]: CommandFlag;
    };
    aliases?: string[];
    numArgs?: number;
    anyArgs?: boolean;
    _aliasMap?: {
        [index: string]: string;
    };
    _callback?: (c?: ParsedCommand) => Promise<void>;
}
export interface ParsedCommand {
    name: string;
    args: string[];
    flags: {
        [index: string]: boolean | string | number;
    };
}
export declare class CommandParser {
    private commands;
    defineCommand(c: Command, callback: (c?: ParsedCommand) => Promise<void>): void;
    parseCommand(args: string[]): Promise<void>;
    printHelp(args: string[], print: (s: string) => void): void;
    private printCommandHelp;
    private printTopLevelHelp;
}
