import { Harmony } from '@teambit/harmony';
import { EnvPolicyConfigObject } from '@teambit/dependency-resolver';
import { TsConfigSourceFile } from 'typescript';
import { TsCompilerOptionsWithoutTsConfig, TypescriptMain } from '@teambit/typescript';
import { ApplicationMain } from '@teambit/application';
import { LoggerMain } from '@teambit/logger';
import { GeneratorMain } from '@teambit/generator';
import { BuildTask } from '@teambit/builder';
import { WorkerMain } from '@teambit/worker';
import { Compiler } from '@teambit/compiler';
import { PackageJsonProps } from '@teambit/pkg';
import { EnvsMain, EnvTransformer, Environment } from '@teambit/envs';
import { ReactMain, UseTypescriptModifiers } from '@teambit/react';
import { NodeEnv } from './node.env';
export declare class NodeMain {
    private react;
    private tsAspect;
    readonly nodeEnv: NodeEnv;
    private envs;
    constructor(react: ReactMain, tsAspect: TypescriptMain, nodeEnv: NodeEnv, envs: EnvsMain);
    icon(): string;
    /**
     * @deprecated use useTypescript()
     * override the TS config of the environment.
     */
    overrideTsConfig: (tsconfig: TsConfigSourceFile, compilerOptions?: Partial<TsCompilerOptionsWithoutTsConfig>, tsModule?: any) => EnvTransformer;
    /**
     * override the jest config of the environment.
     */
    overrideJestConfig: (jestConfigPath: string, jestModulePath?: string) => EnvTransformer;
    /**
     * override the env build pipeline.
     */
    overrideBuildPipe: (tasks: BuildTask[]) => EnvTransformer;
    /**
     * override the env compilers list.
     */
    overrideCompiler: (compiler: Compiler) => EnvTransformer;
    /**
     * override the env compilers tasks in the build pipe.
     */
    overrideCompilerTasks: (tasks: BuildTask[]) => EnvTransformer;
    /**
     * @deprecated use useTypescript()
     * override the build ts config.
     */
    overrideBuildTsConfig: (tsconfig: any, compilerOptions?: Partial<TsCompilerOptionsWithoutTsConfig>) => EnvTransformer;
    /**
     * override package json properties.
     */
    overridePackageJsonProps: (props: PackageJsonProps) => EnvTransformer;
    /**
     * @deprecated - use useWebpack
     * override the preview config in the env.
     */
    overridePreviewConfig: (config: import("webpack").Configuration) => EnvTransformer;
    /**
     * @deprecated - use useWebpack
     * override the dev server configuration.
     */
    overrideDevServerConfig: (config: import("webpack").Configuration) => EnvTransformer;
    /**
     * override the env's typescript config for both dev and build time.
     * Replaces both overrideTsConfig (devConfig) and overrideBuildTsConfig (buildConfig)
     */
    useTypescript(modifiers?: UseTypescriptModifiers, tsModule?: any): EnvTransformer;
    /**
     * override the env's dev server and preview webpack configurations.
     * Replaces both overrideDevServerConfig and overridePreviewConfig
     */
    useWebpack: (modifiers?: import("@teambit/react").UseWebpackModifiers) => EnvTransformer;
    /**
     * An API to mutate the prettier config
     */
    usePrettier: (modifiers?: import("@teambit/react/react.main.runtime").UsePrettierModifiers) => EnvTransformer;
    /**
     * An API to mutate the eslint config
     */
    useEslint: (modifiers?: import("@teambit/react/react.main.runtime").UseEslintModifiers) => EnvTransformer;
    /**
     * override the dependency configuration of the component environment.
     */
    overrideDependencies(dependencyPolicy: EnvPolicyConfigObject): EnvTransformer;
    overrideMounter: (mounterPath: string) => EnvTransformer;
    /**
     * create a new composition of the node environment.
     */
    compose(transformers: EnvTransformer[], targetEnv?: Environment): Environment;
    static runtime: import("@teambit/harmony").RuntimeDefinition;
    static dependencies: import("@teambit/harmony").Aspect[];
    static provider([loggerAspect, envs, application, react, generator, tsAspect, workerMain]: [
        LoggerMain,
        EnvsMain,
        ApplicationMain,
        ReactMain,
        GeneratorMain,
        TypescriptMain,
        WorkerMain
    ], config: any, slots: any, harmony: Harmony): Promise<NodeMain>;
}
