using adas_core.Domain.Enums;
using adas_core.Domain.Models.Masters;
using adas_core.Domain.Models.MongoModels;
using MongoDB.Bson;

namespace adas_core.Application.Services.Interfaces;

public interface IMasterListServiceFactory
{
    object GetService(Type serviceType);
    object GetService(MasterListType serviceName);
    object? GetTypedMasterList(MasterListType masterListType, MasterList masterList);
    Type GetMasterListSpecificType(MasterListType masterListType);
    Task<object?> InsertMasterList(MasterListType masterListType, MasterList masterList);
    Task<object?> UpdateMasterList(MasterListType masterListType, MasterList masterList);
    Task<object?> GetMasterListById(MasterListType masterListType, ObjectId masterListId, LocaleEnum? dataLocale);
    List<string> StringNurseObs();
    Task<Patient?> GetPatientTraslated(Unit? unit, LocaleEnum? locale, Patient? patient);

    Task<object?> GetMasterListOptionById(MasterListType masterListType, ObjectId masterListId,
        ObjectId masterListOptionId,
        LocaleEnum? dataLocale);
}