import { PackageDiffOptions } from "../../core/package/diff/PackageDiffImpl";
import { Stage } from "../Stage";
import SfpPackage, { PackageType } from "../../core/package/SfpPackage";
export interface BuildProps {
    overridePackageTypes?: {
        [key: string]: PackageType;
    };
    configFilePath?: string;
    projectDirectory?: string;
    devhubAlias?: string;
    baselineOrgAlias?: string;
    repourl?: string;
    waitTime: number;
    isQuickBuild: boolean;
    isDiffCheckEnabled: boolean;
    buildNumber: number;
    executorcount: number;
    isBuildAllAsSourcePackages: boolean;
    branch?: string;
    currentStage: Stage;
    baseBranch?: string;
    diffOptions?: PackageDiffOptions;
    includeOnlyPackages?: string[];
    impactedPackagesAsPerBranch?: Map<string, string[]>;
    ref?: string;
}
export default class BuildImpl {
    private props;
    private limiter;
    private parentsToBeFulfilled;
    private childs;
    private packagesToBeBuilt;
    private packageCreationPromises;
    private projectConfig;
    private parents;
    private packagesInQueue;
    private packagesBuilt;
    private failedPackages;
    private generatedPackages;
    private sfpOrg;
    private scratchOrgDefinitions;
    private isMultiConfigFilesEnabled;
    private repository_url;
    private commit_id;
    private base_branch_commit_id;
    private logger;
    private recursiveAll;
    constructor(props: BuildProps);
    exec(): Promise<{
        generatedPackages: SfpPackage[];
        failedPackages: string[];
    }>;
    private createDiffPackageScheduledDisplayedAsATable;
    private createAllPackageScheduledDisplayedAsATable;
    private filterPackagesToBeBuiltByChanged;
    private getPackagesToBeBuilt;
    private printQueueDetails;
    private handlePackageError;
    private queueChildPackages;
    private resolveDependenciesOnCompletedPackage;
    private getPriorityandTypeOfAPackage;
    private printPackageDetails;
    private createPackage;
    /**
     * Get the file path of the forceignore for current stage, from project config.
     * Returns null if a forceignore path is not defined in the project config for the current stage.
     *
     * @param projectConfig
     * @param currentStage
     */
    private getPathToForceIgnoreForCurrentStage;
    private getMultiScratchOrgDefinitionFileMap;
    private resolvePackageDependencies;
    private extractPackageVersionAndBranch;
}
