(.module:
  [lux #*
   [control
    [try (#+ Try)]
    [security
     [capability (#+ Capability)]]]])

(type: #export (Can-Register ! account secret value)
  (Capability [account secret value] (! (Try Any))))

(type: #export (Can-Authenticate ! account secret value)
  (Capability [account secret] (! (Try value))))

(type: #export (Can-Reset ! account secret)
  (Capability [account secret] (! (Try Any))))

(type: #export (Can-Forget ! account)
  (Capability [account] (! (Try Any))))

(type: #export (Service ! account secret value)
  {#can-register (Can-Register ! account secret value)
   #can-authenticate (Can-Authenticate ! account secret value)
   #can-reset (Can-Reset ! account secret)
   #can-forget (Can-Forget ! account)})
