import * as codebuild from "../../../aws-codebuild";
import * as ec2 from "../../../aws-ec2";
import * as iam from "../../../aws-iam";
import { ShellStep, ShellStepProps } from '../blueprint';
/**
 * (experimental) Construction props for a CodeBuildStep.
 *
 * @experimental
 */
export interface CodeBuildStepProps extends ShellStepProps {
    /**
     * (experimental) Name for the generated CodeBuild project.
     *
     * @default - Automatically generated
     * @experimental
     */
    readonly projectName?: string;
    /**
     * (experimental) Additional configuration that can only be configured via BuildSpec.
     *
     * You should not use this to specify output artifacts; those
     * should be supplied via the other properties of this class, otherwise
     * CDK Pipelines won't be able to inspect the artifacts.
     *
     * Set the `commands` to an empty array if you want to fully specify
     * the BuildSpec using this field.
     *
     * The BuildSpec must be available inline--it cannot reference a file
     * on disk.
     *
     * @default - BuildSpec completely derived from other properties
     * @experimental
     */
    readonly partialBuildSpec?: codebuild.BuildSpec;
    /**
     * (experimental) The VPC where to execute the SimpleSynth.
     *
     * @default - No VPC
     * @experimental
     */
    readonly vpc?: ec2.IVpc;
    /**
     * (experimental) Which subnets to use.
     *
     * Only used if 'vpc' is supplied.
     *
     * @default - All private subnets.
     * @experimental
     */
    readonly subnetSelection?: ec2.SubnetSelection;
    /**
     * (experimental) Policy statements to add to role used during the synth.
     *
     * Can be used to add acces to a CodeArtifact repository etc.
     *
     * @default - No policy statements added to CodeBuild Project Role
     * @experimental
     */
    readonly rolePolicyStatements?: iam.PolicyStatement[];
    /**
     * (experimental) Custom execution role to be used for the CodeBuild project.
     *
     * @default - A role is automatically created
     * @experimental
     */
    readonly role?: iam.IRole;
    /**
     * (experimental) Changes to environment.
     *
     * This environment will be combined with the pipeline's default
     * environment.
     *
     * @default - Use the pipeline's default build environment
     * @experimental
     */
    readonly buildEnvironment?: codebuild.BuildEnvironment;
    /**
     * (experimental) Which security group to associate with the script's project network interfaces.
     *
     * If no security group is identified, one will be created automatically.
     *
     * Only used if 'vpc' is supplied.
     *
     * @default - Security group will be automatically created.
     * @experimental
     */
    readonly securityGroups?: ec2.ISecurityGroup[];
}
/**
 * (experimental) Run a script as a CodeBuild Project.
 *
 * @experimental
 */
export declare class CodeBuildStep extends ShellStep {
    /**
     * (experimental) Name for the generated CodeBuild project.
     *
     * @default - No value specified at construction time, use defaults
     * @experimental
     */
    readonly projectName?: string;
    /**
     * (experimental) Additional configuration that can only be configured via BuildSpec.
     *
     * @default - No value specified at construction time, use defaults
     * @experimental
     */
    readonly partialBuildSpec?: codebuild.BuildSpec;
    /**
     * (experimental) The VPC where to execute the SimpleSynth.
     *
     * @default - No value specified at construction time, use defaults
     * @experimental
     */
    readonly vpc?: ec2.IVpc;
    /**
     * (experimental) Which subnets to use.
     *
     * @default - No value specified at construction time, use defaults
     * @experimental
     */
    readonly subnetSelection?: ec2.SubnetSelection;
    /**
     * (experimental) Policy statements to add to role used during the synth.
     *
     * @default - No value specified at construction time, use defaults
     * @experimental
     */
    readonly rolePolicyStatements?: iam.PolicyStatement[];
    /**
     * (experimental) Custom execution role to be used for the CodeBuild project.
     *
     * @default - No value specified at construction time, use defaults
     * @experimental
     */
    readonly role?: iam.IRole;
    /**
     * (experimental) Build environment.
     *
     * @default - No value specified at construction time, use defaults
     * @experimental
     */
    readonly buildEnvironment?: codebuild.BuildEnvironment;
    /**
     * (experimental) Which security group to associate with the script's project network interfaces.
     *
     * @default - No value specified at construction time, use defaults
     * @experimental
     */
    readonly securityGroups?: ec2.ISecurityGroup[];
    private _project?;
    /**
     * @experimental
     */
    constructor(id: string, props: CodeBuildStepProps);
    /**
     * (experimental) CodeBuild Project generated for the pipeline.
     *
     * Will only be available after the pipeline has been built.
     *
     * @experimental
     */
    get project(): codebuild.IProject;
    /**
     * (experimental) The CodeBuild Project's principal.
     *
     * @experimental
     */
    get grantPrincipal(): iam.IPrincipal;
    /**
     * Set the internal project value
     *
     * @internal
     */
    _setProject(project: codebuild.IProject): void;
}
