text: "use strict";
  // Copyright 2020 Google LLC
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //    http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.compute_v1 = void 0;
  /* eslint-disable @typescript-eslint/no-explicit-any */
  /* eslint-disable @typescript-eslint/class-name-casing */
  /* eslint-disable @typescript-eslint/no-unused-vars */
  /* eslint-disable @typescript-eslint/no-empty-interface */
  /* eslint-disable @typescript-eslint/no-namespace */
  /* eslint-disable no-irregular-whitespace */
  const googleapis_common_1 = require("googleapis-common");
  var compute_v1;
  (function (compute_v1) {
      /**
       * Compute Engine API
       *
       * Creates and runs virtual machines on Google Cloud Platform.
       *
       * @example
       * ```js
       * const {google} = require('googleapis');
       * const compute = google.compute('v1');
       * ```
       */
      class Compute {
          constructor(options, google) {
              this.context = {
                  _options: options || {},
                  google,
              };
              this.acceleratorTypes = new Resource$Acceleratortypes(this.context);
              this.addresses = new Resource$Addresses(this.context);
              this.autoscalers = new Resource$Autoscalers(this.context);
              this.backendBuckets = new Resource$Backendbuckets(this.context);
              this.backendServices = new Resource$Backendservices(this.context);
              this.disks = new Resource$Disks(this.context);
              this.diskTypes = new Resource$Disktypes(this.context);
              this.externalVpnGateways = new Resource$Externalvpngateways(this.context);
              this.firewallPolicies = new Resource$Firewallpolicies(this.context);
              this.firewalls = new Resource$Firewalls(this.context);
              this.forwardingRules = new Resource$Forwardingrules(this.context);
              this.globalAddresses = new Resource$Globaladdresses(this.context);
              this.globalForwardingRules = new Resource$Globalforwardingrules(this.context);
              this.globalNetworkEndpointGroups =
                  new Resource$Globalnetworkendpointgroups(this.context);
              this.globalOperations = new Resource$Globaloperations(this.context);
              this.globalOrganizationOperations =
                  new Resource$Globalorganizationoperations(this.context);
              this.globalPublicDelegatedPrefixes =
                  new Resource$Globalpublicdelegatedprefixes(this.context);
              this.healthChecks = new Resource$Healthchecks(this.context);
              this.httpHealthChecks = new Resource$Httphealthchecks(this.context);
              this.httpsHealthChecks = new Resource$Httpshealthchecks(this.context);
              this.imageFamilyViews = new Resource$Imagefamilyviews(this.context);
              this.images = new Resource$Images(this.context);
              this.instanceGroupManagers = new Resource$Instancegroupmanagers(this.context);
              this.instanceGroups = new Resource$Instancegroups(this.context);
              this.instances = new Resource$Instances(this.context);
              this.instanceTemplates = new Resource$Instancetemplates(this.context);
              this.interconnectAttachments = new Resource$Interconnectattachments(this.context);
              this.interconnectLocations = new Resource$Interconnectlocations(this.context);
              this.interconnects = new Resource$Interconnects(this.context);
              this.licenseCodes = new Resource$Licensecodes(this.context);
              this.licenses = new Resource$Licenses(this.context);
              this.machineTypes = new Resource$Machinetypes(this.context);
              this.networkEndpointGroups = new Resource$Networkendpointgroups(this.context);
              this.networks = new Resource$Networks(this.context);
              this.nodeGroups = new Resource$Nodegroups(this.context);
              this.nodeTemplates = new Resource$Nodetemplates(this.context);
              this.nodeTypes = new Resource$Nodetypes(this.context);
              this.packetMirrorings = new Resource$Packetmirrorings(this.context);
              this.projects = new Resource$Projects(this.context);
              this.publicAdvertisedPrefixes = new Resource$Publicadvertisedprefixes(this.context);
              this.publicDelegatedPrefixes = new Resource$Publicdelegatedprefixes(this.context);
              this.regionAutoscalers = new Resource$Regionautoscalers(this.context);
              this.regionBackendServices = new Resource$Regionbackendservices(this.context);
              this.regionCommitments = new Resource$Regioncommitments(this.context);
              this.regionDisks = new Resource$Regiondisks(this.context);
              this.regionDiskTypes = new Resource$Regiondisktypes(this.context);
              this.regionHealthChecks = new Resource$Regionhealthchecks(this.context);
              this.regionHealthCheckServices = new Resource$Regionhealthcheckservices(this.context);
              this.regionInstanceGroupManagers =
                  new Resource$Regioninstancegroupmanagers(this.context);
              this.regionInstanceGroups = new Resource$Regioninstancegroups(this.context);
              this.regionInstances = new Resource$Regioninstances(this.context);
              this.regionNetworkEndpointGroups =
                  new Resource$Regionnetworkendpointgroups(this.context);
              this.regionNotificationEndpoints =
                  new Resource$Regionnotificationendpoints(this.context);
              this.regionOperations = new Resource$Regionoperations(this.context);
              this.regions = new Resource$Regions(this.context);
              this.regionSslCertificates = new Resource$Regionsslcertificates(this.context);
              this.regionTargetHttpProxies = new Resource$Regiontargethttpproxies(this.context);
              this.regionTargetHttpsProxies = new Resource$Regiontargethttpsproxies(this.context);
              this.regionUrlMaps = new Resource$Regionurlmaps(this.context);
              this.reservations = new Resource$Reservations(this.context);
              this.resourcePolicies = new Resource$Resourcepolicies(this.context);
              this.routers = new Resource$Routers(this.context);
              this.routes = new Resource$Routes(this.context);
              this.securityPolicies = new Resource$Securitypolicies(this.context);
              this.serviceAttachments = new Resource$Serviceattachments(this.context);
              this.snapshots = new Resource$Snapshots(this.context);
              this.sslCertificates = new Resource$Sslcertificates(this.context);
              this.sslPolicies = new Resource$Sslpolicies(this.context);
              this.subnetworks = new Resource$Subnetworks(this.context);
              this.targetGrpcProxies = new Resource$Targetgrpcproxies(this.context);
              this.targetHttpProxies = new Resource$Targethttpproxies(this.context);
              this.targetHttpsProxies = new Resource$Targethttpsproxies(this.context);
              this.targetInstances = new Resource$Targetinstances(this.context);
              this.targetPools = new Resource$Targetpools(this.context);
              this.targetSslProxies = new Resource$Targetsslproxies(this.context);
              this.targetTcpProxies = new Resource$Targettcpproxies(this.context);
              this.targetVpnGateways = new Resource$Targetvpngateways(this.context);
              this.urlMaps = new Resource$Urlmaps(this.context);
              this.vpnGateways = new Resource$Vpngateways(this.context);
              this.vpnTunnels = new Resource$Vpntunnels(this.context);
              this.zoneOperations = new Resource$Zoneoperations(this.context);
              this.zones = new Resource$Zones(this.context);
          }
      }
      compute_v1.Compute = Compute;
      class Resource$Acceleratortypes {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/acceleratorTypes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/acceleratorTypes/{acceleratorType}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'acceleratorType'],
                  pathParams: ['acceleratorType', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/acceleratorTypes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Acceleratortypes = Resource$Acceleratortypes;
      class Resource$Addresses {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/addresses').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/addresses/{address}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'address'],
                  pathParams: ['address', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/addresses/{address}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'address'],
                  pathParams: ['address', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/addresses').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/addresses').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Addresses = Resource$Addresses;
      class Resource$Autoscalers {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/autoscalers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers/{autoscaler}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'autoscaler'],
                  pathParams: ['autoscaler', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers/{autoscaler}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'autoscaler'],
                  pathParams: ['autoscaler', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Autoscalers = Resource$Autoscalers;
      class Resource$Backendbuckets {
          constructor(context) {
              this.context = context;
          }
          addSignedUrlKey(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}/addSignedUrlKey').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteSignedUrlKey(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}/deleteSignedUrlKey').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket', 'keyName'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/backendBuckets').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/backendBuckets').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Backendbuckets = Resource$Backendbuckets;
      class Resource$Backendservices {
          constructor(context) {
              this.context = context;
          }
          addSignedUrlKey(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}/addSignedUrlKey').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/backendServices').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteSignedUrlKey(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}/deleteSignedUrlKey').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService', 'keyName'],
                  pathParams: ['backendService', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getHealth(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}/getHealth').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/backendServices').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/backendServices').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setSecurityPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}/setSecurityPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Backendservices = Resource$Backendservices;
      class Resource$Disks {
          constructor(context) {
              this.context = context;
          }
          addResourcePolicies(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/addResourcePolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'disk'],
                  pathParams: ['disk', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/disks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          createSnapshot(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/createSnapshot').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'disk'],
                  pathParams: ['disk', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{disk}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'disk'],
                  pathParams: ['disk', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{disk}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'disk'],
                  pathParams: ['disk', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones/{zone}/disks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones/{zone}/disks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeResourcePolicies(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/removeResourcePolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'disk'],
                  pathParams: ['disk', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          resize(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/resize').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'disk'],
                  pathParams: ['disk', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/setLabels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Disks = Resource$Disks;
      class Resource$Disktypes {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/diskTypes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/diskTypes/{diskType}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'diskType'],
                  pathParams: ['diskType', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones/{zone}/diskTypes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Disktypes = Resource$Disktypes;
      class Resource$Externalvpngateways {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/externalVpnGateways/{externalVpnGateway}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'externalVpnGateway'],
                  pathParams: ['externalVpnGateway', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/externalVpnGateways/{externalVpnGateway}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'externalVpnGateway'],
                  pathParams: ['externalVpnGateway', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/externalVpnGateways').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/externalVpnGateways').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/externalVpnGateways/{resource}/setLabels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/externalVpnGateways/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Externalvpngateways = Resource$Externalvpngateways;
      class Resource$Firewallpolicies {
          constructor(context) {
              this.context = context;
          }
          addAssociation(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}/addAssociation').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          addRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}/addRule').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          cloneRules(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}/cloneRules').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getAssociation(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}/getAssociation').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['resource'],
                  pathParams: ['resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}/getRule').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/locations/global/firewallPolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: [],
                  pathParams: [],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/locations/global/firewallPolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: [],
                  pathParams: [],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listAssociations(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/listAssociations').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: [],
                  pathParams: [],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          move(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}/move').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patchRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}/patchRule').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeAssociation(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}/removeAssociation').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{firewallPolicy}/removeRule').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['firewallPolicy'],
                  pathParams: ['firewallPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['resource'],
                  pathParams: ['resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/locations/global/firewallPolicies/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['resource'],
                  pathParams: ['resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Firewallpolicies = Resource$Firewallpolicies;
      class Resource$Firewalls {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/firewalls/{firewall}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'firewall'],
                  pathParams: ['firewall', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/firewalls/{firewall}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'firewall'],
                  pathParams: ['firewall', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/firewalls').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/firewalls').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/firewalls/{firewall}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'firewall'],
                  pathParams: ['firewall', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/firewalls/{firewall}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'firewall'],
                  pathParams: ['firewall', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Firewalls = Resource$Firewalls;
      class Resource$Forwardingrules {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/forwardingRules').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwardingRule}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwardingRule}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwardingRule}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules/{resource}/setLabels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setTarget(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwardingRule}/setTarget').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Forwardingrules = Resource$Forwardingrules;
      class Resource$Globaladdresses {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/addresses/{address}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'address'],
                  pathParams: ['address', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/addresses/{address}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'address'],
                  pathParams: ['address', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/addresses').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/addresses').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Globaladdresses = Resource$Globaladdresses;
      class Resource$Globalforwardingrules {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/forwardingRules/{forwardingRule}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/forwardingRules/{forwardingRule}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/forwardingRules').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/forwardingRules').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/forwardingRules/{forwardingRule}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/forwardingRules/{resource}/setLabels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setTarget(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/forwardingRules/{forwardingRule}/setTarget').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Globalforwardingrules = Resource$Globalforwardingrules;
      class Resource$Globalnetworkendpointgroups {
          constructor(context) {
              this.context = context;
          }
          attachNetworkEndpoints(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networkEndpointGroups/{networkEndpointGroup}/attachNetworkEndpoints').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networkEndpointGroups/{networkEndpointGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          detachNetworkEndpoints(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networkEndpointGroups/{networkEndpointGroup}/detachNetworkEndpoints').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networkEndpointGroups/{networkEndpointGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networkEndpointGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networkEndpointGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listNetworkEndpoints(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networkEndpointGroups/{networkEndpointGroup}/listNetworkEndpoints').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Globalnetworkendpointgroups = Resource$Globalnetworkendpointgroups;
      class Resource$Globaloperations {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/operations').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/operations/{operation}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'operation'],
                  pathParams: ['operation', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/operations/{operation}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'operation'],
                  pathParams: ['operation', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/operations').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          wait(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/operations/{operation}/wait').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'operation'],
                  pathParams: ['operation', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Globaloperations = Resource$Globaloperations;
      class Resource$Globalorganizationoperations {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/locations/global/operations/{operation}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['operation'],
                  pathParams: ['operation'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/locations/global/operations/{operation}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['operation'],
                  pathParams: ['operation'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/locations/global/operations').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: [],
                  pathParams: [],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Globalorganizationoperations = Resource$Globalorganizationoperations;
      class Resource$Globalpublicdelegatedprefixes {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/publicDelegatedPrefixes/{publicDelegatedPrefix}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'publicDelegatedPrefix'],
                  pathParams: ['project', 'publicDelegatedPrefix'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/publicDelegatedPrefixes/{publicDelegatedPrefix}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'publicDelegatedPrefix'],
                  pathParams: ['project', 'publicDelegatedPrefix'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/publicDelegatedPrefixes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/publicDelegatedPrefixes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/publicDelegatedPrefixes/{publicDelegatedPrefix}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'publicDelegatedPrefix'],
                  pathParams: ['project', 'publicDelegatedPrefix'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Globalpublicdelegatedprefixes = Resource$Globalpublicdelegatedprefixes;
      class Resource$Healthchecks {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/healthChecks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/healthChecks/{healthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'healthCheck'],
                  pathParams: ['healthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/healthChecks/{healthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'healthCheck'],
                  pathParams: ['healthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/healthChecks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/healthChecks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/healthChecks/{healthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'healthCheck'],
                  pathParams: ['healthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/healthChecks/{healthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'healthCheck'],
                  pathParams: ['healthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Healthchecks = Resource$Healthchecks;
      class Resource$Httphealthchecks {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpHealthChecks/{httpHealthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'httpHealthCheck'],
                  pathParams: ['httpHealthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpHealthChecks/{httpHealthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'httpHealthCheck'],
                  pathParams: ['httpHealthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/httpHealthChecks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/httpHealthChecks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpHealthChecks/{httpHealthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'httpHealthCheck'],
                  pathParams: ['httpHealthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpHealthChecks/{httpHealthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'httpHealthCheck'],
                  pathParams: ['httpHealthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Httphealthchecks = Resource$Httphealthchecks;
      class Resource$Httpshealthchecks {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'httpsHealthCheck'],
                  pathParams: ['httpsHealthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'httpsHealthCheck'],
                  pathParams: ['httpsHealthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'httpsHealthCheck'],
                  pathParams: ['httpsHealthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'httpsHealthCheck'],
                  pathParams: ['httpsHealthCheck', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Httpshealthchecks = Resource$Httpshealthchecks;
      class Resource$Imagefamilyviews {
          constructor(context) {
              this.context = context;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/imageFamilyViews/{family}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'family'],
                  pathParams: ['family', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Imagefamilyviews = Resource$Imagefamilyviews;
      class Resource$Images {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/images/{image}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'image'],
                  pathParams: ['image', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deprecate(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/images/{image}/deprecate').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'image'],
                  pathParams: ['image', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/images/{image}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'image'],
                  pathParams: ['image', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getFromFamily(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/images/family/{family}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'family'],
                  pathParams: ['family', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/images/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/images').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/images').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/images/{image}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'image'],
                  pathParams: ['image', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/images/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/images/{resource}/setLabels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/images/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Images = Resource$Images;
      class Resource$Instancegroupmanagers {
          constructor(context) {
              this.context = context;
          }
          abandonInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/abandonInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/instanceGroupManagers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          applyUpdatesToInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/applyUpdatesToInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          createInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/createInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deleteInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deletePerInstanceConfigs(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deletePerInstanceConfigs').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listErrors(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listErrors').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listManagedInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listPerInstanceConfigs(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listPerInstanceConfigs').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patchPerInstanceConfigs(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/patchPerInstanceConfigs').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          recreateInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/recreateInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          resize(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resize').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager', 'size'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setInstanceTemplate(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setTargetPools(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setTargetPools').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          updatePerInstanceConfigs(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/updatePerInstanceConfigs').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Instancegroupmanagers = Resource$Instancegroupmanagers;
      class Resource$Instancegroups {
          constructor(context) {
              this.context = context;
          }
          addInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/instanceGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/listInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/removeInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setNamedPorts(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/setNamedPorts').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Instancegroups = Resource$Instancegroups;
      class Resource$Instances {
          constructor(context) {
              this.context = context;
          }
          addAccessConfig(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/addAccessConfig').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance', 'networkInterface'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          addResourcePolicies(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/addResourcePolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/instances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          attachDisk(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/attachDisk').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          bulkInsert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/bulkInsert').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteAccessConfig(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/deleteAccessConfig').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: [
                      'project',
                      'zone',
                      'instance',
                      'accessConfig',
                      'networkInterface',
                  ],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          detachDisk(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/detachDisk').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance', 'deviceName'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getEffectiveFirewalls(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getEffectiveFirewalls').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance', 'networkInterface'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getGuestAttributes(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getGuestAttributes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getScreenshot(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/screenshot').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getSerialPortOutput(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/serialPort').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getShieldedInstanceIdentity(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getShieldedInstanceIdentity').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones/{zone}/instances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones/{zone}/instances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listReferrers(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/referrers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeResourcePolicies(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/removeResourcePolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          reset(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/reset').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          sendDiagnosticInterrupt(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/sendDiagnosticInterrupt').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setDeletionProtection(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/setDeletionProtection').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setDiskAutoDelete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: [
                      'project',
                      'zone',
                      'instance',
                      'autoDelete',
                      'deviceName',
                  ],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setLabels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setMachineResources(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineResources').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setMachineType(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineType').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setMetadata(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMetadata').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setMinCpuPlatform(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setScheduling(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setScheduling').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setServiceAccount(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setServiceAccount').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setShieldedInstanceIntegrityPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setShieldedInstanceIntegrityPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setTags(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setTags').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          simulateMaintenanceEvent(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/simulateMaintenanceEvent').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          start(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/start').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          startWithEncryptionKey(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          stop(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/stop').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          updateAccessConfig(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateAccessConfig').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance', 'networkInterface'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          updateDisplayDevice(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateDisplayDevice').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          updateNetworkInterface(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateNetworkInterface').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance', 'networkInterface'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          updateShieldedInstanceConfig(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateShieldedInstanceConfig').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Instances = Resource$Instances;
      class Resource$Instancetemplates {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/instanceTemplates/{instanceTemplate}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'instanceTemplate'],
                  pathParams: ['instanceTemplate', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/instanceTemplates/{instanceTemplate}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'instanceTemplate'],
                  pathParams: ['instanceTemplate', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/instanceTemplates/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/instanceTemplates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/instanceTemplates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/instanceTemplates/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/instanceTemplates/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Instancetemplates = Resource$Instancetemplates;
      class Resource$Interconnectattachments {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/interconnectAttachments').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'interconnectAttachment'],
                  pathParams: ['interconnectAttachment', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'interconnectAttachment'],
                  pathParams: ['interconnectAttachment', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/interconnectAttachments').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/interconnectAttachments').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'interconnectAttachment'],
                  pathParams: ['interconnectAttachment', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Interconnectattachments = Resource$Interconnectattachments;
      class Resource$Interconnectlocations {
          constructor(context) {
              this.context = context;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnectLocations/{interconnectLocation}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'interconnectLocation'],
                  pathParams: ['interconnectLocation', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnectLocations').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Interconnectlocations = Resource$Interconnectlocations;
      class Resource$Interconnects {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnects/{interconnect}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'interconnect'],
                  pathParams: ['interconnect', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnects/{interconnect}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'interconnect'],
                  pathParams: ['interconnect', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getDiagnostics(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnects/{interconnect}/getDiagnostics').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'interconnect'],
                  pathParams: ['interconnect', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/interconnects').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/interconnects').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnects/{interconnect}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'interconnect'],
                  pathParams: ['interconnect', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Interconnects = Resource$Interconnects;
      class Resource$Licensecodes {
          constructor(context) {
              this.context = context;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenseCodes/{licenseCode}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'licenseCode'],
                  pathParams: ['licenseCode', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenseCodes/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Licensecodes = Resource$Licensecodes;
      class Resource$Licenses {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenses/{license}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'license'],
                  pathParams: ['license', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenses/{license}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'license'],
                  pathParams: ['license', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenses/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/licenses').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/licenses').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenses/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenses/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Licenses = Resource$Licenses;
      class Resource$Machinetypes {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/machineTypes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/machineTypes/{machineType}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'machineType'],
                  pathParams: ['machineType', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/machineTypes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Machinetypes = Resource$Machinetypes;
      class Resource$Networkendpointgroups {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/networkEndpointGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          attachNetworkEndpoints(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/attachNetworkEndpoints').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          detachNetworkEndpoints(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/detachNetworkEndpoints').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listNetworkEndpoints(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/listNetworkEndpoints').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Networkendpointgroups = Resource$Networkendpointgroups;
      class Resource$Networks {
          constructor(context) {
              this.context = context;
          }
          addPeering(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}/addPeering').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getEffectiveFirewalls(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}/getEffectiveFirewalls').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/networks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/networks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listPeeringRoutes(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}/listPeeringRoutes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removePeering(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}/removePeering').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          switchToCustomMode(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}/switchToCustomMode').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          updatePeering(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}/updatePeering').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Networks = Resource$Networks;
      class Resource$Nodegroups {
          constructor(context) {
              this.context = context;
          }
          addNodes(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/addNodes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/nodeGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteNodes(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/deleteNodes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones/{zone}/nodeGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'initialNodeCount'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones/{zone}/nodeGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listNodes(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/listNodes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setNodeTemplate(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/setNodeTemplate').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Nodegroups = Resource$Nodegroups;
      class Resource$Nodetemplates {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/nodeTemplates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{nodeTemplate}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'nodeTemplate'],
                  pathParams: ['nodeTemplate', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{nodeTemplate}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'nodeTemplate'],
                  pathParams: ['nodeTemplate', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/nodeTemplates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/nodeTemplates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Nodetemplates = Resource$Nodetemplates;
      class Resource$Nodetypes {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/nodeTypes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeTypes/{nodeType}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeType'],
                  pathParams: ['nodeType', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones/{zone}/nodeTypes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Nodetypes = Resource$Nodetypes;
      class Resource$Packetmirrorings {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/packetMirrorings').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/packetMirrorings/{packetMirroring}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'packetMirroring'],
                  pathParams: ['packetMirroring', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/packetMirrorings/{packetMirroring}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'packetMirroring'],
                  pathParams: ['packetMirroring', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/packetMirrorings').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/packetMirrorings').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/packetMirrorings/{packetMirroring}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'packetMirroring'],
                  pathParams: ['packetMirroring', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/packetMirrorings/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Packetmirrorings = Resource$Packetmirrorings;
      class Resource$Projects {
          constructor(context) {
              this.context = context;
          }
          disableXpnHost(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/disableXpnHost').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          disableXpnResource(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/disableXpnResource').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          enableXpnHost(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/enableXpnHost').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          enableXpnResource(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/enableXpnResource').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getXpnHost(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/getXpnHost').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getXpnResources(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/getXpnResources').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listXpnHosts(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/listXpnHosts').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          moveDisk(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/moveDisk').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          moveInstance(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/moveInstance').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setCommonInstanceMetadata(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/setCommonInstanceMetadata').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setDefaultNetworkTier(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/setDefaultNetworkTier').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setUsageExportBucket(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/setUsageExportBucket').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Projects = Resource$Projects;
      class Resource$Publicadvertisedprefixes {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/publicAdvertisedPrefixes/{publicAdvertisedPrefix}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'publicAdvertisedPrefix'],
                  pathParams: ['project', 'publicAdvertisedPrefix'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/publicAdvertisedPrefixes/{publicAdvertisedPrefix}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'publicAdvertisedPrefix'],
                  pathParams: ['project', 'publicAdvertisedPrefix'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/publicAdvertisedPrefixes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/publicAdvertisedPrefixes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/publicAdvertisedPrefixes/{publicAdvertisedPrefix}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'publicAdvertisedPrefix'],
                  pathParams: ['project', 'publicAdvertisedPrefix'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Publicadvertisedprefixes = Resource$Publicadvertisedprefixes;
      class Resource$Publicdelegatedprefixes {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/publicDelegatedPrefixes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/publicDelegatedPrefixes/{publicDelegatedPrefix}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'publicDelegatedPrefix'],
                  pathParams: ['project', 'publicDelegatedPrefix', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/publicDelegatedPrefixes/{publicDelegatedPrefix}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'publicDelegatedPrefix'],
                  pathParams: ['project', 'publicDelegatedPrefix', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/publicDelegatedPrefixes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/publicDelegatedPrefixes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/publicDelegatedPrefixes/{publicDelegatedPrefix}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'publicDelegatedPrefix'],
                  pathParams: ['project', 'publicDelegatedPrefix', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Publicdelegatedprefixes = Resource$Publicdelegatedprefixes;
      class Resource$Regionautoscalers {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers/{autoscaler}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'autoscaler'],
                  pathParams: ['autoscaler', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers/{autoscaler}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'autoscaler'],
                  pathParams: ['autoscaler', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionautoscalers = Resource$Regionautoscalers;
      class Resource$Regionbackendservices {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'backendService'],
                  pathParams: ['backendService', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'backendService'],
                  pathParams: ['backendService', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getHealth(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}/getHealth').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'backendService'],
                  pathParams: ['backendService', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'backendService'],
                  pathParams: ['backendService', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'backendService'],
                  pathParams: ['backendService', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionbackendservices = Resource$Regionbackendservices;
      class Resource$Regioncommitments {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/commitments').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/commitments/{commitment}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'commitment'],
                  pathParams: ['commitment', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/commitments').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/commitments').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regioncommitments = Resource$Regioncommitments;
      class Resource$Regiondisks {
          constructor(context) {
              this.context = context;
          }
          addResourcePolicies(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{disk}/addResourcePolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'disk'],
                  pathParams: ['disk', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          createSnapshot(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{disk}/createSnapshot').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'disk'],
                  pathParams: ['disk', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{disk}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'disk'],
                  pathParams: ['disk', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{disk}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'disk'],
                  pathParams: ['disk', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/regions/{region}/disks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/regions/{region}/disks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeResourcePolicies(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{disk}/removeResourcePolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'disk'],
                  pathParams: ['disk', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          resize(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{disk}/resize').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'disk'],
                  pathParams: ['disk', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{resource}/setLabels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regiondisks = Resource$Regiondisks;
      class Resource$Regiondisktypes {
          constructor(context) {
              this.context = context;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/diskTypes/{diskType}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'diskType'],
                  pathParams: ['diskType', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/diskTypes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regiondisktypes = Resource$Regiondisktypes;
      class Resource$Regionhealthchecks {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/healthChecks/{healthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'healthCheck'],
                  pathParams: ['healthCheck', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/healthChecks/{healthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'healthCheck'],
                  pathParams: ['healthCheck', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/healthChecks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/healthChecks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/healthChecks/{healthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'healthCheck'],
                  pathParams: ['healthCheck', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/healthChecks/{healthCheck}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'healthCheck'],
                  pathParams: ['healthCheck', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionhealthchecks = Resource$Regionhealthchecks;
      class Resource$Regionhealthcheckservices {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/healthCheckServices/{healthCheckService}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'healthCheckService'],
                  pathParams: ['healthCheckService', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/healthCheckServices/{healthCheckService}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'healthCheckService'],
                  pathParams: ['healthCheckService', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/healthCheckServices').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/healthCheckServices').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/healthCheckServices/{healthCheckService}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'healthCheckService'],
                  pathParams: ['healthCheckService', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionhealthcheckservices = Resource$Regionhealthcheckservices;
      class Resource$Regioninstancegroupmanagers {
          constructor(context) {
              this.context = context;
          }
          abandonInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          applyUpdatesToInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/applyUpdatesToInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          createInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/createInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deleteInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deletePerInstanceConfigs(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deletePerInstanceConfigs').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listErrors(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listErrors').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listManagedInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listPerInstanceConfigs(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listPerInstanceConfigs').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patchPerInstanceConfigs(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/patchPerInstanceConfigs').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          recreateInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/recreateInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          resize(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/resize').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager', 'size'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setInstanceTemplate(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setTargetPools(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setTargetPools').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          updatePerInstanceConfigs(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/updatePerInstanceConfigs').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regioninstancegroupmanagers = Resource$Regioninstancegroupmanagers;
      class Resource$Regioninstancegroups {
          constructor(context) {
              this.context = context;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroups/{instanceGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroups/{instanceGroup}/listInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setNamedPorts(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroups/{instanceGroup}/setNamedPorts').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regioninstancegroups = Resource$Regioninstancegroups;
      class Resource$Regioninstances {
          constructor(context) {
              this.context = context;
          }
          bulkInsert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instances/bulkInsert').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regioninstances = Resource$Regioninstances;
      class Resource$Regionnetworkendpointgroups {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/networkEndpointGroups/{networkEndpointGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/networkEndpointGroups/{networkEndpointGroup}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'networkEndpointGroup'],
                  pathParams: ['networkEndpointGroup', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/networkEndpointGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/networkEndpointGroups').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionnetworkendpointgroups = Resource$Regionnetworkendpointgroups;
      class Resource$Regionnotificationendpoints {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/notificationEndpoints/{notificationEndpoint}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'notificationEndpoint'],
                  pathParams: ['notificationEndpoint', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/notificationEndpoints/{notificationEndpoint}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'notificationEndpoint'],
                  pathParams: ['notificationEndpoint', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/notificationEndpoints').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/notificationEndpoints').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionnotificationendpoints = Resource$Regionnotificationendpoints;
      class Resource$Regionoperations {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/operations/{operation}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'operation'],
                  pathParams: ['operation', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/operations/{operation}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'operation'],
                  pathParams: ['operation', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/operations').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          wait(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/operations/{operation}/wait').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'operation'],
                  pathParams: ['operation', 'project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionoperations = Resource$Regionoperations;
      class Resource$Regions {
          constructor(context) {
              this.context = context;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/regions/{region}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/regions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regions = Resource$Regions;
      class Resource$Regionsslcertificates {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/sslCertificates/{sslCertificate}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'sslCertificate'],
                  pathParams: ['project', 'region', 'sslCertificate'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/sslCertificates/{sslCertificate}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'sslCertificate'],
                  pathParams: ['project', 'region', 'sslCertificate'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/sslCertificates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/sslCertificates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionsslcertificates = Resource$Regionsslcertificates;
      class Resource$Regiontargethttpproxies {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetHttpProxy'],
                  pathParams: ['project', 'region', 'targetHttpProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetHttpProxy'],
                  pathParams: ['project', 'region', 'targetHttpProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetHttpProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetHttpProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setUrlMap(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}/setUrlMap').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetHttpProxy'],
                  pathParams: ['project', 'region', 'targetHttpProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regiontargethttpproxies = Resource$Regiontargethttpproxies;
      class Resource$Regiontargethttpsproxies {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetHttpsProxy'],
                  pathParams: ['project', 'region', 'targetHttpsProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetHttpsProxy'],
                  pathParams: ['project', 'region', 'targetHttpsProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setSslCertificates(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetHttpsProxy'],
                  pathParams: ['project', 'region', 'targetHttpsProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setUrlMap(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetHttpsProxy'],
                  pathParams: ['project', 'region', 'targetHttpsProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regiontargethttpsproxies = Resource$Regiontargethttpsproxies;
      class Resource$Regionurlmaps {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/urlMaps/{urlMap}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'urlMap'],
                  pathParams: ['project', 'region', 'urlMap'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/urlMaps/{urlMap}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'urlMap'],
                  pathParams: ['project', 'region', 'urlMap'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/urlMaps').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/urlMaps').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/urlMaps/{urlMap}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'urlMap'],
                  pathParams: ['project', 'region', 'urlMap'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/urlMaps/{urlMap}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'urlMap'],
                  pathParams: ['project', 'region', 'urlMap'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          validate(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/urlMaps/{urlMap}/validate').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'urlMap'],
                  pathParams: ['project', 'region', 'urlMap'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionurlmaps = Resource$Regionurlmaps;
      class Resource$Reservations {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/reservations').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/reservations/{reservation}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'reservation'],
                  pathParams: ['project', 'reservation', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/reservations/{reservation}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'reservation'],
                  pathParams: ['project', 'reservation', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/reservations/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/reservations').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/reservations').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          resize(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/reservations/{reservation}/resize').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'reservation'],
                  pathParams: ['project', 'reservation', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/reservations/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/reservations/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Reservations = Resource$Reservations;
      class Resource$Resourcepolicies {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/resourcePolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/resourcePolicies/{resourcePolicy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resourcePolicy'],
                  pathParams: ['project', 'region', 'resourcePolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/resourcePolicies/{resourcePolicy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resourcePolicy'],
                  pathParams: ['project', 'region', 'resourcePolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/resourcePolicies/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/resourcePolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/resourcePolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/resourcePolicies/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/resourcePolicies/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Resourcepolicies = Resource$Resourcepolicies;
      class Resource$Routers {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/routers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getNatMappingInfo(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}/getNatMappingInfo').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getRouterStatus(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}/getRouterStatus').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          preview(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}/preview').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Routers = Resource$Routers;
      class Resource$Routes {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/routes/{route}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'route'],
                  pathParams: ['project', 'route'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/routes/{route}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'route'],
                  pathParams: ['project', 'route'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/routes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/routes').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Routes = Resource$Routes;
      class Resource$Securitypolicies {
          constructor(context) {
              this.context = context;
          }
          addRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}/addRule').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}/getRule').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/securityPolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/securityPolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listPreconfiguredExpressionSets(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params =
                      {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/listPreconfiguredExpressionSets').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patchRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}/patchRule').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}/removeRule').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Securitypolicies = Resource$Securitypolicies;
      class Resource$Serviceattachments {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/serviceAttachments').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/serviceAttachments/{serviceAttachment}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'serviceAttachment'],
                  pathParams: ['project', 'region', 'serviceAttachment'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/serviceAttachments/{serviceAttachment}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'serviceAttachment'],
                  pathParams: ['project', 'region', 'serviceAttachment'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/serviceAttachments/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/serviceAttachments').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/serviceAttachments').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/serviceAttachments/{serviceAttachment}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'serviceAttachment'],
                  pathParams: ['project', 'region', 'serviceAttachment'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/serviceAttachments/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/serviceAttachments/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Serviceattachments = Resource$Serviceattachments;
      class Resource$Snapshots {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/snapshots/{snapshot}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'snapshot'],
                  pathParams: ['project', 'snapshot'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/snapshots/{snapshot}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'snapshot'],
                  pathParams: ['project', 'snapshot'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/snapshots/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/snapshots').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/snapshots/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/snapshots/{resource}/setLabels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/snapshots/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Snapshots = Resource$Snapshots;
      class Resource$Sslcertificates {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/sslCertificates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslCertificates/{sslCertificate}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'sslCertificate'],
                  pathParams: ['project', 'sslCertificate'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslCertificates/{sslCertificate}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'sslCertificate'],
                  pathParams: ['project', 'sslCertificate'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/sslCertificates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/sslCertificates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Sslcertificates = Resource$Sslcertificates;
      class Resource$Sslpolicies {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslPolicies/{sslPolicy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'sslPolicy'],
                  pathParams: ['project', 'sslPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslPolicies/{sslPolicy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'sslPolicy'],
                  pathParams: ['project', 'sslPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/sslPolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/sslPolicies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listAvailableFeatures(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslPolicies/listAvailableFeatures').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslPolicies/{sslPolicy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'sslPolicy'],
                  pathParams: ['project', 'sslPolicy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Sslpolicies = Resource$Sslpolicies;
      class Resource$Subnetworks {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/subnetworks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'subnetwork'],
                  pathParams: ['project', 'region', 'subnetwork'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          expandIpCidrRange(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'subnetwork'],
                  pathParams: ['project', 'region', 'subnetwork'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'subnetwork'],
                  pathParams: ['project', 'region', 'subnetwork'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{resource}/getIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listUsable(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/subnetworks/listUsable').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'subnetwork'],
                  pathParams: ['project', 'region', 'subnetwork'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setIamPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{resource}/setIamPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setPrivateIpGoogleAccess(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}/setPrivateIpGoogleAccess').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'subnetwork'],
                  pathParams: ['project', 'region', 'subnetwork'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Subnetworks = Resource$Subnetworks;
      class Resource$Targetgrpcproxies {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetGrpcProxies/{targetGrpcProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetGrpcProxy'],
                  pathParams: ['project', 'targetGrpcProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetGrpcProxies/{targetGrpcProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetGrpcProxy'],
                  pathParams: ['project', 'targetGrpcProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetGrpcProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetGrpcProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetGrpcProxies/{targetGrpcProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetGrpcProxy'],
                  pathParams: ['project', 'targetGrpcProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targetgrpcproxies = Resource$Targetgrpcproxies;
      class Resource$Targethttpproxies {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/targetHttpProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpProxies/{targetHttpProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpProxy'],
                  pathParams: ['project', 'targetHttpProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpProxies/{targetHttpProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpProxy'],
                  pathParams: ['project', 'targetHttpProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpProxies/{targetHttpProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpProxy'],
                  pathParams: ['project', 'targetHttpProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setUrlMap(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/targetHttpProxies/{targetHttpProxy}/setUrlMap').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpProxy'],
                  pathParams: ['project', 'targetHttpProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targethttpproxies = Resource$Targethttpproxies;
      class Resource$Targethttpsproxies {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/targetHttpsProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setQuicOverride(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}/setQuicOverride').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setSslCertificates(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setSslPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}/setSslPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setUrlMap(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targethttpsproxies = Resource$Targethttpsproxies;
      class Resource$Targetinstances {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/targetInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/targetInstances/{targetInstance}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'targetInstance'],
                  pathParams: ['project', 'targetInstance', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/targetInstances/{targetInstance}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'targetInstance'],
                  pathParams: ['project', 'targetInstance', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/targetInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/targetInstances').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targetinstances = Resource$Targetinstances;
      class Resource$Targetpools {
          constructor(context) {
              this.context = context;
          }
          addHealthCheck(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/addHealthCheck').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          addInstance(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/addInstance').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/targetPools').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getHealth(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/getHealth').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeHealthCheck(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/removeHealthCheck').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeInstance(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/removeInstance').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setBackup(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/setBackup').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targetpools = Resource$Targetpools;
      class Resource$Targetsslproxies {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/targetSslProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/targetSslProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setBackendService(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}/setBackendService').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setProxyHeader(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}/setProxyHeader').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setSslCertificates(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}/setSslCertificates').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setSslPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}/setSslPolicy').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targetsslproxies = Resource$Targetsslproxies;
      class Resource$Targettcpproxies {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetTcpProxies/{targetTcpProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetTcpProxy'],
                  pathParams: ['project', 'targetTcpProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetTcpProxies/{targetTcpProxy}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetTcpProxy'],
                  pathParams: ['project', 'targetTcpProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/targetTcpProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/targetTcpProxies').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setBackendService(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetTcpProxies/{targetTcpProxy}/setBackendService').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetTcpProxy'],
                  pathParams: ['project', 'targetTcpProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setProxyHeader(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetTcpProxies/{targetTcpProxy}/setProxyHeader').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'targetTcpProxy'],
                  pathParams: ['project', 'targetTcpProxy'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targettcpproxies = Resource$Targettcpproxies;
      class Resource$Targetvpngateways {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/targetVpnGateways').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetVpnGateway'],
                  pathParams: ['project', 'region', 'targetVpnGateway'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetVpnGateway'],
                  pathParams: ['project', 'region', 'targetVpnGateway'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetVpnGateways').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetVpnGateways').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targetvpngateways = Resource$Targetvpngateways;
      class Resource$Urlmaps {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/urlMaps').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/urlMaps/{urlMap}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/urlMaps/{urlMap}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/urlMaps').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          invalidateCache(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/urlMaps/{urlMap}/invalidateCache').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/urlMaps').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/urlMaps/{urlMap}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH',
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/urlMaps/{urlMap}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT',
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          validate(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/urlMaps/{urlMap}/validate').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Urlmaps = Resource$Urlmaps;
      class Resource$Vpngateways {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/vpnGateways').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnGateways/{vpnGateway}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'vpnGateway'],
                  pathParams: ['project', 'region', 'vpnGateway'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnGateways/{vpnGateway}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'vpnGateway'],
                  pathParams: ['project', 'region', 'vpnGateway'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getStatus(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnGateways/{vpnGateway}/getStatus').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'vpnGateway'],
                  pathParams: ['project', 'region', 'vpnGateway'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnGateways').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnGateways').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnGateways/{resource}/setLabels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnGateways/{resource}/testIamPermissions').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Vpngateways = Resource$Vpngateways;
      class Resource$Vpntunnels {
          constructor(context) {
              this.context = context;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/vpnTunnels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnTunnels/{vpnTunnel}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'vpnTunnel'],
                  pathParams: ['project', 'region', 'vpnTunnel'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnTunnels/{vpnTunnel}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'vpnTunnel'],
                  pathParams: ['project', 'region', 'vpnTunnel'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnTunnels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnTunnels').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Vpntunnels = Resource$Vpntunnels;
      class Resource$Zoneoperations {
          constructor(context) {
              this.context = context;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/operations/{operation}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'operation'],
                  pathParams: ['operation', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/operations/{operation}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'operation'],
                  pathParams: ['operation', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones/{zone}/operations').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          wait(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback ||
                  {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/operations/{operation}/wait').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'operation'],
                  pathParams: ['operation', 'project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Zoneoperations = Resource$Zoneoperations;
      class Resource$Zones {
          constructor(context) {
              this.context = context;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones/{zone}').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://compute.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones').replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET',
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.context,
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Zones = Resource$Zones;
  })(compute_v1 = exports.compute_v1 || (exports.compute_v1 = {}));
  