import { IHandlerResponseApi, Session } from "@zowe/imperative";
import { IElementActionReport, IEndevorElement, IEndevorRestResponse } from "@broadcom/endevor-for-zowe-cli/lib/api";
import { IDisplayGeneratedElement, IGBBuildDetails, IGBDisplayRestErr, IGBElement } from "../doc/IGBStore";
import { IBridgeMetadata } from "../../doc/IBridgeMetadata";
import { IBranchMetadata } from "../../doc/IBranchMetadata";
export declare class BuildExecute {
    protected static DELETETIMESTAMP: number;
    protected endevorSession: Session;
    protected instance: string;
    protected endvWrkDir: string;
    protected endvWrkTempDir: string;
    protected endvReportsDir: string;
    protected currBuildDetails: IGBBuildDetails;
    protected currWorkAreaMap: Map<number, {
        toSystem: string;
        toSubsystem: string;
    }>;
    protected reusePrev: boolean;
    protected prevElmsInWorkArea: IGBElement[];
    protected ccid: string;
    protected comment: string;
    protected toBeUploadToWorkArea: Map<number, IGBElement>;
    protected toBeDeletedFromWorkArea: IEndevorElement[];
    protected gitDeletedElement: IGBElement[];
    protected workAreaEntryStage: number;
    protected gitBridgeExt: {
        [x: string]: string | undefined;
    };
    protected sysSubWithoutToMap: Map<number, {
        system: string;
        subsystem: string;
    }>;
    protected elmsFailedUpload: IGBDisplayRestErr[];
    protected listingDir: string | undefined;
    protected listingRC: number;
    protected zosmfBuild: {
        iszosmf: boolean;
        jclSkeletonPath: string;
        autogen: string;
        zosmfSession: Session;
    };
    constructor(endevorSession: Session, instance: string, gitLocation: string, forceClean: boolean, listingDir?: string, listingRC?: number, currWorkAreaID?: string, currBuildSub?: {
        env: string;
        sys: string;
        sub: string;
    }, zosmfBuild?: {
        iszosmf: boolean;
        jclSkeletonPath: string;
        autogen: string;
        zosmfSession: Session;
    });
    /**
     * NOTE: This class uses the mapping metadata when gitBridge hasn't implement multi-system support.
     * When they do, the whole mapping metadata is going to look different.
     * Therefore, function getGitDiffElements here that relies on mapping metadata being a single system, should later be wrapped in loop.
     */
    buildDriver(commandResponse: IHandlerResponseApi): Promise<void>;
    protected writecurrBuildDetailsToFile(): void;
    protected getGitDiffElements(): Promise<void>;
    protected getProcGrpName(matchResult: string[], bridgeMetadata: IBridgeMetadata): string;
    protected addElementForUpload(matchResult: string[], procGrpName: string, pathToSourceFile: string): IGBElement;
    protected elementsToBeDeleted(matchResult: string[], procGrpName: string): IGBElement;
    protected getTypeFileExt(): Promise<{
        [x: string]: string | undefined;
    }>;
    protected getEntryStage(): Promise<void>;
    protected cleanWorkAreaWhenNOTreusePrev(): Promise<void>;
    protected prepareWorkAreaWhenNOTreusePrev(): Promise<void>;
    protected isFoundUptheMap(deletedElm: IGBElement, synchronizedBranch: IBranchMetadata): Promise<{
        foundUpMap: boolean;
        elmUptheMap: IEndevorElement;
    }>;
    protected prepareWorkAreaWhenReusePrev(): Promise<void>;
    protected uploadElmsToBeUploadToWorkArea(): Promise<void>;
    protected generateWorkArea(genC1MSGFileName: string, genC2MSGFileName: string): Promise<{
        generatedElms: IDisplayGeneratedElement[];
        generateResult: IEndevorRestResponse<any>;
    }>;
    protected getC1C2MSGFromEndvReport(reportURL: {
        [key: string]: string;
    }, genC1MSGFileName: string, genC2MSGFileName: string): Promise<IElementActionReport[] | undefined>;
    protected generateWorkAreaZosmf(): Promise<void>;
}
