import type { IReceiptRuleRef } from '../../interfaces/generated/aws-ses-interfaces.generated';
/**
 * An abstract action for a receipt rule.
 */
export interface IReceiptRuleAction {
    /**
     * Returns the receipt rule action specification
     */
    bind(receiptRule: IReceiptRuleRef): ReceiptRuleActionConfig;
}
/**
 * AddHeaderAction configuration.
 */
export interface AddHeaderActionConfig {
    /**
     * The name of the header that you want to add to the incoming message
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-addheaderaction.html#cfn-ses-receiptrule-addheaderaction-headername
     */
    readonly headerName: string;
    /**
     * The content that you want to include in the header.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-addheaderaction.html#cfn-ses-receiptrule-addheaderaction-headervalue
     */
    readonly headerValue: string;
}
/**
 * BoundAction configuration.
 */
export interface BounceActionConfig {
    /**
     * Human-readable text to include in the bounce message.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-bounceaction.html#cfn-ses-receiptrule-bounceaction-message
     */
    readonly message: string;
    /**
     * The email address of the sender of the bounced email.
     * This is the address that the bounce message is sent from.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-bounceaction.html#cfn-ses-receiptrule-bounceaction-sender
     */
    readonly sender: string;
    /**
     * The SMTP reply code, as defined by RFC 5321
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-bounceaction.html#cfn-ses-receiptrule-bounceaction-smtpreplycode
     */
    readonly smtpReplyCode: string;
    /**
     * The SMTP enhanced status code, as defined by RFC 3463
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-bounceaction.html#cfn-ses-receiptrule-bounceaction-statuscode
     *
     * @default - No status code.
     */
    readonly statusCode?: string;
    /**
     * The Amazon Resource Name (ARN) of the Amazon SNS topic to
     * notify when the bounce action is taken.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-bounceaction.html#cfn-ses-receiptrule-bounceaction-topicarn
     *
     * @default - No notification is sent to SNS.
     */
    readonly topicArn?: string;
}
/**
 * LambdaAction configuration.
 */
export interface LambdaActionConfig {
    /**
     * The Amazon Resource Name (ARN) of the AWS Lambda function.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-lambdaaction.html#cfn-ses-receiptrule-lambdaaction-functionarn
     */
    readonly functionArn: string;
    /**
     * The invocation type of the AWS Lambda function
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-lambdaaction.html#cfn-ses-receiptrule-lambdaaction-invocationtype
     *
     * @default 'Event'
     */
    readonly invocationType?: string;
    /**
     * The Amazon Resource Name (ARN) of the Amazon SNS topic to
     * notify when the Lambda action is executed.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-lambdaaction.html#cfn-ses-receiptrule-lambdaaction-topicarn
     *
     * @default - No notification is sent to SNS.
     */
    readonly topicArn?: string;
}
/**
 * S3Action configuration.
 */
export interface S3ActionConfig {
    /**
     * The name of the Amazon S3 bucket that you want to send incoming mail to.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-s3action.html#cfn-ses-receiptrule-s3action-bucketname
     */
    readonly bucketName: string;
    /**
     * The customer master key that Amazon SES should use to encrypt your emails before saving
     * them to the Amazon S3 bucket.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-s3action.html#cfn-ses-receiptrule-s3action-kmskeyarn
     *
     * @default - Emails are not encrypted.
     */
    readonly kmsKeyArn?: string;
    /**
     * The key prefix of the Amazon S3 bucket.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-s3action.html#cfn-ses-receiptrule-s3action-objectkeyprefix
     *
     * @default - No prefix.
     */
    readonly objectKeyPrefix?: string;
    /**
     * The ARN of the Amazon SNS topic to notify when the message is saved to the Amazon S3 bucket.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-s3action.html#cfn-ses-receiptrule-s3action-topicarn
     *
     * @default - No notification is sent to SNS.
     */
    readonly topicArn?: string;
}
/**
 * SNSAction configuration.
 */
export interface SNSActionConfig {
    /**
     * The encoding to use for the email within the Amazon SNS notification.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-snsaction.html#cfn-ses-receiptrule-snsaction-encoding
     *
     * @default 'UTF-8'
     */
    readonly encoding?: string;
    /**
     * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-snsaction.html#cfn-ses-receiptrule-snsaction-topicarn
     *
     * @default - No notification is sent to SNS.
     */
    readonly topicArn?: string;
}
/**
 * StopAction configuration.
 */
export interface StopActionConfig {
    /**
     * The scope of the StopAction. The only acceptable value is RuleSet.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-stopaction.html#cfn-ses-receiptrule-stopaction-scope
     */
    readonly scope: string;
    /**
     * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when the stop action is taken.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-stopaction.html#cfn-ses-receiptrule-stopaction-topicarn
     *
     * @default - No notification is sent to SNS.
     */
    readonly topicArn?: string;
}
/**
 * WorkmailAction configuration.
 */
export interface WorkmailActionConfig {
    /**
     * The Amazon Resource Name (ARN) of the Amazon WorkMail organization.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-workmailaction.html#cfn-ses-receiptrule-workmailaction-organizationarn
     */
    readonly organizationArn: string;
    /**
     * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when the WorkMail action is called.
     *
     * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-workmailaction.html#cfn-ses-receiptrule-workmailaction-topicarn
     *
     * @default - No notification is sent to SNS.
     */
    readonly topicArn?: string;
}
/**
 * Properties for a receipt rule action.
 */
export interface ReceiptRuleActionConfig {
    /**
     * Adds a header to the received email.
     */
    readonly addHeaderAction?: AddHeaderActionConfig;
    /**
     * Rejects the received email by returning a bounce response to the sender and,
     * optionally, publishes a notification to Amazon SNS.
     */
    readonly bounceAction?: BounceActionConfig;
    /**
     * Calls an AWS Lambda function, and optionally, publishes a notification to
     * Amazon SNS.
     */
    readonly lambdaAction?: LambdaActionConfig;
    /**
     * Saves the received message to an Amazon S3 bucket and, optionally, publishes
     * a notification to Amazon SNS.
     */
    readonly s3Action?: S3ActionConfig;
    /**
     * Publishes the email content within a notification to Amazon SNS.
     */
    readonly snsAction?: SNSActionConfig;
    /**
     * Terminates the evaluation of the receipt rule set and optionally publishes a
     * notification to Amazon SNS.
     */
    readonly stopAction?: StopActionConfig;
    /**
     * Calls Amazon WorkMail and, optionally, publishes a notification to Amazon SNS.
     */
    readonly workmailAction?: WorkmailActionConfig;
}
