import { PreCompileProject } from '../project/advance/precompileProject';
import { MiniProgramCI, MiniProgramCore, MiniProgramDevtools } from '../types';
import { IMessageHub, IConsoleDisplay } from '../utils/messageHub';
import { PreCompiler } from './precompiler/index';
import { SummerCompiler } from './corecompiler/summerCompiler';
import { NativeCompiler } from './nativecompiler';
import { Analyzer } from '../common/code-analyse';
export interface IBuilderOptions {
    summerCompilerClass?: typeof SummerCompiler;
    cachePath?: string;
    miniappDirPath?: string;
    devtoolsVersion?: string;
    projectInfo?: MiniProgramDevtools.IDevtoolsProjectInfo;
    devtoolMessagehub?: IMessageHub;
    consoleDisplay?: IConsoleDisplay;
    targetPlatform?: MiniProgramCore.ITargetPlatform;
    targetPlatformDefines?: MiniProgramCore.ITargetPlatformDefine;
    outputDir?: string;
    filterFactory?: MiniProgramDevtools.IFilterFactory;
}
export declare class Builder {
    originProject: MiniProgramCI.IProject;
    private _precompileProject;
    private _preCompiler;
    private _summerCompiler;
    private _nativeCompiler;
    private _options;
    private _checkReadyTask?;
    private _getSummerCompilerTask?;
    private _getPrecompileProjectTask?;
    private _originalCompiler;
    private _analyzer?;
    constructor(project: MiniProgramCI.IProject, opts: IBuilderOptions);
    getCompiler(): Promise<any>;
    getAnalyzer(): Promise<Analyzer | null>;
    getPreCompileProject(): Promise<PreCompileProject>;
    private _getPreCompileProject;
    getPreCompiler(): Promise<PreCompiler>;
    getSummerCompiler(): Promise<any>;
    private _getSummerCompiler;
    ready(): Promise<any>;
    init(): Promise<void>;
    getNativeCompiler(): Promise<NativeCompiler>;
    getFullCompiler(): Promise<void>;
    initNativeCompiler(opts: IBuilderOptions): Promise<void>;
    getPreCompileOptions(): {
        targetPlatform: MiniProgramCore.ITargetPlatform | undefined;
        targetPlatformDefines: MiniProgramCore.ITargetPlatformDefine | undefined;
    };
    changePreCompileOptions(opts: MiniProgramCore.IConditionCompileInfo): Promise<void>;
    setLocale(locale: string): Promise<void>;
    destroy(): void;
}
