using ZB.MOM.WW.OtOpcUa.Commons.Types;

namespace ZB.MOM.WW.OtOpcUa.Commons.Messages.Admin;

public enum StartDeploymentOutcome
{
    Accepted,
    NoChanges,
    AnotherDeploymentInFlight,
    Rejected,
}

/// <summary>
/// Reply from the <c>AdminOperationsActor</c> singleton. <c>Accepted</c> means the snapshot
/// was sealed and a <c>Deployment</c> row was created; the in-flight deployment can be
/// tracked through fleet-status broadcasts.
/// </summary>
public sealed record StartDeploymentResult(
    StartDeploymentOutcome Outcome,
    DeploymentId? DeploymentId,
    RevisionHash? RevisionHash,
    string? Message,
    CorrelationId CorrelationId);
