using ColaFlow.Modules.Identity.Domain.Aggregates.Tenants;

namespace ColaFlow.Modules.Identity.Infrastructure.Services;

/// <summary>
/// Tenant context interface - provides current request tenant information
/// </summary>
public interface ITenantContext
{
    /// <summary>
    /// Current tenant ID
    /// </summary>
    TenantId? TenantId { get; }

    /// <summary>
    /// Current tenant slug
    /// </summary>
    string? TenantSlug { get; }

    /// <summary>
    /// Whether tenant is set
    /// </summary>
    bool IsSet { get; }

    /// <summary>
    /// Set current tenant
    /// </summary>
    void SetTenant(TenantId tenantId, string tenantSlug);

    /// <summary>
    /// Clear tenant information
    /// </summary>
    void Clear();
}
