using Collaboration.Application.DTOs.Requests; using Collaboration.Application.DTOs.Responses; namespace Collaboration.Application.Interfaces; public interface ICollabSessionService { Task CreateAsync(CreateSessionRequest request, Guid userId, Guid orgId, string displayName, CancellationToken ct = default); Task GetAsync(Guid sessionId, Guid orgId, CancellationToken ct = default); Task> GetActiveSessionsAsync(Guid userId, Guid orgId, CancellationToken ct = default); Task> GetScheduledSessionsAsync(Guid userId, Guid orgId, CancellationToken ct = default); Task UpdateStatusAsync(Guid sessionId, UpdateSessionStatusRequest request, Guid userId, Guid orgId, CancellationToken ct = default); Task JoinAsync(Guid sessionId, Guid userId, Guid orgId, string displayName, CancellationToken ct = default); Task JoinViaTokenAsync(string token, Guid userId, Guid orgId, string displayName, CancellationToken ct = default); Task CreateLinkInviteAsync(Guid sessionId, CreateLinkInviteRequest request, Guid userId, Guid orgId, CancellationToken ct = default); Task SendUserInvitesAsync(Guid sessionId, InviteUsersRequest request, Guid userId, Guid orgId, CancellationToken ct = default); Task> GetPendingInvitesAsync(Guid userId, CancellationToken ct = default); Task RespondToInviteAsync(Guid inviteId, RespondToInviteRequest request, Guid userId, CancellationToken ct = default); Task GrantControlAsync(Guid sessionId, GrantControlRequest request, Guid requestingUserId, Guid orgId, CancellationToken ct = default); Task RevokeControlAsync(Guid sessionId, Guid requestingUserId, Guid orgId, CancellationToken ct = default); } public interface ICollabConfigService { Task GetAsync(Guid orgId, CancellationToken ct = default); Task UpdateAsync(Guid orgId, UpdateCollabConfigRequest request, CancellationToken ct = default); }