sig
  type comment = [ `comment of string ]
  type variable_step =
      [ `variable_step_state_change of string * int option
      | `variable_step_value of int * float ]
  type fixed_step =
      [ `fixed_step_state_change of string * int * int * int option
      | `fixed_step_value of float ]
  type bed_graph_value = string * int * int * float
  type t =
      [ `bed_graph_value of Biocaml_wig.bed_graph_value
      | `comment of string
      | `fixed_step_state_change of string * int * int * int option
      | `fixed_step_value of float
      | `variable_step_state_change of string * int option
      | `variable_step_value of int * float ]
  type parse_error =
      [ `cannot_parse_key_values of Biocaml_pos.t * string
      | `empty_line of Biocaml_pos.t
      | `incomplete_input of Biocaml_pos.t * string list * string option
      | `missing_chrom_value of Biocaml_pos.t * string
      | `missing_start_value of Biocaml_pos.t * string
      | `missing_step_value of Biocaml_pos.t * string
      | `unrecognizable_line of Biocaml_pos.t * string list
      | `wrong_bed_graph_value of Biocaml_pos.t * string
      | `wrong_fixed_step_value of Biocaml_pos.t * string
      | `wrong_span_value of Biocaml_pos.t * string
      | `wrong_start_value of Biocaml_pos.t * string
      | `wrong_step_value of Biocaml_pos.t * string
      | `wrong_variable_step_value of Biocaml_pos.t * string ]
  val parse_error_to_string : Biocaml_wig.parse_error -> string
  type tag = [ `pedantic | `sharp_comments ]
  val default_tags : Biocaml_wig.tag list
  module Transform :
    sig
      val string_to_t :
        ?filename:string ->
        ?tags:Biocaml_wig.tag list ->
        unit ->
        (string, (Biocaml_wig.t, Biocaml_wig.parse_error) Core.Result.t)
        Biocaml_transform.t
      val t_to_string :
        ?tags:Biocaml_wig.tag list ->
        unit -> (Biocaml_wig.t, string) Biocaml_transform.t
      val t_to_bed_graph :
        unit ->
        (Biocaml_wig.t,
         (Biocaml_wig.bed_graph_value,
          [ `not_in_fixed_step_state | `not_in_variable_step_state ])
         Core.Result.t)
        Biocaml_transform.t
    end
  val comment_of_sexp : Sexplib.Sexp.t -> Biocaml_wig.comment
  val comment_of_sexp__ : Sexplib.Sexp.t -> Biocaml_wig.comment
  val sexp_of_comment : Biocaml_wig.comment -> Sexplib.Sexp.t
  val variable_step_of_sexp : Sexplib.Sexp.t -> Biocaml_wig.variable_step
  val variable_step_of_sexp__ : Sexplib.Sexp.t -> Biocaml_wig.variable_step
  val sexp_of_variable_step : Biocaml_wig.variable_step -> Sexplib.Sexp.t
  val fixed_step_of_sexp : Sexplib.Sexp.t -> Biocaml_wig.fixed_step
  val fixed_step_of_sexp__ : Sexplib.Sexp.t -> Biocaml_wig.fixed_step
  val sexp_of_fixed_step : Biocaml_wig.fixed_step -> Sexplib.Sexp.t
  val bed_graph_value_of_sexp : Sexplib.Sexp.t -> Biocaml_wig.bed_graph_value
  val sexp_of_bed_graph_value : Biocaml_wig.bed_graph_value -> Sexplib.Sexp.t
  val t_of_sexp : Sexplib.Sexp.t -> Biocaml_wig.t
  val t_of_sexp__ : Sexplib.Sexp.t -> Biocaml_wig.t
  val sexp_of_t : Biocaml_wig.t -> Sexplib.Sexp.t
  val parse_error_of_sexp : Sexplib.Sexp.t -> Biocaml_wig.parse_error
  val parse_error_of_sexp__ : Sexplib.Sexp.t -> Biocaml_wig.parse_error
  val sexp_of_parse_error : Biocaml_wig.parse_error -> Sexplib.Sexp.t
  val tag_of_sexp : Sexplib.Sexp.t -> Biocaml_wig.tag
  val tag_of_sexp__ : Sexplib.Sexp.t -> Biocaml_wig.tag
  val sexp_of_tag : Biocaml_wig.tag -> Sexplib.Sexp.t
end