/** * @author Leonid Vinikov * @description Base for all commands, they are all will be managed by the `Commands` managers. * * TODO * - Add validateArgs method or find something better. */ import { ObjectBase } from "../bases"; import type { ControllerBase } from "../bases"; import type { ICommandArgsInterface, ICommandOptionsInterface } from "../interfaces"; export declare abstract class CommandBase extends ObjectBase { private static controller; protected args: ICommandArgsInterface; protected options: ICommandOptionsInterface; private readonly logger; static getName(): string; static setController(controller: ControllerBase): void; static getController(): ControllerBase; constructor(args?: ICommandArgsInterface, options?: {}); protected initialize(args: ICommandArgsInterface, options: ICommandOptionsInterface): void; /** * TODO: Maybe abstract, currently not sure about parameters initialization. */ protected apply(args?: ICommandArgsInterface, options?: ICommandOptionsInterface): any; protected onBeforeApply?(): void; protected onAfterApply?(): void; run(): Promise; private runInternal; }