import { CommandDispatcher } from '../../../brigadier/src/index.ts';
import { Command, CommandArgument, Entity, Player, Server, Service } from '../';
export declare class CommandManager implements Service {
    private readonly commands;
    private readonly server;
    private dispatcher;
    constructor(server: Server);
    /**
     * On enable hook.
     * @group Lifecycle
     */
    enable(): Promise<void>;
    /**
     * On disable hook.
     * @group Lifecycle
     */
    disable(): Promise<void>;
    /**
     * Register a command into command manager by class.
     * @param {Command} [command] - The command class to register
     */
    registerCommand(command?: Command): Promise<void>;
    /**
     * Get a registered command by ID.
     * @remarks This is case-insensitive, works with or without namespace, and also with aliases.
     * @param {string} id - The command ID.
     * @returns {Command} The command if found, otherwise undefined.
     */
    getCommand(id: string): Command;
    /**
     * Get all enabled commands.
     */
    getCommands(): Map<string, Command>;
    /**
     * Get a list of all command variants.
     *
     * @remarks
     * This is EXCLUDING legacy commands.
     */
    getCommandsList(): Array<[string, /* CommandNode<Player> */ any, CommandArgument[][]]>;
    /**
     * Get dispatcher
     */
    getDispatcher(): CommandDispatcher<Player>;
    /**
     * Dispatches a command and executes them.
     *
     * @param sender - the player/console who executed the command
     * @param target - the Player/entity/console who should execute the command
     * @param input - the command input including arguments
     */
    dispatchCommand(sender: Player, target: Entity | Player, input?: string): Promise<void>;
}
//# sourceMappingURL=CommandManager.d.ts.map