namespace EntKube.Clusters.Domain;

/// <summary>
/// Defines how the cluster service persists and retrieves cluster aggregates.
/// The implementation lives in the infrastructure layer — the domain only
/// knows about this contract, keeping it persistence-agnostic.
/// </summary>
public interface IClusterRepository
{
    Task<KubernetesCluster?> GetByIdAsync(Guid id, CancellationToken ct = default);
    Task<IReadOnlyList<KubernetesCluster>> GetAllAsync(CancellationToken ct = default);
    Task AddAsync(KubernetesCluster cluster, CancellationToken ct = default);
    Task UpdateAsync(KubernetesCluster cluster, CancellationToken ct = default);
    Task DeleteAsync(Guid id, CancellationToken ct = default);
}
