/**
 * Copyright 2013-2026 the original author or authors from the JHipster project.
 *
 * This file is part of the JHipster project, see https://www.jhipster.tech/
 * for more information.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import type { Storage } from 'yeoman-generator';
import type { Features } from '../base/types.ts';
import BaseApplicationGenerator from '../base-application/index.ts';
import type { Application as EntityApplication, Config as EntityConfig, Entity as EntityEntity, Options as EntityOptions } from './types.ts';
export default class EntityGenerator extends BaseApplicationGenerator<EntityEntity, EntityApplication, EntityConfig, EntityOptions> {
    [BaseApplicationGenerator.INITIALIZING]: Record<"parseOptions" | "loadOptions", import("../base-core/types.js").GenericTask<any, import("../base/tasks.js").TaskParamWithControl>>;
    [BaseApplicationGenerator.PROMPTING]: Record<"askForMicroserviceJson", import("../base-core/types.js").GenericTask<any, import("../base/tasks.js").TaskParamWithControl>>;
    [BaseApplicationGenerator.POST_PREPARING]: Record<"askForUpdate" | "askForFields" | "askForFieldsToRemove" | "askForRelationships" | "askForRelationsToRemove" | "askForService" | "askForDTO" | "askForFiltering" | "askForReadOnly" | "askForPagination" | "isBuiltInEntity" | "setupMicroServiceEntity" | "loadEntitySpecificOptions" | "validateEntityName" | "bootstrapConfig" | "composeEntities", import("../base-core/types.js").GenericTask<any, import("../base/tasks.js").TaskParamWithControl & {
        source: import("./types.ts").Source;
    } & {
        application: EntityApplication;
    }>>;
    [BaseApplicationGenerator.END]: Record<"end", import("../base-core/types.js").GenericTask<any, import("../base-simple-application/tasks.js").TaskParamWithApplication<EntityApplication>>>;
    name: string;
    application: any;
    microserviceConfig?: any;
    entityStorage: Storage;
    entityConfig: EntityEntity;
    entityData: {
        name: string;
        filename: string;
        configExisted: boolean;
        entityExisted: boolean;
        configurationFileExists: boolean;
        useMicroserviceJson?: boolean;
        skipUiGrouping?: boolean;
        useConfigurationFile?: boolean;
        microserviceName?: string;
        microserviceFileName?: string;
        microservicePath?: string;
        clientRootFolder?: string;
        databaseType?: string;
        skipClient?: boolean;
        skipServer?: boolean;
        skipDbChangelog?: boolean;
        updateEntity?: 'add' | 'remove' | 'none' | 'regenerate';
        regenerate?: boolean;
        clientFramework?: string;
        reactive?: boolean;
        enums?: string[];
        existingEnum?: boolean;
    };
    constructor(args?: string[], options?: EntityOptions, features?: Features);
    beforeQueue(): Promise<void>;
    get initializing(): Record<"parseOptions" | "loadOptions", import("../base-core/types.js").GenericTask<any, import("../base/tasks.js").TaskParamWithControl>>;
    get prompting(): Record<"askForMicroserviceJson", import("../base-core/types.js").GenericTask<any, import("../base/tasks.js").TaskParamWithControl>>;
    get postPreparing(): Record<"askForUpdate" | "askForFields" | "askForFieldsToRemove" | "askForRelationships" | "askForRelationsToRemove" | "askForService" | "askForDTO" | "askForFiltering" | "askForReadOnly" | "askForPagination" | "isBuiltInEntity" | "setupMicroServiceEntity" | "loadEntitySpecificOptions" | "validateEntityName" | "bootstrapConfig" | "composeEntities", import("../base-core/types.js").GenericTask<any, import("../base/tasks.js").TaskParamWithControl & {
        source: import("./types.ts").Source;
    } & {
        application: EntityApplication;
    }>>;
    get end(): Record<"end", import("../base-core/types.js").GenericTask<any, import("../base-simple-application/tasks.js").TaskParamWithApplication<EntityApplication>>>;
    /**
     * @private
     * Setup Entity instance level options from context.
     * all variables should be set to dest,
     * all variables should be referred from context,
     * all methods should be called on generator,
     */
    _setupEntityOptions(): void;
    /**
     * @private
     * Validate the entityName
     * @return {true|string} true for a valid value or error message.
     */
    _validateEntityName(entityName: string): true | string;
}
