import { GeneratorMeta } from '@yeoman/types';
import type { CopyOptions } from 'mem-fs-editor';
import type { Data as TemplateData, Options as TemplateOptions } from 'ejs';
import YeomanGenerator, { type ComposeOptions, type Storage } from 'yeoman-generator';
import type Environment from 'yeoman-environment';
import SharedData from '../base/shared-data.js';
import { Logger } from '../base/support/index.js';
import type { JHipsterGeneratorOptions, JHipsterGeneratorFeatures, EditFileCallback, EditFileOptions, CascatedEditFileCallback, JHipsterOptions, ValidationResult, WriteFileOptions, JHipsterArguments, JHipsterConfigs, JHipsterCommandDefinition } from '../base/api.js';
import { CommonClientServerApplication } from '../base-application/types.js';
import NeedleApi from '../needle-api.js';
export default class CoreGenerator extends YeomanGenerator<JHipsterGeneratorOptions, JHipsterGeneratorFeatures> {
    static asPriority: (priorityName: string) => string;
    static INITIALIZING: string;
    static PROMPTING: string;
    static CONFIGURING: string;
    static COMPOSING: string;
    static COMPOSING_COMPONENT: string;
    static LOADING: string;
    static PREPARING: string;
    static POST_PREPARING: string;
    static DEFAULT: string;
    static WRITING: string;
    static POST_WRITING: string;
    static INSTALL: string;
    static POST_INSTALL: string;
    static END: string;
    useVersionPlaceholders?: boolean;
    skipChecks?: boolean;
    ignoreNeedlesError?: boolean;
    experimental?: boolean;
    debugEnabled?: boolean;
    jhipster7Migration?: boolean | 'verbose' | 'silent';
    relativeDir: (from: string, to: string) => string;
    relative: (from: string, to: string) => string;
    readonly sharedData: SharedData<CommonClientServerApplication>;
    readonly logger: Logger;
    jhipsterConfig: Record<string, any>;
    jhipsterTemplatesFolders: string[];
    blueprintStorage?: Storage;
    generatorCommand?: JHipsterCommandDefinition;
    generatorsToCompose: string[];
    private _jhipsterGenerator?;
    private _needleApi?;
    env: Environment;
    log: Logger;
    _meta?: GeneratorMeta;
    constructor(args: string | string[], options: JHipsterGeneratorOptions, features: JHipsterGeneratorFeatures);
    usage(): string;
    get needleApi(): NeedleApi;
    get jhipsterConfigWithDefaults(): any;
    handleCheckFailure(message: string): void;
    isJhipsterVersionLessThan(version: any): any;
    isVersionLessThan(oldVersion: string | null, newVersion: string): any;
    getArgsForPriority(priorityName: string): {
        control: import("../base/types.js").Control;
        source: any;
    }[] | {
        control: import("../base/types.js").Control;
        configChanges: {
            [k: string]: {
                newValue: any;
                oldValue: any;
            };
        };
    }[] | {
        control: import("../base/types.js").Control;
    }[];
    getTaskNames(): string[];
    getCurrentJHipsterCommand(): Promise<JHipsterCommandDefinition>;
    parseCurrentJHipsterCommand(): Promise<void>;
    promptCurrentJHipsterCommand(): Promise<any>;
    configureCurrentJHipsterCommandConfig(): Promise<void>;
    loadCurrentJHipsterCommandConfig(context: any): Promise<void>;
    composeCurrentJHipsterCommand(): Promise<void>;
    parseJHipsterCommand(commandDef: JHipsterCommandDefinition): void;
    parseJHipsterOptions(options: JHipsterOptions | undefined, configs?: JHipsterConfigs | boolean, common?: boolean): void;
    parseJHipsterArguments(jhipsterArguments?: JHipsterArguments): void;
    prepareQuestions(configs?: JHipsterConfigs): {
        storage: any;
        type?: "input" | "list" | "checkbox" | "confirm" | undefined;
        message?: string | ((any: any) => string) | undefined;
        when?: boolean | ((any: any) => boolean) | undefined;
        default?: any;
        filter?: any;
        transformer?: any;
        validate?: any;
        name: string;
        choices: import("../base/api.js").JHispterChoices | undefined;
    }[];
    dateFormatForLiquibase(reproducible?: boolean): string;
    jhipsterTemplatePath(...path: string[]): string;
    composeWithJHipster(generator: string, options?: ComposeOptions): Promise<import("@yeoman/types").BaseGenerator[]>;
    dependsOnJHipster(generator: string, options?: ComposeOptions): Promise<import("@yeoman/types").BaseGenerator[]>;
    removeFile(...path: string[]): string;
    removeFolder(...path: string[]): void;
    fetchFromInstalledJHipster(...path: string[]): string;
    writeFile(source: string, destination: string, data?: TemplateData, options?: TemplateOptions, copyOptions?: CopyOptions): void;
    writeFiles<DataType = any>(options: WriteFileOptions<this, DataType>): Promise<string[]>;
    editFile(file: string, ...transformCallbacks: EditFileCallback<this>[]): CascatedEditFileCallback<this>;
    editFile(file: string, options: EditFileOptions, ...transformCallbacks: EditFileCallback<this>[]): CascatedEditFileCallback<this>;
    writeDestinationYaml(filepath: string, value: Record<string | number, any>): void;
    mergeDestinationYaml(filepath: string, value: Record<string | number, any>): void;
    mergeYaml(filepath: string, key: string, value: any, multiDocuments?: boolean, docIndex?: number): void;
    mergeDestinationJson(filepath: string, value: Record<string | number, any>): void;
    prepareDependencies(map: Record<string, string>, valuePlaceholder?: 'java' | 'docker' | ((value: string) => string)): Record<string, string>;
    loadNodeDependencies(destination: Record<string, string>, source: Record<string, string>): void;
    loadJavaDependenciesFromGradleCatalog(javaDependencies: Record<string, string>, gradleCatalog?: string | boolean): void;
    loadNodeDependenciesFromPackageJson(destination: Record<string, string>, packageJsonFile?: string): void;
    validateResult(result: ValidationResult, { throwOnError }?: {
        throwOnError?: boolean | undefined;
    }): void;
    protected checkForNewVersion(): Promise<void>;
    createGit(): import("simple-git").SimpleGit;
    private calculateApplicationId;
    protected getSharedApplication(applicationFolder?: string): any;
    private createSharedData;
    removeFiles<DataType = any>(options: WriteFileOptions<this, DataType>): string[];
}
