import { AsyncCreatable } from '@salesforce/kit';
import { Logger } from '@salesforce/core';
import { DeployResult } from './sourceDeployApi';
import { AggregateSourceElements } from './aggregateSourceElements';
export declare abstract class SourceDeployApiBase extends AsyncCreatable<SourceDeployApiBase.Options> {
    protected logger: Logger;
    protected orgApi: any;
    protected force: any;
    protected isAsync: boolean;
    constructor(options: SourceDeployApiBase.Options);
    protected init(): Promise<void>;
    abstract doDeploy(options: any): Promise<DeployResult>;
    /**
     * Set additional required MDAPI options config and deploy
     *
     * @param options The flags on the context passed to the command.
     * @param {any} pollIntervalStrategy The strategy for how often to poll when doing a MD deploy
     * @returns {any}
     */
    mdapiDeploy(options: any, pollIntervalStrategy?: any): Promise<any>;
    /**
     * Set the state of the source elements that were deployed
     *
     * @param aggregateSourceElements The map of source elements to deploy
     * @returns {any}
     */
    getOutboundFiles(aggregateSourceElements: AggregateSourceElements, isDelete?: boolean): any[];
    /**
     * Convert the SDFX-formatted source to MD-format and then deploy it to the org
     *
     * @param options The flags on the context passed to the command.
     * @param sourceWorkspaceAdapter
     * @param aggregateSourceElements The map of source elements to deploy
     * @param {boolean} createDestructiveChanges Whether destructiveChanges.xml needs to be created for this deployment
     * @returns {any}
     */
    convertAndDeploy(options: any, sourceWorkspaceAdapter: any, aggregateSourceElements: AggregateSourceElements, createDestructiveChanges: boolean): Promise<any>;
    /**
     * Remove source elements that failed to deploy
     *
     * @param componentFailures
     * @param aggregateSourceElements
     */
    removeFailedAggregates(componentFailures: any, deployedSourceElements: AggregateSourceElements): void;
    /**
     * Some metadata types, such as RemoteSiteSetting, contain values specific to an org and need to be replaced
     * when the source is deployed to a new org
     *
     * @param dir The directory where the metadata resides
     */
    replaceTokens(dir: string): Promise<any>;
}
export declare namespace SourceDeployApiBase {
    interface Options {
        org: any;
        isAsync?: boolean;
    }
}
