import type { ComposeOptions, Storage } from 'yeoman-generator';
import BaseGenerator from '../base/index.js';
import type { JHipsterGeneratorFeatures, JHipsterGeneratorOptions } from '../base/api.js';
import type { ConfiguringEachEntityTaskParam, TaskTypes as DefaultTaskTypes, EntityToLoad, LoadingEntitiesTaskParam, PostWritingEntitiesTaskParam, PreparingEachEntityFieldTaskParam, PreparingEachEntityRelationshipTaskParam, PreparingEachEntityTaskParam, PreparingTaskParam, TaskParamWithApplication, TaskParamWithEntities } from '../../lib/types/application/tasks.js';
import type { Entity } from '../../lib/types/application/entity.js';
import type { GenericTaskGroup } from '../../lib/types/base/tasks.js';
import type { ApplicationConfiguration } from '../../lib/types/application/yo-rc.js';
import type SharedData from '../base/shared-data.js';
export default class BaseApplicationGenerator<TaskTypes extends DefaultTaskTypes<any, any> = DefaultTaskTypes> extends BaseGenerator<TaskTypes> {
    static CONFIGURING_EACH_ENTITY: string;
    static LOADING_ENTITIES: string;
    static PREPARING_EACH_ENTITY: string;
    static PREPARING_EACH_ENTITY_FIELD: string;
    static PREPARING_EACH_ENTITY_RELATIONSHIP: string;
    static POST_PREPARING_EACH_ENTITY: string;
    static WRITING_ENTITIES: string;
    static POST_WRITING_ENTITIES: string;
    jhipsterConfig: ApplicationConfiguration & Record<string, any>;
    sharedData: SharedData;
    initJdls: any[];
    initJdl: boolean;
    constructor(args: string | string[], options: JHipsterGeneratorOptions, features: JHipsterGeneratorFeatures);
    dependsOnBootstrapApplication(options?: ComposeOptions | undefined): Promise<BaseApplicationGenerator<{
        InitializingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        PromptingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        ConfiguringTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        ComposingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        LoadingTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplicationDefaults<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingTaskParam: PreparingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        ConfiguringEachEntityTaskParam: ConfiguringEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        LoadingEntitiesTaskParam: LoadingEntitiesTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityTaskParam: PreparingEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityFieldTaskParam: PreparingEachEntityFieldTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityRelationshipTaskParam: PreparingEachEntityRelationshipTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostPreparingEachEntityTaskParam: PreparingEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostPreparingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl & {
            source: import("../../lib/types/application/application.js").BaseApplicationSource;
        } & {
            application: import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>;
        };
        DefaultTaskParam: TaskParamWithEntities<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        WritingTaskParam: import("../../lib/types/application/tasks.js").WritingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        WritingEntitiesTaskParam: TaskParamWithEntities<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostWritingTaskParam: import("../../lib/types/application/tasks.js").PostWritingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostWritingEntitiesTaskParam: PostWritingEntitiesTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreConflictsTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        InstallTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostInstallTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        EndTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
    }>[]>;
    dependsOnBootstrapApplicationBase(options?: ComposeOptions | undefined): Promise<BaseApplicationGenerator<{
        InitializingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        PromptingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        ConfiguringTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        ComposingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        LoadingTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplicationDefaults<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingTaskParam: PreparingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        ConfiguringEachEntityTaskParam: ConfiguringEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        LoadingEntitiesTaskParam: LoadingEntitiesTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityTaskParam: PreparingEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityFieldTaskParam: PreparingEachEntityFieldTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityRelationshipTaskParam: PreparingEachEntityRelationshipTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostPreparingEachEntityTaskParam: PreparingEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostPreparingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl & {
            source: import("../../lib/types/application/application.js").BaseApplicationSource;
        } & {
            application: import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>;
        };
        DefaultTaskParam: TaskParamWithEntities<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        WritingTaskParam: import("../../lib/types/application/tasks.js").WritingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        WritingEntitiesTaskParam: TaskParamWithEntities<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostWritingTaskParam: import("../../lib/types/application/tasks.js").PostWritingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostWritingEntitiesTaskParam: PostWritingEntitiesTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreConflictsTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        InstallTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostInstallTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        EndTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
    }>[]>;
    dependsOnBootstrapApplicationServer(options?: ComposeOptions | undefined): Promise<BaseApplicationGenerator<{
        InitializingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        PromptingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        ConfiguringTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        ComposingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        LoadingTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplicationDefaults<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingTaskParam: PreparingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        ConfiguringEachEntityTaskParam: ConfiguringEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        LoadingEntitiesTaskParam: LoadingEntitiesTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityTaskParam: PreparingEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityFieldTaskParam: PreparingEachEntityFieldTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityRelationshipTaskParam: PreparingEachEntityRelationshipTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostPreparingEachEntityTaskParam: PreparingEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostPreparingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl & {
            source: import("../../lib/types/application/application.js").BaseApplicationSource;
        } & {
            application: import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>;
        };
        DefaultTaskParam: TaskParamWithEntities<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        WritingTaskParam: import("../../lib/types/application/tasks.js").WritingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        WritingEntitiesTaskParam: TaskParamWithEntities<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostWritingTaskParam: import("../../lib/types/application/tasks.js").PostWritingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostWritingEntitiesTaskParam: PostWritingEntitiesTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreConflictsTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        InstallTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostInstallTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        EndTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
    }>[]>;
    dependsOnBootstrapApplicationClient(options?: ComposeOptions | undefined): Promise<BaseApplicationGenerator<{
        InitializingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        PromptingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        ConfiguringTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        ComposingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
        LoadingTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplicationDefaults<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingTaskParam: PreparingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        ConfiguringEachEntityTaskParam: ConfiguringEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        LoadingEntitiesTaskParam: LoadingEntitiesTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityTaskParam: PreparingEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityFieldTaskParam: PreparingEachEntityFieldTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreparingEachEntityRelationshipTaskParam: PreparingEachEntityRelationshipTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostPreparingEachEntityTaskParam: PreparingEachEntityTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostPreparingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl & {
            source: import("../../lib/types/application/application.js").BaseApplicationSource;
        } & {
            application: import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>;
        };
        DefaultTaskParam: TaskParamWithEntities<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        WritingTaskParam: import("../../lib/types/application/tasks.js").WritingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        WritingEntitiesTaskParam: TaskParamWithEntities<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostWritingTaskParam: import("../../lib/types/application/tasks.js").PostWritingTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostWritingEntitiesTaskParam: PostWritingEntitiesTaskParam<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PreConflictsTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        InstallTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        PostInstallTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
        EndTaskParam: TaskParamWithApplication<Entity<import("./index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("./index.js").Field, never>>>;
    }>[]>;
    getEntitiesConfigPath(...args: any[]): string;
    getEntityConfigPath(entityName: string): string;
    getEntityConfig(entityName: string, create?: boolean): Storage | undefined;
    getExistingEntityNames(): string[];
    getExistingEntities(): {
        name: string;
        definition: Entity;
    }[];
    get configuringEachEntity(): {};
    get preparingEachEntity(): {};
    get preparingEachEntityField(): {};
    get preparingEachEntityRelationship(): {};
    get postPreparingEachEntity(): {};
    get writingEntities(): {};
    get postWritingEntities(): {};
    asConfiguringEachEntityTaskGroup<const K extends string>(taskGroup: GenericTaskGroup<this, TaskTypes['ConfiguringEachEntityTaskParam'], K>): GenericTaskGroup<any, TaskTypes['ConfiguringEachEntityTaskParam'], K>;
    asLoadingEntitiesTaskGroup<const K extends string>(taskGroup: GenericTaskGroup<this, TaskTypes['LoadingEntitiesTaskParam'], K>): GenericTaskGroup<any, TaskTypes['LoadingEntitiesTaskParam'], K>;
    asPreparingEachEntityTaskGroup<const K extends string>(taskGroup: GenericTaskGroup<this, TaskTypes['PreparingEachEntityTaskParam'], K>): GenericTaskGroup<any, TaskTypes['PreparingEachEntityTaskParam'], K>;
    asPreparingEachEntityFieldTaskGroup<const K extends string>(taskGroup: GenericTaskGroup<this, TaskTypes['PreparingEachEntityFieldTaskParam'], K>): GenericTaskGroup<any, TaskTypes['PreparingEachEntityFieldTaskParam'], K>;
    asPreparingEachEntityRelationshipTaskGroup<const K extends string>(taskGroup: GenericTaskGroup<this, TaskTypes['PreparingEachEntityRelationshipTaskParam'], K>): GenericTaskGroup<any, TaskTypes['PreparingEachEntityRelationshipTaskParam'], K>;
    asPostPreparingEachEntityTaskGroup<const K extends string>(taskGroup: GenericTaskGroup<this, TaskTypes['PostPreparingEachEntityTaskParam'], K>): GenericTaskGroup<any, TaskTypes['PostPreparingEachEntityTaskParam'], K>;
    asWritingEntitiesTaskGroup<const K extends string>(taskGroup: GenericTaskGroup<this, TaskTypes['WritingEntitiesTaskParam'], K>): GenericTaskGroup<any, TaskTypes['WritingEntitiesTaskParam'], K>;
    asPostWritingEntitiesTaskGroup<const K extends string>(taskGroup: GenericTaskGroup<this, TaskTypes['PostWritingEntitiesTaskParam'], K>): GenericTaskGroup<any, TaskTypes['PostWritingEntitiesTaskParam'], K>;
    resetEntitiesFakeData(seed: string | undefined): void;
    getArgsForPriority(priorityName: string): TaskParamWithApplication[];
    protected getTaskFirstArgForPriority(priorityName: string): TaskParamWithApplication;
    getEntitiesDataToConfigure(): ConfiguringEachEntityTaskParam[];
    getEntitiesDataToLoad(): EntityToLoad[];
    getEntitiesDataToPrepare(): Pick<PreparingEachEntityTaskParam, 'entity' | 'entityName' | 'description'>[];
    getEntitiesFieldsDataToPrepare(): Pick<PreparingEachEntityFieldTaskParam, 'entity' | 'entityName' | 'field' | 'fieldName' | 'description'>[];
    getEntitiesRelationshipsDataToPrepare(): Pick<PreparingEachEntityRelationshipTaskParam, 'entity' | 'entityName' | 'relationship' | 'relationshipName' | 'description'>[];
    getEntitiesDataToPostPrepare(): Pick<PreparingEachEntityTaskParam, "description" | "entity" | "entityName">[];
    getEntitiesDataForPriorities(): {
        entities: Entity<import("./index.js").Field, never>[];
    };
    getEntitiesDataToWrite(): {
        entities: Entity<import("./index.js").Field, never>[];
    };
    queueEntityTasks(): void;
}
