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);
}