import { Stack } from "aws-cdk-lib";
import { IBucket } from "aws-cdk-lib/aws-s3";
import { Construct } from "constructs";
import { CacheProps } from "./cache";
import { GitlabRunnerAutoscalingJobRunner, GitlabRunnerAutoscalingJobRunnerProps } from "./job-runner";
import { GitlabRunnerAutoscalingManager, GitlabRunnerAutoscalingManagerBaseProps } from "./manager";
import { Network, NetworkProps } from "./network";
import { GlobalConfiguration, LogFormat, LogLevel } from "../runner-configuration";
/**
 * This is a AWS CDK Construct that may be used to deploy a GitLab runner with Docker executor and auto-scaling.
 *
 * @remarks
 * The `cdk-gitlab-runner` defines the {@link GitlabRunnerAutoscalingProps} interface and {@link GitlabRunnerAutoscaling} construct class,
 * which are used to provision a the runner.
 *
 * @packageDocumentation
 */
/**
 * Properties of the Gitlab Runner. You have to provide at least the GitLab's Runner's authentication token.
 */
export interface GitlabRunnerAutoscalingProps extends GlobalConfiguration {
    readonly cache?: GitlabRunnerAutoscalingCacheProps;
    /**
     * The network configuration for the Runner. If not set, the defaults will be used.
     * @link NetworkProps
     */
    readonly network?: NetworkProps;
    /**
     * The manager EC2 instance configuration. If not set, the defaults will be used.
     * @link GitlabRunnerAutoscalingManagerBaseProps
     */
    readonly manager?: GitlabRunnerAutoscalingManagerBaseProps;
    /**
     * The runner EC2 instances settings. At least one runner should be set up.
     * @link GitlabRunnerAutoscalingJobRunnerProps
     */
    readonly runners: GitlabRunnerAutoscalingJobRunnerProps[];
}
/**
 * The distributed GitLab runner S3 cache. Either pass an existing bucket or override default options.
 * @see https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runnerscaches3-section
 */
export interface GitlabRunnerAutoscalingCacheProps {
    /**
     * An existing S3 bucket used as runner's cache.
     */
    readonly bucket?: IBucket;
    /**
     * If no existing S3 bucket is provided, a S3 bucket will be created.
     */
    readonly options?: CacheProps;
}
/**
 * The Gitlab Runner autoscaling on EC2 by Docker Machine.
 *
 * @example <caption>Provisioning a basic Runner</caption>
 * const app = new cdk.App();
 * const stack = new cdk.Stack(app, "RunnerStack", {
 *   env: {
 *     account: "000000000000",
 *     region: "us-east-1",
 *   }
 * });
 *
 * const token = new StringParameter(stack, "imported-token", {
 *   parameterName: "/gitlab-runner/token1",
 *   stringValue: gitlabToken,
 *   type: ParameterType.SECURE_STRING,
 *   tier: ParameterTier.STANDARD,
 * });
 *
 * new GitlabRunnerAutoscaling(stack, "GitlabRunner", {
 *   runners: [{
 *     token: "xxxxxxxxxxxxxxxxxxxx"
 *     }],
 * });
 */
export declare class GitlabRunnerAutoscaling extends Construct {
    readonly concurrent?: number;
    readonly checkInterval?: number;
    readonly logFormat?: LogFormat;
    readonly logLevel?: LogLevel;
    readonly network: Network;
    readonly cacheBucket: IBucket;
    readonly manager: GitlabRunnerAutoscalingManager;
    readonly runners: GitlabRunnerAutoscalingJobRunner[];
    constructor(scope: Stack, id: string, props: GitlabRunnerAutoscalingProps);
}
