sig
  val is_last : Box.box array -> int -> bool
  type figurePosition = Placed of Box.line | Flushed | Begun
  module type OrderedHashableType =
    sig
      type t
      val compare :
        Break.OrderedHashableType.t -> Break.OrderedHashableType.t -> int
      val hash : Break.OrderedHashableType.t -> int
    end
  module Make :
    functor
      (Line : sig
                type t = Box.line
                val compare : t -> t -> int
                val hash : t -> int
              end->
      sig
        module LineMap :
          sig
            type key = Line.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
        module ColMap :
          sig
            type key = float * float * Box.line * float * float * Box.line
            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
        val print_graph :
          string ->
          '->
          ('b * 'c * 'd * 'e * 'f * Break.Make.LineMap.key * 'g * 'h)
          Break.Make.LineMap.t -> ('i * Break.Make.LineMap.key) list -> unit
        val typeset :
          ?initial_line:Box.line ->
          completeLine:(Box.box array array ->
                        Box.drawingBox array ->
                        Break.figurePosition Extra.IntMap.t ->
                        Line.t Box.MarkerMap.t ->
                        Box.line -> bool -> Line.t list)
                       array ->
          figures:Box.drawingBox array ->
          figure_parameters:(Box.box array array ->
                             Box.drawingBox array ->
                             Box.parameters ->
                             Break.figurePosition Extra.IntMap.t ->
                             Line.t Box.MarkerMap.t ->
                             Break.Make.LineMap.key ->
                             Box.line -> Box.parameters)
                            array ->
          parameters:(Box.box array array ->
                      Box.drawingBox array ->
                      Box.parameters ->
                      Break.figurePosition Extra.IntMap.t ->
                      Line.t Box.MarkerMap.t ->
                      Break.Make.LineMap.key -> Line.t -> Box.parameters)
                     array ->
          new_page:(Box.frame_zipper -> Box.frame_zipper) array ->
          new_line:(Box.line ->
                    Box.parameters ->
                    Box.line ->
                    Box.parameters -> Box.frame_zipper -> float -> float)
                   array ->
          badness:(Box.box array array ->
                   Box.drawingBox array ->
                   Break.figurePosition Extra.IntMap.t ->
                   Break.Make.LineMap.key ->
                   Box.box array ->
                   int ->
                   Box.parameters ->
                   float ->
                   Line.t ->
                   Box.box array -> int -> Box.parameters -> float -> float)
                  array ->
          states:int list array ->
          Box.box array array ->
          TypoLanguage.message list * Box.frame *
          Break.figurePosition Extra.IntMap.t * Line.t Box.MarkerMap.t
      end
end