sig
  type shout
  exception Insane
  exception No_connect
  exception No_login
  exception Socket
  exception Malloc
  exception Metadata
  exception Connected
  exception Unconnected
  exception Unsupported
  exception Send_error
  type data_format = Format_vorbis | Format_mp3
  type protocol = Protocol_http | Protocol_xaudiocast | Protocol_icy
  val init : unit -> unit
  val shutdown : unit -> unit
  val version : unit -> string * int * int * int
  val get_error : Shout.shout -> string
  val get_errno : Shout.shout -> int
  val new_shout : unit -> Shout.shout
  val is_connected : Shout.shout -> bool
  val set_host : Shout.shout -> string -> unit
  val get_host : Shout.shout -> string
  val set_port : Shout.shout -> int -> unit
  val get_port : Shout.shout -> int
  val set_user : Shout.shout -> string -> unit
  val get_user : Shout.shout -> string
  val set_password : Shout.shout -> string -> unit
  val get_password : Shout.shout -> string
  val set_protocol : Shout.shout -> Shout.protocol -> unit
  val get_protocol : Shout.shout -> Shout.protocol
  val set_format : Shout.shout -> Shout.data_format -> unit
  val get_format : Shout.shout -> Shout.data_format
  val set_mount : Shout.shout -> string -> unit
  val get_mount : Shout.shout -> string
  val set_dumpfile : Shout.shout -> string -> unit
  val get_dumpfile : Shout.shout -> string
  val set_agent : Shout.shout -> string -> unit
  val get_agent : Shout.shout -> string
  val set_public : Shout.shout -> bool -> unit
  val get_public : Shout.shout -> bool
  val set_name : Shout.shout -> string -> unit
  val get_name : Shout.shout -> string
  val set_url : Shout.shout -> string -> unit
  val get_url : Shout.shout -> string
  val set_genre : Shout.shout -> string -> unit
  val get_genre : Shout.shout -> string
  val set_description : Shout.shout -> string -> unit
  val get_description : Shout.shout -> string
  val set_audio_info : Shout.shout -> string -> string -> unit
  val get_audio_info : Shout.shout -> string -> string
  val set_multicast_ip : Shout.shout -> string -> unit
  val get_multicast_ip : Shout.shout -> string
  val open_shout : Shout.shout -> unit
  val close : Shout.shout -> unit
  val send : Shout.shout -> string -> unit
  val send_raw : Shout.shout -> string -> int
  val sync : Shout.shout -> unit
  val delay : Shout.shout -> int
  val set_metadata : Shout.shout -> (string * string) array -> unit
end