Option Strict On
Option Explicit On

Namespace Nexamas.UI.FloatRuntime

    ' ============================================================
    ' MASFloatRuntime Contract
    ' Class: MASFloatLifecycleState
    '
    ' Purpose:
    '   Defines the official lifecycle states of a Float instance.
    '
    ' Responsibility:
    '   Replaces unsafe boolean-only open/closed state.
    '
    ' Owns:
    '   No runtime state.
    '
    ' Does Not Own:
    '   State transitions, validation, callbacks, or disposal.
    '
    ' Allowed Dependencies:
    '   None.
    '
    ' Forbidden Dependencies:
    '   Legacy Overlay classes.
    '   Coordinator implementation.
    '
    ' Lifecycle Role:
    '   Formal lifecycle contract used by handles, records, and coordinator state.
    '
    ' Threading:
    '   Thread-safe by definition.
    '
    ' Mutation Rules:
    '   Immutable enum values.
    '
    ' Invariants:
    '   Closing is a real state.
    '   Closed is reached only after transition completion and host removal.
    '   External result callbacks must happen only after Closed.
    '
    ' Failure Rules:
    '   Invalid lifecycle transitions must be rejected or ignored by Coordinator.
    ' ============================================================
    Friend Enum MASFloatLifecycleState
        Requested
        Opening
        Open
        Closing
        Closed
        Disposed
    End Enum


    ''' <summary>
    ''' Public lifecycle snapshot exposed by MASFloatHandle.State.
    ''' This is a stable SDK-facing view; runtime transition mechanics stay internal.
    ''' </summary>
    Friend Enum MASFloatState
        Requested
        Opening
        Open
        Closing
        Closed
        Disposed
    End Enum

End Namespace