Option Strict On
Option Explicit On

Namespace Nexamas.UI.FloatRuntime

    ' ============================================================
    ' MASFloatRuntime Contract
    ' Class: MASFloatCloseReason
    '
    ' Purpose:
    '   Defines the reason a Float is being closed.
    '
    ' Responsibility:
    '   Provides policy and lifecycle with explicit close intent.
    '
    ' Owns:
    '   No runtime state.
    '
    ' Does Not Own:
    '   Close authorization, result creation, host removal, or callback delivery.
    '
    ' Allowed Dependencies:
    '   None.
    '
    ' Forbidden Dependencies:
    '   Legacy Overlay classes.
    '   Coordinator implementation.
    '   Host implementation.
    '
    ' Lifecycle Role:
    '   Used during close requests and final closed event delivery.
    '
    ' Threading:
    '   Thread-safe by definition.
    '
    ' Mutation Rules:
    '   Immutable enum values.
    '
    ' Invariants:
    '   CloseReason must be evaluated by PolicyEngine, especially when Shield is active.
    '   Accepted, Cancelled, and Failed are lifecycle result-related reasons.
    '
    ' Failure Rules:
    '   Unauthorized close reasons must be rejected by policy.
    ' ============================================================
    Friend Enum MASFloatCloseReason
        Programmatic
        Accepted
        Cancelled
        EscapeKey
        OutsidePointer
        Replaced
        OwnerDisposed
        CloseAll
        SystemShutdown
        Failed
    End Enum

End Namespace