   structure, or a function that takes the component and returns a bidi
   route structure."  [routes context]
   (->ProtectedBidiRoutes routes context))
-

  (routes [this] (routes (:login this)))
  (context [this] (context (:login this))))

(def new-default-protection-domain-schema {(s/optional-key :session-timeout-in-seconds) s/Int
                                           (s/optional-key :boilerplate) (s/=> 1)})

(defn new-default-protection-domain [opts]
  (s/validate new-default-protection-domain-schema opts)


;; Certain objects can provide protection for routes
(defprotocol BidiRoutesProtector
  (protect-bidi-routes [_ routes]))

;; Tag that a BidiRoutesContributor is protected
;; TODO Rename BidiRoutesContributor to BidiRoutesProvider
