import type { BuildContext, BuildTask, BuiltTaskResult, TaskLocation } from '@teambit/builder';
import type { Logger } from '@teambit/logger';
import type { UiMain } from './ui.main.runtime';
export declare const BUNDLE_UI_TASK_NAME = "BundleUI";
export declare const BUNDLE_UI_DIR = "ui-bundle";
export declare const UIROOT_ASPECT_IDS: {
    SCOPE: string;
    WORKSPACE: string;
};
export declare const BUNDLE_UIROOT_DIR: {
    [UIROOT_ASPECT_IDS.SCOPE]: string;
    [UIROOT_ASPECT_IDS.WORKSPACE]: string;
};
export declare const BUNDLE_UI_HASH_FILENAME = ".hash";
/**
 * Both UI roots are bundled by a single rspack compilation, one entry each, so the roots share
 * every chunk they have in common instead of each shipping a full copy of the app. The entry name
 * is the root's short name, and each entry gets its own html naming the chunks only it needs.
 */
export declare function getUiRootEntryName(uiRootAspectId: string): string;
export declare function getUiRootHtmlFilename(uiRootAspectId: string): string;
export declare class BundleUiTask implements BuildTask {
    private ui;
    private logger;
    aspectId: string;
    name: string;
    location: TaskLocation;
    constructor(ui: UiMain, logger: Logger);
    execute(context: BuildContext): Promise<BuiltTaskResult>;
    /**
     * One hash file for the whole bundle, mapping each root aspect id to the hash of the aspects that
     * root resolved. `bit start` looks up the root it is about to serve; a root missing from the map
     * (or a bundle built before this layout) reads as "no pre-bundle" and falls back to a local build.
     */
    private generateHash;
    static getArtifactDirectory(): string;
    static getArtifactDef(): {
        name: string;
        globPatterns: string[];
    }[];
}
