using SVSim.Database.Repositories.Guild; using SVSim.Database.Services; namespace SVSim.Database.Services.Guild; public sealed class GuildChatService : IGuildChatService { private readonly IGuildRepository _guilds; private readonly IGuildMemberRepository _members; private readonly IGuildInviteRepository _invites; private readonly IGuildJoinRequestRepository _joinRequests; private readonly IGuildChatMessageRepository _chatMessages; private readonly IGameConfigService _config; public GuildChatService( IGuildRepository guilds, IGuildMemberRepository members, IGuildInviteRepository invites, IGuildJoinRequestRepository joinRequests, IGuildChatMessageRepository chatMessages, IGameConfigService config) { _guilds = guilds; _members = members; _invites = invites; _joinRequests = joinRequests; _chatMessages = chatMessages; _config = config; } public Task GetWindowAsync(long viewerId, int startMessageId, int direction, int waitIntervalHint, CancellationToken ct = default) => throw new NotImplementedException(); public Task PostTextOrStampAsync(long viewerId, int type, string message, CancellationToken ct = default) => throw new NotImplementedException(); public Task PostDeckAsync(long viewerId, string deckPayloadJson, CancellationToken ct = default) => throw new NotImplementedException(); public Task DeleteDeckAsync(long viewerId, int messageId, CancellationToken ct = default) => throw new NotImplementedException(); public Task PostReplayAsync(long viewerId, string replayPayloadJson, CancellationToken ct = default) => throw new NotImplementedException(); public Task GetReplayDetailAsync(long viewerId, int messageId, CancellationToken ct = default) => throw new NotImplementedException(); public Task GetDeckLogAsync(long viewerId, int messageId, CancellationToken ct = default) => throw new NotImplementedException(); // No-op skeleton — will be wired in Phase 5. public Task EmitSystemEventAsync(int guildId, long actorViewerId, Entities.Guild.GuildChatMessageType type, string? body = null, CancellationToken ct = default) => Task.CompletedTask; }