import type { IApp, IBuild, ICluster, IRelease, IUser, IWorkspace } from "../../entities";
import type { FetchDeploymentResult } from "./fetch-deployment";
import type { GenerateDeploymentResult } from "./generate-deployment";
export type DeployBuildOptions = {
    /**
     * ### `REQUIRED`
     * Deploy environment
     */
    env: string;
    /**
     * ### `REQUIRED`
     * The USER who process this request
     */
    owner: IUser;
    /**
     * ### `REQUIRED`
     * Workspace
     */
    workspace: IWorkspace;
    /**
     * Current version of the Diginext CLI
     */
    cliVersion?: string;
    /**
     * ### CAUTION
     * If `TRUE`, it will find and wipe out the current deployment, then deploy a new one!
     */
    shouldUseFreshDeploy?: boolean;
    /**
     * ### ONLY APPLY FOR DEPLOYING to PROD
     * Force roll out the release to "prod" deploy environment (skip the "prerelease" environment)
     * @default false
     */
    forceRollOut?: boolean;
    /**
     * ### WARNING
     * Skip checking deployed POD's ready status.
     * - The response status will always be SUCCESS even if the pod is unable to start up properly.
     * @default false
     */
    skipReadyCheck?: boolean;
    /**
     * ### WARNING
     * Skip watching the progress of deployment, let it run in background, won't return the deployment's status.
     * @default true
     */
    deployInBackground?: boolean;
};
export type DeployBuildResult = {
    app: IApp;
    build: IBuild;
    release: IRelease;
    deployment: GenerateDeploymentResult;
    endpoint: string;
    prerelease: FetchDeploymentResult;
};
export declare const processDeployBuild: (build: IBuild, release: IRelease, cluster: ICluster, options: DeployBuildOptions) => Promise<void>;
export declare const deployBuild: (build: IBuild, options: DeployBuildOptions) => Promise<DeployBuildResult>;
export declare const deployWithBuildSlug: (buildSlug: string, options: DeployBuildOptions) => Promise<DeployBuildResult>;
//# sourceMappingURL=deploy-build.d.ts.map