sig
  module type S = Piecewise_linear_intf.S
  module type S_invertible = Piecewise_linear_intf.S_invertible
  module Make :
    functor (Key : Piecewise_linear_intf.Float_like->
      functor (Value : Piecewise_linear_intf.Float_like->
        sig
          type key = Key.t
          type value = Value.t
          type t = Piecewise_linear.Make(Key)(Value).t
          val create : (key * value) list -> t Core_kernel.Std.Or_error.t
          val get : t -> key -> value
          val to_knots : t -> (key * value) list
          val compare : t -> t -> int
          val t_of_sexp : Sexplib.Sexp.t -> t
          val sexp_of_t : t -> Sexplib.Sexp.t
          val bin_t : t Core_kernel.Std.Bin_prot.Type_class.t
          val bin_read_t : t Core_kernel.Std.Bin_prot.Read.reader
          val __bin_read_t__ :
            (int -> t) Core_kernel.Std.Bin_prot.Read.reader
          val bin_reader_t : t Core_kernel.Std.Bin_prot.Type_class.reader
          val bin_size_t : t Core_kernel.Std.Bin_prot.Size.sizer
          val bin_write_t : t Core_kernel.Std.Bin_prot.Write.writer
          val bin_writer_t : t Core_kernel.Std.Bin_prot.Type_class.writer
        end
  module Make_invertible :
    functor (Key : Piecewise_linear_intf.Float_like->
      functor (Value : Piecewise_linear_intf.Float_like->
        sig
          type key = Key.t
          type value = Value.t
          type t = Piecewise_linear.Make_invertible(Key)(Value).t
          val create : (key * value) list -> t Core_kernel.Std.Or_error.t
          val get : t -> key -> value
          val to_knots : t -> (key * value) list
          val compare : t -> t -> int
          val t_of_sexp : Sexplib.Sexp.t -> t
          val sexp_of_t : t -> Sexplib.Sexp.t
          val bin_t : t Core_kernel.Std.Bin_prot.Type_class.t
          val bin_read_t : t Core_kernel.Std.Bin_prot.Read.reader
          val __bin_read_t__ :
            (int -> t) Core_kernel.Std.Bin_prot.Read.reader
          val bin_reader_t : t Core_kernel.Std.Bin_prot.Type_class.reader
          val bin_size_t : t Core_kernel.Std.Bin_prot.Size.sizer
          val bin_write_t : t Core_kernel.Std.Bin_prot.Write.writer
          val bin_writer_t : t Core_kernel.Std.Bin_prot.Type_class.writer
          val get_inverse : t -> value -> key
        end
  module Time :
    sig
      type key = Time.t
      type value = float
      type t = Piecewise_linear.Time.t
      val create : (key * value) list -> t Core_kernel.Std.Or_error.t
      val get : t -> key -> value
      val to_knots : t -> (key * value) list
      val compare : t -> t -> int
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_t : t Core_kernel.Std.Bin_prot.Type_class.t
      val bin_read_t : t Core_kernel.Std.Bin_prot.Read.reader
      val __bin_read_t__ : (int -> t) Core_kernel.Std.Bin_prot.Read.reader
      val bin_reader_t : t Core_kernel.Std.Bin_prot.Type_class.reader
      val bin_size_t : t Core_kernel.Std.Bin_prot.Size.sizer
      val bin_write_t : t Core_kernel.Std.Bin_prot.Write.writer
      val bin_writer_t : t Core_kernel.Std.Bin_prot.Type_class.writer
    end
  module Ofday :
    sig
      type key = Ofday.t
      type value = float
      type t = Piecewise_linear.Ofday.t
      val create : (key * value) list -> t Core_kernel.Std.Or_error.t
      val get : t -> key -> value
      val to_knots : t -> (key * value) list
      val compare : t -> t -> int
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_t : t Core_kernel.Std.Bin_prot.Type_class.t
      val bin_read_t : t Core_kernel.Std.Bin_prot.Read.reader
      val __bin_read_t__ : (int -> t) Core_kernel.Std.Bin_prot.Read.reader
      val bin_reader_t : t Core_kernel.Std.Bin_prot.Type_class.reader
      val bin_size_t : t Core_kernel.Std.Bin_prot.Size.sizer
      val bin_write_t : t Core_kernel.Std.Bin_prot.Write.writer
      val bin_writer_t : t Core_kernel.Std.Bin_prot.Type_class.writer
    end
  module Span :
    sig
      type key = Span.t
      type value = float
      type t = Piecewise_linear.Span.t
      val create : (key * value) list -> t Core_kernel.Std.Or_error.t
      val get : t -> key -> value
      val to_knots : t -> (key * value) list
      val compare : t -> t -> int
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_t : t Core_kernel.Std.Bin_prot.Type_class.t
      val bin_read_t : t Core_kernel.Std.Bin_prot.Read.reader
      val __bin_read_t__ : (int -> t) Core_kernel.Std.Bin_prot.Read.reader
      val bin_reader_t : t Core_kernel.Std.Bin_prot.Type_class.reader
      val bin_size_t : t Core_kernel.Std.Bin_prot.Size.sizer
      val bin_write_t : t Core_kernel.Std.Bin_prot.Write.writer
      val bin_writer_t : t Core_kernel.Std.Bin_prot.Type_class.writer
    end
  module Float :
    sig
      type key = float
      type value = float
      type t = Piecewise_linear.Float.t
      val create : (key * value) list -> t Core_kernel.Std.Or_error.t
      val get : t -> key -> value
      val to_knots : t -> (key * value) list
      val compare : t -> t -> int
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_t : t Core_kernel.Std.Bin_prot.Type_class.t
      val bin_read_t : t Core_kernel.Std.Bin_prot.Read.reader
      val __bin_read_t__ : (int -> t) Core_kernel.Std.Bin_prot.Read.reader
      val bin_reader_t : t Core_kernel.Std.Bin_prot.Type_class.reader
      val bin_size_t : t Core_kernel.Std.Bin_prot.Size.sizer
      val bin_write_t : t Core_kernel.Std.Bin_prot.Write.writer
      val bin_writer_t : t Core_kernel.Std.Bin_prot.Type_class.writer
    end
  module Int :
    sig
      type key = int
      type value = float
      type t = Piecewise_linear.Int.t
      val create : (key * value) list -> t Core_kernel.Std.Or_error.t
      val get : t -> key -> value
      val to_knots : t -> (key * value) list
      val compare : t -> t -> int
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_t : t Core_kernel.Std.Bin_prot.Type_class.t
      val bin_read_t : t Core_kernel.Std.Bin_prot.Read.reader
      val __bin_read_t__ : (int -> t) Core_kernel.Std.Bin_prot.Read.reader
      val bin_reader_t : t Core_kernel.Std.Bin_prot.Type_class.reader
      val bin_size_t : t Core_kernel.Std.Bin_prot.Size.sizer
      val bin_write_t : t Core_kernel.Std.Bin_prot.Write.writer
      val bin_writer_t : t Core_kernel.Std.Bin_prot.Type_class.writer
    end
end