import type { ExportGeneratorOptionsFromCommand, ExportStoragePropertiesFromCommand, ParsableCommand } from '../../lib/command/types.ts';
import CoreGenerator from '../base-core/index.ts';
import type { GenericTask } from '../base-core/types.ts';
import type { TaskTypes as BaseTasks } from './tasks.ts';
import type { Config as BaseConfig, Control, Features as BaseFeatures, Options as BaseOptions, Source as BaseSource } from './types.ts';
/**
 * Base class that contains blueprints support.
 * Provides built-in state support with control object.
 */
export default class BaseGenerator<Config extends BaseConfig = BaseConfig, Options extends BaseOptions = BaseOptions, Source extends BaseSource = BaseSource, Features extends BaseFeatures = BaseFeatures, Tasks extends BaseTasks<Source> = BaseTasks<Source>> extends CoreGenerator<Config, Options, Features> {
    #private;
    fromBlueprint: boolean;
    sbsBlueprint?: boolean;
    delegateToBlueprint: boolean;
    blueprintConfig?: Record<string, any>;
    jhipsterContext?: BaseGenerator;
    constructor(args?: string[], options?: Options, features?: Features);
    /**
     * Filter generator's tasks in case the blueprint should be responsible on queueing those tasks.
     */
    delegateTasksToBlueprint<TaskGroupType>(tasksGetter: () => TaskGroupType): TaskGroupType;
    /**
     * Generate a timestamp to be used by Liquibase changelogs.
     */
    nextTimestamp(): string;
    /**
     * Get arguments for the priority
     */
    getArgsForPriority(priorityName: string): {
        control: Control;
        configChanges: {
            [k: string]: {
                newValue: any;
                oldValue: any;
            };
        };
    }[] | {
        control: Control;
    }[];
    /**
     * Check if the generator should ask for prompts.
     */
    shouldAskForPrompts({ control }: {
        control: Control;
    }): boolean;
    /**
     * Priority API stub for blueprints.
     *
     * Initializing priority is used to show logo and tasks related to preparing for prompts, like loading constants.
     */
    get initializing(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asInitializingTaskGroup<const T extends Record<string, GenericTask<this, Tasks['InitializingTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['InitializingTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * Prompting priority is used to prompt users for configuration values.
     */
    get prompting(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asPromptingTaskGroup<const T extends Record<string, GenericTask<this, Tasks['PromptingTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['PromptingTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * Configuring priority is used to customize and validate the configuration.
     */
    get configuring(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asConfiguringTaskGroup<const T extends Record<string, GenericTask<this, Tasks['ConfiguringTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['ConfiguringTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * Composing should be used to compose with others generators.
     */
    get composing(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asComposingTaskGroup<const T extends Record<string, GenericTask<this, Tasks['ComposingTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['ComposingTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * ComposingComponent priority should be used to handle component configuration order.
     */
    get composingComponent(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asComposingComponentTaskGroup<const T extends Record<string, GenericTask<this, Tasks['ComposingTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['ComposingTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * Loading should be used to load application configuration from jhipster configuration.
     * Before this priority the configuration should be considered dirty, while each generator configures itself at configuring priority, another generator composed at composing priority can still change it.
     */
    get loading(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asLoadingTaskGroup<const T extends Record<string, GenericTask<this, Tasks['LoadingTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['LoadingTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * Preparing should be used to generate derived properties.
     */
    get preparing(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asPreparingTaskGroup<const T extends Record<string, GenericTask<this, Tasks['PreparingTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['PreparingTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * Preparing should be used to generate derived properties.
     */
    get postPreparing(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asPostPreparingTaskGroup<const T extends Record<string, GenericTask<this, Tasks['PostPreparingTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['PostPreparingTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * Default priority should used as misc customizations.
     */
    get default(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asDefaultTaskGroup<const T extends Record<string, GenericTask<this, Tasks['DefaultTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['DefaultTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * Writing priority should used to write files.
     */
    get writing(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asWritingTaskGroup<const T extends Record<string, GenericTask<this, Tasks['WritingTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['WritingTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * PostWriting priority should used to customize files.
     */
    get postWriting(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asPostWritingTaskGroup<const T extends Record<string, GenericTask<this, Tasks['PostWritingTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['PostWritingTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * Install priority should used to prepare the project.
     */
    get install(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asInstallTaskGroup<const T extends Record<string, GenericTask<this, Tasks['InstallTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['InstallTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * PostWriting priority should used to customize files.
     */
    get postInstall(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asPostInstallTaskGroup<const T extends Record<string, GenericTask<this, Tasks['PostInstallTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['PostInstallTaskParam']>>;
    /**
     * Priority API stub for blueprints.
     *
     * End priority should used to say good bye and print instructions.
     */
    get end(): {};
    /**
     * Utility method to get typed objects for autocomplete.
     */
    asEndTaskGroup<const T extends Record<string, GenericTask<this, Tasks['EndTaskParam']>>>(taskGroup: T): Record<keyof T, GenericTask<any, Tasks['EndTaskParam']>>;
    /**
     * @protected
     * Composes with blueprint generators, if any.
     */
    protected composeWithBlueprints(): Promise<any[]>;
}
export declare class CommandBaseGenerator<Command extends ParsableCommand, AdditionalOptions = unknown, AdditionalFeatures = unknown> extends BaseGenerator<BaseConfig & ExportStoragePropertiesFromCommand<Command>, BaseOptions & ExportGeneratorOptionsFromCommand<Command> & AdditionalOptions, BaseSource, BaseFeatures & AdditionalFeatures, BaseTasks> {
}
