using ZB.MOM.WW.OtOpcUa.Commons.Messages.Admin;
namespace ZB.MOM.WW.OtOpcUa.Commons.Interfaces;
///
/// Cluster-singleton-proxy client for the AdminOperationsActor. The Blazor UI calls
/// this from any host (admin or driver role); the proxy routes the request to whichever node
/// holds the admin singleton.
///
public interface IAdminOperationsClient
{
/// Starts a new deployment on the cluster-singleton admin operations actor.
/// The user or system identifier triggering the deployment.
/// The cancellation token.
/// A task representing the asynchronous operation containing the deployment start result.
Task StartDeploymentAsync(string createdBy, CancellationToken ct);
///
/// Acknowledges one alarm via the admin singleton, which republishes the mapped command onto
/// the cluster alarm-commands topic for the owning node to apply.
///
/// The alarm's ScriptedAlarmId.
/// The acting operator's name (for audit + the alarm-event User field).
/// Optional free-text comment; null when none.
/// The cancellation token.
/// The acknowledge result.
Task AcknowledgeAlarmAsync(string alarmId, string user, string? comment, CancellationToken ct);
///
/// Shelves or unshelves one alarm via the admin singleton, which republishes the mapped command
/// onto the cluster alarm-commands topic for the owning node to apply.
///
/// The alarm's ScriptedAlarmId.
/// The acting operator's name (for audit + the alarm-event User field).
/// Which shelve action to perform (OneShot / Timed / Unshelve).
/// For , when the shelve expires; null otherwise.
/// Optional free-text comment; null when none.
/// The cancellation token.
/// The shelve result.
Task ShelveAlarmAsync(
string alarmId,
string user,
Messages.Admin.ShelveKind kind,
DateTime? unshelveAtUtc,
string? comment,
CancellationToken ct);
///
/// Generic Ask: forwards to the AdminOperationsActor
/// cluster-singleton proxy and awaits a reply of type .
/// The caller is responsible for applying any outer timeout via .
///
/// Expected reply type.
/// The message to send.
/// Cancellation token (caller-controlled timeout).
Task AskAsync(object message, CancellationToken ct);
}