import { Information } from './Information.js';
import { DeGitPuller } from '../components/DeGitPuller.js';
import { Spinner } from '../components/Spinner.js';
import { CreateProjectOptions } from '../../options/CreateProjectOptions.js';
import { Application, Provider } from 'lakutata';
import { Logger } from 'lakutata/com/logger';
import { OnlineLatestVersion } from './OnlineLatestVersion';
export declare class Creator extends Provider {
    protected readonly app: Application;
    protected readonly log: Logger;
    protected readonly spinner: Spinner;
    protected readonly puller: DeGitPuller;
    protected readonly frameworkInfo: Information;
    protected readonly onlineVersion: OnlineLatestVersion;
    /**
     * Check if the target path exists
     * @param targetDirectory
     * @param initOnly
     * @protected
     */
    protected checkTargetPathExistence(targetDirectory: string, initOnly: boolean): Promise<void>;
    /**
     * Check target path is a valid directory
     * @param targetDirectory
     * @protected
     */
    protected checkTargetPathIsDirectory(targetDirectory: string): Promise<void>;
    /**
     * Check target directory is empty, if the target directory is not empty, throw error and exit
     * @param targetDirectory
     * @param initOnly
     * @protected
     */
    protected checkTargetDirectoryIsEmpty(targetDirectory: string, initOnly: boolean): Promise<void>;
    /**
     * project information filling
     * @protected
     */
    protected projectInformationFilling(targetPath: string, fields: Record<string, string>): Promise<void>;
    /**
     * Exec create
     * @param options
     */
    create(options: CreateProjectOptions): Promise<void>;
}
//# sourceMappingURL=Creator.d.ts.map