using Tiku.Domain.Tenancy; namespace Tiku.Application.Auth; public interface ISessionService { string GenerateRefreshToken(Guid tenantId, Guid sessionId); bool TryParseRefreshToken(string refreshToken, out RefreshTokenLocator locator); string HashRefreshToken(string refreshToken); Task IssueAsync( Guid userId, string? phone, string? email, TenantMembership membership, string provider, string? ipAddress, string? userAgent, CancellationToken cancellationToken = default); } public readonly record struct RefreshTokenLocator(Guid TenantId, Guid SessionId);