sig
  type debug_function =
      Standard
    | Custom of (Curl.t -> Curl.curlDebugType -> string -> unit)
  type client_login_config = { username : string; password : string; }
  val username : (GapiConfig.client_login_config, string) GapiLens.t
  val password : (GapiConfig.client_login_config, string) GapiLens.t
  type oauth1_config = {
    signature_method : GapiCore.SignatureMethod.t;
    consumer_key : string;
    consumer_secret : string;
  }
  val signature_method :
    (GapiConfig.oauth1_config, GapiCore.SignatureMethod.t) GapiLens.t
  val consumer_key : (GapiConfig.oauth1_config, string) GapiLens.t
  val consumer_secret : (GapiConfig.oauth1_config, string) GapiLens.t
  type oauth2_config = {
    client_id : string;
    client_secret : string;
    refresh_access_token : (unit -> string) option;
  }
  val client_id : (GapiConfig.oauth2_config, string) GapiLens.t
  val client_secret : (GapiConfig.oauth2_config, string) GapiLens.t
  val refresh_access_token :
    (GapiConfig.oauth2_config, (unit -> string) option) GapiLens.t
  type auth_config =
      NoAuth
    | ClientLogin of GapiConfig.client_login_config
    | OAuth1 of GapiConfig.oauth1_config
    | OAuth2 of GapiConfig.oauth2_config
  type t = {
    application_name : string;
    debug : GapiConfig.debug_function option;
    timeout : int option;
    connect_timeout : int option;
    compress : bool;
    auth : GapiConfig.auth_config;
    upload_chunk_size : int;
    max_send_speed : int64;
    max_recv_speed : int64;
    low_speed_limit : int;
    low_speed_time : int;
    curl_no_signal : bool;
  }
  val application_name : (GapiConfig.t, string) GapiLens.t
  val debug : (GapiConfig.t, GapiConfig.debug_function option) GapiLens.t
  val timeout : (GapiConfig.t, int option) GapiLens.t
  val connect_timeout : (GapiConfig.t, int option) GapiLens.t
  val compress : (GapiConfig.t, bool) GapiLens.t
  val auth : (GapiConfig.t, GapiConfig.auth_config) GapiLens.t
  val upload_chunk_size : (GapiConfig.t, int) GapiLens.t
  val max_send_speed : (GapiConfig.t, int64) GapiLens.t
  val max_recv_speed : (GapiConfig.t, int64) GapiLens.t
  val low_speed_limit : (GapiConfig.t, int) GapiLens.t
  val low_speed_time : (GapiConfig.t, int) GapiLens.t
  val default : GapiConfig.t
  val default_debug : GapiConfig.t
end