namespace Koogle.Application.Interfaces { /// /// Service interface for email notifications. /// public interface IEmailService { /// /// Sends notification to club admins about a new membership request. /// /// The club receiving the membership request. /// Display name of the requesting user. /// Email of the requesting user. /// Cancellation token. Task SendMembershipRequestNotificationAsync( Guid clubId, string userDisplayName, string userEmail, CancellationToken ct = default); /// /// Sends notification to user that their membership was approved. /// /// Email of the approved user. /// Name of the club. /// Cancellation token. Task SendMembershipApprovedAsync( string userEmail, string clubName, CancellationToken ct = default); /// /// Sends notification to user that their membership was rejected. /// /// Email of the rejected user. /// Name of the club. /// Optional rejection reason. /// Cancellation token. Task SendMembershipRejectedAsync( string userEmail, string clubName, string? reason, CancellationToken ct = default); } }