sig
  type item = string * int * int * Biocaml_table.Row.t
  type parsing_spec = [ `enforce of Biocaml_table.Row.t_type | `strings ]
  module Error :
    sig
      type parsing_base =
          [ `wrong_format of
              [ `column_number
              | `float_of_string of string
              | `int_of_string of string ] * Biocaml_table.Row.t_type *
              string
          | `wrong_number_of_columns of Biocaml_table.Row.t ]
      type parsing = [ `bed of parsing_base ]
      type t = parsing
      val parsing_base_of_sexp : Sexplib.Sexp.t -> parsing_base
      val sexp_of_parsing_base : parsing_base -> Sexplib.Sexp.t
      val parsing_of_sexp : Sexplib.Sexp.t -> parsing
      val sexp_of_parsing : parsing -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  exception Error of Error.t
  val in_channel_to_item_stream :
    ?buffer_size:int ->
    ?more_columns:parsing_spec ->
    in_channel -> (item, [> Error.parsing ]) Core.Std.Result.t Stream.t
  val in_channel_to_item_stream_exn :
    ?buffer_size:int ->
    ?more_columns:parsing_spec -> in_channel -> item Stream.t
  val item_of_line :
    how:parsing_spec ->
    Biocaml_lines.item -> (item, [> Error.parsing ]) Core.Std.Result.t
  val item_to_line : item -> Biocaml_lines.item
  module Transform :
    sig
      val string_to_item :
        ?more_columns:parsing_spec ->
        unit ->
        (string,
         (string * int * int * Biocaml_table.Row.item array,
          [> Error.parsing ])
         Core.Std.Result.t)
        Biocaml_transform.t
      val item_to_string : unit -> (item, string) Biocaml_transform.t
    end
  val item_of_sexp : Sexplib.Sexp.t -> item
  val sexp_of_item : item -> Sexplib.Sexp.t
  val parsing_spec_of_sexp : Sexplib.Sexp.t -> parsing_spec
  val sexp_of_parsing_spec : parsing_spec -> Sexplib.Sexp.t
end