/**
 * @module AbstractBootstrapConsole
 */
import { INestApplicationContext } from '@nestjs/common';
import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface';
import { CommandResponse } from '../interfaces';
import { ConsoleService } from '../service';
/**
 * The Common options of the AbstractBootstrapConsole
 */
export interface CommonBootstrapConsoleOptions {
    /**
     * Any static module to load.
     * If you are using a dynamic module as a root module, you must create a module that imports your dynamic module first.
     * "@Module({imports: [MyDynamicModule.register()]})"
     */
    module: any;
    /**
     * If true the BootstrapConsole will scan the application to find Console and Command decorators
     */
    useDecorators?: boolean;
    /**
     * An optional list of Nest Modules to scan. If set, only listed modules will be scanned.
     */
    includeModules?: any[];
    /**
     * The nest application context options
     */
    contextOptions?: NestApplicationContextOptions;
}
/**
 * An abstract class to boot a nest application
 * @param A The type of nest application
 * @param O The options
 */
export declare abstract class AbstractBootstrapConsole<A extends INestApplicationContext, O extends CommonBootstrapConsoleOptions = CommonBootstrapConsoleOptions> {
    /**
     * The console service
     */
    protected service: ConsoleService;
    /**
     * The application container
     */
    protected container: A;
    /**
     * The options to bootstrap
     */
    protected readonly options: O;
    constructor(options: O);
    /**
     * Activate the decorators scanner
     */
    protected useDecorators(): Promise<this>;
    /**
     * Init the console application
     */
    init(): Promise<A>;
    /**
     * Get the console service
     */
    getService(): ConsoleService;
    /**
     * Get the options
     */
    getOptions(): O;
    /**
     * Boot the console
     * @param argv The list of arguments to pass to the cli, default are process.argv
     */
    boot(argv?: string[]): Promise<CommandResponse>;
    /**
     * An abstract method to create the nest application instance.
     * Could return any kind of NestApplication (headless or not)
     */
    abstract create(): Promise<A>;
}
