functor (P : sig val params : Type.param list end->
  sig
    val params : Type.param list
    val apply_t :
      '-> [> `Constr of 'a list * [> `Param of Type.param ] list ]
    val expr : Camlp4.PreCast.Ast.ctyp -> Type.expr * Type.Translate.vmap
    val tagspec :
      Camlp4.PreCast.Ast.ctyp -> Type.tagspec * Type.Translate.vmap
    val application :
      Camlp4.PreCast.Ast.ctyp ->
      (Type.qname * Type.expr list) * Type.Translate.vmap
    val variant :
      Camlp4.PreCast.Ast.ctyp ->
      ?alias:Type.name ->
      [ `Eq | `Gt | `Lt ] -> Type.expr * Type.Translate.vmap
    val polyexpr :
      Camlp4.PreCast.Ast.ctyp -> Type.poly_expr * Type.Translate.vmap
    val field : Camlp4.PreCast.Ast.ctyp -> Type.field * Type.Translate.vmap
    val summand :
      Camlp4.PreCast.Ast.ctyp -> Type.summand * Type.Translate.vmap
    val repr :
      Camlp4.PreCast.Ast.ctyp ->
      Type.repr * (Type.name * Type.variant * Type.name option) list
    val toplevel : Camlp4.PreCast.Ast.ctyp -> Type.rhs * Type.Translate.vmap
    val constraints :
      (Camlp4.PreCast.Ast.ctyp * Camlp4.PreCast.Ast.ctyp) list ->
      Type.constraint_ list * Type.Translate.vmap
    val declify :
      (Type.name * Type.variant * Type.name option) list ->
      (Type.decl * (Type.name * Type.expr) option) list
  end