sig
  val section : Lwt_log_core.section
  val reload : ?file:string -> unit -> unit
  val start : ?config:Xml.xml list list -> unit -> unit
  module type Config_nested =
    sig
      type t
      type 'a key
      val key :
        ?preprocess:('-> 'a) -> unit -> 'Ocsigen_server.Config_nested.key
      val find :
        Ocsigen_server.Config_nested.t ->
        'Ocsigen_server.Config_nested.key -> 'a option
      val set :
        Ocsigen_server.Config_nested.t ->
        'Ocsigen_server.Config_nested.key -> '-> unit
      val unset :
        Ocsigen_server.Config_nested.t ->
        'Ocsigen_server.Config_nested.key -> unit
      type accessor = {
        accessor : 'a. 'Ocsigen_server.Config_nested.key -> 'a option;
      }
    end
  module Site :
    sig
      type t
      val create :
        ?config_info:Ocsigen_extensions.config_info ->
        ?id:[ `Attach of Ocsigen_server.Site.t * Ocsigen_lib.Url.path
            | `Host of string * int option ] ->
        ?charset:Ocsigen_charset_mime.charset ->
        ?auto_load_extensions:bool -> unit -> Ocsigen_server.Site.t
      module Config :
        sig
          type 'a key
          val key : ?preprocess:('-> 'a) -> unit -> 'a key
          val find : t -> 'a key -> 'a option
          val set : t -> 'a key -> '-> unit
          val unset : t -> 'a key -> unit
          type accessor = { accessor : 'a. 'a key -> 'a option; }
        end
      type extension
      val create_extension :
        (Ocsigen_server.Site.Config.accessor -> Ocsigen_extensions.extension) ->
        Ocsigen_server.Site.extension
      val register :
        Ocsigen_server.Site.t -> Ocsigen_server.Site.extension -> unit
      val create_extension_intrusive :
        (Ocsigen_extensions.virtual_hosts ->
         Ocsigen_extensions.config_info ->
         Ocsigen_lib.Url.path ->
         Ocsigen_server.Site.Config.accessor -> Ocsigen_extensions.extension) ->
        Ocsigen_server.Site.extension
    end
end