using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Shared.Contracts;
namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Host.Backend;
///
/// Galaxy data-plane abstraction. Replaces the placeholder StubFrameHandler with a
/// real boundary the lifted MxAccessClient + GalaxyRepository implement during
/// Phase 2 Task B.1. Splitting the IPC dispatch (GalaxyFrameHandler) from the
/// backend means the dispatcher is unit-testable against an in-memory mock without needing
/// live Galaxy.
///
public interface IGalaxyBackend
{
///
/// Server-pushed events the backend raises asynchronously (data-change, alarm,
/// host-status). The frame handler subscribes once on connect and forwards each
/// event to the Proxy as a typed notification.
///
event System.EventHandler? OnDataChange;
event System.EventHandler? OnAlarmEvent;
event System.EventHandler? OnHostStatusChanged;
Task OpenSessionAsync(OpenSessionRequest req, CancellationToken ct);
Task CloseSessionAsync(CloseSessionRequest req, CancellationToken ct);
Task DiscoverAsync(DiscoverHierarchyRequest req, CancellationToken ct);
Task ReadValuesAsync(ReadValuesRequest req, CancellationToken ct);
Task WriteValuesAsync(WriteValuesRequest req, CancellationToken ct);
Task SubscribeAsync(SubscribeRequest req, CancellationToken ct);
Task UnsubscribeAsync(UnsubscribeRequest req, CancellationToken ct);
Task SubscribeAlarmsAsync(AlarmSubscribeRequest req, CancellationToken ct);
Task AcknowledgeAlarmAsync(AlarmAckRequest req, CancellationToken ct);
Task HistoryReadAsync(HistoryReadRequest req, CancellationToken ct);
Task HistoryReadProcessedAsync(HistoryReadProcessedRequest req, CancellationToken ct);
Task HistoryReadAtTimeAsync(HistoryReadAtTimeRequest req, CancellationToken ct);
Task HistoryReadEventsAsync(HistoryReadEventsRequest req, CancellationToken ct);
Task RecycleAsync(RecycleHostRequest req, CancellationToken ct);
}