using System;
using HaaSMiddleware.DataAccessTier.Repository.AdminUserManagement;
using HaaSMiddleware.DataAccessTier.Repository.ClusterInformation;
using HaaSMiddleware.DataAccessTier.Repository.JobManagement;
using HaaSMiddleware.DataAccessTier.Repository.JobManagement.JobInformation;
using HaaSMiddleware.DataAccessTier.Repository.Notifications;
using HaaSMiddleware.DataAccessTier.Repository.UserAndLimitationManagement;

namespace HaaSMiddleware.DataAccessTier.UnitOfWork {
	public interface IUnitOfWork : IDisposable {
		IAdministrationRoleRepository AdministrationRoleRepository { get; }
		IAdministrationUserRepository AdministrationUserRepository { get; }
		IClusterRepository ClusterRepository { get; }
		IClusterNodeTypeRepository ClusterNodeTypeRepository { get; }
		ISubmittedJobInfoRepository SubmittedJobInfoRepository { get; }
		ISubmittedTaskInfoRepository SubmittedTaskInfoRepository { get; }
		ICommandTemplateRepository CommandTemplateRepository { get; }
		IJobSpecificationRepository JobSpecificationRepository { get; }
		IJobTemplateRepository JobTemplateRepository { get; }
		ITaskSpecificationRepository TaskSpecificationRepository { get; }
		IMessageTemplateRepository MessageTemplateRepository { get; }
		INotificationRepository NotificationRepository { get; }
		IAdaptorUserRepository AdaptorUserRepository { get; }
		IAdaptorUserGroupRepository AdaptorUserGroupRepository { get; }
		IResourceLimitationRepository ResourceLimitationRepository { get; }
		ISessionCodeRepository SessionCodeRepository { get; }
		void Save();
	}
}