sig
  val get_config :
    unit ->
    Simplexmlparser.ExprOrPatt.texprpatt Simplexmlparser.ExprOrPatt.tlist
  val sync : ('-> '-> '-> 'd) -> '-> '-> '-> 'Lwt.t
  type service_kind =
      [ `External_Service
      | `Internal_Service of [ `Local_Service | `Public_Service ] ]
  type ('a, 'b, +'c, +'d, +'e, +'f) service
  type url_path = string list
  type server_params
  val get_user_agent : Ocsigen.server_params -> string
  val get_hostname : Ocsigen.server_params -> string option
  val get_full_url : Ocsigen.server_params -> string
  val get_inet_addr : Ocsigen.server_params -> Unix.inet_addr
  val get_ip : Ocsigen.server_params -> string
  val get_port : Ocsigen.server_params -> int
  val get_get_params : Ocsigen.server_params -> (string * string) list
  val get_post_params : Ocsigen.server_params -> (string * string) list Lwt.t
  val get_current_url : Ocsigen.server_params -> Ocsigen.url_path
  val get_tmp_filename : Extensions.file_info -> string
  val get_filesize : Extensions.file_info -> int64
  val get_original_filename : Extensions.file_info -> string
  type ('a, 'b) binsum = Inj1 of '| Inj2 of 'b
  type 'a param_name
  type ('a, 'b, 'c) params_type
  type 'a listnames = {
    it : ''c. ('-> '-> 'c list) -> 'b list -> 'c list -> 'c list;
  }
  val int :
    string ->
    (int, [ `WithoutSuffix ], int Ocsigen.param_name) Ocsigen.params_type
  val float :
    string ->
    (float, [ `WithoutSuffix ], float Ocsigen.param_name) Ocsigen.params_type
  val string :
    string ->
    (string, [ `WithoutSuffix ], string Ocsigen.param_name)
    Ocsigen.params_type
  val bool :
    string ->
    (bool, [ `WithoutSuffix ], bool Ocsigen.param_name) Ocsigen.params_type
  val file :
    string ->
    (Extensions.file_info, [ `WithoutSuffix ],
     Extensions.file_info Ocsigen.param_name)
    Ocsigen.params_type
  val radio_answer :
    string ->
    (string option, [ `WithoutSuffix ], string option Ocsigen.param_name)
    Ocsigen.params_type
  val unit :
    (unit, [ `WithoutSuffix ], unit Ocsigen.param_name) Ocsigen.params_type
  val user_type :
    (string -> 'a) ->
    ('-> string) ->
    string ->
    ('a, [ `WithoutSuffix ], 'Ocsigen.param_name) Ocsigen.params_type
  val sum :
    ('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
    ('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
    (('a, 'a) Ocsigen.binsum, [ `WithoutSuffix ], 'b * 'b)
    Ocsigen.params_type
  val prod :
    ('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
    ('c, [ `WithoutSuffix ], 'd) Ocsigen.params_type ->
    ('a * 'c, [ `WithoutSuffix ], 'b * 'd) Ocsigen.params_type
  val opt :
    ('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
    ('a option, [ `WithoutSuffix ], 'b) Ocsigen.params_type
  val list :
    string ->
    ('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
    ('a list, [ `WithoutSuffix ], 'Ocsigen.listnames) Ocsigen.params_type
  val ( ** ) :
    ('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
    ('c, [ `WithoutSuffix ], 'd) Ocsigen.params_type ->
    ('a * 'c, [ `WithoutSuffix ], 'b * 'd) Ocsigen.params_type
  val suffix_only :
    (string, [ `WithSuffix ], string Ocsigen.param_name) Ocsigen.params_type
  val suffix :
    ('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
    (string * 'a, [ `WithSuffix ], string Ocsigen.param_name * 'b)
    Ocsigen.params_type
  module Xhtml :
    sig
      type page = Xhtmltypes.xhtml XHTML.M.elt
      val new_service :
        url:Ocsigen.url_path ->
        ?prefix:bool ->
        get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                   Ocsigen.params_type ->
        unit ->
        ('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c,
         unit Ocsigen.param_name)
        Ocsigen.service
      val new_external_service :
        url:Ocsigen.url_path ->
        ?prefix:bool ->
        get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                   Ocsigen.params_type ->
        post_params:('d, [ `WithoutSuffix ], 'e) Ocsigen.params_type ->
        unit -> ('a, 'd, [ `External_Service ], 'b, 'c, 'e) Ocsigen.service
      val new_auxiliary_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b,
                  'c, 'd)
                 Ocsigen.service ->
        ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
        Ocsigen.service
      val register_service :
        service:('a, 'b, [ `Internal_Service of 'c ],
                 [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
                Ocsigen.service ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.Xhtml.page Lwt.t) ->
        (Ocsigen.server_params -> '-> '-> Ocsigen.Xhtml.page Lwt.t) ->
        unit
      val register_service_for_session :
        Ocsigen.server_params ->
        service:('a, 'b, [ `Internal_Service of 'c ],
                 [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
                Ocsigen.service ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.Xhtml.page Lwt.t) ->
        (Ocsigen.server_params -> '-> '-> Ocsigen.Xhtml.page Lwt.t) ->
        unit
      val register_new_service :
        url:Ocsigen.url_path ->
        ?prefix:bool ->
        get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                   Ocsigen.params_type ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.Xhtml.page Lwt.t) ->
        (Ocsigen.server_params -> '-> unit -> Ocsigen.Xhtml.page Lwt.t) ->
        ('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c,
         unit Ocsigen.param_name)
        Ocsigen.service
      val register_new_auxiliary_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'b, 'c, 'd)
                 Ocsigen.service ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.Xhtml.page Lwt.t) ->
        (Ocsigen.server_params -> '-> unit -> Ocsigen.Xhtml.page Lwt.t) ->
        ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
        Ocsigen.service
      val register_new_auxiliary_service_for_session :
        Ocsigen.server_params ->
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'b, 'c, 'd)
                 Ocsigen.service ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.Xhtml.page Lwt.t) ->
        (Ocsigen.server_params -> '-> unit -> Ocsigen.Xhtml.page Lwt.t) ->
        ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
        Ocsigen.service
      val new_post_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b,
                  'c, unit Ocsigen.param_name)
                 Ocsigen.service ->
        post_params:('d, [ `WithoutSuffix ], 'e) Ocsigen.params_type ->
        ('a, 'd, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c, 'e)
        Ocsigen.service
      val new_post_auxiliary_service :
        fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ], 'c,
                  'd, 'e)
                 Ocsigen.service ->
        post_params:('f, [ `WithoutSuffix ], 'g) Ocsigen.params_type ->
        ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
        Ocsigen.service
      val register_new_post_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'b, 'c,
                  unit Ocsigen.param_name)
                 Ocsigen.service ->
        post_params:('d, [ `WithoutSuffix ], 'e) Ocsigen.params_type ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.Xhtml.page Lwt.t) ->
        (Ocsigen.server_params -> '-> '-> Ocsigen.Xhtml.page Lwt.t) ->
        ('a, 'd, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c, 'e)
        Ocsigen.service
      val register_new_post_auxiliary_service :
        fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'c, 'd, 'e)
                 Ocsigen.service ->
        post_params:('f, [ `WithoutSuffix ], 'g) Ocsigen.params_type ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.Xhtml.page Lwt.t) ->
        (Ocsigen.server_params -> '-> '-> Ocsigen.Xhtml.page Lwt.t) ->
        ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
        Ocsigen.service
      val register_new_post_auxiliary_service_for_session :
        Ocsigen.server_params ->
        fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'c, 'd, 'e)
                 Ocsigen.service ->
        post_params:('f, [ `WithoutSuffix ], 'g) Ocsigen.params_type ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.Xhtml.page Lwt.t) ->
        (Ocsigen.server_params -> '-> '-> Ocsigen.Xhtml.page Lwt.t) ->
        ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
        Ocsigen.service
      val static_dir :
        Ocsigen.server_params ->
        (string, unit, [ `Internal_Service of [ `Public_Service ] ],
         [ `WithSuffix ], string Ocsigen.param_name, unit Ocsigen.param_name)
        Ocsigen.service
      val close_session : Ocsigen.server_params -> unit
      type ('a, 'b) action
      val new_action :
        post_params:('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
        ('a, 'b) Ocsigen.Xhtml.action
      val register_action :
        action:('a, 'b) Ocsigen.Xhtml.action ->
        (Ocsigen.server_params -> '-> unit Lwt.t) -> unit
      val register_action_for_session :
        Ocsigen.server_params ->
        action:('a, 'b) Ocsigen.Xhtml.action ->
        (Ocsigen.server_params -> '-> unit Lwt.t) -> unit
      val register_new_action :
        post_params:('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
        (Ocsigen.server_params -> '-> unit Lwt.t) ->
        ('a, 'b) Ocsigen.Xhtml.action
      val register_new_action_for_session :
        Ocsigen.server_params ->
        post_params:('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
        (Ocsigen.server_params -> '-> unit Lwt.t) ->
        ('a, 'b) Ocsigen.Xhtml.action
      val a :
        ?a:Xhtmltypes.a_attrib XHTML.M.attrib list ->
        ('a, unit, 'b, [< `WithSuffix | `WithoutSuffix ], 'c,
         unit Ocsigen.param_name)
        Ocsigen.service ->
        Ocsigen.server_params ->
        Xhtmltypes.a_content XHTML.M.elt list ->
        '-> [> Xhtmltypes.a ] XHTML.M.elt
      val css_link :
        ?a:Xhtmltypes.link_attrib XHTML.M.attrib list ->
        XHTML.M.uri -> [> Xhtmltypes.link ] XHTML.M.elt
      val js_script :
        ?a:Xhtmltypes.script_attrib XHTML.M.attrib list ->
        XHTML.M.uri -> [> Xhtmltypes.script ] XHTML.M.elt
      val make_uri :
        ('a, unit, 'b, [< `WithSuffix | `WithoutSuffix ], 'c, 'd)
        Ocsigen.service -> Ocsigen.server_params -> '-> XHTML.M.uri
      val get_form :
        ?a:Xhtmltypes.form_attrib XHTML.M.attrib list ->
        ('a, unit, 'b, 'c, 'd, unit Ocsigen.param_name) Ocsigen.service ->
        Ocsigen.server_params ->
        ('-> Xhtmltypes.form_content XHTML.M.elt list) ->
        [> Xhtmltypes.form ] XHTML.M.elt
      val post_form :
        ?a:Xhtmltypes.form_attrib XHTML.M.attrib list ->
        ('a, 'b, 'c, [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
        Ocsigen.service ->
        Ocsigen.server_params ->
        ('-> Xhtmltypes.form_content XHTML.M.elt list) ->
        '-> [> Xhtmltypes.form ] XHTML.M.elt
      val int_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?value:int ->
        int Ocsigen.param_name -> [> Xhtmltypes.input ] XHTML.M.elt
      val float_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?value:float ->
        float Ocsigen.param_name -> [> Xhtmltypes.input ] XHTML.M.elt
      val string_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?value:string ->
        string Ocsigen.param_name -> [> Xhtmltypes.input ] XHTML.M.elt
      val user_type_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?value:'->
        ('-> string) ->
        'Ocsigen.param_name -> [> Xhtmltypes.input ] XHTML.M.elt
      val int_password_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?value:int ->
        int Ocsigen.param_name -> [> Xhtmltypes.input ] XHTML.M.elt
      val float_password_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?value:float ->
        float Ocsigen.param_name -> [> Xhtmltypes.input ] XHTML.M.elt
      val string_password_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?value:string ->
        string Ocsigen.param_name -> [> Xhtmltypes.input ] XHTML.M.elt
      val user_type_password_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?value:'->
        ('-> string) ->
        'Ocsigen.param_name -> [> Xhtmltypes.input ] XHTML.M.elt
      val hidden_int_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        int Ocsigen.param_name -> int -> [> Xhtmltypes.input ] XHTML.M.elt
      val hidden_float_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        float Ocsigen.param_name ->
        float -> [> Xhtmltypes.input ] XHTML.M.elt
      val hidden_string_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        string Ocsigen.param_name ->
        string -> [> Xhtmltypes.input ] XHTML.M.elt
      val hidden_user_type_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ('-> string) ->
        'Ocsigen.param_name -> '-> [> Xhtmltypes.input ] XHTML.M.elt
      val bool_checkbox :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?checked:bool ->
        bool Ocsigen.param_name -> [> Xhtmltypes.input ] XHTML.M.elt
      val string_radio :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?checked:bool ->
        string option Ocsigen.param_name ->
        string -> [> Xhtmltypes.input ] XHTML.M.elt
      val int_radio :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?checked:bool ->
        int option Ocsigen.param_name ->
        int -> [> Xhtmltypes.input ] XHTML.M.elt
      val float_radio :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?checked:bool ->
        float option Ocsigen.param_name ->
        float -> [> Xhtmltypes.input ] XHTML.M.elt
      val user_type_radio :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?checked:bool ->
        ('-> string) ->
        'a option Ocsigen.param_name ->
        '-> [> Xhtmltypes.input ] XHTML.M.elt
      val textarea :
        ?a:Xhtmltypes.textarea_attrib XHTML.M.attrib list ->
        string Ocsigen.param_name ->
        rows:XHTML.M.number ->
        cols:XHTML.M.number ->
        [ `PCDATA ] XHTML.M.elt -> [> Xhtmltypes.textarea ] XHTML.M.elt
      val select :
        ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
        ?selected:(string option * string) option ->
        string option * string ->
        (string option * string) list ->
        string Ocsigen.param_name -> [> Xhtmltypes.select ] XHTML.M.elt
      val submit_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        string -> [> Xhtmltypes.input ] XHTML.M.elt
      val file_input :
        ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
        ?value:string ->
        Extensions.file_info Ocsigen.param_name ->
        [> Xhtmltypes.input ] XHTML.M.elt
      val action_a :
        ?a:Xhtmltypes.a_attrib XHTML.M.attrib list ->
        ?reload:bool ->
        ('a, 'b) Ocsigen.Xhtml.action ->
        Ocsigen.server_params ->
        Xhtmltypes.a_content XHTML.M.elt list ->
        [> Xhtmltypes.form ] XHTML.M.elt
      val action_form :
        ?a:Xhtmltypes.form_attrib XHTML.M.attrib list ->
        ?reload:bool ->
        ('a, 'b) Ocsigen.Xhtml.action ->
        Ocsigen.server_params ->
        ('-> Xhtmltypes.form_content XHTML.M.elt list) ->
        [> Xhtmltypes.form ] XHTML.M.elt
    end
  module type PAGES =
    sig
      type page
      type form_content_elt
      type form_content_elt_list
      type form_elt
      type a_content_elt
      type a_content_elt_list
      type a_elt
      type a_elt_list
      type div_content_elt
      type div_content_elt_list
      type uri
      type link_elt
      type script_elt
      type textarea_elt
      type select_elt
      type input_elt
      type pcdata_elt
      val create_sender : Predefined_senders.create_sender_type
      val send :
        content:Ocsigen.PAGES.page -> Predefined_senders.send_page_type
      type a_attrib_t
      type form_attrib_t
      type input_attrib_t
      type textarea_attrib_t
      type select_attrib_t
      type link_attrib_t
      type script_attrib_t
      type input_type_t
      val hidden : Ocsigen.PAGES.input_type_t
      val text : Ocsigen.PAGES.input_type_t
      val password : Ocsigen.PAGES.input_type_t
      val checkbox : Ocsigen.PAGES.input_type_t
      val radio : Ocsigen.PAGES.input_type_t
      val submit : Ocsigen.PAGES.input_type_t
      val file : Ocsigen.PAGES.input_type_t
      val empty_seq : Ocsigen.PAGES.form_content_elt_list
      val cons_form :
        Ocsigen.PAGES.form_content_elt ->
        Ocsigen.PAGES.form_content_elt_list ->
        Ocsigen.PAGES.form_content_elt_list
      val make_a :
        ?a:Ocsigen.PAGES.a_attrib_t ->
        href:string ->
        Ocsigen.PAGES.a_content_elt_list -> Ocsigen.PAGES.a_elt
      val make_get_form :
        ?a:Ocsigen.PAGES.form_attrib_t ->
        action:string ->
        Ocsigen.PAGES.form_content_elt ->
        Ocsigen.PAGES.form_content_elt_list -> Ocsigen.PAGES.form_elt
      val make_post_form :
        ?a:Ocsigen.PAGES.form_attrib_t ->
        action:string ->
        ?id:string ->
        ?inline:bool ->
        Ocsigen.PAGES.form_content_elt ->
        Ocsigen.PAGES.form_content_elt_list -> Ocsigen.PAGES.form_elt
      val make_hidden_field :
        Ocsigen.PAGES.input_elt -> Ocsigen.PAGES.form_content_elt
      val remove_first :
        Ocsigen.PAGES.form_content_elt_list ->
        Ocsigen.PAGES.form_content_elt * Ocsigen.PAGES.form_content_elt_list
      val make_input :
        ?a:Ocsigen.PAGES.input_attrib_t ->
        ?checked:bool ->
        typ:Ocsigen.PAGES.input_type_t ->
        ?name:string -> ?value:string -> unit -> Ocsigen.PAGES.input_elt
      val make_textarea :
        ?a:Ocsigen.PAGES.textarea_attrib_t ->
        name:string ->
        rows:int ->
        cols:int -> Ocsigen.PAGES.pcdata_elt -> Ocsigen.PAGES.textarea_elt
      val make_select :
        ?a:Ocsigen.PAGES.select_attrib_t ->
        name:string ->
        ?selected:(string option * string) option ->
        string option * string ->
        (string option * string) list -> Ocsigen.PAGES.select_elt
      val make_div :
        classe:string list ->
        Ocsigen.PAGES.a_elt -> Ocsigen.PAGES.form_content_elt
      val make_uri_from_string : string -> Ocsigen.PAGES.uri
      val make_css_link :
        ?a:Ocsigen.PAGES.link_attrib_t ->
        Ocsigen.PAGES.uri -> Ocsigen.PAGES.link_elt
      val make_js_script :
        ?a:Ocsigen.PAGES.script_attrib_t ->
        Ocsigen.PAGES.uri -> Ocsigen.PAGES.script_elt
    end
  module type OCSIGENSIG =
    sig
      type page
      type form_content_elt
      type form_content_elt_list
      type form_elt
      type a_content_elt
      type a_content_elt_list
      type a_elt
      type a_elt_list
      type div_content_elt
      type div_content_elt_list
      type uri
      type link_elt
      type script_elt
      type textarea_elt
      type select_elt
      type input_elt
      type pcdata_elt
      type a_attrib_t
      type form_attrib_t
      type input_attrib_t
      type textarea_attrib_t
      type select_attrib_t
      type link_attrib_t
      type script_attrib_t
      type input_type_t
      val new_external_service :
        url:Ocsigen.url_path ->
        ?prefix:bool ->
        get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                   Ocsigen.params_type ->
        post_params:('d, [ `WithoutSuffix ], 'e) Ocsigen.params_type ->
        unit -> ('a, 'd, [ `External_Service ], 'b, 'c, 'e) Ocsigen.service
      val new_service :
        url:Ocsigen.url_path ->
        ?prefix:bool ->
        get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                   Ocsigen.params_type ->
        unit ->
        ('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c,
         unit Ocsigen.param_name)
        Ocsigen.service
      val new_auxiliary_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b,
                  'c, 'd)
                 Ocsigen.service ->
        ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
        Ocsigen.service
      val register_service :
        service:('a, 'b, [ `Internal_Service of 'c ],
                 [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
                Ocsigen.service ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        (Ocsigen.server_params -> '-> '-> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        unit
      val register_service_for_session :
        Ocsigen.server_params ->
        service:('a, 'b, [ `Internal_Service of 'c ],
                 [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
                Ocsigen.service ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        (Ocsigen.server_params -> '-> '-> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        unit
      val register_new_service :
        url:Ocsigen.url_path ->
        ?prefix:bool ->
        get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                   Ocsigen.params_type ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        (Ocsigen.server_params -> '-> unit -> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        ('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c,
         unit Ocsigen.param_name)
        Ocsigen.service
      val register_new_auxiliary_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'b, 'c, 'd)
                 Ocsigen.service ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        (Ocsigen.server_params -> '-> unit -> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
        Ocsigen.service
      val register_new_auxiliary_service_for_session :
        Ocsigen.server_params ->
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'b, 'c, 'd)
                 Ocsigen.service ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        (Ocsigen.server_params -> '-> unit -> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
        Ocsigen.service
      val new_post_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b,
                  'c, unit Ocsigen.param_name)
                 Ocsigen.service ->
        post_params:('d, [ `WithoutSuffix ], 'e) Ocsigen.params_type ->
        ('a, 'd, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c, 'e)
        Ocsigen.service
      val new_post_auxiliary_service :
        fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ], 'c,
                  'd, 'e)
                 Ocsigen.service ->
        post_params:('f, [ `WithoutSuffix ], 'g) Ocsigen.params_type ->
        ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
        Ocsigen.service
      val register_new_post_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'b, 'c,
                  unit Ocsigen.param_name)
                 Ocsigen.service ->
        post_params:('d, [ `WithoutSuffix ], 'e) Ocsigen.params_type ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        (Ocsigen.server_params -> '-> '-> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        ('a, 'd, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c, 'e)
        Ocsigen.service
      val register_new_post_auxiliary_service :
        fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'c, 'd, 'e)
                 Ocsigen.service ->
        post_params:('f, [ `WithoutSuffix ], 'g) Ocsigen.params_type ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        (Ocsigen.server_params -> '-> '-> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
        Ocsigen.service
      val register_new_post_auxiliary_service_for_session :
        Ocsigen.server_params ->
        fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'c, 'd, 'e)
                 Ocsigen.service ->
        post_params:('f, [ `WithoutSuffix ], 'g) Ocsigen.params_type ->
        ?error_handler:(Ocsigen.server_params ->
                        (string * exn) list -> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        (Ocsigen.server_params -> '-> '-> Ocsigen.OCSIGENSIG.page Lwt.t) ->
        ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
        Ocsigen.service
      type ('a, 'b) action
      val new_action :
        post_params:('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
        ('a, 'b) Ocsigen.OCSIGENSIG.action
      val register_action :
        action:('a, 'b) Ocsigen.OCSIGENSIG.action ->
        (Ocsigen.server_params -> '-> unit Lwt.t) -> unit
      val register_new_action :
        post_params:('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
        (Ocsigen.server_params -> '-> unit Lwt.t) ->
        ('a, 'b) Ocsigen.OCSIGENSIG.action
      val register_action_for_session :
        Ocsigen.server_params ->
        action:('a, 'b) Ocsigen.OCSIGENSIG.action ->
        (Ocsigen.server_params -> '-> unit Lwt.t) -> unit
      val register_new_action_for_session :
        Ocsigen.server_params ->
        post_params:('a, [ `WithoutSuffix ], 'b) Ocsigen.params_type ->
        (Ocsigen.server_params -> '-> unit Lwt.t) ->
        ('a, 'b) Ocsigen.OCSIGENSIG.action
      val static_dir :
        Ocsigen.server_params ->
        (string, unit, [ `Internal_Service of [ `Public_Service ] ],
         [ `WithSuffix ], string Ocsigen.param_name, unit Ocsigen.param_name)
        Ocsigen.service
      val close_session : Ocsigen.server_params -> unit
      val a :
        ?a:Ocsigen.OCSIGENSIG.a_attrib_t ->
        ('a, unit, 'b, [< `WithSuffix | `WithoutSuffix ], 'c, 'd)
        Ocsigen.service ->
        Ocsigen.server_params ->
        Ocsigen.OCSIGENSIG.a_content_elt_list ->
        '-> Ocsigen.OCSIGENSIG.a_elt
      val get_form :
        ?a:Ocsigen.OCSIGENSIG.form_attrib_t ->
        ('a, unit, 'b, 'c, 'd, unit Ocsigen.param_name) Ocsigen.service ->
        Ocsigen.server_params ->
        ('-> Ocsigen.OCSIGENSIG.form_content_elt_list) ->
        Ocsigen.OCSIGENSIG.form_elt
      val post_form :
        ?a:Ocsigen.OCSIGENSIG.form_attrib_t ->
        ('a, 'b, 'c, [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
        Ocsigen.service ->
        Ocsigen.server_params ->
        ('-> Ocsigen.OCSIGENSIG.form_content_elt_list) ->
        '-> Ocsigen.OCSIGENSIG.form_elt
      val make_uri :
        ('a, unit, 'b, [< `WithSuffix | `WithoutSuffix ], 'c, 'd)
        Ocsigen.service ->
        Ocsigen.server_params -> '-> Ocsigen.OCSIGENSIG.uri
      val action_a :
        ?a:Ocsigen.OCSIGENSIG.a_attrib_t ->
        ?reload:bool ->
        ('a, 'b) Ocsigen.OCSIGENSIG.action ->
        Ocsigen.server_params ->
        Ocsigen.OCSIGENSIG.a_content_elt_list -> Ocsigen.OCSIGENSIG.form_elt
      val action_form :
        ?a:Ocsigen.OCSIGENSIG.form_attrib_t ->
        ?reload:bool ->
        ('a, 'b) Ocsigen.OCSIGENSIG.action ->
        Ocsigen.server_params ->
        ('-> Ocsigen.OCSIGENSIG.form_content_elt_list) ->
        Ocsigen.OCSIGENSIG.form_elt
      val js_script :
        ?a:Ocsigen.OCSIGENSIG.script_attrib_t ->
        Ocsigen.OCSIGENSIG.uri -> Ocsigen.OCSIGENSIG.script_elt
      val css_link :
        ?a:Ocsigen.OCSIGENSIG.link_attrib_t ->
        Ocsigen.OCSIGENSIG.uri -> Ocsigen.OCSIGENSIG.link_elt
      val int_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?value:int -> int Ocsigen.param_name -> Ocsigen.OCSIGENSIG.input_elt
      val float_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?value:float ->
        float Ocsigen.param_name -> Ocsigen.OCSIGENSIG.input_elt
      val string_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?value:string ->
        string Ocsigen.param_name -> Ocsigen.OCSIGENSIG.input_elt
      val user_type_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?value:'->
        ('-> string) ->
        'Ocsigen.param_name -> Ocsigen.OCSIGENSIG.input_elt
      val int_password_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?value:int -> int Ocsigen.param_name -> Ocsigen.OCSIGENSIG.input_elt
      val float_password_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?value:float ->
        float Ocsigen.param_name -> Ocsigen.OCSIGENSIG.input_elt
      val string_password_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?value:string ->
        string Ocsigen.param_name -> Ocsigen.OCSIGENSIG.input_elt
      val user_type_password_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?value:'->
        ('-> string) ->
        'Ocsigen.param_name -> Ocsigen.OCSIGENSIG.input_elt
      val hidden_int_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        int Ocsigen.param_name -> int -> Ocsigen.OCSIGENSIG.input_elt
      val hidden_float_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        float Ocsigen.param_name -> float -> Ocsigen.OCSIGENSIG.input_elt
      val hidden_string_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        string Ocsigen.param_name -> string -> Ocsigen.OCSIGENSIG.input_elt
      val hidden_user_type_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ('-> string) ->
        'Ocsigen.param_name -> '-> Ocsigen.OCSIGENSIG.input_elt
      val bool_checkbox :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?checked:bool ->
        bool Ocsigen.param_name -> Ocsigen.OCSIGENSIG.input_elt
      val string_radio :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?checked:bool ->
        string option Ocsigen.param_name ->
        string -> Ocsigen.OCSIGENSIG.input_elt
      val int_radio :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?checked:bool ->
        int option Ocsigen.param_name -> int -> Ocsigen.OCSIGENSIG.input_elt
      val float_radio :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?checked:bool ->
        float option Ocsigen.param_name ->
        float -> Ocsigen.OCSIGENSIG.input_elt
      val user_type_radio :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?checked:bool ->
        ('-> string) ->
        'a option Ocsigen.param_name -> '-> Ocsigen.OCSIGENSIG.input_elt
      val textarea :
        ?a:Ocsigen.OCSIGENSIG.textarea_attrib_t ->
        string Ocsigen.param_name ->
        rows:int ->
        cols:int ->
        Ocsigen.OCSIGENSIG.pcdata_elt -> Ocsigen.OCSIGENSIG.textarea_elt
      val select :
        ?a:Ocsigen.OCSIGENSIG.select_attrib_t ->
        ?selected:(string option * string) option ->
        string option * string ->
        (string option * string) list ->
        string Ocsigen.param_name -> Ocsigen.OCSIGENSIG.select_elt
      val submit_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        string -> Ocsigen.OCSIGENSIG.input_elt
      val file_input :
        ?a:Ocsigen.OCSIGENSIG.input_attrib_t ->
        ?value:string ->
        Extensions.file_info Ocsigen.param_name ->
        Ocsigen.OCSIGENSIG.input_elt
    end
  module Make :
    functor (Pages : PAGES->
      sig
        type page = Pages.page
        type form_content_elt = Pages.form_content_elt
        type form_content_elt_list = Pages.form_content_elt_list
        type form_elt = Pages.form_elt
        type a_content_elt = Pages.a_content_elt
        type a_content_elt_list = Pages.a_content_elt_list
        type a_elt = Pages.a_elt
        type a_elt_list = Pages.a_elt_list
        type div_content_elt = Pages.div_content_elt
        type div_content_elt_list = Pages.div_content_elt_list
        type uri = Pages.uri
        type link_elt = Pages.link_elt
        type script_elt = Pages.script_elt
        type textarea_elt = Pages.textarea_elt
        type select_elt = Pages.select_elt
        type input_elt = Pages.input_elt
        type pcdata_elt = Pages.pcdata_elt
        type a_attrib_t = Pages.a_attrib_t
        type form_attrib_t = Pages.form_attrib_t
        type input_attrib_t = Pages.input_attrib_t
        type textarea_attrib_t = Pages.textarea_attrib_t
        type select_attrib_t = Pages.select_attrib_t
        type link_attrib_t = Pages.link_attrib_t
        type script_attrib_t = Pages.script_attrib_t
        type input_type_t = Pages.input_type_t
        val new_external_service :
          url:url_path ->
          ?prefix:bool ->
          get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                     params_type ->
          post_params:('d, [ `WithoutSuffix ], 'e) params_type ->
          unit -> ('a, 'd, [ `External_Service ], 'b, 'c, 'e) service
        val new_service :
          url:url_path ->
          ?prefix:bool ->
          get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                     params_type ->
          unit ->
          ('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c,
           unit param_name)
          service
        val new_auxiliary_service :
          fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                    'b, 'c, 'd)
                   service ->
          ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
          service
        val register_service :
          service:('a, 'b, [ `Internal_Service of 'c ],
                   [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
                  service ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> '-> page Lwt.t) -> unit
        val register_service_for_session :
          server_params ->
          service:('a, 'b, [ `Internal_Service of 'c ],
                   [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
                  service ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> '-> page Lwt.t) -> unit
        val register_new_service :
          url:url_path ->
          ?prefix:bool ->
          get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                     params_type ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c,
           unit param_name)
          service
        val register_new_auxiliary_service :
          fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                    [< `WithSuffix | `WithoutSuffix ] as 'b, 'c, 'd)
                   service ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
          service
        val register_new_auxiliary_service_for_session :
          server_params ->
          fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                    [< `WithSuffix | `WithoutSuffix ] as 'b, 'c, 'd)
                   service ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
          service
        val new_post_service :
          fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                    'b, 'c, unit param_name)
                   service ->
          post_params:('d, [ `WithoutSuffix ], 'e) params_type ->
          ('a, 'd, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c, 'e)
          service
        val new_post_auxiliary_service :
          fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ], 'c,
                    'd, 'e)
                   service ->
          post_params:('f, [ `WithoutSuffix ], 'g) params_type ->
          ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
          service
        val register_new_post_service :
          fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                    [< `WithSuffix | `WithoutSuffix ] as 'b, 'c,
                    unit param_name)
                   service ->
          post_params:('d, [ `WithoutSuffix ], 'e) params_type ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> '-> page Lwt.t) ->
          ('a, 'd, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c, 'e)
          service
        val register_new_post_auxiliary_service :
          fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ],
                    [< `WithSuffix | `WithoutSuffix ] as 'c, 'd, 'e)
                   service ->
          post_params:('f, [ `WithoutSuffix ], 'g) params_type ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> '-> page Lwt.t) ->
          ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
          service
        val register_new_post_auxiliary_service_for_session :
          server_params ->
          fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ],
                    [< `WithSuffix | `WithoutSuffix ] as 'c, 'd, 'e)
                   service ->
          post_params:('f, [ `WithoutSuffix ], 'g) params_type ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> '-> page Lwt.t) ->
          ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
          service
        type ('a, 'b) action
        val new_action :
          post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
          ('a, 'b) action
        val register_action :
          action:('a, 'b) action ->
          (server_params -> '-> unit Lwt.t) -> unit
        val register_new_action :
          post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
          (server_params -> '-> unit Lwt.t) -> ('a, 'b) action
        val register_action_for_session :
          server_params ->
          action:('a, 'b) action ->
          (server_params -> '-> unit Lwt.t) -> unit
        val register_new_action_for_session :
          server_params ->
          post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
          (server_params -> '-> unit Lwt.t) -> ('a, 'b) action
        val static_dir :
          server_params ->
          (string, unit, [ `Internal_Service of [ `Public_Service ] ],
           [ `WithSuffix ], string param_name, unit param_name)
          service
        val close_session : server_params -> unit
        val a :
          ?a:a_attrib_t ->
          ('a, unit, 'b, [< `WithSuffix | `WithoutSuffix ], 'c, 'd) service ->
          server_params -> a_content_elt_list -> '-> a_elt
        val get_form :
          ?a:form_attrib_t ->
          ('a, unit, 'b, 'c, 'd, unit param_name) service ->
          server_params -> ('-> form_content_elt_list) -> form_elt
        val post_form :
          ?a:form_attrib_t ->
          ('a, 'b, 'c, [< `WithSuffix | `WithoutSuffix ], 'd, 'e) service ->
          server_params -> ('-> form_content_elt_list) -> '-> form_elt
        val make_uri :
          ('a, unit, 'b, [< `WithSuffix | `WithoutSuffix ], 'c, 'd) service ->
          server_params -> '-> uri
        val action_a :
          ?a:a_attrib_t ->
          ?reload:bool ->
          ('a, 'b) action -> server_params -> a_content_elt_list -> form_elt
        val action_form :
          ?a:form_attrib_t ->
          ?reload:bool ->
          ('a, 'b) action ->
          server_params -> ('-> form_content_elt_list) -> form_elt
        val js_script : ?a:script_attrib_t -> uri -> script_elt
        val css_link : ?a:link_attrib_t -> uri -> link_elt
        val int_input :
          ?a:input_attrib_t -> ?value:int -> int param_name -> input_elt
        val float_input :
          ?a:input_attrib_t -> ?value:float -> float param_name -> input_elt
        val string_input :
          ?a:input_attrib_t ->
          ?value:string -> string param_name -> input_elt
        val user_type_input :
          ?a:input_attrib_t ->
          ?value:'-> ('-> string) -> 'a param_name -> input_elt
        val int_password_input :
          ?a:input_attrib_t -> ?value:int -> int param_name -> input_elt
        val float_password_input :
          ?a:input_attrib_t -> ?value:float -> float param_name -> input_elt
        val string_password_input :
          ?a:input_attrib_t ->
          ?value:string -> string param_name -> input_elt
        val user_type_password_input :
          ?a:input_attrib_t ->
          ?value:'-> ('-> string) -> 'a param_name -> input_elt
        val hidden_int_input :
          ?a:input_attrib_t -> int param_name -> int -> input_elt
        val hidden_float_input :
          ?a:input_attrib_t -> float param_name -> float -> input_elt
        val hidden_string_input :
          ?a:input_attrib_t -> string param_name -> string -> input_elt
        val hidden_user_type_input :
          ?a:input_attrib_t ->
          ('-> string) -> 'a param_name -> '-> input_elt
        val bool_checkbox :
          ?a:input_attrib_t -> ?checked:bool -> bool param_name -> input_elt
        val string_radio :
          ?a:input_attrib_t ->
          ?checked:bool -> string option param_name -> string -> input_elt
        val int_radio :
          ?a:input_attrib_t ->
          ?checked:bool -> int option param_name -> int -> input_elt
        val float_radio :
          ?a:input_attrib_t ->
          ?checked:bool -> float option param_name -> float -> input_elt
        val user_type_radio :
          ?a:input_attrib_t ->
          ?checked:bool ->
          ('-> string) -> 'a option param_name -> '-> input_elt
        val textarea :
          ?a:textarea_attrib_t ->
          string param_name ->
          rows:int -> cols:int -> pcdata_elt -> textarea_elt
        val select :
          ?a:select_attrib_t ->
          ?selected:(string option * string) option ->
          string option * string ->
          (string option * string) list -> string param_name -> select_elt
        val submit_input : ?a:input_attrib_t -> string -> input_elt
        val file_input :
          ?a:input_attrib_t ->
          ?value:string -> Extensions.file_info param_name -> input_elt
      end
  module Text :
    sig
      type page = string
      type form_content_elt = string
      type form_content_elt_list = string
      type form_elt = string
      type a_content_elt = string
      type a_content_elt_list = string
      type a_elt = string
      type a_elt_list = string
      type div_content_elt = string
      type div_content_elt_list = string
      type uri = string
      type link_elt = string
      type script_elt = string
      type textarea_elt = string
      type select_elt = string
      type input_elt = string
      type pcdata_elt = string
      type a_attrib_t = string
      type form_attrib_t = string
      type input_attrib_t = string
      type textarea_attrib_t = string
      type select_attrib_t = string
      type link_attrib_t = string
      type script_attrib_t = string
      type input_type_t = string
      val new_external_service :
        url:url_path ->
        ?prefix:bool ->
        get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                   params_type ->
        post_params:('d, [ `WithoutSuffix ], 'e) params_type ->
        unit -> ('a, 'd, [ `External_Service ], 'b, 'c, 'e) service
      val new_service :
        url:url_path ->
        ?prefix:bool ->
        get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                   params_type ->
        unit ->
        ('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c,
         unit param_name)
        service
      val new_auxiliary_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b,
                  'c, 'd)
                 service ->
        ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
        service
      val register_service :
        service:('a, 'b, [ `Internal_Service of 'c ],
                 [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
                service ->
        ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
        (server_params -> '-> '-> page Lwt.t) -> unit
      val register_service_for_session :
        server_params ->
        service:('a, 'b, [ `Internal_Service of 'c ],
                 [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
                service ->
        ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
        (server_params -> '-> '-> page Lwt.t) -> unit
      val register_new_service :
        url:url_path ->
        ?prefix:bool ->
        get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                   params_type ->
        ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
        (server_params -> '-> unit -> page Lwt.t) ->
        ('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c,
         unit param_name)
        service
      val register_new_auxiliary_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'b, 'c, 'd)
                 service ->
        ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
        (server_params -> '-> unit -> page Lwt.t) ->
        ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
        service
      val register_new_auxiliary_service_for_session :
        server_params ->
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'b, 'c, 'd)
                 service ->
        ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
        (server_params -> '-> unit -> page Lwt.t) ->
        ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
        service
      val new_post_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b,
                  'c, unit param_name)
                 service ->
        post_params:('d, [ `WithoutSuffix ], 'e) params_type ->
        ('a, 'd, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c, 'e)
        service
      val new_post_auxiliary_service :
        fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ], 'c,
                  'd, 'e)
                 service ->
        post_params:('f, [ `WithoutSuffix ], 'g) params_type ->
        ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
        service
      val register_new_post_service :
        fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'b, 'c,
                  unit param_name)
                 service ->
        post_params:('d, [ `WithoutSuffix ], 'e) params_type ->
        ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
        (server_params -> '-> '-> page Lwt.t) ->
        ('a, 'd, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c, 'e)
        service
      val register_new_post_auxiliary_service :
        fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'c, 'd, 'e)
                 service ->
        post_params:('f, [ `WithoutSuffix ], 'g) params_type ->
        ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
        (server_params -> '-> '-> page Lwt.t) ->
        ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
        service
      val register_new_post_auxiliary_service_for_session :
        server_params ->
        fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ],
                  [< `WithSuffix | `WithoutSuffix ] as 'c, 'd, 'e)
                 service ->
        post_params:('f, [ `WithoutSuffix ], 'g) params_type ->
        ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
        (server_params -> '-> '-> page Lwt.t) ->
        ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
        service
      type ('a, 'b) action
      val new_action :
        post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
        ('a, 'b) action
      val register_action :
        action:('a, 'b) action -> (server_params -> '-> unit Lwt.t) -> unit
      val register_new_action :
        post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
        (server_params -> '-> unit Lwt.t) -> ('a, 'b) action
      val register_action_for_session :
        server_params ->
        action:('a, 'b) action -> (server_params -> '-> unit Lwt.t) -> unit
      val register_new_action_for_session :
        server_params ->
        post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
        (server_params -> '-> unit Lwt.t) -> ('a, 'b) action
      val static_dir :
        server_params ->
        (string, unit, [ `Internal_Service of [ `Public_Service ] ],
         [ `WithSuffix ], string param_name, unit param_name)
        service
      val close_session : server_params -> unit
      val a :
        ?a:a_attrib_t ->
        ('a, unit, 'b, [< `WithSuffix | `WithoutSuffix ], 'c, 'd) service ->
        server_params -> a_content_elt_list -> '-> a_elt
      val get_form :
        ?a:form_attrib_t ->
        ('a, unit, 'b, 'c, 'd, unit param_name) service ->
        server_params -> ('-> form_content_elt_list) -> form_elt
      val post_form :
        ?a:form_attrib_t ->
        ('a, 'b, 'c, [< `WithSuffix | `WithoutSuffix ], 'd, 'e) service ->
        server_params -> ('-> form_content_elt_list) -> '-> form_elt
      val make_uri :
        ('a, unit, 'b, [< `WithSuffix | `WithoutSuffix ], 'c, 'd) service ->
        server_params -> '-> uri
      val action_a :
        ?a:a_attrib_t ->
        ?reload:bool ->
        ('a, 'b) action -> server_params -> a_content_elt_list -> form_elt
      val action_form :
        ?a:form_attrib_t ->
        ?reload:bool ->
        ('a, 'b) action ->
        server_params -> ('-> form_content_elt_list) -> form_elt
      val js_script : ?a:script_attrib_t -> uri -> script_elt
      val css_link : ?a:link_attrib_t -> uri -> link_elt
      val int_input :
        ?a:input_attrib_t -> ?value:int -> int param_name -> input_elt
      val float_input :
        ?a:input_attrib_t -> ?value:float -> float param_name -> input_elt
      val string_input :
        ?a:input_attrib_t -> ?value:string -> string param_name -> input_elt
      val user_type_input :
        ?a:input_attrib_t ->
        ?value:'-> ('-> string) -> 'a param_name -> input_elt
      val int_password_input :
        ?a:input_attrib_t -> ?value:int -> int param_name -> input_elt
      val float_password_input :
        ?a:input_attrib_t -> ?value:float -> float param_name -> input_elt
      val string_password_input :
        ?a:input_attrib_t -> ?value:string -> string param_name -> input_elt
      val user_type_password_input :
        ?a:input_attrib_t ->
        ?value:'-> ('-> string) -> 'a param_name -> input_elt
      val hidden_int_input :
        ?a:input_attrib_t -> int param_name -> int -> input_elt
      val hidden_float_input :
        ?a:input_attrib_t -> float param_name -> float -> input_elt
      val hidden_string_input :
        ?a:input_attrib_t -> string param_name -> string -> input_elt
      val hidden_user_type_input :
        ?a:input_attrib_t ->
        ('-> string) -> 'a param_name -> '-> input_elt
      val bool_checkbox :
        ?a:input_attrib_t -> ?checked:bool -> bool param_name -> input_elt
      val string_radio :
        ?a:input_attrib_t ->
        ?checked:bool -> string option param_name -> string -> input_elt
      val int_radio :
        ?a:input_attrib_t ->
        ?checked:bool -> int option param_name -> int -> input_elt
      val float_radio :
        ?a:input_attrib_t ->
        ?checked:bool -> float option param_name -> float -> input_elt
      val user_type_radio :
        ?a:input_attrib_t ->
        ?checked:bool ->
        ('-> string) -> 'a option param_name -> '-> input_elt
      val textarea :
        ?a:textarea_attrib_t ->
        string param_name ->
        rows:int -> cols:int -> pcdata_elt -> textarea_elt
      val select :
        ?a:select_attrib_t ->
        ?selected:(string option * string) option ->
        string option * string ->
        (string option * string) list -> string param_name -> select_elt
      val submit_input : ?a:input_attrib_t -> string -> input_elt
      val file_input :
        ?a:input_attrib_t ->
        ?value:string -> Extensions.file_info param_name -> input_elt
    end
end