import { LibrariesBuildOptions, LibraryBuildCommandOptions } from '../../models';
import { BaseFeatureForProject } from './base-feature-for-project';
import type { BaseProject } from './base-project';
/**
 * Base library build for standard angular/typescript projects
 */
export declare abstract class BaseLibraryBuild<PROJECT extends BaseProject<BaseProject, any>> extends BaseFeatureForProject<PROJECT> {
    private cache;
    protected readonly tempOrgTsConfigFile: string;
    protected sortByDeps(libraries: PROJECT[]): PROJECT[];
    /**
     * Use cases:
     * 1. build all libraries in normal mode
     * 2. build all libraries in watch mode
     * 3. build selected libraries in normal mode
     *   (with first time all libraries will be build)
     * 4. build selected libraries in watch mode
     *    (use normal build for not selected libraries)
     * 5. build selected libraries in watch mode
     *    (skip normal build for not selected libraries)
     */
    selectAndSaveLibraries({ selectedLibs, watch, watchBuildSupported, skipAllLibsQuestion, useLastUserConfiguration, }: {
        selectedLibs: PROJECT[];
        watch: boolean;
        watchBuildSupported?: boolean;
        skipAllLibsQuestion?: boolean;
        useLastUserConfiguration?: boolean;
    }): Promise<{
        selectedLibs: PROJECT[];
        skipRebuildingAllForWatch: boolean;
    }>;
    /**
     * angular libraries from angular.json
     */
    get libraries(): PROJECT[];
    protected getLibraries(): PROJECT[];
    /**
     * Angular library build
     */
    buildLibraries({ watch, strategy, releaseBuild, copylink_to_node_modules, outputLineReplace, libraries, useLastUserConfiguration, }?: LibrariesBuildOptions<PROJECT> & {
        watch?: boolean;
    }): Promise<void>;
    protected libWatchBuildProcess({ lib, locationsForNodeModules, strategy, outputLineReplace, }: {
        lib: PROJECT;
        locationsForNodeModules: string[];
        strategy: 'link' | 'copy';
        outputLineReplace?: (outputLine: string) => string;
    }): Promise<void>;
    protected libNormalBuildProcess({ lib, locationsForNodeModules, strategy, outputLineReplace, }: {
        lib: PROJECT;
        locationsForNodeModules: string[];
        strategy: 'link' | 'copy';
        outputLineReplace?: (outputLine: string) => string;
    }): Promise<void>;
    getLibraryBuildCommand(options?: LibraryBuildCommandOptions): string | undefined;
    get getLibraryBuildSuccessComamnds(): string[];
    selectCopytoProjects(): Promise<string[]>;
    private changeTsConfigForLibrariesTypes;
    protected replaceTsConfigsPathes(): Promise<void>;
    private restoreOriginalTsConfig;
}
