import { CustomTransformers } from 'typescript';
import { Cache } from '../cache/cache';
import { IProductionProps } from '../config/IProductionProps';
import { IPublicConfig } from '../config/IPublicConfig';
import { PrivateConfig } from '../config/PrivateConfig';
import { IDevServerActions } from '../dev-server/devServer';
import { FuseBoxLogAdapter } from '../fuse-log/FuseBoxLogAdapter';
import { MainInterceptor } from '../interceptor/interceptor';
import { TypescriptConfig } from '../interfaces/TypescriptInterfaces';
import { ProductionAPIWrapper } from '../production/api/ProductionApiWrapper';
import { TsConfigAtPath } from '../resolver/fileLookup';
import { IWebIndexInterface } from '../web-index/webIndex';
import { WebWorkerProcess } from '../web-workers/WebWorkerProcess';
import { IAssembleContext } from './assemble_context';
import { ContextTaskManager } from './ContextTaskManager';
import { Package } from './Package';
import { WeakModuleReferences } from './WeakModuleReferences';
import { IWriterActions } from './writer';
export declare class Context {
    config: PrivateConfig;
    assembleContext: IAssembleContext;
    packages: Array<Package>;
    interceptor: MainInterceptor;
    ict: MainInterceptor;
    tsConfig: TypescriptConfig;
    customTransformers: CustomTransformers;
    log: FuseBoxLogAdapter;
    webIndex: IWebIndexInterface;
    taskManager: ContextTaskManager;
    writer: IWriterActions;
    cache: Cache;
    devServer?: IDevServerActions;
    weakReferences: WeakModuleReferences;
    webWorkers: {
        [key: string]: WebWorkerProcess;
    };
    productionApiWrapper: ProductionAPIWrapper;
    tsConfigAtPaths?: Array<TsConfigAtPath>;
    private _uniqueEntryHash;
    constructor(config: PrivateConfig);
    addTsConfigAtPath(path: TsConfigAtPath): void;
    getUniqueEntryHash(): string;
    setDevelopment(): void;
    setProduction(prodProps: IProductionProps): void;
    readonly useSingleBundle: boolean;
    fatal(header: string, messages?: Array<string>): void;
    isInstalled(name: any): any;
}
export declare function createContext(cfg?: IPublicConfig): Context;
export declare function createProdContext(cfg: IPublicConfig, prodProps: IProductionProps): Context;
