import { DynamoDBStreamEvent, EventBridgeEvent, S3Event, SNSEvent, SQSEvent } from 'aws-lambda'; import { StepFunctionsEvent } from './aws/step-function.interface'; import { IEvent } from './event.interface'; /** * Factory interface for transforming AWS events into domain events. * Implement this to customize how incoming AWS events are parsed. * * Each transform method receives the raw AWS event and returns * an array of domain events to be processed by handlers. */ export interface IEventFactory { /** Transform SQS messages into domain events */ transformSqs(event: SQSEvent): Promise; /** Transform SNS notifications into domain events */ transformSns(event: SNSEvent): Promise; /** Transform DynamoDB Stream records into domain events */ transformDynamodbStream(event: DynamoDBStreamEvent): Promise; /** Transform EventBridge events into domain events */ transformEventBridge(event: EventBridgeEvent): Promise; /** Transform Step Functions task input into domain events */ transformStepFunction(event: StepFunctionsEvent): Promise; /** Transform S3 notifications into domain events */ transformS3(event: S3Event): Promise; }