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 пользователя-исполнителя (для реакций и т.д.)
);