sig
  type mapper = {
    attribute :
      Ast_mapper.mapper -> Parsetree.attribute -> Parsetree.attribute;
    attributes :
      Ast_mapper.mapper ->
      Parsetree.attribute list -> Parsetree.attribute list;
    binding_op :
      Ast_mapper.mapper -> Parsetree.binding_op -> Parsetree.binding_op;
    case : Ast_mapper.mapper -> Parsetree.case -> Parsetree.case;
    cases : Ast_mapper.mapper -> Parsetree.case list -> Parsetree.case list;
    class_declaration :
      Ast_mapper.mapper ->
      Parsetree.class_declaration -> Parsetree.class_declaration;
    class_description :
      Ast_mapper.mapper ->
      Parsetree.class_description -> Parsetree.class_description;
    class_expr :
      Ast_mapper.mapper -> Parsetree.class_expr -> Parsetree.class_expr;
    class_field :
      Ast_mapper.mapper -> Parsetree.class_field -> Parsetree.class_field;
    class_signature :
      Ast_mapper.mapper ->
      Parsetree.class_signature -> Parsetree.class_signature;
    class_structure :
      Ast_mapper.mapper ->
      Parsetree.class_structure -> Parsetree.class_structure;
    class_type :
      Ast_mapper.mapper -> Parsetree.class_type -> Parsetree.class_type;
    class_type_declaration :
      Ast_mapper.mapper ->
      Parsetree.class_type_declaration -> Parsetree.class_type_declaration;
    class_type_field :
      Ast_mapper.mapper ->
      Parsetree.class_type_field -> Parsetree.class_type_field;
    constant : Ast_mapper.mapper -> Parsetree.constant -> Parsetree.constant;
    constructor_declaration :
      Ast_mapper.mapper ->
      Parsetree.constructor_declaration -> Parsetree.constructor_declaration;
    directive_argument :
      Ast_mapper.mapper ->
      Parsetree.directive_argument -> Parsetree.directive_argument;
    expr : Ast_mapper.mapper -> Parsetree.expression -> Parsetree.expression;
    extension :
      Ast_mapper.mapper -> Parsetree.extension -> Parsetree.extension;
    extension_constructor :
      Ast_mapper.mapper ->
      Parsetree.extension_constructor -> Parsetree.extension_constructor;
    include_declaration :
      Ast_mapper.mapper ->
      Parsetree.include_declaration -> Parsetree.include_declaration;
    include_description :
      Ast_mapper.mapper ->
      Parsetree.include_description -> Parsetree.include_description;
    label_declaration :
      Ast_mapper.mapper ->
      Parsetree.label_declaration -> Parsetree.label_declaration;
    location : Ast_mapper.mapper -> Location.t -> Location.t;
    module_binding :
      Ast_mapper.mapper ->
      Parsetree.module_binding -> Parsetree.module_binding;
    module_declaration :
      Ast_mapper.mapper ->
      Parsetree.module_declaration -> Parsetree.module_declaration;
    module_substitution :
      Ast_mapper.mapper ->
      Parsetree.module_substitution -> Parsetree.module_substitution;
    module_expr :
      Ast_mapper.mapper -> Parsetree.module_expr -> Parsetree.module_expr;
    module_type :
      Ast_mapper.mapper -> Parsetree.module_type -> Parsetree.module_type;
    module_type_declaration :
      Ast_mapper.mapper ->
      Parsetree.module_type_declaration -> Parsetree.module_type_declaration;
    open_declaration :
      Ast_mapper.mapper ->
      Parsetree.open_declaration -> Parsetree.open_declaration;
    open_description :
      Ast_mapper.mapper ->
      Parsetree.open_description -> Parsetree.open_description;
    pat : Ast_mapper.mapper -> Parsetree.pattern -> Parsetree.pattern;
    payload : Ast_mapper.mapper -> Parsetree.payload -> Parsetree.payload;
    signature :
      Ast_mapper.mapper -> Parsetree.signature -> Parsetree.signature;
    signature_item :
      Ast_mapper.mapper ->
      Parsetree.signature_item -> Parsetree.signature_item;
    structure :
      Ast_mapper.mapper -> Parsetree.structure -> Parsetree.structure;
    structure_item :
      Ast_mapper.mapper ->
      Parsetree.structure_item -> Parsetree.structure_item;
    toplevel_directive :
      Ast_mapper.mapper ->
      Parsetree.toplevel_directive -> Parsetree.toplevel_directive;
    toplevel_phrase :
      Ast_mapper.mapper ->
      Parsetree.toplevel_phrase -> Parsetree.toplevel_phrase;
    typ : Ast_mapper.mapper -> Parsetree.core_type -> Parsetree.core_type;
    type_declaration :
      Ast_mapper.mapper ->
      Parsetree.type_declaration -> Parsetree.type_declaration;
    type_extension :
      Ast_mapper.mapper ->
      Parsetree.type_extension -> Parsetree.type_extension;
    type_exception :
      Ast_mapper.mapper ->
      Parsetree.type_exception -> Parsetree.type_exception;
    type_kind :
      Ast_mapper.mapper -> Parsetree.type_kind -> Parsetree.type_kind;
    value_binding :
      Ast_mapper.mapper -> Parsetree.value_binding -> Parsetree.value_binding;
    value_description :
      Ast_mapper.mapper ->
      Parsetree.value_description -> Parsetree.value_description;
    with_constraint :
      Ast_mapper.mapper ->
      Parsetree.with_constraint -> Parsetree.with_constraint;
  }
  val default_mapper : Ast_mapper.mapper
  val tool_name : unit -> string
  val apply : source:string -> target:string -> Ast_mapper.mapper -> unit
  val run_main : (string list -> Ast_mapper.mapper) -> unit
  val register_function :
    (string -> (string list -> Ast_mapper.mapper) -> unit) Stdlib.ref
  val register : string -> (string list -> Ast_mapper.mapper) -> unit
  val map_opt : ('-> 'b) -> 'a option -> 'b option
  val extension_of_error : Location.error -> Parsetree.extension
  val attribute_of_warning : Location.t -> string -> Parsetree.attribute
  val add_ppx_context_str :
    tool_name:string -> Parsetree.structure -> Parsetree.structure
  val add_ppx_context_sig :
    tool_name:string -> Parsetree.signature -> Parsetree.signature
  val drop_ppx_context_str :
    restore:bool -> Parsetree.structure -> Parsetree.structure
  val drop_ppx_context_sig :
    restore:bool -> Parsetree.signature -> Parsetree.signature
  val set_cookie : string -> Parsetree.expression -> unit
  val get_cookie : string -> Parsetree.expression option
end