import type { IConstruct } from 'constructs';
import * as iam from '../../aws-iam';
import type * as lambda from '../../aws-lambda';
/**
 * Deployment lifecycle stages where hooks can be executed
 */
export declare enum DeploymentLifecycleStage {
    /**
     * Execute during service reconciliation
     */
    RECONCILE_SERVICE = "RECONCILE_SERVICE",
    /**
     * Execute before scaling up tasks
     */
    PRE_SCALE_UP = "PRE_SCALE_UP",
    /**
     * Execute after scaling up tasks
     */
    POST_SCALE_UP = "POST_SCALE_UP",
    /**
     * Execute during test traffic shift
     */
    TEST_TRAFFIC_SHIFT = "TEST_TRAFFIC_SHIFT",
    /**
     * Execute after test traffic shift
     */
    POST_TEST_TRAFFIC_SHIFT = "POST_TEST_TRAFFIC_SHIFT",
    /**
     * Execute during production traffic shift
     */
    PRODUCTION_TRAFFIC_SHIFT = "PRODUCTION_TRAFFIC_SHIFT",
    /**
     * Execute after production traffic shift
     */
    POST_PRODUCTION_TRAFFIC_SHIFT = "POST_PRODUCTION_TRAFFIC_SHIFT"
}
/**
 * Configuration for a deployment lifecycle hook target
 */
export interface DeploymentLifecycleHookTargetConfig {
    /**
     * The ARN of the target resource
     */
    readonly targetArn: string;
    /**
     * The IAM role that grants permissions to invoke the target
     * @default - a role will be created automatically
     */
    readonly role?: iam.IRole;
    /**
     * The lifecycle stages when this hook should be executed
     */
    readonly lifecycleStages: DeploymentLifecycleStage[];
}
/**
 * Interface for deployment lifecycle hook targets
 */
export interface IDeploymentLifecycleHookTarget {
    /**
     * Bind this target to a deployment lifecycle hook
     *
     * @param scope The construct scope
     */
    bind(scope: IConstruct): DeploymentLifecycleHookTargetConfig;
}
/**
 * Configuration for a lambda deployment lifecycle hook
 */
export interface DeploymentLifecycleLambdaTargetProps {
    /**
     * The IAM role that grants permissions to invoke the lambda target
     * @default - A unique role will be generated for this lambda function.
     */
    readonly role?: iam.IRole;
    /**
     * The lifecycle stages when this hook should be executed
     */
    readonly lifecycleStages: DeploymentLifecycleStage[];
}
/**
 * Use an AWS Lambda function as a deployment lifecycle hook target
 */
export declare class DeploymentLifecycleLambdaTarget implements IDeploymentLifecycleHookTarget {
    private readonly handler;
    private readonly id;
    private readonly props;
    private _role?;
    constructor(handler: lambda.IFunction, id: string, props: DeploymentLifecycleLambdaTargetProps);
    /**
     * The IAM role for the deployment lifecycle hook target
     */
    get role(): iam.IRole;
    /**
     * Bind this target to a deployment lifecycle hook
     */
    bind(scope: IConstruct): DeploymentLifecycleHookTargetConfig;
}
