import { Compiler, CompilerMain } from '@teambit/compiler';
import type { DependenciesEnv, PackageEnv, PipeServiceModifier, PipeServiceModifiersMap, PreviewEnv } from '@teambit/envs';
import { PackageJsonProps } from '@teambit/pkg';
import { TsConfigSourceFile } from 'typescript';
import { ReactEnv } from '@teambit/react';
import { BuildTask } from '@teambit/builder';
import type { AspectLoaderMain } from '@teambit/aspect-loader';
import { Bundler, BundlerContext } from '@teambit/bundler';
import { WebpackConfigTransformer } from '@teambit/webpack';
import { Tester } from '@teambit/tester';
import { PreviewStrategyName } from '@teambit/preview';
import { ConfigWriterEntry } from '@teambit/workspace-config-files';
import { Logger } from '@teambit/logger';
import { WorkerMain } from '@teambit/worker';
import { DevFilesMain } from '@teambit/dev-files';
export declare const AspectEnvType = "aspect";
type GetBuildPipeModifiers = PipeServiceModifiersMap & {
    tsModifier?: PipeServiceModifier;
    jestModifier?: PipeServiceModifier;
};
/**
 * a component environment built for Aspects .
 */
export declare class AspectEnv implements DependenciesEnv, PackageEnv, PreviewEnv {
    private reactEnv;
    private aspectLoader;
    private devFiles;
    private compiler;
    private worker;
    private logger;
    constructor(reactEnv: ReactEnv, aspectLoader: AspectLoaderMain, devFiles: DevFilesMain, compiler: CompilerMain, worker: WorkerMain, logger: Logger);
    icon: string;
    __getDescriptor(): Promise<{
        type: string;
    }>;
    getTsConfig(tsConfig: TsConfigSourceFile): any;
    createTsCompiler(tsConfig: TsConfigSourceFile): Compiler;
    getCompiler(): Compiler;
    private getBabelCompiler;
    /**
     * returns a component tester.
     */
    getTester(jestConfigPath: string, jestModulePath?: string): Tester;
    /**
     * returns the component build pipeline.
     */
    getBuildPipe(modifiers?: GetBuildPipeModifiers): BuildTask[];
    private getJestTesterTask;
    private getJestWorker;
    getTemplateBundler(context: BundlerContext, transformers?: WebpackConfigTransformer[]): Promise<Bundler>;
    createTemplateWebpackBundler(context: BundlerContext, transformers?: WebpackConfigTransformer[]): Promise<Bundler>;
    getPackageJsonProps(): PackageJsonProps;
    getNpmIgnore(): string[];
    getPreviewConfig(): {
        strategyName: PreviewStrategyName;
        splitComponentBundle: boolean;
    };
    getDependencies(): Promise<{
        dependencies: {
            react: string;
            'react-dom': string;
            'core-js': string;
            '@babel/runtime': string;
        };
        devDependencies: {
            react: string;
            'react-dom': string;
            '@types/mocha': string;
            '@types/node': string;
            '@types/react': string;
            '@types/react-dom': string;
            '@types/jest': string;
            '@types/testing-library__jest-dom': string;
        };
        peerDependencies: {
            react: string;
            'react-dom': string;
        };
    }>;
    workspaceConfig(): ConfigWriterEntry[];
}
export {};
