namespace EntitlementBLL.Onboarding; /// /// Thin wrapper interface (tracker §37 Decision 2) so EntitlementBLL can push real-time /// provisioning-progress SignalR events without taking a compile-time dependency on /// EntitlementSL's hub types — mirrors GB5Framework's FrameworkBLL.DataSync.IDataSyncHubContext /// exactly. Consumed as an OPTIONAL (nullable) constructor dependency by /// ClientOnboardingOrchestratorBLL: every call site guards with `if (_HubContext is not null)`, /// so the whole push layer degrades to a no-op wherever it isn't registered (e.g. a test host, /// or any future composing host that doesn't wire SignalR) — never a second source of truth, /// always additive on top of the already-persisted MPROVISIONINGJOB state. /// public interface IProvisioningHubContext { Task PushStageChangedAsync(int clientId, int provisioningJobId, string currentStep, string[] completedSteps, CancellationToken ct); Task PushDdlProgressAsync(int clientId, int provisioningJobId, int swChangeRequestId, int scriptsDone, int scriptsTotal, CancellationToken ct); Task PushCompletedAsync(int clientId, int provisioningJobId, string currentStep, string[] completedSteps, CancellationToken ct); Task PushFailedAsync(int clientId, int provisioningJobId, string errorMessage, CancellationToken ct); }