sig
  module Model :
    sig
      type tvalue =
          Tnull
        | Tstr of string
        | Tint of int
        | Tfloat of float
        | Tbool of bool
        | Tlist of CamlTemplate.Model.tlist
        | Thash of CamlTemplate.Model.thash
        | Tfun of CamlTemplate.Model.tfun
      and tlist = CamlTemplate.Model.tvalue list
      and thash = (string, CamlTemplate.Model.tvalue) Hashtbl.t
      and tfun =
        args:CamlTemplate.Model.tvalue list -> CamlTemplate.Model.tvalue
      exception Tfun_error of string
    end
  type template
  val merge :
    tmpl:CamlTemplate.template ->
    model:CamlTemplate.Model.thash -> buf:Buffer.t -> unit
  val get_name : CamlTemplate.template -> string
  val dump : CamlTemplate.template -> string
  exception Syntax_error of string
  exception Template_error of string
  module Cache :
    sig
      type source_check_result =
          TemplateUnchanged
        | TemplateChanged
        | TemplateDeleted
      class type source_loader =
        object
          method check :
            template_name:string ->
            load_time:float -> CamlTemplate.Cache.source_check_result
          method load : template_name:string -> string
        end
      val as_source_loader :
        #CamlTemplate.Cache.source_loader -> CamlTemplate.Cache.source_loader
      val make_file_loader :
        template_dir:string -> CamlTemplate.Cache.source_loader
      type t
      val create :
        ?loader:CamlTemplate.Cache.source_loader ->
        ?check_interval:float -> unit -> CamlTemplate.Cache.t
      val get_template :
        cache:CamlTemplate.Cache.t ->
        template_name:string -> CamlTemplate.template
    end
  val add_web_functions : CamlTemplate.Model.thash -> unit
end