sig
  type cookie_action = Set of string * string | Unset of string * string
  val html_answer : Html.html * Model.cookie_action list -> string
  val html_answer_f :
    ('-> string) -> 'a * Model.cookie_action list -> string
  module type Cgi_model =
    sig
      type html
      val string_of_html : Model.Cgi_model.html -> string
      val callback_varname : string
    end
  module FCgi :
    functor (M : Cgi_model->
      sig
        type html
        type callback = Env.cgi_env -> Model.FCgi.html
        type cookie_callback =
          Env.cgi_env -> Model.FCgi.html * Model.cookie_action list
        val register : string -> Model.FCgi.callback -> unit
        val cookie_register : string -> Model.FCgi.cookie_callback -> unit
        val main : default:Model.FCgi.cookie_callback -> unit
      end
  module Cgi :
    sig
      type callback = Env.cgi_env -> Html.html
      type cookie_callback =
        Env.cgi_env -> Html.html * Model.cookie_action list
      val register : string -> Model.Cgi.callback -> unit
      val cookie_register : string -> Model.Cgi.cookie_callback -> unit
      val main : default:Model.Cgi.cookie_callback -> unit
    end
  module type Session_model =
    sig
      type t
      type html
      type session_id
      val string_of_html : Model.Session_model.html -> string
      val string_of_session_id : Model.Session_model.session_id -> string
      val session_id_of_string : string -> Model.Session_model.session_id
      val failure_handler :
        string -> Model.Session_model.html * Model.cookie_action list
      val get_user :
        Env.cgi_env ->
        Model.Session_model.session_id -> Model.Session_model.t option
      val callback_varname : string
      val session_varname : string
    end
  exception Exit_html of string * Model.cookie_action list
  exception Exit_handler of string * Env.cgi_env
  module FCgi_session_params :
    functor (M : Session_model->
      sig
        type user = M.t
        type html = M.html
        type session_id = M.session_id
        type callback =
          Env.cgi_env ->
          Model.FCgi_session_params.user option ->
          Model.FCgi_session_params.html
        type cookie_callback =
          Env.cgi_env ->
          Model.FCgi_session_params.user option ->
          Model.FCgi_session_params.html * Model.cookie_action list
        val session_id :
          Env.cgi_env -> Model.FCgi_session_params.session_id option
        val register : string -> Model.FCgi_session_params.callback -> unit
        val cookie_register :
          string -> Model.FCgi_session_params.cookie_callback -> unit
        val arg_of_session_id :
          Model.FCgi_session_params.session_id -> string
        val arg_of_callback : string -> string
        val main : default:Model.FCgi_session_params.cookie_callback -> unit
      end
  module FCgi_session_cookies :
    functor (M : Session_model->
      sig
        type user = M.t
        type html = M.html
        type session_id = M.session_id
        type callback =
          Env.cgi_env ->
          Model.FCgi_session_cookies.user option ->
          Model.FCgi_session_cookies.html
        type cookie_callback =
          Env.cgi_env ->
          Model.FCgi_session_cookies.user option ->
          Model.FCgi_session_cookies.html * Model.cookie_action list
        val session_id :
          Env.cgi_env -> Model.FCgi_session_cookies.session_id option
        val register : string -> Model.FCgi_session_cookies.callback -> unit
        val cookie_register :
          string -> Model.FCgi_session_cookies.cookie_callback -> unit
        val arg_of_callback : string -> string
        val main : default:Model.FCgi_session_cookies.cookie_callback -> unit
      end
end