using AyCode.Database.DbSets.Addresses;
using AyCode.Database.DbSets.Messages;
using AyCode.Database.DbSets.Profiles;
using AyCode.Database.DbSets.Users;
using AyCode.Interfaces.Addresses;
using AyCode.Interfaces.Addresses.Dtos;
using AyCode.Interfaces.Messages;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.ServiceProviders;
using AyCode.Interfaces.Users;

namespace AyCode.Database.DbContexts.Users;

public interface IAcUserDbContextBase<TUser, TProfile, TUserToken, TCompany, TUserToServiceProvider, TProfileAddress, TEmailMessage> 
    : IAcUserDbSetBase<TUser, TProfile, TCompany, TUserToServiceProvider, TProfileAddress>, IAcUserTokenDbSet<TUserToken>, IAcEmailMessageDbSet<TEmailMessage>

    where TUser : class, IAcUser<TProfile, TCompany, TUserToServiceProvider, TProfileAddress> 
    where TProfile : class, IAcProfile<TProfileAddress>
    where TUserToken : class, IAcUserTokenBase
    where TCompany : class, IAcCompanyBase
    where TUserToServiceProvider : class, IAcUserToCompanyBase
    where TProfileAddress : class, IAcAddressDtoBase
    where TEmailMessage : class, IAcEmailMessageBase
{
}