namespace Baya.Application.Contracts.Persistence;

public interface IUnitOfWork
{
    public IUserRefreshTokenRepository UserRefreshTokenRepository { get; }
    public IUserSessionRepository UserSessionRepository { get; }
    public IUserAccountRepository UserAccountRepository { get; }
    public INurseProfileRepository NurseProfileRepository { get; }
    public ICustomerProfileRepository CustomerProfileRepository { get; }
    public IPatientRepository PatientRepository { get; }
    public INurseBankAccountRepository NurseBankAccountRepository { get; }
    public IGeoRepository GeoRepository { get; }
    public INurseServiceAreaRepository NurseServiceAreaRepository { get; }
    public ICustomerAddressRepository CustomerAddressRepository { get; }
    public ICatalogRepository CatalogRepository { get; }
    public INurseServiceVariantRepository NurseServiceVariantRepository { get; }
    public IVerificationRepository VerificationRepository { get; }
    public IBookingRequestRepository BookingRequestRepository { get; }
    public IBookingRepository BookingRepository { get; }
    public ICancellationPolicyRepository CancellationPolicyRepository { get; }
    public IPaymentRepository PaymentRepository { get; }
    public IRefundRepository RefundRepository { get; }
    public IInvoiceRepository InvoiceRepository { get; }
    public IBnplRepository BnplRepository { get; }
    public IPayoutRepository PayoutRepository { get; }
    public IReviewRepository ReviewRepository { get; }
    public IPatientCareRecordRepository PatientCareRecordRepository { get; }
    public ITicketRepository TicketRepository { get; }
    public IPartnerCenterRepository PartnerCenterRepository { get; }
    Task CommitAsync();
    ValueTask RollBackAsync();
}
