using System; using System.Threading; using System.Threading.Tasks; using Knot.Shared.Kernel; namespace Knot.Modules.Federation.Application.Abstractions; /// /// Шлюз для безопасной передачи данных между серверами Knot Messager. /// public interface IFederationGateway { /// /// Отправляет пакет на конкретный домен. /// Task SendPacketAsync(FederationMessagePacket packet, string targetDomain, CancellationToken ct = default); } /// /// Федеративный пакет сообщения с гибридным шифрованием. /// public record FederationMessagePacket( string SenderDomain, string RecipientDomain, string EncryptedPayload, // AES-256 string EncryptedIV, // RSA-Encrypted for Recipient string Signature, // RSA-Signed by Sender FederationMetadata Metadata ); public record FederationMetadata( Guid ChatId, Guid SenderId, string SenderUsername, string MessageType, DateTime CreatedAt, Guid UserId = default // ID пользователя-исполнителя (для реакций и т.д.) );