Option Strict On
Option Explicit On

Namespace Nexamas.UI.Controls

    ''' <summary>
    ''' Friend-only readiness evidence for MASCallout Round 18 refinement. Callout
    ''' remains a visual title/body surface; actions, lifecycle, focus, and float
    ''' placement stay outside the control and route through the official application / FloatRuntime path.
    ''' </summary>
    Friend NotInheritable Class MASCalloutReadinessManifest
        Friend Sub New(status As MASCalloutReadinessStatus,
                       hasVisualPolicy As Boolean,
                       hasArrowPlacementPolicy As Boolean,
                       hasRtlTextPolicy As Boolean,
                       hasActionBoundary As Boolean,
                       duplicatePopoverRouteAbsent As Boolean)
            Me.Status = status
            Me.HasVisualPolicy = hasVisualPolicy
            Me.HasArrowPlacementPolicy = hasArrowPlacementPolicy
            Me.HasRtlTextPolicy = hasRtlTextPolicy
            Me.HasActionBoundary = hasActionBoundary
            Me.DuplicatePopoverRouteAbsent = duplicatePopoverRouteAbsent
        End Sub

        Friend ReadOnly Property Status As MASCalloutReadinessStatus
        Friend ReadOnly Property HasVisualPolicy As Boolean
        Friend ReadOnly Property HasArrowPlacementPolicy As Boolean
        Friend ReadOnly Property HasRtlTextPolicy As Boolean
        Friend ReadOnly Property HasActionBoundary As Boolean
        Friend ReadOnly Property DuplicatePopoverRouteAbsent As Boolean

        Friend Shared Function CreateCurrent() As MASCalloutReadinessManifest
            Return New MASCalloutReadinessManifest(MASCalloutReadinessStatus.Ready, True, True, True, True, True)
        End Function
    End Class

End Namespace
