import * as core from "@terrascript/core";

export interface IdentityNotificationTopicArgs extends core.ResourceArgs {
  /**
   * (Required) The identity for which the Amazon SNS topic will be set. You can specify an identity by u
   * sing its name or by using its Amazon Resource Name (ARN).
   */
  identity: string | core.StringOut;

  /**
   * (Optional) Whether SES should include original email headers in SNS notifications of this type. `fal
   * se` by default.
   */
  includeOriginalHeaders?: boolean | core.BooleanOut;

  /**
   * (Required) The type of notifications that will be published to the specified Amazon SNS topic. Valid
   * Values: `Bounce`, `Complaint` or `Delivery`.
   */
  notificationType: string | core.StringOut;

  /**
   * (Optional) The Amazon Resource Name (ARN) of the Amazon SNS topic. Can be set to `""` (an empty stri
   * ng) to disable publishing.
   */
  topicArn?: string | core.StringOut;
}

export class IdentityNotificationTopic extends core.Resource<IdentityNotificationTopicArgs> {
  @core.attr(String, { computed: true })
  public id!: string | core.StringOut;

  /**
   * (Required) The identity for which the Amazon SNS topic will be set. You can specify an identity by u
   * sing its name or by using its Amazon Resource Name (ARN).
   */
  @core.attr(String)
  public identity!: string | core.StringOut;

  /**
   * (Optional) Whether SES should include original email headers in SNS notifications of this type. `fal
   * se` by default.
   */
  @core.attr(Boolean)
  public includeOriginalHeaders?: boolean | core.BooleanOut;

  /**
   * (Required) The type of notifications that will be published to the specified Amazon SNS topic. Valid
   * Values: `Bounce`, `Complaint` or `Delivery`.
   */
  @core.attr(String)
  public notificationType!: string | core.StringOut;

  /**
   * (Optional) The Amazon Resource Name (ARN) of the Amazon SNS topic. Can be set to `""` (an empty stri
   * ng) to disable publishing.
   */
  @core.attr(String)
  public topicArn?: string | core.StringOut;

  constructor(name: string, args?: IdentityNotificationTopicArgs) {
    super(name, "aws_ses_identity_notification_topic", args);
  }

  public override getNamespace(): string {
    return "aws_ses";
  }
}
