import actions = require('@aws-cdk/aws-codepipeline-api');
import events = require('@aws-cdk/aws-events');
import iam = require('@aws-cdk/aws-iam');
import cdk = require('@aws-cdk/cdk');
import { cloudformation } from './codepipeline.generated';
import { Pipeline } from './pipeline';
/**
 * A stage in a pipeline. Stages are added to a pipeline by constructing a Stage with
 * the pipeline as the first argument to the constructor.
 *
 * @example
 * // add a stage to a pipeline
 * new Stage(pipeline, 'MyStage');
 */
export declare class Stage extends cdk.Construct implements actions.IStage {
    /**
     * The Pipeline this stage is a member of
     */
    readonly pipeline: Pipeline;
    readonly name: string;
    private readonly _actions;
    /**
     * Append a new stage to the pipeline
     *
     * Only a Pipeline can be passed in as a parent because stages should
     * always be attached to a pipeline. It's illogical to construct a Stage
     * with any other parent.
     */
    constructor(parent: Pipeline, name: string);
    /**
     * Get a duplicate of this stage's list of actions.
     */
    readonly actions: actions.Action[];
    validate(): string[];
    grantPipelineBucketReadWrite(identity: iam.IPrincipal): void;
    render(): cloudformation.PipelineResource.StageDeclarationProperty;
    onStateChange(name: string, target?: events.IEventRuleTarget, options?: events.EventRuleProps): events.EventRule;
    readonly pipelineArn: cdk.Arn;
    readonly pipelineRole: iam.Role;
    _addAction(action: actions.Action): void;
    private renderAction;
    private validateHasActions;
}
