namespace SwBLL.OfflineRollout;
/// Encrypts an Offline Rollout Package's plaintext bundle to one on-prem/BYOC client's
/// own registered public key (SW.MSWCLIENTDATABASEKEY). Mirrors
/// GB5Framework.FrameworkBLL.Promotion.PromotionPackageCrypto's exact container format
/// (RSA-OAEP-SHA256-wrapped AES-256-GCM) for the opposite direction — central-to-client instead
/// of client-to-central — but takes the recipient's PublicKeyPem directly rather than resolving
/// one via MPROMOTIONCOUNTERPARTY/EnvironmentCode, since SqlWorkbench has no equivalent
/// "environment" concept, only a ClientDbId. Decrypt intentionally lives only in the standalone
/// apply tool (Phase 4) — that tool must run with zero GB5 live-infra dependency (no Vault, no
/// Dapr, no network call to this deployment), so this interface is encrypt-only.
public interface IRolloutPackageCrypto
{
Task EncryptPackageAsync(byte[] plaintext, string recipientPublicKeyPem, CancellationToken ct);
}