import ReleaseDefinition from './ReleaseDefinition';
import { DeploymentResult } from '../deploy/DeployImpl';
import { Logger } from '@flxbl-io/sfp-logger';
export interface ReleaseProps {
    releaseDefinitions: ReleaseDefinition[];
    targetOrg: string;
    fetchArtifactScript: string;
    isNpm: boolean;
    scope: string;
    npmrcPath: string;
    logsGroupSymbol: string[];
    tags: any;
    isDryRun: boolean;
    waitTime: number;
    keys: string;
    isGenerateChangelog: boolean;
    devhubUserName: string;
    branch: string;
    directory: string;
}
export default class ReleaseImpl {
    private props;
    private logger?;
    constructor(props: ReleaseProps, logger?: Logger);
    exec(): Promise<ReleaseResult>;
    /**
     *
     * @param releases
     * @returns aggregated number of work items in a release
     */
    private getAggregatedNumberOfWorkItemsInRelease;
    /**
     *
     * @param releases
     * @returns aggregated number of commits in a release
     */
    private getAggregatedNumberOfCommitsInRelease;
    private getNumberOfWorkItems;
    private getNumberOfCommits;
    private deployArtifacts;
    private getSortedReleaseDefns;
    private generateSfpPackageFromArtifacts;
    private installPackageDependencies;
    /**
     * Parse keys in string format "packageA:key packageB:key packageC:key"
     * Returns map of packages to keys
     * @param keys
     */
    private parseKeys;
    private displayReleaseInfo;
    private getArtifactDirectory;
}
interface InstallDependenciesResult {
    success: [string, string][];
    skipped: [string, string][];
    failed: [string, string][];
}
export interface ReleaseResult {
    succeededDeployments: {
        releaseDefinition: ReleaseDefinition;
        result: DeploymentResult;
    }[];
    failedDeployments: {
        releaseDefinition: ReleaseDefinition;
        result: DeploymentResult;
    }[];
    installDependenciesResult: InstallDependenciesResult;
}
export {};
