import { type ArgvStruct } from '../../types/aliases.js';
import { type SoloLogger } from '../logging/solo-logger.js';
import { type CommandDefinition } from '../../types/index.js';
import { type CommandFlags } from '../../types/flag-types.js';
import { InitCommand } from '../../commands/init/init.js';
import { type TaskList } from '../task-list/task-list.js';
import { ListrContext, ListrRendererValue } from 'listr2';
export declare class Subcommand {
    readonly name: string;
    readonly description: string;
    readonly commandHandlerClass: any;
    readonly commandHandler: (argv: ArgvStruct) => Promise<boolean>;
    readonly flags: CommandFlags;
    readonly dependencies: string[];
    readonly createCluster: boolean;
    private readonly initCommand?;
    private readonly taskList?;
    constructor(name: string, description: string, commandHandlerClass: any, commandHandler: (argv: ArgvStruct) => Promise<boolean>, flags: CommandFlags, dependencies?: string[], createCluster?: boolean, initCommand?: InitCommand, taskList?: TaskList<ListrContext, ListrRendererValue, ListrRendererValue>);
    installDependencies(): Promise<void>;
}
export declare class CommandGroup {
    readonly name: string;
    readonly description: string;
    readonly subcommands: Subcommand[];
    constructor(name: string, description: string);
    addSubcommand(subcommand: Subcommand): CommandGroup;
}
export declare class CommandBuilder {
    private readonly name;
    private readonly description;
    private readonly logger;
    private readonly commandGroups;
    constructor(name: string, description: string, logger: SoloLogger);
    addCommandGroup(commandGroup: CommandGroup): CommandBuilder;
    build(): CommandDefinition;
}
