sig
  type oauth1_context = { token : string; secret : string; }
  val token : (GapiConversation.Session.oauth1_context, string) GapiLens.t
  val secret : (GapiConversation.Session.oauth1_context, string) GapiLens.t
  type oauth2_context = { oauth2_token : string; refresh_token : string; }
  val oauth2_token :
    (GapiConversation.Session.oauth2_context, string) GapiLens.t
  val refresh_token :
    (GapiConversation.Session.oauth2_context, string) GapiLens.t
  type auth_context =
      NoAuth
    | ClientLogin of string
    | OAuth1 of GapiConversation.Session.oauth1_context
    | OAuth2 of GapiConversation.Session.oauth2_context
  val no_auth :
    (GapiConversation.Session.auth_context, unit option) GapiLens.t
  val client_login :
    (GapiConversation.Session.auth_context, string option) GapiLens.t
  val oauth1 :
    (GapiConversation.Session.auth_context,
     GapiConversation.Session.oauth1_context option)
    GapiLens.t
  val oauth2 :
    (GapiConversation.Session.auth_context,
     GapiConversation.Session.oauth2_context option)
    GapiLens.t
  type t = {
    curl : [ `Created ] GapiCurl.t;
    config : GapiConfig.t;
    auth : GapiConversation.Session.auth_context;
    cookies : string list;
    etag : string;
  }
  val curl : (GapiConversation.Session.t, [ `Created ] GapiCurl.t) GapiLens.t
  val config : (GapiConversation.Session.t, GapiConfig.t) GapiLens.t
  val auth :
    (GapiConversation.Session.t, GapiConversation.Session.auth_context)
    GapiLens.t
  val cookies : (GapiConversation.Session.t, string list) GapiLens.t
  val etag : (GapiConversation.Session.t, string) GapiLens.t
end