namespace ZB.MOM.WW.MxGateway.Client;
///
/// Filters and shape options for .
///
///
/// Hand-written ergonomic wrapper around the generated
/// DiscoverHierarchyRequest: lets callers express a Galaxy-browse
/// slice with .NET-friendly nullable scalars and collection initializers,
/// without touching the protobuf message's oneof root directly.
///
public sealed class DiscoverHierarchyOptions
{
/// Restrict to the subtree rooted at this Galaxy gobject_id.
public int? RootGobjectId { get; init; }
/// Restrict to the subtree rooted at the object with this tag name.
public string? RootTagName { get; init; }
/// Restrict to the subtree rooted at this contained_name path.
public string? RootContainedPath { get; init; }
/// Maximum traversal depth, measured from the chosen root.
public int? MaxDepth { get; init; }
/// Restrict to objects whose Galaxy category is in this set.
public IReadOnlyList CategoryIds { get; init; } = [];
/// Restrict to objects whose template chain contains any of these tokens.
public IReadOnlyList TemplateChainContains { get; init; } = [];
/// Optional glob-style filter on tag_name.
public string? TagNameGlob { get; init; }
/// Whether to populate each GalaxyObject.Attributes. Null leaves the server default.
public bool? IncludeAttributes { get; init; }
/// Restrict to objects that bear at least one alarm attribute.
public bool AlarmBearingOnly { get; init; }
/// Restrict to objects that have at least one historized attribute.
public bool HistorizedOnly { get; init; }
}