sig
  module type AtomData =
    sig
      type t
      val empty : GdataAtom.AtomData.t
      val to_xml_data_model :
        GdataAtom.AtomData.t -> GdataCore.xml_data_model list
      val of_xml_data_model :
        GdataAtom.AtomData.t ->
        GdataCore.xml_data_model -> GdataAtom.AtomData.t
    end
  val ns_atom : string
  val ns_app : string
  val ns_openSearch : string
  val ns_gd : string
  type atom_email = string
  type atom_name = string
  type atom_uri = string
  type atom_id = string
  type atom_icon = string
  type atom_logo = string
  type atom_published = GapiDate.t
  type atom_updated = GapiDate.t
  type opensearch_itemsPerPage = int
  type opensearch_startIndex = int
  type opensearch_totalResults = int
  type app_edited = GapiDate.t
  val parse_children : ('-> '-> 'a) -> '-> ('-> 'c) -> 'b list -> 'c
  val data_model_to_entry :
    ?element_name:string ->
    ?element_namespace:string ->
    ('-> GdataCore.xml_data_model -> 'a) ->
    '-> GdataCore.xml_data_model -> 'a
  val render_attribute :
    ?default:string ->
    string -> string -> string -> GdataCore.xml_data_model list
  val render_generic_attribute :
    ('-> string) ->
    '-> string -> string -> '-> GdataCore.xml_data_model list
  val render_int_attribute :
    ?default:int -> string -> string -> int -> GdataCore.xml_data_model list
  val render_bool_attribute :
    ?default:bool ->
    string -> string -> bool -> GdataCore.xml_data_model list
  val render_date_attribute :
    ?default:GapiDate.t ->
    string -> string -> GapiDate.t -> GdataCore.xml_data_model list
  val render_text :
    ?default:string -> string -> GdataCore.xml_data_model list
  val render_text_element :
    ?default:string ->
    string -> string -> string -> GdataCore.xml_data_model list
  val render_int_element :
    string -> string -> int -> GdataCore.xml_data_model list
  val render_int64_element :
    string -> string -> int64 -> GdataCore.xml_data_model list
  val render_date_element :
    string -> string -> GapiDate.t -> GdataCore.xml_data_model list
  val render_bool_empty_element :
    string -> string -> bool -> GdataCore.xml_data_model list
  val render_empty_element :
    string -> string -> GdataCore.xml_data_model list
  val render_element :
    string ->
    string ->
    GdataCore.xml_data_model list list -> GdataCore.xml_data_model list
  val render_element_list : ('-> 'b list) -> 'a list -> 'b list
  val render_value :
    ?default:string ->
    ?attribute:string ->
    string -> string -> string -> GdataCore.xml_data_model list
  val render_int_value :
    ?attribute:string ->
    string -> string -> int -> GdataCore.xml_data_model list
  val render_bool_value :
    ?attribute:string ->
    string -> string -> bool -> GdataCore.xml_data_model list
  val element_to_data_model :
    (string -> string) ->
    ('-> GdataCore.xml_data_model list) -> '-> GdataCore.xml_data_model
  module type PersonConstruct =
    sig
      type t = {
        lang : string;
        email : GdataAtom.atom_email;
        name : GdataAtom.atom_name;
        uri : GdataAtom.atom_uri;
      }
      val lang : (GdataAtom.PersonConstruct.t, string) GapiLens.t
      val email :
        (GdataAtom.PersonConstruct.t, GdataAtom.atom_email) GapiLens.t
      val name :
        (GdataAtom.PersonConstruct.t, GdataAtom.atom_name) GapiLens.t
      val uri : (GdataAtom.PersonConstruct.t, GdataAtom.atom_uri) GapiLens.t
      val empty : t
      val to_xml_data_model : t -> GdataCore.xml_data_model list
      val of_xml_data_model : t -> GdataCore.xml_data_model -> t
    end
  module MakePersonConstruct :
    functor
      (M : sig val element_ns : string val element_name : string end->
      PersonConstruct
  module Author : PersonConstruct
  module Contributor : PersonConstruct
  module Category :
    sig
      type t = {
        label : string;
        scheme : string;
        term : string;
        lang : string;
      }
      val label : (GdataAtom.Category.t, string) GapiLens.t
      val scheme : (GdataAtom.Category.t, string) GapiLens.t
      val term : (GdataAtom.Category.t, string) GapiLens.t
      val lang : (GdataAtom.Category.t, string) GapiLens.t
      val empty : t
      val to_xml_data_model : t -> GdataCore.xml_data_model list
      val of_xml_data_model : t -> GdataCore.xml_data_model -> t
    end
  module Generator :
    sig
      type t = { uri : string; version : string; value : string; }
      val uri : (GdataAtom.Generator.t, string) GapiLens.t
      val version : (GdataAtom.Generator.t, string) GapiLens.t
      val value : (GdataAtom.Generator.t, string) GapiLens.t
      val empty : t
      val to_xml_data_model : t -> GdataCore.xml_data_model list
      val of_xml_data_model : t -> GdataCore.xml_data_model -> t
    end
  module type TextConstruct =
    sig
      type t = {
        src : string;
        _type : string;
        lang : string;
        value : string;
      }
      val src : (GdataAtom.TextConstruct.t, string) GapiLens.t
      val _type : (GdataAtom.TextConstruct.t, string) GapiLens.t
      val lang : (GdataAtom.TextConstruct.t, string) GapiLens.t
      val value : (GdataAtom.TextConstruct.t, string) GapiLens.t
      val empty : t
      val to_xml_data_model : t -> GdataCore.xml_data_model list
      val of_xml_data_model : t -> GdataCore.xml_data_model -> t
    end
  module MakeTextConstruct :
    functor (M : sig val element_name : string end-> TextConstruct
  module Content : TextConstruct
  module Title : TextConstruct
  module Subtitle : TextConstruct
  module Summary : TextConstruct
  module Rights : TextConstruct
  module Link :
    sig
      type t = {
        href : string;
        length : Int64.t;
        rel : string;
        title : string;
        _type : string;
      }
      val href : (GdataAtom.Link.t, string) GapiLens.t
      val length : (GdataAtom.Link.t, Int64.t) GapiLens.t
      val rel : (GdataAtom.Link.t, string) GapiLens.t
      val title : (GdataAtom.Link.t, string) GapiLens.t
      val _type : (GdataAtom.Link.t, string) GapiLens.t
      val empty : t
      val to_xml_data_model : t -> GdataCore.xml_data_model list
      val of_xml_data_model : t -> GdataCore.xml_data_model -> t
    end
  module type Feed =
    sig
      type entry_t
      type link_t
      type extensions_t
      type t = {
        etag : string;
        kind : string;
        authors : Author.t list;
        categories : GdataAtom.Category.t list;
        contributors : Contributor.t list;
        generator : GdataAtom.Generator.t;
        icon : GdataAtom.atom_icon;
        id : GdataAtom.atom_id;
        updated : GdataAtom.atom_updated;
        entries : GdataAtom.Feed.entry_t list;
        links : GdataAtom.Feed.link_t list;
        logo : GdataAtom.atom_logo;
        rights : Rights.t;
        subtitle : Subtitle.t;
        title : Title.t;
        totalResults : GdataAtom.opensearch_totalResults;
        itemsPerPage : GdataAtom.opensearch_itemsPerPage;
        startIndex : GdataAtom.opensearch_startIndex;
        extensions : GdataAtom.Feed.extensions_t;
      }
      val etag : (GdataAtom.Feed.t, string) GapiLens.t
      val kind : (GdataAtom.Feed.t, string) GapiLens.t
      val authors : (GdataAtom.Feed.t, Author.t list) GapiLens.t
      val categories :
        (GdataAtom.Feed.t, GdataAtom.Category.t list) GapiLens.t
      val contributors : (GdataAtom.Feed.t, Contributor.t list) GapiLens.t
      val generator : (GdataAtom.Feed.t, GdataAtom.Generator.t) GapiLens.t
      val icon : (GdataAtom.Feed.t, GdataAtom.atom_icon) GapiLens.t
      val id : (GdataAtom.Feed.t, GdataAtom.atom_id) GapiLens.t
      val updated : (GdataAtom.Feed.t, GdataAtom.atom_updated) GapiLens.t
      val entries :
        (GdataAtom.Feed.t, GdataAtom.Feed.entry_t list) GapiLens.t
      val links : (GdataAtom.Feed.t, GdataAtom.Feed.link_t list) GapiLens.t
      val logo : (GdataAtom.Feed.t, GdataAtom.atom_logo) GapiLens.t
      val rights : (GdataAtom.Feed.t, Rights.t) GapiLens.t
      val subtitle : (GdataAtom.Feed.t, Subtitle.t) GapiLens.t
      val title : (GdataAtom.Feed.t, Title.t) GapiLens.t
      val totalResults :
        (GdataAtom.Feed.t, GdataAtom.opensearch_totalResults) GapiLens.t
      val itemsPerPage :
        (GdataAtom.Feed.t, GdataAtom.opensearch_itemsPerPage) GapiLens.t
      val startIndex :
        (GdataAtom.Feed.t, GdataAtom.opensearch_startIndex) GapiLens.t
      val extensions :
        (GdataAtom.Feed.t, GdataAtom.Feed.extensions_t) GapiLens.t
      val empty : t
      val to_xml_data_model : t -> GdataCore.xml_data_model list
      val of_xml_data_model : t -> GdataCore.xml_data_model -> t
      val parse_feed : GdataCore.xml_data_model -> GdataAtom.Feed.t
    end
  module MakeFeed :
    functor (Entry : AtomData) (Link : AtomData) (Extensions : AtomData->
      sig
        type entry_t = Entry.t
        type link_t = Link.t
        type extensions_t = Extensions.t
        type t = {
          etag : string;
          kind : string;
          authors : Author.t list;
          categories : Category.t list;
          contributors : Contributor.t list;
          generator : Generator.t;
          icon : atom_icon;
          id : atom_id;
          updated : atom_updated;
          entries : entry_t list;
          links : link_t list;
          logo : atom_logo;
          rights : Rights.t;
          subtitle : Subtitle.t;
          title : Title.t;
          totalResults : opensearch_totalResults;
          itemsPerPage : opensearch_itemsPerPage;
          startIndex : opensearch_startIndex;
          extensions : extensions_t;
        }
        val etag : (t, string) GapiLens.t
        val kind : (t, string) GapiLens.t
        val authors : (t, Author.t list) GapiLens.t
        val categories : (t, Category.t list) GapiLens.t
        val contributors : (t, Contributor.t list) GapiLens.t
        val generator : (t, Generator.t) GapiLens.t
        val icon : (t, atom_icon) GapiLens.t
        val id : (t, atom_id) GapiLens.t
        val updated : (t, atom_updated) GapiLens.t
        val entries : (t, entry_t list) GapiLens.t
        val links : (t, link_t list) GapiLens.t
        val logo : (t, atom_logo) GapiLens.t
        val rights : (t, Rights.t) GapiLens.t
        val subtitle : (t, Subtitle.t) GapiLens.t
        val title : (t, Title.t) GapiLens.t
        val totalResults : (t, opensearch_totalResults) GapiLens.t
        val itemsPerPage : (t, opensearch_itemsPerPage) GapiLens.t
        val startIndex : (t, opensearch_startIndex) GapiLens.t
        val extensions : (t, extensions_t) GapiLens.t
        val empty : t
        val to_xml_data_model : t -> GdataCore.xml_data_model list
        val of_xml_data_model : t -> GdataCore.xml_data_model -> t
        val parse_feed : GdataCore.xml_data_model -> t
      end
  module BasicEntry :
    sig
      type t = {
        etag : string;
        id : GdataAtom.atom_id;
        title : Title.t;
        published : GdataAtom.atom_published;
        authors : Author.t list;
        updated : GdataAtom.atom_updated;
        edited : GdataAtom.app_edited;
        categories : GdataAtom.Category.t list;
        content : Content.t;
        links : GdataAtom.Link.t list;
      }
      val etag : (GdataAtom.BasicEntry.t, string) GapiLens.t
      val id : (GdataAtom.BasicEntry.t, GdataAtom.atom_id) GapiLens.t
      val title : (GdataAtom.BasicEntry.t, Title.t) GapiLens.t
      val published :
        (GdataAtom.BasicEntry.t, GdataAtom.atom_published) GapiLens.t
      val authors : (GdataAtom.BasicEntry.t, Author.t list) GapiLens.t
      val updated :
        (GdataAtom.BasicEntry.t, GdataAtom.atom_updated) GapiLens.t
      val edited : (GdataAtom.BasicEntry.t, GdataAtom.app_edited) GapiLens.t
      val categories :
        (GdataAtom.BasicEntry.t, GdataAtom.Category.t list) GapiLens.t
      val content : (GdataAtom.BasicEntry.t, Content.t) GapiLens.t
      val links : (GdataAtom.BasicEntry.t, GdataAtom.Link.t list) GapiLens.t
      val empty : t
      val to_xml_data_model : t -> GdataCore.xml_data_model list
      val of_xml_data_model : t -> GdataCore.xml_data_model -> t
      val node_matches : string * string -> bool
    end
  module GenericExtensions :
    sig
      type t = GdataCore.xml_data_model list
      val empty : t
      val to_xml_data_model : t -> GdataCore.xml_data_model list
      val of_xml_data_model : t -> GdataCore.xml_data_model -> t
    end
  module type LinkRelation =
    sig type t val to_string : GdataAtom.LinkRelation.t -> string end
  val find_url_generic :
    (module GdataAtom.LinkRelation with type t = 'a) ->
    '-> GdataAtom.Link.t list -> string
  module Rel :
    sig
      type t = [ `Alternate | `Edit | `EditMedia | `Self ]
      val to_string : [> GdataAtom.Rel.t ] -> string
    end
  val find_url : GdataAtom.Rel.t -> GdataAtom.Link.t list -> string
  val get_standard_prefix : string -> string
end