import { type LockResponse, type LockStatus, type PromotionReport, type PromotionReportStub, type PromotionRequestConfig, type PromotionResponse, type PromotionStatus, type RollbackConfig, type RollbackResponse } from '../../api/cloud/EnvPromotionApi';
import { State } from '../../shared/State';
export type EnvPromotion = {
    /**
     * Lock environment
     * @returns {Promise<LockResponse>} a promise that resolves to a LockResponse object.
     */
    lockEnvironment(): Promise<LockResponse>;
    /**
     * Unlock environment
     * @param {string} promotionId Promotion id.
     * @returns {Promise<LockResponse>} a promise that resolves to a LockResponse object
     */
    unlockEnvironment(promotionId: string): Promise<LockResponse>;
    /**
     * Read lock status
     * @returns {Promise<LockStatus>} a promise that resolves to a LockStatus object
     */
    readLockStatus(): Promise<LockStatus>;
    /**
     * Promote configuration
     * @param {PromotionRequestConfig} config Promotion request config
     * @returns {Promise<PromotionResponse>} a promise that resolves to a PromotionResponse object.
     */
    promoteConfiguration(config: PromotionRequestConfig): Promise<PromotionResponse>;
    /**
     * Read promotion status
     * @returns {Promise<PromotionStatus>} a promise that resolves to a PromotionStatus object
     */
    readPromotionStatus(): Promise<PromotionStatus>;
    /**
     * Read last promotion report
     * @returns {Promise<PromotionReport>} a promise that resolves to a PromotionReport object
     */
    readLastPromotionReport(): Promise<PromotionReport>;
    /**
     * Read promotion report
     * @param {string} reportId Promotion id
     * @returns {Promise<PromotionReport>} a promise that resolves to a PromotionReport object
     */
    readPromotionReport(reportId: string): Promise<PromotionReport>;
    /**
     * Run a provisional report of changes since the last time the lower environment was promoted to the upper environment.
     * The report generated is for informational purposes only and may not reflect all the changes in a full promotion.
     * A dry-run promotion is always recommended prior to a full promotion between environments.
     * @returns {Promise<PromotionReport>} a promise that resolves to a PromotionReport object
     */
    runProvisionalPromotionReport(): Promise<PromotionReport>;
    /**
     * Run a provisional rollback report of changes when we rollback the configuration to the previous promotion.
     * @returns {Promise<PromotionReport>} a promise that resolves to a PromotionReport object
     */
    runProvisionalRollbackReport(): Promise<PromotionReport>;
    /**
     * Read a list of promotion reports in date order.
     * @returns {Promise<PromotionReportStub[]>} a promise that resolves to an array of PromotionReportStub objects
     */
    readPromotionReports(): Promise<PromotionReportStub[]>;
    /**
     * Rollback a promotion
     * @param {RollbackConfig} config Rollback config
     * @returns {Promise<RollbackResponse>} a promise that resolves to a RollbackResponse object.
     */
    rollbackPromotion(config: RollbackConfig): Promise<RollbackResponse>;
};
declare const _default: (state: State) => EnvPromotion;
export default _default;
/**
 * Lock environment
 * @param {Object} params Parameters object.
 * @param {State} params.state State object.
 * @returns {Promise<LockResponse>} a promise that resolves to a LockResponse object.
 */
export declare function lockEnvironment({ state, }: {
    state: State;
}): Promise<LockResponse>;
/**
 * Unlock environment
 * @param {Object} params Parameters object.
 * @param {string} params.promotionId Promotion id.
 * @param {State} params.state State object.
 * @returns {Promise<LockResponse>} a promise that resolves to a LockResponse object
 */
export declare function unlockEnvironment({ promotionId, state, }: {
    promotionId: string;
    state: State;
}): Promise<LockResponse>;
/**
 * Read lock status
 * @returns {Promise<LockStatus>} a promise that resolves to a LockStatus object
 */
export declare function readLockStatus({ state, }: {
    state: State;
}): Promise<LockStatus>;
/**
 * Promote configuration
 * @param {Object} params Parameters object.
 * @param {PromotionRequestConfig} params.config Promotion request config
 * @param {State} params.state State object.
 * @returns {Promise<PromotionResponse>} a promise that resolves to a PromotionResponse object.
 */
export declare function promoteConfiguration({ config, state, }: {
    config: PromotionRequestConfig;
    state: State;
}): Promise<PromotionResponse>;
/**
 * Read promotion status
 * @param {Object} params Parameters object.
 * @param {State} params.state State object.
 * @returns {Promise<PromotionStatus>} a promise that resolves to a PromotionStatus object
 */
export declare function readPromotionStatus({ state, }: {
    state: State;
}): Promise<PromotionStatus>;
/**
 * Read last promotion report
 * @param {Object} params Parameters object.
 * @param {State} params.state State object.
 * @returns {Promise<PromotionReport>} a promise that resolves to a PromotionReport object
 */
export declare function readLastPromotionReport({ state, }: {
    state: State;
}): Promise<PromotionReport>;
/**
 * Read promotion report
 * @param {Object} params Parameters object.
 * @param {string} params.reportId Promotion id
 * @param {State} params.state State object.
 * @returns {Promise<PromotionReport>} a promise that resolves to a PromotionReport object
 */
export declare function readPromotionReport({ reportId, state, }: {
    reportId: string;
    state: State;
}): Promise<PromotionReport>;
/**
 * Run a provisional report of changes since the last time the lower environment was promoted to the upper environment.
 * The report generated is for informational purposes only and may not reflect all the changes in a full promotion.
 * A dry-run promotion is always recommended prior to a full promotion between environments.
 * @param {Object} params Parameters object.
 * @param {State} params.state State object.
 * @returns {Promise<PromotionReport>} a promise that resolves to a PromotionReport object
 */
export declare function runProvisionalPromotionReport({ state, }: {
    state: State;
}): Promise<PromotionReport>;
/**
 * Run a provisional rollback report of changes when we rollback the configuration to the previous promotion.
 * @param {Object} params Parameters object.
 * @param {State} params.state State object.
 * @returns {Promise<PromotionReport>} a promise that resolves to a PromotionReport object
 */
export declare function runProvisionalRollbackReport({ state, }: {
    state: State;
}): Promise<PromotionReport>;
/**
 * Read a list of promotion reports in date order.
 * @param {Object} params Parameters object.
 * @param {State} params.state State object.
 * @returns {Promise<PromotionReportStub[]>} a promise that resolves to an array of PromotionReportStub objects
 */
export declare function readPromotionReports({ state, }: {
    state: State;
}): Promise<PromotionReportStub[]>;
/**
 * Rollback a promotion
 * @param {Object} params Parameters object.
 * @param {RollbackConfig} params.config Rollback config
 * @param {State} params.state State object.
 * @returns {Promise<RollbackResponse>} a promise that resolves to a RollbackResponse object.
 */
export declare function rollbackPromotion({ config, state, }: {
    config: RollbackConfig;
    state: State;
}): Promise<RollbackResponse>;
//# sourceMappingURL=EnvPromotionOps.d.ts.map