sig
  module ClientLogin :
    sig
      type auth_token = string
      type captcha = { url : string; token : string; }
      val url : (GapiAuthResponse.ClientLogin.captcha, string) GapiLens.t
      val token : (GapiAuthResponse.ClientLogin.captcha, string) GapiLens.t
    end
  module OAuth1 :
    sig
      type request_token = {
        request_token : string;
        request_token_secret : string;
        callback_confirmed : bool;
      }
      val request_token :
        (GapiAuthResponse.OAuth1.request_token, string) GapiLens.t
      val request_token_secret :
        (GapiAuthResponse.OAuth1.request_token, string) GapiLens.t
      val callback_confirmed :
        (GapiAuthResponse.OAuth1.request_token, bool) GapiLens.t
      type auth_token = { auth_token : string; verifier : string; }
      val auth_token :
        (GapiAuthResponse.OAuth1.auth_token, string) GapiLens.t
      val verifier : (GapiAuthResponse.OAuth1.auth_token, string) GapiLens.t
      type access_token = {
        access_token : string;
        access_token_secret : string;
      }
      val access_token :
        (GapiAuthResponse.OAuth1.access_token, string) GapiLens.t
      val access_token_secret :
        (GapiAuthResponse.OAuth1.access_token, string) GapiLens.t
    end
  module AuthSub :
    sig
      type token_info = { target : string; scope : string; secure : bool; }
      val target : (GapiAuthResponse.AuthSub.token_info, string) GapiLens.t
      val scope : (GapiAuthResponse.AuthSub.token_info, string) GapiLens.t
      val secure : (GapiAuthResponse.AuthSub.token_info, bool) GapiLens.t
    end
  module OAuth2 :
    sig
      type auth_code = string
      type access_token = {
        access_token : string;
        token_type : string;
        expires_in : int;
        refresh_token : string;
      }
      val access_token :
        (GapiAuthResponse.OAuth2.access_token, string) GapiLens.t
      val token_type :
        (GapiAuthResponse.OAuth2.access_token, string) GapiLens.t
      val expires_in : (GapiAuthResponse.OAuth2.access_token, int) GapiLens.t
      val refresh_token :
        (GapiAuthResponse.OAuth2.access_token, string) GapiLens.t
    end
  type t =
      ClientLoginAuthToken of GapiAuthResponse.ClientLogin.auth_token
    | ClientLoginCaptcha of GapiAuthResponse.ClientLogin.captcha
    | OAuth1RequestToken of GapiAuthResponse.OAuth1.request_token
    | OAuth1AuthorizeToken of GapiAuthResponse.OAuth1.auth_token
    | OAuth1GetAccessToken of GapiAuthResponse.OAuth1.access_token
    | AuthSubTokenInfo of GapiAuthResponse.AuthSub.token_info
    | OAuth2AuthCode of GapiAuthResponse.OAuth2.auth_code
    | OAuth2AccessToken of GapiAuthResponse.OAuth2.access_token
  val client_login_auth_token :
    (GapiAuthResponse.t, GapiAuthResponse.ClientLogin.auth_token option)
    GapiLens.t
  val client_login_captcha :
    (GapiAuthResponse.t, GapiAuthResponse.ClientLogin.captcha option)
    GapiLens.t
  val oauth1_request_token :
    (GapiAuthResponse.t, GapiAuthResponse.OAuth1.request_token option)
    GapiLens.t
  val oauth1_authorize_token :
    (GapiAuthResponse.t, GapiAuthResponse.OAuth1.auth_token option)
    GapiLens.t
  val oauth1_get_access_token :
    (GapiAuthResponse.t, GapiAuthResponse.OAuth1.access_token option)
    GapiLens.t
  val auth_sub_token_info :
    (GapiAuthResponse.t, GapiAuthResponse.AuthSub.token_info option)
    GapiLens.t
  val oauth2_auth_code :
    (GapiAuthResponse.t, GapiAuthResponse.OAuth2.auth_code option) GapiLens.t
  val oauth2_access_token :
    (GapiAuthResponse.t, GapiAuthResponse.OAuth2.access_token option)
    GapiLens.t
end