using AyCode.Interfaces.Addresses;
using AyCode.Interfaces.Addresses.Dtos;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.Profiles.Dtos;
using AyCode.Interfaces.ServiceProviders;

namespace AyCode.Interfaces.Users.Dtos;

public interface IAcUserDtoDetailBase : IAcUserBase, IAcUserDtoBase
{ }

public interface IAcUserDtoDetailBase<TProfile> : IAcUserDtoDetailBase, IAcUserDtoBase<TProfile> 
    where TProfile : IAcProfileDtoBase
{ }

public interface IAcUserDtoDetailBase<TProfile, TAddress> : IAcUserDtoDetailBase<TProfile>//, IAcUserDtoBase<TProfile, TAddress>
    where TProfile : IAcProfileDtoBase<TAddress>
    where TAddress : IAcAddressDtoBase
{ }

public interface IAcUserDtoDetailBase<TProfile, TCompany, TUserToCompany> : IAcUserDtoDetailBase<TProfile>, IAcUserDtoBase<TProfile, TCompany, TUserToCompany>
    where TProfile : IAcProfileDtoBase
    where TCompany : IAcCompanyBase
    where TUserToCompany : IAcUserToCompanyBase
{ }

public interface IAcUserDtoDetailBase<TProfile, TCompany, TUserToCompany, TAddress> : IAcUserDtoDetailBase<TProfile, TAddress>, IAcUserDtoBase<TProfile, TCompany, TUserToCompany>
    where TProfile : IAcProfileDtoBase<TAddress>
    where TCompany : IAcCompanyBase
    where TUserToCompany : IAcUserToCompanyBase
    where TAddress : IAcAddressDtoBase
{ }