import type { IConstruct } from 'constructs';
import type * as elbv2 from '../../aws-elasticloadbalancingv2';
import * as iam from '../../aws-iam';
import type { aws_elasticloadbalancingv2 } from '../../interfaces';
/**
 * Represents a listener configuration for advanced load balancer settings
 */
export declare abstract class ListenerRuleConfiguration {
    /**
     * Use an Application Load Balancer listener rule
     */
    static applicationListenerRule(rule: elbv2.ApplicationListenerRule): ListenerRuleConfiguration;
    /**
     * Use a Network Load Balancer listener
     */
    static networkListener(listener: elbv2.NetworkListener): ListenerRuleConfiguration;
    /**
     * @internal
     */
    abstract readonly _listenerArn: string;
}
/**
 * Configuration returned by AlternateTargetConfiguration.bind()
 */
export interface AlternateTargetConfig {
    /**
     * The ARN of the alternate target group
     */
    readonly alternateTargetGroupArn: string;
    /**
     * The IAM role ARN for the configuration
     * @default - a new role will be created
     */
    readonly roleArn: string;
    /**
     * The production listener rule ARN (ALB) or listener ARN (NLB)
     * @default - none
     */
    readonly productionListenerRule?: string;
    /**
     * The test listener rule ARN (ALB) or listener ARN (NLB)
     * @default - none
     */
    readonly testListenerRule?: string;
}
/**
 * Interface for configuring alternate target groups for blue/green deployments
 */
export interface IAlternateTarget {
    /**
     * Bind this configuration to a service
     *
     * @param scope The construct scope
     * @returns The configuration to apply to the service
     */
    bind(scope: IConstruct): AlternateTargetConfig;
}
/**
 * Options for AlternateTarget configuration
 */
export interface AlternateTargetOptions {
    /**
     * The IAM role for the configuration
     * @default - a new role will be created
     */
    readonly role?: iam.IRole;
    /**
     * The test listener configuration
     * @default - none
     */
    readonly testListener?: ListenerRuleConfiguration;
}
/**
 * Properties for AlternateTarget configuration
 */
export interface AlternateTargetProps extends AlternateTargetOptions {
    /**
     * The alternate target group
     */
    readonly alternateTargetGroup: aws_elasticloadbalancingv2.ITargetGroupRef;
    /**
     * The production listener rule ARN (ALB) or listener ARN (NLB)
     */
    readonly productionListener: ListenerRuleConfiguration;
}
/**
 * Configuration for alternate target groups used in blue/green deployments with load balancers
 */
export declare class AlternateTarget implements IAlternateTarget {
    private readonly id;
    private readonly props;
    constructor(id: string, props: AlternateTargetProps);
    /**
     * Bind this configuration to a service
     */
    bind(scope: IConstruct): AlternateTargetConfig;
}
