import type { Construct } from 'constructs';
import type { EventPattern } from './event-pattern';
import type { IRuleTarget } from './target';
/**
 * Common options for Events.
 */
export interface EventCommonOptions {
    /**
     * A description of the rule's purpose.
     *
     * @default - No description
     */
    readonly description?: string;
    /**
     * A name for the rule.
     *
     * @default AWS CloudFormation generates a unique physical ID.
     */
    readonly ruleName?: string;
    /**
     * Additional restrictions for the event to route to the specified target
     *
     * The method that generates the rule probably imposes some type of event
     * filtering. The filtering implied by what you pass here is added
     * on top of that filtering.
     *
     * @default - No additional filtering based on an event pattern.
     *
     * @see
     * https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html
     */
    readonly eventPattern?: EventPattern;
    /**
     * The scope to use if the source of the rule and its target are in different Stacks
     * (but in the same account & region).
     * This helps dealing with cycles that often arise in these situations.
     *
     * @default - none (the main scope will be used, even for cross-stack Events)
     */
    readonly crossStackScope?: Construct;
}
/**
 * Standard set of options for `onXxx` event handlers on construct
 */
export interface OnEventOptions extends EventCommonOptions {
    /**
     * The target to register for the event
     *
     * @default - No target is added to the rule. Use `addTarget()` to add a target.
     */
    readonly target?: IRuleTarget;
}
