export interface MessagingEventPayload { body: string; requestContext: MessagingRequestContext; } export interface MessagingHandler { [key: string]: ( connectionId: string, body: string, websocketEndpointUrl: string, ) => Promise; } export interface MessagingPayload { [key: string]: unknown; data: MessagingData; } export interface MessagingData { attendee_id: string; auth_token?: string; interaction_data?: InteractionHistory; message?: unknown; stream_id: number; type?: string; } export interface MessagingRequestContext { apiId: string; authorizer: string; connectedAt: number; connectionId: string; domainName: string; error: string; eventType: string; extendedRequestId: string; identity?: object; integrationLatency?: string; messageDirection: string; messageId?: string; requestId: string; requestTime: string; requestTimeEpoch: number; routeKey: string; stage: string; status: string; } export interface ChatMessage { attendee_id: string; created_at: string; family_name: string; given_name: string; message: string; type?: string; } export enum RemoteMessageRequestAction { Configuration = 'stream.configuration', Disconnect = '$disconnect', Interactions = 'interaction.interaction-data', Join = 'stream.join', Leave = 'stream.leave', Message = 'chat.message', Ping = 'ping', } export enum RemoteMessageResponseAction { Attendees = 'stream.attendees', ChatHistory = 'chat.history', Configuration = 'stream.configuration', Interactions = 'interaction.interaction-data', Join = 'stream.join', JoinData = 'stream.join-data', Kicked = 'stream.kicked', Leave = 'stream.leave', Message = 'chat.message', Pong = 'pong', } export interface ChatHistory extends Array {} export interface Interaction { [key: string]: unknown; } export interface InteractionHistory extends Array {}