import { IResource, Resource } from "../../core";
import * as constructs from 'constructs';
import { INotificationRuleSource } from './notification-rule-source';
import { INotificationRuleTarget } from './notification-rule-target';
/**
 * (experimental) The level of detail to include in the notifications for this resource.
 *
 * @experimental
 */
export declare enum DetailType {
    /**
     * (experimental) BASIC will include only the contents of the event as it would appear in AWS CloudWatch.
     *
     * @experimental
     */
    BASIC = "BASIC",
    /**
     * (experimental) FULL will include any supplemental information provided by AWS CodeStar Notifications and/or the service for the resource for which the notification is created.
     *
     * @experimental
     */
    FULL = "FULL"
}
/**
 * (experimental) Standard set of options for `notifyOnXxx` codestar notification handler on construct.
 *
 * @experimental
 */
export interface NotificationRuleOptions {
    /**
     * (experimental) The name for the notification rule.
     *
     * Notification rule names must be unique in your AWS account.
     *
     * @default - generated from the `id`
     * @experimental
     */
    readonly notificationRuleName?: string;
    /**
     * (experimental) The status of the notification rule.
     *
     * If the enabled is set to DISABLED, notifications aren't sent for the notification rule.
     *
     * @default true
     * @experimental
     */
    readonly enabled?: boolean;
    /**
     * (experimental) The level of detail to include in the notifications for this resource.
     *
     * BASIC will include only the contents of the event as it would appear in AWS CloudWatch.
     * FULL will include any supplemental information provided by AWS CodeStar Notifications and/or the service for the resource for which the notification is created.
     *
     * @default DetailType.FULL
     * @experimental
     */
    readonly detailType?: DetailType;
}
/**
 * (experimental) Properties for a new notification rule.
 *
 * @experimental
 */
export interface NotificationRuleProps extends NotificationRuleOptions {
    /**
     * (experimental) A list of event types associated with this notification rule.
     *
     * For a complete list of event types and IDs, see Notification concepts in the Developer Tools Console User Guide.
     *
     * @see https://docs.aws.amazon.com/dtconsole/latest/userguide/concepts.html#concepts-api
     * @experimental
     */
    readonly events: string[];
    /**
     * (experimental) The Amazon Resource Name (ARN) of the resource to associate with the notification rule.
     *
     * Currently, Supported sources include pipelines in AWS CodePipeline, build projects in AWS CodeBuild, and repositories in AWS CodeCommit in this L2 constructor.
     *
     * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-resource
     * @experimental
     */
    readonly source: INotificationRuleSource;
    /**
     * (experimental) The targets to register for the notification destination.
     *
     * @default - No targets are added to the rule. Use `addTarget()` to add a target.
     * @experimental
     */
    readonly targets?: INotificationRuleTarget[];
}
/**
 * (experimental) Represents a notification rule.
 *
 * @experimental
 */
export interface INotificationRule extends IResource {
    /**
     * (experimental) The ARN of the notification rule (i.e. arn:aws:codestar-notifications:::notificationrule/01234abcde).
     *
     * @experimental
     * @attribute true
     */
    readonly notificationRuleArn: string;
    /**
     * (experimental) Adds target to notification rule.
     *
     * @param target The SNS topic or AWS Chatbot Slack target.
     * @returns boolean - return true if it had any effect
     * @experimental
     */
    addTarget(target: INotificationRuleTarget): boolean;
}
/**
 * (experimental) A new notification rule.
 *
 * @experimental
 * @resource AWS::CodeStarNotifications::NotificationRule
 */
export declare class NotificationRule extends Resource implements INotificationRule {
    /**
     * (experimental) Import an existing notification rule provided an ARN.
     *
     * @param scope The parent creating construct.
     * @param id The construct's name.
     * @param notificationRuleArn Notification rule ARN (i.e. arn:aws:codestar-notifications:::notificationrule/01234abcde).
     * @experimental
     */
    static fromNotificationRuleArn(scope: constructs.Construct, id: string, notificationRuleArn: string): INotificationRule;
    /**
     * (experimental) The ARN of the notification rule (i.e. arn:aws:codestar-notifications:::notificationrule/01234abcde).
     *
     * @experimental
     * @attribute true
     */
    readonly notificationRuleArn: string;
    private readonly targets;
    private readonly events;
    /**
     * @experimental
     */
    constructor(scope: constructs.Construct, id: string, props: NotificationRuleProps);
    /**
     * (experimental) Adds target to notification rule.
     *
     * @param target The SNS topic or AWS Chatbot Slack target.
     * @experimental
     */
    addTarget(target: INotificationRuleTarget): boolean;
    /**
     * Adds events to notification rule
     *
     * @see https://docs.aws.amazon.com/dtconsole/latest/userguide/concepts.html#events-ref-pipeline
     * @see https://docs.aws.amazon.com/dtconsole/latest/userguide/concepts.html#events-ref-buildproject
     * @param events The list of event types for AWS Codebuild and AWS CodePipeline
     */
    private addEvents;
}
