import { Logger } from '@flxbl-io/sfp-logger';
import { PackageInstallationResult } from './PackageInstallationResult';
import { Connection } from '@salesforce/core';
import SfpOrg from '../../org/SFPOrg';
import SfpPackage from '../SfpPackage';
import { DeploymentType } from '../../deployers/DeploymentExecutor';
export declare class SfpPackageInstallationOptions {
    installationkey?: string;
    apexcompile?: string;
    securitytype?: string;
    upgradetype?: string;
    waitTime?: string;
    apiVersion?: string;
    publishWaitTime?: number;
    skipTesting?: boolean;
    optimizeDeployment?: boolean;
    deploymentType?: DeploymentType;
    disableArtifactCommit?: boolean;
    isInstallingForValidation?: boolean;
    skipIfPackageInstalled: boolean;
    isDryRun?: boolean;
    pathToReplacementForceIgnore?: string;
}
export declare abstract class InstallPackage {
    protected sfpPackage: SfpPackage;
    protected sfpOrg: SfpOrg;
    protected logger: Logger;
    protected options: SfpPackageInstallationOptions;
    protected connection: Connection;
    protected packageDescriptor: any;
    protected packageDirectory: any;
    private _isArtifactToBeCommittedInOrg;
    constructor(sfpPackage: SfpPackage, sfpOrg: SfpOrg, logger: Logger, options: SfpPackageInstallationOptions);
    exec(): Promise<PackageInstallationResult>;
    checkPackageDirectoryExists(): void;
    private waitTillAllPermissionSetGroupIsUpdated;
    protected setPackageDirectoryForPackage(): Promise<void>;
    private sendMetricsWhenFailed;
    private sendMetricsWhenSuccessfullyInstalled;
    set isArtifactToBeCommittedInOrg(toCommit: boolean);
    private commitPackageInstallationStatus;
    protected isPackageToBeInstalled(skipIfPackageInstalled: boolean): Promise<boolean>;
    private assignPermsetsPreDeployment;
    executePreDeploymentScripts(): Promise<void>;
    abstract install(): any;
    private assignPermsetsPostDeployment;
    executePostDeploymentScript(): Promise<void>;
    private executePostDeployers;
    private executePreDeployers;
    protected generateDeploymentOptions(waitTime: string, optimizeDeployment: boolean, skipTest: boolean, target_org: string, apiVersion: string): Promise<any>;
    private getAStringOfSpecificTestClasses;
}
