using System.Security.Claims; using Data.SeaHavenIndustries; using SeaHaven.Services.DTOs; namespace SeaHaven.Services.Interfaces; public interface ITeamMemberInviteService { /// Persists a new invite for a pending member and returns its raw token. Task CreateAsync(string userId, CancellationToken cancellationToken); /// Emails the invite link. Returns false when the email could not be handed off. Task SendAsync( IssuedTeamMemberInvite invite, string email, string name, CancellationToken cancellationToken); /// /// Revokes the member's open invites, including any email confirmation made through them, /// and emails a new invite to their current address unless they are deactivated. /// Returns whether that email went out, or null when the member is deactivated and nothing was emailed. /// Task ReissueAsync(ApplicationUser user, CancellationToken cancellationToken); /// Admin-only: revokes a pending member's open invites and emails a new one. Task ResendAsync( string userId, ClaimsPrincipal caller, CancellationToken cancellationToken); }