import { Command } from '@oclif/core';
import { GenerateCommandState, LockFile, TemplateElement } from '../types';
import { AdditionalApi } from './additional-api';
import { Property } from './property';
export declare class TemplateGenerator {
    static readonly templatePath: string;
    static readonly projectDirectory: string;
    static generateStaticContents(command: Command, templateElement: TemplateElement, relativeTargetBasePath: string, relativeTargetPath: string, { boundedContextName, moduleName, moduleNames, additionalApi, force, verbose, excludeFiles, lockFiles, templateData, currentProperty, // property to render value object or pivot table
    useTemplateEngine, templateElementPath, }?: {
        boundedContextName?: string;
        moduleName?: string;
        moduleNames?: string;
        additionalApi?: AdditionalApi;
        force?: boolean;
        verbose?: boolean;
        excludeFiles?: string[];
        lockFiles?: LockFile[];
        templateData?: any;
        currentProperty?: Property;
        useTemplateEngine?: boolean;
        templateElementPath?: string;
    }): void;
    static createDirectory(relativeTargetBasePath: string, directory: string): void;
    /**
     * @param {GenerateCommandState} generateCommandState Generate command state
     * @param {string} relativeTargetBasePath Relative target base path
     * @param {string} relativeTargetPath Relative target path
     * @param {Property[]} valueObjects Value objects
     * @param {string} moduleName Module name
     * @returns void
     */
    static generateValueObjects(generateCommandState: GenerateCommandState, relativeTargetBasePath: string, relativeTargetPath: string, valueObjects: Property[], moduleName: string): void;
    /**
     * @param {GenerateCommandState} generateCommandState Generate command state
     * @param {string} relativeTargetBasePath Relative target base path
     * @param {string} relativeTargetPath Relative target path
     * @param {Property} property Property
     * @param {string} moduleName Module name
     * @return void
     */
    static generateValueObject(generateCommandState: GenerateCommandState, relativeTargetBasePath: string, relativeTargetPath: string, property: Property, moduleName: string): void;
}
