using Application.Abstractions.Chat;
namespace Application.Abstractions.Hub;
///
/// AppHub 클라이언트 인터페이스 — 모든 페이지에서 사용하는 공통 Hub
/// 접속자 추적 + 채팅 + 알림 + 쪽지 + 크루 초대/동의/toast
///
public interface IAppHubClient
{
// ── 채팅 (기존 ChatHub 통합) ──────────────────────────────────
Task ReceiveMessage(ChatMessage message);
Task ReceiveHistory(IReadOnlyList messages);
Task ReceiveSystemMessage(string message);
Task ReceiveParticipantCount(int count);
Task ReceiveParticipants(IReadOnlyList participants);
Task Connected(string message);
Task Logout(string message);
Task Kick();
// ── 알림 + 쪽지 ──────────────────────────────────────────────
Task ReceiveNotification(object notification);
Task ReceiveNote(object notePreview);
Task ReceiveUnreadCounts(int notificationCount, int noteCount);
// ── 채널 상태 (PubSub 기반 실시간) ─────────────────────────
Task ReceiveChannelStatus(object channelStatus);
// ── 크루 ─────────────────────────────────────────────────────
Task ReceiveCrewInvitation(object invitation);
Task ReceiveCrewConsentUpdate(object consentStatus);
Task ReceiveCrewStarted(object sessionInfo);
Task ReceiveCrewEnded(object sessionResult);
Task ReceiveCrewToast(object toastData);
}