using GB5Shared.DTO.Framework.Login; namespace SwBLL.OfflineRollout; public interface IOfflineRolloutExportBLL { /// Builds the plaintext bundle for a Released package's linked scripts and encrypts /// it to the client database's currently-Active registered public key. Throws if the package /// isn't Released, or no Active key is registered for that client database yet. Task ExportOfflinePackageAsync(int clientDbId, int packageId, LoginDTO loginDTO, CancellationToken ct); /// Closes tracker §40 Decision 3's named pull model — an on-prem/BYOC install with /// intermittent connectivity calls this to ask "is there something newer than what I'm on," /// reusing the already-real GetCurrentVersion/GetProvisioningChain. Additive convenience on /// top of the same package artifact ExportOfflinePackageAsync produces — a genuinely /// air-gapped install just never calls it and relies on a manual file handoff instead. Task CheckForUpdatesAsync(int clientDbId, LoginDTO loginDTO, CancellationToken ct); } public class CheckForUpdatesResultDTO { public int ClientDbId { get; set; } public bool UpdateAvailable { get; set; } public int? LatestPackageId { get; set; } public string? LatestPackageCode { get; set; } public string? CurrentReleaseVersion { get; set; } }