using MemberCenter.Application.Models.Admin;

namespace MemberCenter.Application.Abstractions;

public interface ITenantService
{
    Task<IReadOnlyList<TenantDto>> ListAsync();
    Task<IReadOnlyList<TenantDto>> ListForUserAsync(Guid userId);
    Task<TenantDto?> GetAsync(Guid id);
    Task<TenantDto?> GetForUserAsync(Guid id, Guid userId);
    Task<TenantDto> CreateAsync(string name, List<string> domains, string status, Guid? sendEngineWebhookClientId = null);
    Task<TenantDto?> UpdateAsync(Guid id, string name, List<string> domains, string status, Guid? sendEngineWebhookClientId = null);
    Task<bool> SetSendEngineWebhookClientAsync(Guid tenantId, Guid? webhookClientId);
    Task<bool> DeleteAsync(Guid id);
}
