namespace ZB.MOM.WW.OtOpcUa.Core.Abstractions; /// /// Driver capability for alarm events. Optional — only drivers whose backends expose /// alarm conditions implement this. Currently: Galaxy (MxAccess alarms), FOCAS /// (CNC alarms), OPC UA Client (A&C events from upstream server). /// public interface IAlarmSource { /// /// Subscribe to alarm events for a node-set (typically: a folder or equipment subtree). /// The driver fires for every alarm transition. /// Task SubscribeAlarmsAsync( IReadOnlyList sourceNodeIds, CancellationToken cancellationToken); /// Cancel an alarm subscription returned by . Task UnsubscribeAlarmsAsync(IAlarmSubscriptionHandle handle, CancellationToken cancellationToken); /// Acknowledge one or more active alarms by source node ID + condition ID. Task AcknowledgeAsync( IReadOnlyList acknowledgements, CancellationToken cancellationToken); /// Server-pushed alarm transition (raise / clear / change). event EventHandler? OnAlarmEvent; } /// Opaque alarm-subscription identity returned by . public interface IAlarmSubscriptionHandle { /// Driver-internal subscription identifier (for diagnostics + post-mortem). string DiagnosticId { get; } } /// One alarm acknowledgement in a batch. public sealed record AlarmAcknowledgeRequest( string SourceNodeId, string ConditionId, string? Comment); /// Event payload for . public sealed record AlarmEventArgs( IAlarmSubscriptionHandle SubscriptionHandle, string SourceNodeId, string ConditionId, string AlarmType, string Message, AlarmSeverity Severity, DateTime SourceTimestampUtc); /// Mirrors the NodePermissions alarm-severity enum in docs/v2/acl-design.md. public enum AlarmSeverity { Low, Medium, High, Critical }