sig
  val set_conv_path_if_not_set : Camlp4.PreCast.Ast.Loc.t -> unit
  val get_conv_path : unit -> string
  val add_generator :
    ?is_exn:bool ->
    string ->
    (bool -> Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.str_item) -> unit
  val add_generator_with_arg :
    ?is_exn:bool ->
    string ->
    'Camlp4.PreCast.Gram.Entry.t ->
    ('a option ->
     bool -> Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.str_item) ->
    unit
  val rm_generator : ?is_exn:bool -> string -> unit
  val add_sig_generator :
    ?delayed:bool ->
    ?is_exn:bool ->
    string ->
    (bool -> Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.sig_item) -> unit
  val add_sig_generator_with_arg :
    ?delayed:bool ->
    ?is_exn:bool ->
    string ->
    'Camlp4.PreCast.Gram.Entry.t ->
    ('a option ->
     bool -> Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.sig_item) ->
    unit
  val rm_sig_generator : ?is_exn:bool -> string -> unit
  type record_field_generator = Camlp4.PreCast.Ast.ctyp -> unit
  val add_record_field_generator :
    string -> Pa_type_conv.record_field_generator -> unit
  val add_record_field_generator_with_arg :
    string ->
    'Camlp4.PreCast.Gram.Entry.t ->
    ('a option -> Pa_type_conv.record_field_generator) -> unit
  val rm_record_field_generator : string -> unit
  val add_sig_set : ?is_exn:bool -> string -> set:string list -> unit
  val add_str_set : ?is_exn:bool -> string -> set:string list -> unit
  val add_set :
    kind:[ `Both | `Sig | `Str ] ->
    is_exn:[ `Both | `No | `Yes ] -> string -> set:string list -> unit
  val get_loc_err : Camlp4.PreCast.Ast.Loc.t -> string -> string
  val hash_variant : string -> int
  module Gen :
    sig
      val exApp_of_list :
        Camlp4.PreCast.Ast.expr list -> Camlp4.PreCast.Ast.expr
      val tyArr_of_list :
        Camlp4.PreCast.Ast.ctyp list -> Camlp4.PreCast.Ast.ctyp
      val paOr_of_list :
        Camlp4.PreCast.Ast.patt list -> Camlp4.PreCast.Ast.patt
      val gensym : ?prefix:string -> unit -> string
      val error : Camlp4.PreCast.Ast.ctyp -> fn:string -> msg:string -> 'a
      val unknown_type : Camlp4.PreCast.Ast.ctyp -> string -> 'a
      val ty_var_list_of_ctyp :
        Camlp4.PreCast.Ast.ctyp -> string list -> string list
      val get_rev_id_path :
        Camlp4.PreCast.Ast.ident -> string list -> string list
      val ident_of_rev_path :
        Camlp4.PreCast.Ast.Loc.t -> string list -> Camlp4.PreCast.Ast.ident
      val get_appl_path :
        Camlp4.PreCast.Ast.Loc.t ->
        Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.ident
      val abstract :
        Camlp4.PreCast.Ast.Loc.t ->
        Camlp4.PreCast.Ast.patt list ->
        Camlp4.PreCast.Ast.expr -> Camlp4.PreCast.Ast.expr
      val apply :
        Camlp4.PreCast.Ast.Loc.t ->
        Camlp4.PreCast.Ast.expr ->
        Camlp4.PreCast.Ast.expr list -> Camlp4.PreCast.Ast.expr
      val switch_tp_def :
        alias:(Camlp4.PreCast.Ast.Loc.t -> Camlp4.PreCast.Ast.ctyp -> 'a) ->
        sum:(Camlp4.PreCast.Ast.Loc.t -> Camlp4.PreCast.Ast.ctyp -> 'a) ->
        record:(Camlp4.PreCast.Ast.Loc.t -> Camlp4.PreCast.Ast.ctyp -> 'a) ->
        variants:(Camlp4.PreCast.Ast.Loc.t -> Camlp4.PreCast.Ast.ctyp -> 'a) ->
        mani:(Camlp4.PreCast.Ast.Loc.t ->
              Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.ctyp -> 'a) ->
        nil:(Camlp4.PreCast.Ast.Loc.t -> 'a) -> Camlp4.PreCast.Ast.ctyp -> 'a
      val mk_expr_lst :
        Camlp4.PreCast.Ast.Loc.t ->
        Camlp4.PreCast.Ast.expr list -> Camlp4.PreCast.Ast.expr
      val mk_patt_lst :
        Camlp4.PreCast.Ast.Loc.t ->
        Camlp4.PreCast.Ast.patt list -> Camlp4.PreCast.Ast.patt
      val get_tparam_id : Camlp4.PreCast.Ast.ctyp -> string
      val type_is_recursive :
        ?stop_on_functions:bool ->
        ?short_circuit:(Camlp4.PreCast.Ast.ctyp -> bool option) ->
        string -> Camlp4.PreCast.Ast.ctyp -> bool
      val drop_variance_annotations :
        Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.ctyp
      val find_record_default :
        Camlp4.PreCast.Ast.Loc.t -> Camlp4.PreCast.Ast.expr option
      val delay_sig_item : Camlp4.PreCast.Ast.sig_item -> unit
    end
  module Rewrite_tds :
    sig
      val sig_ :
        Camlp4.PreCast.Ast.Loc.t ->
        bool -> Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.sig_item
      val str_ :
        Camlp4.PreCast.Ast.Loc.t ->
        bool -> Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.str_item
    end
end