import { type AnyYargs, type ArgvStruct } from '../../types/aliases.js';
import { type SoloLogger } from '../logging/solo-logger.js';
import { type BaseCommand } from '../../commands/base.js';
import { type CommandDefinition } from '../../types/index.js';
export declare class Subcommand {
    readonly name: string;
    readonly description: string;
    readonly commandHandlerClass: BaseCommand;
    readonly commandHandler: (argv: ArgvStruct) => Promise<boolean>;
    readonly builder?: (yargs: AnyYargs) => void;
    constructor(name: string, description: string, commandHandlerClass: BaseCommand, commandHandler: (argv: ArgvStruct) => Promise<boolean>, builder?: (yargs: AnyYargs) => 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;
}
