import { Command } from "../command/command";
import { CocoEventArgs, CocoEventLister, CORE_EVENT } from "../event/declare";
import { Option } from "../option/option";
export declare class Coco {
    static create(): Coco;
    private _rootCommand;
    private readonly _commands;
    private readonly _options;
    private readonly _eventListeners;
    private constructor();
    rootCommand(command: Command): this;
    getRootCommand(): Command | null;
    command(command: Command, ...commands: Command[]): this;
    commands(commands: Command[]): this;
    globalOption(option: Option): this;
    getCommands(): Command[];
    on<T extends CORE_EVENT>(event: T, listener: CocoEventLister<T>): this;
    remove<T extends CORE_EVENT>(event: T, remove: CocoEventLister<T>): this;
    removeAll<T extends CORE_EVENT>(event: T): this;
    emit<T extends CORE_EVENT>(event: T, ...args: CocoEventArgs[T]): Promise<void>;
    go(argv: string[]): Promise<void>;
    private _marchCommand;
}
