sig
  type info = {
    placement :
      Diagrams.Matrix3d.info -> int -> int -> int -> Diagrams.Point.t * float;
    planes : Diagrams.Matrix.info array;
    common : Diagrams.Node.Transfo.Style.t list;
    mainNode : Diagrams.Node.info;
    mainNodes : Diagrams.Node.Transfo.Style.t list;
  }
  type t = Diagrams.Matrix3d.info
  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
  module T = Transfo
  module S = T.Style
  val between_centers :
    ?projection:Proj3d.projection ->
    float ->
    float -> float -> '-> int -> int -> int -> (float * float) * float
  val default : Document.environment -> Diagrams.Matrix3d.info
  val nodes_contents : Diagrams.Matrix3d.info -> RawContent.raw list
  val to_contents : Diagrams.Matrix3d.info -> RawContent.raw list
  val allNodes : Node.Transfo.Style.t list -> S.t
  val all_nodes_pet : T.Pet.t
  val makeNodes : Node.Transfo.Style.t list list list list -> S.t
  val make_nodes_pet : T.Pet.t
  val contents_output :
    (Diagrams.Node.Transfo.Style.t list * RawContent.raw list) list list list ->
    S.t
  val contents_box :
    Document.environment ->
    (Diagrams.Node.Transfo.Style.t list * Box.box list) list list list -> S.t
  val contents :
    Document.environment ->
    (Diagrams.Node.Transfo.Style.t list * Document.content list) list list
    list -> S.t
  val placement : (info -> int -> int -> int -> Point.t * float) -> S.t
  val placement_pet : T.Pet.t
  val transmit : Matrix.S.t list -> S.t
  val transmit_pet : T.Pet.t
  val mainNode : Node.Transfo.Style.t list -> S.t
  val main_node_pet : T.Pet.t
  val transform_matrix :
    Document.environment ->
    T.Style.t list ->
    (Diagrams.Node.Transfo.Style.t list * Document.content list) list list
    list -> Diagrams.Matrix3d.info -> Diagrams.Matrix3d.info
  val make :
    Document.environment ->
    T.Style.t list ->
    (Diagrams.Node.Transfo.Style.t list * Document.content list) list list
    list -> Diagrams.Matrix3d.info
end