namespace SportsDivision.Domain.Interfaces;

public interface IUnitOfWork : IDisposable
{
    IZoneRepository Zones { get; }
    ISchoolRepository Schools { get; }
    IStudentRepository Students { get; }
    IEventRepository Events { get; }
    IEventLevelRepository EventLevels { get; }
    ITournamentRepository Tournaments { get; }
    ITournamentEventLevelRepository TournamentEventLevels { get; }
    IEventRegistrationRepository EventRegistrations { get; }
    IScoreRepository Scores { get; }
    IRoundRepository Rounds { get; }
    IHeatRepository Heats { get; }
    IHeatLaneRepository HeatLanes { get; }
    IHighJumpHeightRepository HighJumpHeights { get; }
    IScoringConstantRepository ScoringConstants { get; }
    IPlacementPointConfigRepository PlacementPointConfigs { get; }
    Task<int> SaveChangesAsync();
}
