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