using System.Collections.Generic; using System.Threading.Tasks; using GB5Shared.DTO.Framework.Login; using GB5Shared.DTO.GOP; namespace FrameworkBLL.GOP { public interface IGopQueueBLL { // Main entry point: resolve binding → enqueue → fire worker Task SubmitExecution(GopSubmitRequestDTO RequestDTO, LoginDTO LoginDTO); // Re-submits a past execution's original payload as a brand-new execution // (ParentExecutionId links it back for lineage). Does not mutate the original. Task ReplayGopExecution(int ExecutionId, LoginDTO LoginDTO); // Approval gate Task ApproveGopExecutionStep(int ExecutionId, string? ApproverNotes, LoginDTO LoginDTO); Task RejectGopExecutionStep(int ExecutionId, string Reason, LoginDTO LoginDTO); // Query Task GetExecutionStatus(int ExecutionId, LoginDTO LoginDTO); Task> GetExecutionNodeLogs(int ExecutionId, LoginDTO LoginDTO); Task> GetQueueDashboard(LoginDTO LoginDTO); // Dead letter Task> GetDeadLetters(LoginDTO LoginDTO); Task ResolveDeadLetter(int DlqId, string ResolvedBy, LoginDTO LoginDTO); // Remediation Task OpenRemediation(GopOpenRemediationRequestDTO RequestDTO, LoginDTO LoginDTO); Task ResolveRemediation(GopResolveRemediationRequestDTO RequestDTO, LoginDTO LoginDTO); Task> GetOpenRemediations(LoginDTO LoginDTO); } }