sig
  type date = {
    year : int;
    month : int;
    day : int;
    hour : int;
    minute : int;
    second : int;
    zone : int;
    week_day : int;
  }
  val since_epoch : Rss.date -> float
  val float_to_date : float -> Rss.date
  val string_of_date : ?fmt:string -> Rss.date -> string
  type email = string
  type url = string
  type category = {
    mutable cat_name : string;
    mutable cat_domain : Rss.url option;
  }
  type image = {
    mutable image_url : Rss.url;
    mutable image_title : string;
    mutable image_link : Rss.url;
    mutable image_height : int option;
    mutable image_width : int option;
    mutable image_desc : string option;
  }
  type text_input = {
    mutable ti_title : string;
    mutable ti_desc : string;
    mutable ti_name : string;
    mutable ti_link : string;
  }
  type enclosure = {
    mutable encl_url : Rss.url;
    mutable encl_length : int;
    mutable encl_type : string;
  }
  type guid = { mutable guid_name : string; mutable guid_permalink : bool; }
  type source = { mutable src_name : string; mutable src_url : Rss.url; }
  type item = {
    mutable item_title : string option;
    mutable item_link : Rss.url option;
    mutable item_desc : string option;
    mutable item_pubdate : Rss.date option;
    mutable item_author : Rss.email option;
    mutable item_categories : Rss.category list;
    mutable item_comments : Rss.url option;
    mutable item_enclosure : Rss.enclosure option;
    mutable item_guid : Rss.guid option;
    mutable item_source : Rss.source option;
  }
  type channel = {
    mutable ch_title : string;
    mutable ch_link : Rss.url;
    mutable ch_desc : string;
    mutable ch_language : string option;
    mutable ch_copyright : string option;
    mutable ch_managing_editor : Rss.email option;
    mutable ch_webmaster : Rss.email option;
    mutable ch_pubdate : Rss.date option;
    mutable ch_last_build_date : Rss.date option;
    mutable ch_categories : Rss.category list;
    mutable ch_generator : string option;
    mutable ch_docs : Rss.url option;
    mutable ch_ttl : int option;
    mutable ch_image : Rss.image option;
    mutable ch_text_input : Rss.text_input option;
    mutable ch_items : Rss.item list;
  }
  val item :
    ?title:string ->
    ?link:Rss.url ->
    ?desc:string ->
    ?pubdate:Rss.date ->
    ?author:Rss.email ->
    ?cats:Rss.category list ->
    ?comments:Rss.url ->
    ?encl:Rss.enclosure ->
    ?guid:Rss.guid -> ?source:Rss.source -> unit -> Rss.item
  val channel :
    title:string ->
    link:Rss.url ->
    desc:string ->
    ?language:string ->
    ?copyright:string ->
    ?managing_editor:Rss.email ->
    ?webmaster:Rss.email ->
    ?pubdate:Rss.date ->
    ?last_build_date:Rss.date ->
    ?cats:Rss.category list ->
    ?generator:string ->
    ?docs:Rss.url ->
    ?ttl:int ->
    ?image:Rss.image ->
    ?text_input:Rss.text_input -> Rss.item list -> Rss.channel
  val channel_of_file : string -> Rss.channel
  val channel_of_string : string -> Rss.channel
  val print_channel :
    ?date_fmt:string -> Format.formatter -> Rss.channel -> unit
  val print_file : ?date_fmt:string -> string -> Rss.channel -> unit
end