using System.Diagnostics.Contracts;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.ServiceProviders;
using AyCode.Interfaces.Addresses;
using AyCode.Interfaces.Profiles.Dtos;
using AyCode.Interfaces.Addresses.Dtos;

namespace AyCode.Interfaces.Users.Dtos;

public interface IAcUserDtoBase : IAcUserDtoMinBase
{}

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

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

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

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

