using DigitalData.UserManager.Domain.Entities;
using DigitalData.UserManager.Application.DTOs.User;
using DigitalData.UserManager.Application.DTOs.Base;
using DigitalData.Core.Abstraction.Application;

namespace DigitalData.UserManager.Application.Contracts
{
    [Obsolete("Use MediatR")]
    public interface IBaseService<TCreateDto, TReadDto, TBaseEntity> : ICRUDService<TCreateDto, TReadDto, TBaseEntity, int>
        where TCreateDto : BaseCreateDto
        where TReadDto : class
        where TBaseEntity : BaseEntity
    {

        public Func<Task<UserReadDto?>> UserFactoryAsync { set; }

        public Task<UserReadDto?> GetUserAsync();
    }
}