text: "use strict";
  /**
   * Copyright 2015 Google Inc. All Rights Reserved.
   *
   * 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 });
  var apirequest_1 = require("../../lib/apirequest");
  // TODO: We will eventually get the `any` in here cleared out, but in the
  // interim we want to turn on no-implicit-any.
  // tslint:disable: no-any
  // tslint:disable: class-name
  // tslint:disable: variable-name
  // tslint:disable: jsdoc-format
  /**
   * Stackdriver Trace API
   *
   * Sends application trace data to Stackdriver Trace for viewing. Trace data is
   * collected for all App Engine applications by default. Trace data from other
   * applications can be provided using this API.
   *
   * @example
   * const google = require('googleapis');
   * const cloudtrace = google.cloudtrace('v2');
   *
   * @namespace cloudtrace
   * @type {Function}
   * @version v2
   * @variation v2
   * @param {object=} options Options for Cloudtrace
   */
  var Cloudtrace = /** @class */ (function () {
      function Cloudtrace(options, google) {
          this.root = this;
          this._options = options || {};
          this.google = google;
          this.getRoot.bind(this);
          this.projects = new Resource$Projects(this);
      }
      Cloudtrace.prototype.getRoot = function () {
          return this.root;
      };
      return Cloudtrace;
  }());
  exports.Cloudtrace = Cloudtrace;
  var Resource$Projects = /** @class */ (function () {
      function Resource$Projects(root) {
          this.root = root;
          this.getRoot.bind(this);
          this.traces = new Resource$Projects$Traces(root);
      }
      Resource$Projects.prototype.getRoot = function () {
          return this.root;
      };
      return Resource$Projects;
  }());
  exports.Resource$Projects = Resource$Projects;
  var Resource$Projects$Traces = /** @class */ (function () {
      function Resource$Projects$Traces(root) {
          this.root = root;
          this.getRoot.bind(this);
          this.spans = new Resource$Projects$Traces$Spans(root);
      }
      Resource$Projects$Traces.prototype.getRoot = function () {
          return this.root;
      };
      Resource$Projects$Traces.prototype.batchWrite = function (params, options, callback) {
          if (typeof options === 'function') {
              callback = options;
              options = {};
          }
          if (typeof params === 'function') {
              callback = params;
              params = {};
          }
          options = options || {};
          var rootUrl = options.rootUrl || 'https://cloudtrace.googleapis.com/';
          var parameters = {
              options: Object.assign({
                  url: (rootUrl + '/v2/{name}/traces:batchWrite')
                      .replace(/([^:]\/)\/+/g, '$1'),
                  method: 'POST'
              }, options),
              params: params,
              requiredParams: ['name'],
              pathParams: ['name'],
              context: this.getRoot()
          };
          if (callback) {
              apirequest_1.createAPIRequest(parameters, callback);
          }
          else {
              return apirequest_1.createAPIRequest(parameters);
          }
      };
      return Resource$Projects$Traces;
  }());
  exports.Resource$Projects$Traces = Resource$Projects$Traces;
  var Resource$Projects$Traces$Spans = /** @class */ (function () {
      function Resource$Projects$Traces$Spans(root) {
          this.root = root;
          this.getRoot.bind(this);
      }
      Resource$Projects$Traces$Spans.prototype.getRoot = function () {
          return this.root;
      };
      Resource$Projects$Traces$Spans.prototype.createSpan = function (params, options, callback) {
          if (typeof options === 'function') {
              callback = options;
              options = {};
          }
          if (typeof params === 'function') {
              callback = params;
              params = {};
          }
          options = options || {};
          var rootUrl = options.rootUrl || 'https://cloudtrace.googleapis.com/';
          var parameters = {
              options: Object.assign({
                  url: (rootUrl + '/v2/{name}').replace(/([^:]\/)\/+/g, '$1'),
                  method: 'POST'
              }, options),
              params: params,
              requiredParams: ['name'],
              pathParams: ['name'],
              context: this.getRoot()
          };
          if (callback) {
              apirequest_1.createAPIRequest(parameters, callback);
          }
          else {
              return apirequest_1.createAPIRequest(parameters);
          }
      };
      return Resource$Projects$Traces$Spans;
  }());
  exports.Resource$Projects$Traces$Spans = Resource$Projects$Traces$Spans;
  //# sourceMappingURL=v2.js.map