import { Command } from '../../cli/command';
import CommandRegistry from './registry';
import { Reporter } from '../reporter';
export declare class CLIExtension {
    private registry;
    private reporter;
    readonly groups: {
        [k: string]: string;
    };
    static dependencies: {
        name: string;
        dependencies: {
            name: string;
            dependencies: never[];
            config: {};
            provider: typeof import("../logger/logger.provider").provideLogger;
        }[];
        config: {};
        provider: typeof import("../reporter/reporter.provider").provideReporter;
    }[];
    static provider([reporter]: [Reporter]): Promise<CLIExtension>;
    constructor(registry: CommandRegistry, reporter: Reporter);
    private setDefaults;
    register(command: Command): void;
    get commands(): {
        [commandId: string]: Command;
    };
    run(): Promise<void>;
    private shouldOutputJson;
    private throwForNonExistsCommand;
    registerGroup(name: string, description: string): void;
}
export declare function CLIProvider([cliExtension]: [CLIExtension]): Promise<CLIExtension>;
