namespace ZB.MOM.WW.OtOpcUa.Core.Abstractions;
///
/// Driver-agnostic per-attribute (tag) descriptor used by the generic node-manager
/// to build OPC UA address-space variables. Every driver maps its native attribute
/// metadata into this DTO during discovery.
///
///
/// Per docs/v2/plan.md §5a (LmxNodeManager reusability) — DriverAttributeInfo
/// replaces the v1 Galaxy-specific GalaxyAttributeInfo in the generic node-manager
/// so the same node-manager class works against every driver.
///
///
/// Driver-side full reference for read/write addressing
/// (e.g. for Galaxy: "DelmiaReceiver_001.DownloadPath").
///
/// Driver-agnostic data type; maps to OPC UA built-in type at build time.
/// True when this attribute is a 1-D array.
/// Declared array length when is true; null otherwise.
/// Write-authorization tier for this attribute.
/// True when this attribute is expected to feed historian / HistoryRead.
///
/// True when this attribute represents an alarm condition (Galaxy: has an
/// AlarmExtension primitive). The generic node-manager enriches the variable with an
/// OPC UA AlarmConditionState when true. Defaults to false so existing non-Galaxy
/// drivers aren't forced to flow a flag they don't produce.
///
public sealed record DriverAttributeInfo(
string FullName,
DriverDataType DriverDataType,
bool IsArray,
uint? ArrayDim,
SecurityClassification SecurityClass,
bool IsHistorized,
bool IsAlarm = false);