import { CommandHandlerRegistration, ExecuteGoal, FulfillableGoalDetails, FulfillableGoalWithRegistrations, GoalWithPrecondition, ImplementationRegistration } from "@atomist/sdm";
export declare const ListGradleBranchDeploys: CommandHandlerRegistration;
/**
 * Goal to deploy to Gradle with one process per branch
 * @type {GenericGoal}
 */
export declare const GradlePerBranchSpringBootDeploymentGoal: GoalWithPrecondition;
export interface GradleDeployerOptions {
    lowerPort: number;
    baseUrl: string;
    /**
     * Pattern to find in output to indicate that the server has come up successfully.
     * For example, matching something like "Started SpringRestSeedApplication in 3.931 seconds"
     */
    successPatterns: RegExp[];
    /**
     * Command line arguments for the startup process
     */
    commandLineArgumentsFor: (port: number, contextRoot: string) => string[];
    /**
     * The maximum number of concurrent deployments we allow. This is a valuable
     * safeguard as too many can crash the machine.
     */
    maxConcurrentDeployments: number;
}
/**
 * Use Maven per-branch deploy
 * @param projectLoader use to load projects
 * @param opts options
 */
export declare function executeGradlePerBranchSpringBootDeploy(opts: Partial<GradleDeployerOptions>): ExecuteGoal;
/**
 * Generate the command line arguments for running your application using Gradle
 * @param {number} port The port on which the application will be running
 * @param {string} contextRoot The context root to be used for deploying your application
 * @returns {string[]} The command line arguments
 */
export declare function springBootGradleArgs(port: number, contextRoot: string): string[];
/**
 * Configuration parameters for Gradle per-branch deployment
 */
export interface GradlePerBranchDeploymentRegistration extends Partial<ImplementationRegistration> {
    lowerPort: number;
    baseUrl?: string;
    /**
     * Pattern to find in output to indicate that the server has come up successfully.
     * For example, matching something like "Started SpringRestSeedApplication in 3.931 seconds"
     */
    successPatterns: RegExp[];
    /**
     * Command line arguments for the startup process
     */
    commandLineArgumentsFor?: (port: number, contextRoot: string) => string[];
    /**
     * The maximum number of concurrent deployments we allow. This is a valuable
     * safeguard as too many can crash the machine.
     */
    maxConcurrentDeployments?: number;
}
/**
 * Goal to deploy your application using Gradle. This will perform a deployment per branch.
 */
export declare class GradlePerBranchDeployment extends FulfillableGoalWithRegistrations<GradlePerBranchDeploymentRegistration> {
    protected readonly goalDetailsOrUniqueName: FulfillableGoalDetails | string;
    constructor(goalDetailsOrUniqueName?: FulfillableGoalDetails | string);
    with(registration: GradlePerBranchDeploymentRegistration): this;
}
