import { Entity, DomainSchema, InfrastructureSchema, SchemaState } from 'lambdaorm';
import { BuildArgs, OrmCliH3lp, LanguageService } from '../../application';
export declare class NodeLanguageService implements LanguageService {
    protected readonly schemaState: SchemaState;
    protected readonly helper: OrmCliH3lp;
    protected library: string;
    constructor(schemaState: SchemaState, helper: OrmCliH3lp);
    get name(): string;
    build(args: BuildArgs): Promise<void>;
    localVersion(workspace: string): Promise<string>;
    /**
    * if the package.json does not exist create it
    */
    protected createPackage(workspace: string): Promise<void>;
    /**
    * if the tsconfig.json does not exist create it
    */
    protected createTsconfig(workspace: string): Promise<void>;
    /**
    * if the typescript is not installed locally it will be installed
    */
    protected installTypescript(workspace: string): Promise<void>;
    /**
    * if the lambdaorm is not installed locally it will be installed
    */
    protected installLibrary(workspace: string): Promise<void>;
    protected updateStructure(workspace: string, srcPath: string, dataPath?: string): Promise<void>;
    protected addDialects(path: string, infrastructure: InfrastructureSchema): Promise<void>;
    protected buildModel(domainPath: string, domain: DomainSchema): Promise<void>;
    protected buildRepositories(domainPath: string, domain: DomainSchema): Promise<void>;
    protected getLibs(dialect: string): string[];
    protected getTypescriptContent(): {
        compilerOptions: {
            experimentalDecorators: boolean;
            emitDecoratorMetadata: boolean;
            resolveJsonModule: boolean;
            esModuleInterop: boolean;
            strict: boolean;
            declaration: boolean;
            moduleResolution: string;
            sourceMap: boolean;
            target: string;
            module: string;
            outDir: string;
            baseUrl: string;
            typeRoots: string[];
        };
        include: string[];
        exclude: string[];
    };
    protected getRepositoryContent(entity: Entity): string;
    protected getModelContent(source: DomainSchema): string;
    protected getType(type: string): string;
}
