using IRaCIS.Core.Application.Contracts;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Infra.EFCore;

namespace IRaCIS.Application.Interfaces
{
    public interface ITrialConfigService
    {
        Task<IResponseOutput> TrialReadingInfoSign(TrialReadingInfoSignInDto inDto);
        Task<IResponseOutput> UpdateTrialState(Guid trialId, string trialStatusStr, string? reason);
        Task<IResponseOutput> AbandonTrial(Guid trialId, bool isAbandon);
        Task<TrialConfigDTO>  GetTrialConfigInfo(Guid trialId);

        Task<IResponseOutput> ConfigTrialBasicInfo(BasicTrialConfig trialConfig);

        Task<IResponseOutput> ConfigTrialProcessInfo(TrialProcessConfig trialConfig);

        Task<IResponseOutput> ConfigTrialUrgentInfo(TrialUrgentConfig trialConfig);


        Task<IResponseOutput> TrialConfigSignatureConfirm(SignConfirmDTO signConfirmDTO);

        Task<IResponseOutput> AsyncTrialCriterionDictionary(AsyncTrialCriterionDictionaryInDto inDto);
    }
}
