sig
  type info = {
    params : RawContent.path_param;
    mainAnchor : Diagrams.anchor;
    innerSep : float;
    outerSep : float;
    bb : float * float * float * float;
    center : Diagrams.Point.t;
    pdfAnchor : Diagrams.Point.t;
    node_contents : RawContent.raw list;
    button : (RawContent.button_kind * string) option;
    innerCurve : Diagrams.Curve.t;
    midCurve : Diagrams.Curve.t;
    outerCurve : Diagrams.Curve.t;
    anchor : Diagrams.anchor -> Diagrams.Point.t;
    decorations : Diagrams.Node.decoration list;
    node_anchor : Diagrams.anchor;
    at : Diagrams.Point.t;
    z : float;
  }
  and decoration =
      Curve of RawContent.path_param * Diagrams.Curve.t
    | Node of Diagrams.Node.info
  type t = Diagrams.Node.info
  val default_params : RawContent.path_param
  val default : Diagrams.Node.info
  val coord : Diagrams.Point.t -> Diagrams.Node.info
  val coord3d :
    Proj3d.projection -> float * float * float -> Diagrams.Node.info
  val decoration_to_contents :
    Diagrams.Node.info -> Diagrams.Node.decoration -> RawContent.raw list
  val to_contents : Diagrams.Node.info -> RawContent.raw list
  val to_gentity : Diagrams.Node.info -> Diagrams.Gentity.t
  module Transfo :
    sig
      module rec Style :
        sig
          type t = { pet : Pet.t; transfo : transfo; }
          and transfo = info -> info
        end
      and Pet :
        sig
          type t
          val name : t -> string
          val append : t -> Style.t list -> Style.t -> Style.t list
          val ( = ) : t -> t -> bool
          val register :
            ?depends:t list ->
            ?codepends:t list ->
            ?append:(Style.t list -> Style.t -> Style.t list) ->
            string -> (t -> 'a) -> 'a * t
          module Map :
            sig
              type key = t
              type +'a t
              val empty : 'a t
              val is_empty : 'a t -> bool
              val mem : key -> 'a t -> bool
              val add : key -> '-> 'a t -> 'a t
              val singleton : key -> '-> 'a t
              val remove : key -> 'a t -> 'a t
              val merge :
                (key -> 'a option -> 'b option -> 'c option) ->
                'a t -> 'b t -> 'c t
              val union :
                (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t
              val compare : ('-> '-> int) -> 'a t -> 'a t -> int
              val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
              val iter : (key -> '-> unit) -> 'a t -> unit
              val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b
              val for_all : (key -> '-> bool) -> 'a t -> bool
              val exists : (key -> '-> bool) -> 'a t -> bool
              val filter : (key -> '-> bool) -> 'a t -> 'a t
              val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t
              val cardinal : 'a t -> int
              val bindings : 'a t -> (key * 'a) list
              val min_binding : 'a t -> key * 'a
              val min_binding_opt : 'a t -> (key * 'a) option
              val max_binding : 'a t -> key * 'a
              val max_binding_opt : 'a t -> (key * 'a) option
              val choose : 'a t -> key * 'a
              val choose_opt : 'a t -> (key * 'a) option
              val split : key -> 'a t -> 'a t * 'a option * 'a t
              val find : key -> 'a t -> 'a
              val find_opt : key -> 'a t -> 'a option
              val find_first : (key -> bool) -> 'a t -> key * 'a
              val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
              val find_last : (key -> bool) -> 'a t -> key * 'a
              val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
              val map : ('-> 'b) -> 'a t -> 'b t
              val mapi : (key -> '-> 'b) -> 'a t -> 'b t
            end
        end
      val transform : Style.t list -> info -> info
    end
  val transfo :
    ?dump_contents:bool ->
    Diagrams.Node.Transfo.Style.t list ->
    Diagrams.Node.info -> Diagrams.Node.info
  val params : RawContent.path_param -> Transfo.Style.t
  val params_pet : Transfo.Pet.t
  val lineWidth : float -> Diagrams.Node.Transfo.Style.t
  val dashed : float list -> Transfo.Style.t
  val dashed_pet : Transfo.Pet.t
  val draw : Transfo.Style.t
  val setZ : float -> Transfo.Style.t
  val setZ_pet : Transfo.Pet.t
  val drawColor : Color.color -> Transfo.Style.t
  val draw_pet : Transfo.Pet.t
  val fill : Color.color -> Transfo.Style.t
  val fill_pet : Transfo.Pet.t
  val color : Color.color -> Transfo.Style.t
  val color_pet : Transfo.Pet.t
  val contents_outputcommon : RawContent.raw list -> Transfo.Style.t
  val contents_pet : Transfo.Pet.t
  val contents_box :
    Document.environment -> Box.box list -> Diagrams.Node.Transfo.Style.t
  val contents :
    Document.environment ->
    Document.content list -> Diagrams.Node.Transfo.Style.t
  val innerSep : float -> Transfo.Style.t
  val inner_sep_pet : Transfo.Pet.t
  val outerSep : float -> Transfo.Style.t
  val outer_sep_pet : Transfo.Pet.t
  val mainAnchor : anchor -> Transfo.Style.t
  val main_anchor_pet : Transfo.Pet.t
  module BB :
    sig
      val translate :
        float * float ->
        float * float * float * float -> float * float * float * float
      val points :
        'a * 'b * 'c * '-> ('a * 'b) * ('c * 'b) * ('c * 'd) * ('a * 'd)
      val outer_points :
        Diagrams.Node.info ->
        float * float * float * float ->
        (float * float) * (float * float) * (float * float) * (float * float)
      val mid_points :
        Diagrams.Node.info ->
        float * float * float * float ->
        (float * float) * (float * float) * (float * float) * (float * float)
      val center :
        float * float * float * float -> float * float * float * float
    end
  val boundingBox :
    (float * float * float * float -> float * float * float * float) ->
    Transfo.Style.t
  val bounding_box_pet : Transfo.Pet.t
  val getMainAnchor : Diagrams.Node.info -> Diagrams.anchor
  val ray_intersect :
    float * float ->
    (float array * float array) list -> float -> float * float
  val rectangle : Document.environment -> Transfo.Style.t
  val shape_pet : Transfo.Pet.t
  val button : (unit -> RawContent.write) -> Transfo.Style.t
  val button_pet : Transfo.Pet.t
  val drag : (float * float -> bool -> unit) -> Transfo.Style.t
  val drag_pet : Transfo.Pet.t
  val default_shape : Document.environment -> Transfo.Style.t
  val default_rectangle : Document.environment -> Diagrams.Node.info
  val kappa : float
  val circle : Diagrams.Node.Transfo.Style.t
  val float_div : float -> float -> int * float
  val pmod_float : float -> float -> float
  val nat_mod : int -> int -> int
  val scal_prod : float * float -> float * float -> float
  val triangle :
    ?orientation:float ->
    ?apex_angle:float ->
    Document.environment -> Diagrams.Node.Transfo.Style.t
  val translate : float * float -> Diagrams.Node.info -> Diagrams.Node.info
  val anchor : anchor -> Transfo.Style.t
  val anchor_pet : Transfo.Pet.t
  val at : float * float -> Transfo.Style.t
  val at_pet : Transfo.Pet.t
  val at3d : Proj3d.projection -> float * float * float -> Transfo.Style.t
  val at3d_pet : Transfo.Pet.t
  val make_output :
    Diagrams.Node.Transfo.Style.t list ->
    RawContent.raw list -> Diagrams.Node.info
  val make_boxified :
    Document.environment ->
    Diagrams.Node.Transfo.Style.t list -> Box.box list -> Diagrams.Node.info
  val make :
    Document.environment ->
    Diagrams.Node.Transfo.Style.t list ->
    Document.content list -> Diagrams.Node.info
  val label :
    Document.environment ->
    ?pos:anchor ->
    ?style:Transfo.Style.t list -> Document.content list -> Transfo.Style.t
  val label_pet : Transfo.Pet.t
  val inter :
    Diagrams.Gentity.t -> Diagrams.Gentity.t -> (float * float) list
end