import { Handler } from '../handler'; export type SESHandler = Handler; // SES event export interface SESMailHeader { name: string; value: string; } export interface SESMailCommonHeaders { returnPath: string; from?: string[] | undefined; date: string; to?: string[] | undefined; cc?: string[] | undefined; bcc?: string[] | undefined; sender?: string[] | undefined; replyTo?: string[] | undefined; messageId: string; subject?: string | undefined; } export interface SESMail { timestamp: string; source: string; messageId: string; destination: string[]; headersTruncated: boolean; headers: SESMailHeader[]; commonHeaders: SESMailCommonHeaders; } export interface SESReceiptStatus { status: 'PASS' | 'FAIL' | 'GRAY' | 'PROCESSING_FAILED' | 'DISABLED'; } export interface SESReceiptS3Action { type: 'S3'; topicArn?: string | undefined; bucketName: string; objectKey: string; } export interface SESReceiptSnsAction { type: 'SNS'; topicArn: string; } export interface SESReceiptBounceAction { type: 'Bounce'; topicArn?: string | undefined; smtpReplyCode: string; statusCode: string; message: string; sender: string; } export interface SESReceiptLambdaAction { type: 'Lambda'; topicArn?: string | undefined; functionArn: string; invocationType: string; } export interface SESReceiptStopAction { type: 'Stop'; topicArn?: string | undefined; } export interface SESReceiptWorkMailAction { type: 'WorkMail'; topicArn?: string | undefined; organizationArn: string; } export interface SESReceipt { timestamp: string; processingTimeMillis: number; recipients: string[]; spamVerdict: SESReceiptStatus; virusVerdict: SESReceiptStatus; spfVerdict: SESReceiptStatus; dkimVerdict: SESReceiptStatus; dmarcVerdict: SESReceiptStatus; dmarcPolicy?: 'none' | 'quarantine' | 'reject' | undefined; action: SESReceiptS3Action | SESReceiptSnsAction | SESReceiptBounceAction | SESReceiptLambdaAction | SESReceiptStopAction | SESReceiptWorkMailAction; } export interface SESMessage { mail: SESMail; receipt: SESReceipt; } export interface SESEventRecord { eventSource: string; eventVersion: string; ses: SESMessage; } export interface SESEvent { Records: SESEventRecord[]; }