sig
  module Id3v2 :
    sig
      type state = [ `Invalid | `Parsed | `Valid ]
      type 'a id3v2_tag constraint 'a = [< Taglib.Inline.Id3v2.state ]
      type 'a id3v2 = 'Taglib.Inline.Id3v2.id3v2_tag Taglib.t
        constraint 'a = [< Taglib.Inline.Id3v2.state ]
      type frame_type = string
      type frame_text = string
      val init : unit -> [ `Invalid ] Taglib.Inline.Id3v2.id3v2
      val header_size : int
      val parse_header :
        [ `Invalid ] Taglib.Inline.Id3v2.id3v2 ->
        string -> [ `Parsed ] Taglib.Inline.Id3v2.id3v2
      val tag_size : [< `Parsed | `Valid ] Taglib.Inline.Id3v2.id3v2 -> int
      val parse_tag :
        [ `Parsed ] Taglib.Inline.Id3v2.id3v2 ->
        string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
      val attach_frame :
        [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
        Taglib.Inline.Id3v2.frame_type ->
        Taglib.Inline.Id3v2.frame_text ->
        [ `Valid ] Taglib.Inline.Id3v2.id3v2
      val render : [ `Valid ] Taglib.Inline.Id3v2.id3v2 -> string
      val tag_set_title :
        [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
        string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
      val tag_set_artist :
        [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
        string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
      val tag_set_album :
        [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
        string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
      val tag_set_comment :
        [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
        string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
      val tag_set_genre :
        [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
        string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
      val tag_set_year :
        [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
        int -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
      val tag_set_track :
        [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
        int -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
    end
end