namespace Application.Abstractions.Hub; /// /// 크루원 리스트 변경을 운영자 그룹(`crew:{crewID}`)에 broadcast. /// 운영자는 SignalR JoinCrew(crewID) 로 그룹 가입. /// public interface ICrewHubBroadcaster { /// 크루원 변경 이벤트 broadcast. /// 대상 크루 ID. /// "added" | "updated" | "removed" | "invitationStatusChanged". /// kind 별 페이로드 객체. SignalR JSON 직렬화 시 camelCase. Task BroadcastMemberChangeAsync(int crewID, string kind, object data, CancellationToken ct = default); }