import { Class } from '@hexadrop/types/class'; import { Primitives } from '@hexadrop/types/primitives'; /** * @abstract * @class Command * @description Abstract class representing a command. */ declare abstract class Command { /** * @static * @property {string} COMMAND_NAME - The name of the command. */ static COMMAND_NAME: string; /** * @property {string} commandId - The ID of the command. */ readonly commandId: string; /** * @property {string} commandName - The name of the command. */ readonly commandName: string; /** * Constructs a new Command instance. * * @protected * @param {string} commandName - The name of the command instance. * @param {string} [commandId] - The unique identifier of the command instance. If not provided, a random UUID will be generated. */ protected constructor(commandName: string, commandId?: string); } /** * @type {Class} * @template DomainInstanceType - The type of the command. * @template CtorArgs - The constructor arguments. */ type CommandClass = Class; type CommandConstructorParameters = Primitives>; export { type CommandClass, type CommandConstructorParameters, Command as default };