import type { ComposeOptions, Storage } from 'yeoman-generator';
import BaseGenerator from '../base/index.js';
import type { BaseApplicationGeneratorDefinition, GenericApplicationDefinition } from './tasks.js';
import { GenericTaskGroup, GenericSourceTypeDefinition } from '../base/tasks.js';
import type { BaseApplication, CommonClientServerApplication } from './types.js';
import { SpringBootSourceType } from '../server/types.js';
import { ClientSourceType } from '../client/types.js';
import { I18nApplication } from '../languages/types.js';
import { JHipsterGeneratorFeatures, JHipsterGeneratorOptions } from '../base/api.js';
export type BaseApplicationSource = Record<string, (...args: any[]) => any> & SpringBootSourceType & ClientSourceType & I18nApplication;
export type JHipsterApplication = BaseApplication & Partial<CommonClientServerApplication>;
export type GeneratorDefinition = BaseApplicationGeneratorDefinition<GenericApplicationDefinition<JHipsterApplication> & GenericSourceTypeDefinition<BaseApplicationSource>>;
export default class BaseApplicationGenerator<Definition extends BaseApplicationGeneratorDefinition<{
    applicationType: any;
    entityType: any;
    sourceType: any;
}> = GeneratorDefinition> extends BaseGenerator<Definition> {
    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;
    initJdls: any[];
    constructor(args: string | string[], options: JHipsterGeneratorOptions, features: JHipsterGeneratorFeatures);
    dependsOnBootstrapApplication(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
    dependsOnBootstrapApplicationBase(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
    dependsOnBootstrapApplicationServer(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
    dependsOnBootstrapApplicationClient(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
    getEntitiesConfigPath(...args: any[]): string;
    getEntityConfigPath(entityName: string): string;
    getEntityConfig(entityName: string, create?: boolean): Storage | undefined;
    getExistingEntityNames(): string[];
    getExistingEntities(): {
        name: string;
        definition: Record<string, any>;
    }[];
    get configuringEachEntity(): GenericTaskGroup<this, Definition['configuringEachEntityTaskParam']>;
    get preparingEachEntity(): GenericTaskGroup<this, Definition['preparingEachEntityTaskParam']>;
    get preparingEachEntityField(): GenericTaskGroup<this, Definition['preparingEachEntityFieldTaskParam']>;
    get preparingEachEntityRelationship(): GenericTaskGroup<this, Definition['preparingEachEntityRelationshipTaskParam']>;
    get postPreparingEachEntity(): GenericTaskGroup<this, Definition['postPreparingEachEntityTaskParam']>;
    get writingEntities(): GenericTaskGroup<this, Definition['writingEntitiesTaskParam']>;
    get postWritingEntities(): GenericTaskGroup<this, Definition['postWritingEntitiesTaskParam']>;
    asConfiguringEachEntityTaskGroup(taskGroup: GenericTaskGroup<this, Definition['configuringEachEntityTaskParam']>): GenericTaskGroup<this, Definition['configuringEachEntityTaskParam']>;
    asLoadingEntitiesTaskGroup(taskGroup: GenericTaskGroup<this, Definition['loadingEntitiesTaskParam']>): GenericTaskGroup<this, Definition['loadingEntitiesTaskParam']>;
    asPreparingEachEntityTaskGroup(taskGroup: GenericTaskGroup<this, Definition['preparingEachEntityTaskParam']>): GenericTaskGroup<this, Definition['preparingEachEntityTaskParam']>;
    asPreparingEachEntityFieldTaskGroup(taskGroup: GenericTaskGroup<this, Definition['preparingEachEntityFieldTaskParam']>): GenericTaskGroup<this, Definition['preparingEachEntityFieldTaskParam']>;
    asPreparingEachEntityRelationshipTaskGroup(taskGroup: GenericTaskGroup<this, Definition['preparingEachEntityRelationshipTaskParam']>): GenericTaskGroup<this, Definition['preparingEachEntityRelationshipTaskParam']>;
    asPostPreparingEachEntityTaskGroup(taskGroup: GenericTaskGroup<this, Definition['postPreparingEachEntityTaskParam']>): GenericTaskGroup<this, Definition['postPreparingEachEntityTaskParam']>;
    asWritingEntitiesTaskGroup(taskGroup: GenericTaskGroup<this, Definition['writingEntitiesTaskParam']>): GenericTaskGroup<this, Definition['writingEntitiesTaskParam']>;
    asPostWritingEntitiesTaskGroup(taskGroup: GenericTaskGroup<this, Definition['postWritingEntitiesTaskParam']>): GenericTaskGroup<this, Definition['postWritingEntitiesTaskParam']>;
    resetEntitiesFakeData(seed: any): void;
    getArgsForPriority(priorityName: any): any[];
    protected getTaskFirstArgForPriority(priorityName: any): any;
    getEntitiesDataToConfigure(): {
        entityName: string;
        entityStorage: Storage | undefined;
        entityConfig: import("yeoman-generator").StorageRecord;
    }[];
    getEntitiesDataToLoad(): {
        entityName: string;
        readonly entityStorage: Storage | undefined;
        readonly entityConfig: import("yeoman-generator").StorageRecord;
        entityBootstrap: any;
    }[];
    getEntitiesDataToPrepare(): {
        entity: any;
        description: string;
        entityName: string;
    }[];
    getEntitiesFieldsDataToPrepare(): any[];
    getEntitiesRelationshipsDataToPrepare(): any[];
    getEntitiesDataToPostPrepare(): {
        entity: any;
        description: string;
        entityName: string;
    }[];
    getEntitiesDataForPriorities(): {
        entities: any[];
    };
    getEntitiesDataToWrite(): {
        entities: any[];
    };
    queueEntityTasks(): void;
}
