import { DomainEvent } from './domain-event'; import { Context } from '../protocol'; export declare namespace roomEvents { enum EndReason { Terminated = "terminated", Timeout = "timeout", Ended = "ended", Hangup = "hangup", ConnectionDropped = "connection_dropped", Disconnected = "disconnected", CallRejected = "rejected", Busy = "busy" } abstract class RoomEvent implements DomainEvent { readonly roomId: string; readonly authorId: string; readonly timestamp: number; readonly tag: string; readonly __discriminator__ = "domainEvent"; static isRoomEvent(e: DomainEvent): e is RoomEvent; protected constructor(roomId: string, authorId: string, timestamp: number, tag: string); } class Created extends RoomEvent { static readonly tag = "room_created"; constructor(roomId: string, authorId: string, timestamp: number); static isCreated(e: DomainEvent): e is Created; } class Invited extends RoomEvent { static readonly tag = "room_invited"; readonly invitee: string; constructor(roomId: string, authorId: string, invitee: string, timestamp: number); static isInvited(e: DomainEvent): e is Invited; } class Joined extends RoomEvent { static readonly tag = "room_joined"; constructor(roomId: string, authorId: string, timestamp: number); static isJoined(e: DomainEvent): e is Joined; } class Left extends RoomEvent { static readonly tag = "room_left"; readonly endReason: EndReason; constructor(roomId: string, authorId: string, endReason: EndReason, timestamp: number); static isLeft(e: DomainEvent): e is Left; } class FakeMessageSent extends RoomEvent { static readonly tag = "fake_room_message_sent"; readonly messageId: string; constructor(roomId: string, authorId: string, messageId: string, timestamp: number); static isFakeMessageSent(e: DomainEvent | RoomEvent): e is FakeMessageSent; } class MessageSent extends RoomEvent { static readonly tag = "room_message_sent"; readonly message: string; readonly messageId: string; readonly context: Context; constructor(roomId: string, authorId: string, message: string, messageId: string, context: Context, timestamp: number); static isMessageSent(e: DomainEvent | RoomEvent): e is MessageSent; } class MessageUpdated extends RoomEvent { static readonly tag = "room_message_updated"; readonly messageId: string; readonly context: Context; constructor(roomId: string, authorId: string, messageId: string, context: Context, timestamp: number); static isMessageUpdated(e: DomainEvent | RoomEvent): e is MessageUpdated; } class CustomMessageSent extends RoomEvent { static readonly tag = "room_custom_message_sent"; readonly subtag: string; readonly message: string; readonly messageId: string; readonly context: Context; constructor(roomId: string, authorId: string, message: string, messageId: string, subtag: string, context: Context, timestamp: number); static isCustomMessageSent(e: DomainEvent | RoomEvent): e is CustomMessageSent; } class TypingSent extends RoomEvent { readonly preview?: string | undefined; static readonly tag = "room_typing_sent"; constructor(roomId: string, authorId: string, timestamp: number, preview?: string | undefined); static isTypingSent(e: DomainEvent): e is TypingSent; } class MarkSent extends RoomEvent { static readonly tag = "room_mark_sent"; constructor(roomId: string, authorId: string, timestamp: number); static isMarkSent(e: DomainEvent): e is MarkSent; } class MessageDelivered extends RoomEvent { static readonly tag = "room_message_delivered"; readonly messageId: string; constructor(roomId: string, authorId: string, messageId: string, timestamp: number); static isMessageDelivered(e: DomainEvent): e is MessageDelivered; } }