import { Asset, IInitOptions, Resolver } from 'jgb-shared/lib';
import AwaitEventEmitter from 'jgb-shared/lib/awaitEventEmitter';
import WorkerFarm from 'jgb-shared/lib/workerfarm/WorkerFarm';
import Compiler from './Compiler';
import FSCache from './FSCache';
import PromiseQueue from './utils/PromiseQueue';
import Watcher from './Watcher';
export default class Core extends AwaitEventEmitter {
    private currentDir;
    private loadedAssets;
    private options;
    private entryFiles;
    buildQueue: PromiseQueue;
    resolver: Resolver;
    watcher: Watcher;
    compiler: Compiler;
    watchedAssets: Map<any, any>;
    farm: WorkerFarm;
    cache: FSCache;
    hooks: Array<(...args: any[]) => Promise<void>>;
    /** 使用core来output资源 */
    useCoreOutput: boolean;
    constructor(options: IInitOptions);
    normalizeEntryFiles(): string[];
    /**
     * 注入所需的环境变量
     */
    injectEnv(): void;
    normalizeOptions(options: IInitOptions): IInitOptions;
    initHook(): Promise<void>;
    init(): Promise<void>;
    start(): Promise<void>;
    scan(): Promise<void>;
    processAsset(asset: Asset, isRebuild?: boolean): Promise<void>;
    getAsset(name: string, parent: string): Promise<Asset>;
    resolveAsset(name: string, parent?: string): Promise<Asset>;
    loadAsset(asset: Asset, cacheMiss?: boolean): Promise<void>;
    resolveDep(asset: Asset, dep: any): Promise<Asset>;
    getLoadedAsset(path: string): Asset;
    watch(path: string, asset: Asset): Promise<void>;
    stop(): Promise<void>;
    unwatch(path: string, asset: Asset): Promise<void>;
    onChange(path: string): Promise<void>;
}
export declare function aliasResolve(options: IInitOptions, root: string): IInitOptions['alias'];
