using ZB.MOM.WW.MxGateway.Contracts.Proto;
namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Runtime;
///
/// Driver-side seam for subscription lifecycle + the inbound event stream. Production
/// wraps MxGatewaySession.SubscribeBulkAsync, UnsubscribeBulkAsync, and
/// StreamEventsAsync; tests substitute a fake to drive synthetic events through
/// the without a real gw.
///
public interface IGalaxySubscriber
{
///
/// Subscribe a batch of tag full references. Returns one
/// per request entry, in input order. Failed tags
/// (gateway rejection) carry a non-zero status and an item handle of zero or
/// negative — the caller treats those as per-tag failures rather than a whole-call
/// failure.
///
/// The list of tag references to subscribe to.
/// The buffered update interval in milliseconds.
/// Cancellation token for the operation.
Task> SubscribeBulkAsync(
IReadOnlyList fullReferences, int bufferedUpdateIntervalMs, CancellationToken cancellationToken);
/// Unsubscribe a batch of item handles obtained from .
/// The item handles to unsubscribe.
/// Cancellation token for the operation.
Task UnsubscribeBulkAsync(IReadOnlyList itemHandles, CancellationToken cancellationToken);
///
/// Long-running consumer of the gateway's StreamEvents RPC. Each emitted
/// carries the gw item handle the caller correlates against
/// its .
///
/// Cancellation token for the stream.
IAsyncEnumerable StreamEventsAsync(CancellationToken cancellationToken);
}