import { TaonBaseClass } from 'taon';
import { CoreModels } from 'tnp-core';
export declare namespace DevMode {
    const MAX_NUMBER_OF_CONCURENT_BUILDS = 1;
    enum ProjectBuildStatus {
        /**
         * External command to cancel build (TODO implement killing of processes)
         */
        __CANCEL_BUILD__ = "__CANCEL_BUILD__",
        /**
         * External command to start building (or repeat build if build active)
         */
        __START_BUILD__ = "__START_BUILD__",
        /**
         * 1. default state of porject
         */
        NOT_STARTED = "NOT_STARTED",
        /**
         * Each project is immediatlly building because of BehaviorSubject()
         */
        BUILDING = "BUILDING",
        /**
         * Cancelled build of project (but still building - I am not killing processes)
         */
        BUILDING_BUT_CANCELLED = "BUILDING_BUT_CANCELLED",
        /**
         * Auto rebuild of project at the end of building
         */
        BUILDING_WITH_REBUILD_AT_THE_END = "BUILDING_WITH_REBUILD_AT_THE_END",
        /**
         * Done building
         */
        DONE_BUILDING_SUCCESS = "DONE_BUILDING_SUCCESS",
        /**
         * Cancelled build of project (process idle)
         */
        BUILD_CANCEL_DONE = "BUILD_CANCEL_DONE",
        /**
         * Build error.
         */
        COMPILATION_ERROR = "COMPILATION_ERROR"
    }
    type BuildStatusInfo = {
        [key in CoreModels.BuildType]: ProjectBuildStatus;
    } & {
        [key in CoreModels.BuildWatcherErrorType]?: string | undefined;
    };
    class ProjectBuildNotificaiton extends TaonBaseClass {
        static from(json: Partial<ProjectBuildNotificaiton>): ProjectBuildNotificaiton;
        isEqual(build: ProjectBuildNotificaiton): boolean;
        private get allStatusValues();
        private everyBuildsWithStatus;
        private anyBuildsWithStatus;
        get allBuildsSucceed(): boolean;
        get someBuildsFailed(): boolean;
        get uniqueKey(): string;
        get isWatchBuild(): boolean;
        buildStatusInfo?: BuildStatusInfo;
        name?: string;
        buildType?: 'watch' | 'normal';
        nameForNpmPackage?: string;
        coreContainerVersion?: CoreModels.FrameworkVersion;
        port?: string | number;
        location?: string;
        devModeDependenciesNames?: string[];
    }
}