import { Command } from '@oclif/core';
import { Property } from './property';
import { AdditionalApi } from './additional-api';
import { LockFile } from '../types';
export declare class FileManager {
    /**
     * Render filename and folder name
     * @param {string} name - name that include key to replace
     * @return {string} - replaced name
     */
    static replaceFilename(name: string, { boundedContextName, moduleName, moduleNames, additionalApi, boundedContextPrefix, boundedContextSuffix, moduleNamePrefix, moduleNameSuffix, currentProperty, }?: {
        boundedContextName?: string;
        moduleName?: string;
        moduleNames?: string;
        additionalApi?: AdditionalApi;
        boundedContextPrefix?: string;
        boundedContextSuffix?: string;
        moduleNamePrefix?: string;
        moduleNameSuffix?: string;
        currentProperty?: Property;
    }): string;
    /**
     * Delete all origin files from directory recursively.
     * @param {string} currentPath - current path to explore
     * @return {void}
     */
    static deleteOriginFiles(currentPath: string): void;
    /**
     * Render all files and folders from template folder recursively.
     * @param {Command} command - command
     * @param {string} originPath - path to template folder
     * @param {string} relativeTargetBasePath - relative path to target folder
     * @param {string} relativeTargetPath - relative path to target folder
     * @return {void}
     */
    static generateContents(command: Command, originPath: string, relativeTargetBasePath: string, relativeTargetPath: string, { boundedContextName, moduleName, moduleNames, additionalApi, force, verbose, excludeFiles, lockFiles, templateData, currentProperty, // property to render value object or pivot table
    useTemplateEngine, }?: {
        boundedContextName?: string;
        moduleName?: string;
        moduleNames?: string;
        additionalApi?: AdditionalApi;
        force?: boolean;
        verbose?: boolean;
        excludeFiles?: string[];
        lockFiles?: LockFile[];
        templateData?: any;
        currentProperty?: Property;
        useTemplateEngine?: boolean;
    }): void;
    /**
     * Create and render file template
     * @param {Command} command Command
     * @param originFilePath Absolute path to template file
     * @param file File name of template without get target name
     * @param relativeTargetPath Relative path to folder where save file
     * @param targetBasePath Absolute path to project
     * @returns void
     */
    static manageFileTemplate(command: Command, originFilePath: string, file: string, relativeTargetPath: string, { force, verbose, lockFiles, templateData, targetBasePath, boundedContextName, moduleName, moduleNames, boundedContextPrefix, boundedContextSuffix, moduleNamePrefix, moduleNameSuffix, additionalApi, currentProperty, useTemplateEngine, }?: {
        force?: boolean;
        verbose?: boolean;
        lockFiles?: LockFile[];
        templateData?: any;
        targetBasePath?: string;
        boundedContextName?: string;
        moduleName?: string;
        moduleNames?: string;
        boundedContextPrefix?: string;
        boundedContextSuffix?: string;
        moduleNamePrefix?: string;
        moduleNameSuffix?: string;
        additionalApi?: AdditionalApi;
        currentProperty?: Property;
        useTemplateEngine?: boolean;
    }): Promise<void>;
}
