import { CommandRegistry, CommandSegment } from './command-registry'; import { BooleanCommandResult, CommandResult, ErrorCommandResult, ImageCommandResult, JsonCommandResult, TextCommandResult } from './command-results'; export interface CommandExecutionContext { rawArgs: string[]; namedArgs: Record; commandPath: string; } export type DslCommandHandler = (context: CommandExecutionContext) => CommandResult | Promise; export interface CommandDefinition { path: string; description: string; details?: string; segments: CommandSegment[]; handler: DslCommandHandler; } export interface ArgumentBuilderApi { describe(description: string): this; } export interface CommandBuilderApi { describe(description: string): this; details(details: string): this; arg(name: Name, configure?: (argument: ArgumentBuilderApi) => ArgumentBuilderApi | void): CommandBuilderApi; handle(handler: DslCommandHandler): CommandDefinition; } export declare function command(path: string): CommandBuilderApi; export declare function registerCommand(registry: CommandRegistry, definition: CommandDefinition): void; export declare function registerCommands(registry: CommandRegistry, definitions: CommandDefinition[]): CommandRegistry; export declare function createCommandRegistry(definitions: CommandDefinition[]): CommandRegistry; export declare function text(value: string): TextCommandResult; export declare function bool(value: boolean, trueText?: string, falseText?: string): BooleanCommandResult; export declare function json(value: unknown): JsonCommandResult; export declare function image(url: string, altText?: string): ImageCommandResult; export declare function error(value: string): ErrorCommandResult;