namespace ZB.MOM.WW.OtOpcUa.Core.Scripting;

/// <summary>
///     Wraps a <see cref="ScriptContext"/> as a named field so user scripts see
///     <c>ctx.GetTag(...)</c> instead of the bare <c>GetTag(...)</c> that Roslyn's
///     globalsType convention would produce. Keeps the script ergonomics operators
///     author against consistent with the dependency extractor (which looks for the
///     <c>ctx.</c> prefix) and with the Admin UI hand-written type stub.
/// </summary>
/// <remarks>
///     Generic on <typeparamref name="TContext"/> so alarm predicates can use a richer
///     context (e.g. with an <c>Alarm</c> property carrying the owning condition's
///     metadata) without affecting virtual-tag contexts.
/// </remarks>
public class ScriptGlobals<TContext>
    where TContext : ScriptContext
{
    /// <summary>Gets or sets the script context available to scripts.</summary>
    public TContext ctx { get; set; } = default!;
}
