import { Construct } from 'constructs';
import { IApplicationListener } from './application-listener';
import { ListenerAction } from './application-listener-action';
import { IApplicationTargetGroup } from './application-target-group';
import { ListenerCondition } from './conditions';
/**
 * (experimental) Basic properties for defining a rule on a listener.
 *
 * @experimental
 */
export interface BaseApplicationListenerRuleProps {
    /**
     * (experimental) Priority of the rule.
     *
     * The rule with the lowest priority will be used for every request.
     *
     * Priorities must be unique.
     *
     * @experimental
     */
    readonly priority: number;
    /**
     * (experimental) Target groups to forward requests to.
     *
     * Only one of `action`, `fixedResponse`, `redirectResponse` or `targetGroups` can be specified.
     *
     * Implies a `forward` action.
     *
     * @default - No target groups.
     * @experimental
     */
    readonly targetGroups?: IApplicationTargetGroup[];
    /**
     * (experimental) Action to perform when requests are received.
     *
     * Only one of `action`, `fixedResponse`, `redirectResponse` or `targetGroups` can be specified.
     *
     * @default - No action
     * @experimental
     */
    readonly action?: ListenerAction;
    /**
     * (experimental) Rule applies if matches the conditions.
     *
     * @default - No conditions.
     * @see https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html
     * @experimental
     */
    readonly conditions?: ListenerCondition[];
}
/**
 * (experimental) Properties for defining a listener rule.
 *
 * @experimental
 */
export interface ApplicationListenerRuleProps extends BaseApplicationListenerRuleProps {
    /**
     * (experimental) The listener to attach the rule to.
     *
     * @experimental
     */
    readonly listener: IApplicationListener;
}
/**
 * (experimental) Define a new listener rule.
 *
 * @experimental
 */
export declare class ApplicationListenerRule extends Construct {
    /**
     * (experimental) The ARN of this rule.
     *
     * @experimental
     */
    readonly listenerRuleArn: string;
    private readonly conditions;
    private readonly legacyConditions;
    private readonly listener;
    private action?;
    /**
     * @experimental
     */
    constructor(scope: Construct, id: string, props: ApplicationListenerRuleProps);
    /**
     * (experimental) Add a non-standard condition to this rule.
     *
     * @experimental
     */
    addCondition(condition: ListenerCondition): void;
    /**
     * (experimental) Configure the action to perform for this rule.
     *
     * @experimental
     */
    configureAction(action: ListenerAction): void;
    /**
     * Validate the rule
     */
    private validateListenerRule;
    /**
     * Render the conditions for this rule
     */
    private renderConditions;
}
