namespace RelayShared.Services; //TODO: review name of file, potentially rename for Encryption services rather than sockets public sealed class SocketRtcSignalMessage { public SignalType Type { get; set; } public string SenderUsername { get; set; } = string.Empty; public string ChannelId { get; set; } = string.Empty; public string CipherText { get; set; } = string.Empty; public string Nonce { get; set; } = string.Empty; public string Tag { get; set; } = string.Empty; public string EncryptedKey { get; set; } = string.Empty; } public sealed class SocketEncryptedMessage { public SignalType Type { get; set; } = SignalType.EncryptedChat; public string MessageId { get; set; } = string.Empty; public string SenderUsername { get; set; } = string.Empty; public string RecipientUsername { get; set; } = string.Empty; public string ChannelId { get; set; } = string.Empty; public string CipherText { get; set; } = string.Empty; public string Nonce { get; set; } = string.Empty; public string Tag { get; set; } = string.Empty; public string EncryptedKey { get; set; } = string.Empty; public bool IsEdited { get; set; } public bool IsDeleted { get; set; } } public sealed class SocketMessageDeletedEvent { public SignalType Type { get; set; } = SignalType.MessageDeleted; public string MessageId { get; set; } = string.Empty; public string ChannelId { get; set; } = string.Empty; } public sealed class SocketTypingEvent { public SignalType Type { get; set; } = SignalType.TypingIndicator; public string Username { get; set; } = string.Empty; public string ChannelId { get; set; } = string.Empty; } public sealed class SocketEditHistoryEntry { public string CipherText { get; set; } = string.Empty; public string Nonce { get; set; } = string.Empty; public string Tag { get; set; } = string.Empty; public string EncryptedKey { get; set; } = string.Empty; public DateTime EditedAt { get; set; } } public sealed class SocketEditHistoryResponse { public SignalType Type { get; set; } = SignalType.EditHistory; public string MessageId { get; set; } = string.Empty; public List Entries { get; set; } = []; } public sealed class ServerPublicKeyMessage { public SignalType Type { get; set; } = SignalType.ServerPublicKey; public string PublicKey { get; set; } = string.Empty; } public enum SignalType { Offer, Answer, Candidate, OfferUpdated, AnswerUpdated, CandidateAdded, CallLeft, ChannelList, ServerPublicKey, EncryptedSignal, EncryptedChat, ClientEncryptedChat, ClientEditMessage, ClientDeleteMessage, MessageEdited, MessageDeleted, TypingIndicator, EditHistory }