sig
  module Source :
    sig
      type t = { title : string; url : string; }
      val title : (GapiCalendarV3Model.Event.Source.t, string) GapiLens.t
      val url : (GapiCalendarV3Model.Event.Source.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.Event.Source.t
      val render :
        GapiCalendarV3Model.Event.Source.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Event.Source.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Event.Source.t
    end
  module Reminders :
    sig
      type t = {
        overrides : GapiCalendarV3Model.EventReminder.t list;
        useDefault : bool;
      }
      val overrides :
        (GapiCalendarV3Model.Event.Reminders.t,
         GapiCalendarV3Model.EventReminder.t list)
        GapiLens.t
      val useDefault :
        (GapiCalendarV3Model.Event.Reminders.t, bool) GapiLens.t
      val empty : GapiCalendarV3Model.Event.Reminders.t
      val render :
        GapiCalendarV3Model.Event.Reminders.t ->
        GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Event.Reminders.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Event.Reminders.t
    end
  module Organizer :
    sig
      type t = {
        displayName : string;
        email : string;
        id : string;
        self : bool;
      }
      val displayName :
        (GapiCalendarV3Model.Event.Organizer.t, string) GapiLens.t
      val email : (GapiCalendarV3Model.Event.Organizer.t, string) GapiLens.t
      val id : (GapiCalendarV3Model.Event.Organizer.t, string) GapiLens.t
      val self : (GapiCalendarV3Model.Event.Organizer.t, bool) GapiLens.t
      val empty : GapiCalendarV3Model.Event.Organizer.t
      val render :
        GapiCalendarV3Model.Event.Organizer.t ->
        GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Event.Organizer.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Event.Organizer.t
    end
  module Gadget :
    sig
      type t = {
        display : string;
        height : int;
        iconLink : string;
        link : string;
        preferences : (string * string) list;
        title : string;
        _type : string;
        width : int;
      }
      val display : (GapiCalendarV3Model.Event.Gadget.t, string) GapiLens.t
      val height : (GapiCalendarV3Model.Event.Gadget.t, int) GapiLens.t
      val iconLink : (GapiCalendarV3Model.Event.Gadget.t, string) GapiLens.t
      val link : (GapiCalendarV3Model.Event.Gadget.t, string) GapiLens.t
      val preferences :
        (GapiCalendarV3Model.Event.Gadget.t, (string * string) list)
        GapiLens.t
      val title : (GapiCalendarV3Model.Event.Gadget.t, string) GapiLens.t
      val _type : (GapiCalendarV3Model.Event.Gadget.t, string) GapiLens.t
      val width : (GapiCalendarV3Model.Event.Gadget.t, int) GapiLens.t
      val empty : GapiCalendarV3Model.Event.Gadget.t
      val render :
        GapiCalendarV3Model.Event.Gadget.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Event.Gadget.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Event.Gadget.t
    end
  module ExtendedProperties :
    sig
      type t = {
        _private : (string * string) list;
        shared : (string * string) list;
      }
      val _private :
        (GapiCalendarV3Model.Event.ExtendedProperties.t,
         (string * string) list)
        GapiLens.t
      val shared :
        (GapiCalendarV3Model.Event.ExtendedProperties.t,
         (string * string) list)
        GapiLens.t
      val empty : GapiCalendarV3Model.Event.ExtendedProperties.t
      val render :
        GapiCalendarV3Model.Event.ExtendedProperties.t ->
        GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Event.ExtendedProperties.t ->
        GapiJson.json_data_model ->
        GapiCalendarV3Model.Event.ExtendedProperties.t
    end
  module Creator :
    sig
      type t = {
        displayName : string;
        email : string;
        id : string;
        self : bool;
      }
      val displayName :
        (GapiCalendarV3Model.Event.Creator.t, string) GapiLens.t
      val email : (GapiCalendarV3Model.Event.Creator.t, string) GapiLens.t
      val id : (GapiCalendarV3Model.Event.Creator.t, string) GapiLens.t
      val self : (GapiCalendarV3Model.Event.Creator.t, bool) GapiLens.t
      val empty : GapiCalendarV3Model.Event.Creator.t
      val render :
        GapiCalendarV3Model.Event.Creator.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Event.Creator.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Event.Creator.t
    end
  type t = {
    anyoneCanAddSelf : bool;
    attachments : GapiCalendarV3Model.EventAttachment.t list;
    attendees : GapiCalendarV3Model.EventAttendee.t list;
    attendeesOmitted : bool;
    colorId : string;
    created : GapiDate.t;
    creator : GapiCalendarV3Model.Event.Creator.t;
    description : string;
    _end : GapiCalendarV3Model.EventDateTime.t;
    endTimeUnspecified : bool;
    etag : string;
    extendedProperties : GapiCalendarV3Model.Event.ExtendedProperties.t;
    gadget : GapiCalendarV3Model.Event.Gadget.t;
    guestsCanInviteOthers : bool;
    guestsCanModify : bool;
    guestsCanSeeOtherGuests : bool;
    hangoutLink : string;
    htmlLink : string;
    iCalUID : string;
    id : string;
    kind : string;
    location : string;
    locked : bool;
    organizer : GapiCalendarV3Model.Event.Organizer.t;
    originalStartTime : GapiCalendarV3Model.EventDateTime.t;
    privateCopy : bool;
    recurrence : string list;
    recurringEventId : string;
    reminders : GapiCalendarV3Model.Event.Reminders.t;
    sequence : int;
    source : GapiCalendarV3Model.Event.Source.t;
    start : GapiCalendarV3Model.EventDateTime.t;
    status : string;
    summary : string;
    transparency : string;
    updated : GapiDate.t;
    visibility : string;
  }
  val anyoneCanAddSelf : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
  val attachments :
    (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.EventAttachment.t list)
    GapiLens.t
  val attendees :
    (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.EventAttendee.t list)
    GapiLens.t
  val attendeesOmitted : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
  val colorId : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val created : (GapiCalendarV3Model.Event.t, GapiDate.t) GapiLens.t
  val creator :
    (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.Event.Creator.t)
    GapiLens.t
  val description : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val _end :
    (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.EventDateTime.t)
    GapiLens.t
  val endTimeUnspecified : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
  val etag : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val extendedProperties :
    (GapiCalendarV3Model.Event.t,
     GapiCalendarV3Model.Event.ExtendedProperties.t)
    GapiLens.t
  val gadget :
    (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.Event.Gadget.t)
    GapiLens.t
  val guestsCanInviteOthers : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
  val guestsCanModify : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
  val guestsCanSeeOtherGuests :
    (GapiCalendarV3Model.Event.t, bool) GapiLens.t
  val hangoutLink : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val htmlLink : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val iCalUID : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val id : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val kind : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val location : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val locked : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
  val organizer :
    (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.Event.Organizer.t)
    GapiLens.t
  val originalStartTime :
    (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.EventDateTime.t)
    GapiLens.t
  val privateCopy : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
  val recurrence : (GapiCalendarV3Model.Event.t, string list) GapiLens.t
  val recurringEventId : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val reminders :
    (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.Event.Reminders.t)
    GapiLens.t
  val sequence : (GapiCalendarV3Model.Event.t, int) GapiLens.t
  val source :
    (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.Event.Source.t)
    GapiLens.t
  val start :
    (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.EventDateTime.t)
    GapiLens.t
  val status : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val summary : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val transparency : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val updated : (GapiCalendarV3Model.Event.t, GapiDate.t) GapiLens.t
  val visibility : (GapiCalendarV3Model.Event.t, string) GapiLens.t
  val empty : GapiCalendarV3Model.Event.t
  val render : GapiCalendarV3Model.Event.t -> GapiJson.json_data_model list
  val parse :
    GapiCalendarV3Model.Event.t ->
    GapiJson.json_data_model -> GapiCalendarV3Model.Event.t
  val to_data_model : GapiCalendarV3Model.Event.t -> GapiJson.json_data_model
  val of_data_model : GapiJson.json_data_model -> GapiCalendarV3Model.Event.t
end