import { ExtJSON, AppJSON, IGameJSON, MiniProgramCore, PageJSON, PluginJSON, SiteMapJSON, ThemeJSON, MiniProgramDevtools } from '../../types';
import { SingletonTask } from '../../utils/singletontask';
import { EFilterCode } from '../../config/config';
import { FileInfo } from './summer/graph/basegraph';
export type ICompileOptions = MiniProgramCore.ICompileOptions;
export declare abstract class BaseCoreCompiler {
    protected _checkReadyTask?: SingletonTask;
    isSummer: boolean;
    project: MiniProgramCore.IPreCompileProject;
    protected isGameType(type: MiniProgramCore.ProjectType): type is "miniGame" | "miniGamePlugin";
    protected isPluginType(type: MiniProgramCore.ProjectType): type is "miniProgramPlugin" | "miniGamePlugin";
    get projectPath(): string;
    get srcPath(): string;
    get pluginSrcPath(): string;
    constructor(project: MiniProgramCore.IPreCompileProject);
    protected abstract init(...args: any[]): any;
    ready(): Promise<any>;
    abstract destroy(): void;
    watch(fn: MiniProgramCore.FN): void;
    unwatch(fn: MiniProgramCore.FN): void;
    compileJS(options: {
        root: string;
        filePath: string;
        sourceCode?: string | undefined;
        babelRoot: string;
        setting: {
            es6: boolean;
            enhance: boolean;
            minify: boolean;
            disableUseStrict?: boolean;
            compileWorklet?: boolean;
        };
        resultType?: MiniProgramCore.IResultType;
    }): Promise<any>;
    compileJSList(options: {
        root: string;
        fileList: string[];
    }): Promise<any>;
    compile(options: MiniProgramCore.ICompileOptions): any;
    clearCache(): void;
    uglifyFileNames(project: MiniProgramDevtools.IDevtoolsProject, result: Record<string, string | Buffer>, nameMapping: Record<string, string>): Promise<MiniProgramCore.IAnyObject>;
    packNpm(options?: MiniProgramCore.IPackNpmOptions): Promise<MiniProgramCore.IWarnItem[]>;
    packNpmManually(packTaskList: Array<{
        packageJsonPath: string;
        miniprogramNpmDistDir: string;
    }>): Promise<MiniProgramCore.IWarnItem[]>;
    stat(prefix?: string, filePath?: string): MiniProgramCore.IStat | undefined;
    exists(prefix?: string, filePath?: string): boolean;
    excludeRoot(fileList?: string[], prefix?: string): string[];
    excludeKeyRoot(obj: any, prefix?: string): any;
    getFile(prefix?: string, filePath?: string): Buffer;
    getFileString(prefix?: string, filePath?: string): string;
    getMPFileWithDir(prefix?: string): string[];
    getMPFileList(prefix?: string, extName?: string): string[];
    getMPWXMLFileList(filter?: string): string[];
    getMPWXSFileList(filter?: string): string[];
    getMPJSFileList(filter?: string): string[];
    getMPWXSSFileList(filter?: string): string[];
    getMPJSONFileList(filter?: string): string[];
    getFiltedFileListReason(resultType: MiniProgramCore.IResultType): Promise<{
        file: string;
        code: EFilterCode;
    }[]>;
    getPluginFileList(prefix?: string, extName?: string): string[];
    getPluginWXMLFileList(filter?: string): string[];
    getPluginWXSFileList(filter?: string): string[];
    getPluginJSFileList(filter?: string): string[];
    getPluginWXSSFileList(filter?: string): string[];
    getPluginJSONFileList(filter?: string): string[];
    isValidComponent(prefix: string | undefined, filePath: string): boolean;
    getAllFileInfo(prefix?: string): Promise<MiniProgramCore.IFileInfos>;
    abstract getMPFileInfo(): Promise<MiniProgramCore.IFileInfos>;
    abstract getPackageWxssFileList(packagePath: string): Promise<string[]>;
    abstract getPackageWxssFiles(packagePath: string): Promise<{
        wxssFiles: string[];
        content: Record<string, string>;
    }>;
    abstract getPackageWxmlAndWxsFiles(packagePath: string): Promise<{
        wxmlFiles: string[];
        wxsFiles: string[];
        content: Record<string, string>;
    }>;
    abstract getAllWxmlAndWxsFiles(): Promise<{
        wxmlFiles: string[];
        wxsFiles: string[];
        content: Record<string, string>;
    }>;
    abstract getPluginComponents(): Promise<string[]>;
    abstract getPluginJSFiles(): Promise<{
        jsFiles: string[];
        content: Record<string, string>;
    }>;
    abstract getPluginWxssFiles(): Promise<{
        wxssFiles: string[];
        content: Record<string, string>;
    }>;
    abstract getPluginWxmlAndWxsFiles(): Promise<{
        wxmlFiles: string[];
        wxsFiles: string[];
        content: Record<string, string>;
    }>;
    abstract getPluginFileInfo(): Promise<MiniProgramCore.IFileInfos>;
    abstract getAllSortedJSFiles(): Promise<{
        otherJsFiles: string[];
        jsPagesFiles: string[];
        components: string[];
    }>;
    abstract getMainPkgSortedJSFiles(): Promise<{
        hasAppJS: boolean;
        allFiles: string[];
        pageFiles: string[];
        functionalPageFiles: string[];
        workerFiles: string[];
        componentFiles: string[];
        otherFiles: string[];
    }>;
    abstract getPackageFiles(graphId: MiniProgramDevtools.GraphId, root: string): Promise<FileInfo[]>;
    abstract getSubPkgSortedJSFiles(rootPath: string): Promise<{
        entryJS: string;
        allFiles: string[];
        pageFiles: string[];
        componentFiles: string[];
        otherFiles: string[];
    }>;
    abstract waitSubProcessReady(): Promise<void>;
    abstract getAllPageAndComponent(): Promise<string[]>;
    abstract getExtJSON(): Promise<ExtJSON.IExtJSON>;
    abstract getAppJSON(): Promise<AppJSON.IAppJSON>;
    abstract getSiteMapJSON(): Promise<SiteMapJSON.ISiteMapJSON>;
    abstract getPageJSON(pagePath: string): Promise<PageJSON.IPageJSON>;
    abstract getGameJSON(): Promise<IGameJSON>;
    abstract getPluginPageJSON(pagePath: string): Promise<PluginJSON.IPluginpageJSON>;
    abstract getPluginJSON(localPath: string): Promise<PluginJSON.IPluginJSON>;
    abstract setLocale(locale: string): void;
    abstract getWxssMap(graphId: MiniProgramDevtools.GraphId, wxssPath: string): any;
    abstract getCompAndPagesOfConf(): Promise<{
        pages: Record<string, any>;
        comps: Record<string, any>;
    }>;
    abstract checkThemeJSON(options: {
        themeLocation: string;
        isPlugin?: boolean | undefined;
    }): Promise<ThemeJSON.IThemeJSON>;
}
