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; }
}