Member Junction
    Preparing search index...

    Type Alias RealtimeTrackState

    RealtimeTrackState:
        | "requested"
        | "establishing"
        | "live"
        | "ended"
        | "denied"
        | "unsupported"

    Where a track is in its lifecycle.

    'denied' and 'unsupported' are distinct on purpose: the first is a human refusing consent (recoverable, re-askable, and a UX event), the second is the model not supporting the modality (permanent for this session, and the trigger for falling back to a non-track path). Collapsing them would make "ask again" indistinguishable from "never ask".