sig
  type t = Bezier.curve list
  val first : (float array * float array) list -> float * float
  val last : (float array * float array) list -> float * float
  val bezier_of_point_list : ('a * 'b) list -> 'a array * 'b array
  val nb_beziers : 'a list -> int
  val of_point_lists : ('a * 'b) list list -> ('a array * 'b array) list
  val of_contents : RawContent.raw -> Bezier.curve list list
  val draw :
    ?parameters:RawContent.path_param ->
    Diagrams.Curve.t -> RawContent.raw list
  val translate :
    float * float ->
    (float array * float array) list -> (float array * float array) list
  val global_time : 'a list -> int * float -> float
  val local_time : 'a list -> float -> int * float
  val compare_lt : 'a * '-> 'a * '-> int
  val make_quadratic :
    float * float ->
    float * float -> float * float -> (float * float) list list
  val intersections_aux :
    float array * float array ->
    (float array * float array) list ->
    (float * (int * float * (float array * float array))) list
  val intersections :
    (float array * float array) list ->
    (float array * float array) list ->
    ((int * float * (float array * float array)) *
     (int * float * (float array * float array)))
    list
  val print_point_lists : (float array * float array) list -> unit
  val latest_intersection :
    (float array * float array) list ->
    (float array * float array) list -> (int * float) option
  val earliest_intersection :
    (float array * float array) list ->
    (float array * float array) list -> (int * float) option
  val bezier_evaluate : float array * float array -> float -> float * float
  val eval : (float array * float array) list -> float -> float * float
  val eval_local :
    (float array * float array) list -> int * float -> float * float
  val gradient :
    (float array * float array) list -> (float array * float array) list
  val internal_restrict :
    (float array * float array) list ->
    int * float -> int * float -> (float array * float array) list
  val restrict :
    (float array * float array) list ->
    float -> float -> (float array * float array) list
  val split2 :
    (float array * float array) list ->
    float ->
    float ->
    (float array * float array) list * (float array * float array) list *
    (float array * float array) list
  val bezier_linear_length : float array * float array -> float
  val linear_length : (float array * float array) list -> float
  val length : int -> (float array * float array) list -> float
  val curvilinear : (float array * float array) list -> float -> float
  val map :
    ('-> 'b) ->
    ('-> 'd) -> ('a array * 'c array) list -> ('b array * 'd array) list
  val rotate :
    float ->
    (float array * float array) list -> (float array * float array) list
end