sig
  type item =
    Biocaml_psl.item = {
    matches : int;
    mismatches : int;
    rep_matches : int;
    n_count : int;
    q_num_insert : int;
    q_base_insert : int;
    t_num_insert : int;
    t_base_insert : int;
    q_name : string;
    q_strand : char;
    q_size : int;
    q_start : int;
    q_end : int;
    t_name : string;
    t_strand : char option;
    t_size : int;
    t_start : int;
    t_end : int;
    block_count : int;
    block_sizes : int list;
    q_starts : int list;
    t_starts : int list;
  }
  module Error :
    sig
      type t =
          [ `incomplete_input of
              Biocaml_internal_utils.Pos.t * string list * string option
          | `invalid_int of Biocaml_internal_utils.Pos.t * string * string
          | `invalid_number_of_columns of
              Biocaml_internal_utils.Pos.t * string * int
          | `invalid_strands of
              Biocaml_internal_utils.Pos.t * string * string ]
    end
  exception Error of Error.t
  val in_channel_to_item_stream :
    ?buffer_size:int ->
    ?filename:string ->
    in_channel ->
    (item, [> Error.t ]) Biocaml_internal_utils.Result.t
    Biocaml_internal_utils.Stream.t
  val in_channel_to_item_stream_exn :
    ?buffer_size:int ->
    ?filename:string -> in_channel -> item Biocaml_internal_utils.Stream.t
  module Transform :
    sig
      val string_to_item :
        ?filename:string ->
        unit ->
        (string, (item, [> Error.t ]) Biocaml_internal_utils.Result.t)
        Biocaml_transform.t
    end
  val line_to_item :
    Biocaml_internal_utils.Pos.t ->
    Biocaml_internal_utils.Line.t ->
    (item, Error.t) Biocaml_internal_utils.Result.t
  val item_of_sexp : Sexplib.Sexp.t -> item
  val sexp_of_item : item -> Sexplib.Sexp.t
end