Option Strict On
Option Explicit On

Namespace Nexamas.UI.FloatRuntime

    ' ============================================================
    ' MASFloatRuntime Contract
    ' Class: IMASFloatContent
    '
    ' Purpose:
    '   Defines the minimal contract required for any content that can
    '   participate as a Float inside MASFloatRuntime.
    '
    ' Responsibility:
    '   Allows the runtime to attach and detach a safe session bridge
    '   without exposing Coordinator, Registry, Host, PolicyEngine, or
    '   runtime state to the content.
    '
    ' Owns:
    '   No runtime lifecycle state.
    '   No host state.
    '   No policy state.
    '
    ' Does Not Own:
    '   Opening, closing, replacement, queueing, result delivery, focus,
    '   input routing, or Shield authorization.
    '
    ' Allowed Dependencies:
    '   IMASFloatSession.
    '
    ' Forbidden Dependencies:
    '   Legacy OverlayContent.
    '   OverlayHost.
    '   OverlayManager.
    '   OverlayLayer.
    '   OverlayService.
    '   MASFloatCoordinator.
    '   MASFloatPolicyEngine.
    '   MASFloatHost.
    '
    ' Lifecycle Role:
    '   Content is attached to a session after the runtime accepts a show
    '   request and detached when the runtime finishes or disposes the Float.
    '
    ' Threading:
    '   AttachSession and DetachSession are runtime-called operations and
    '   must be executed on the UI thread by the runtime.
    '
    ' Mutation Rules:
    '   Content may store the attached session reference.
    '   Content must clear the session reference during DetachSession.
    '   Content must not mutate runtime state directly.
    '
    ' Invariants:
    '   Content communicates completion only through IMASFloatSession.
    '   Content must not own lifecycle.
    '   Content must not close itself through global current-state APIs.
    '
    ' Failure Rules:
    '   Runtime may reject a request if Content is Nothing.
    '   Runtime may fail or close a Float if content throws during attach
    '   or detach, according to Coordinator rules.
    ' ============================================================
    Friend Interface IMASFloatContent

        ReadOnly Property Name As String

        Sub AttachSession(session As IMASFloatSession)

        Sub DetachSession()

    End Interface

End Namespace