get(paramsOrCallback?: Params$Resource$Edits$Get|
        BodyResponseCallback<Schema$AppEdit>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$AppEdit>,
        callback?: BodyResponseCallback<Schema$AppEdit>):
        void|GaxiosPromise<Schema$AppEdit> {
      let params = (paramsOrCallback || {}) as Params$Resource$Edits$Get;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Get;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'GET'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$AppEdit>(parameters, callback);
      } else {
        return createAPIRequest<Schema$AppEdit>(parameters);
      }
    }


/**
     * androidpublisher.edits.insert
     * @desc Creates a new edit for an app, populated with the app's current
     * state.
     * @alias androidpublisher.edits.insert
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {().AppEdit} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
insert(params?: Params$Resource$Edits$Insert, options?: MethodOptions):
        GaxiosPromise<Schema$AppEdit>;


insert(
        params: Params$Resource$Edits$Insert,
        options: MethodOptions|BodyResponseCallback<Schema$AppEdit>,
        callback: BodyResponseCallback<Schema$AppEdit>): void;


insert(
        params: Params$Resource$Edits$Insert,
        callback: BodyResponseCallback<Schema$AppEdit>): void;


insert(callback: BodyResponseCallback<Schema$AppEdit>): void;


insert(
        paramsOrCallback?: Params$Resource$Edits$Insert|
        BodyResponseCallback<Schema$AppEdit>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$AppEdit>,
        callback?: BodyResponseCallback<Schema$AppEdit>):
        void|GaxiosPromise<Schema$AppEdit> {
      let params = (paramsOrCallback || {}) as Params$Resource$Edits$Insert;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Insert;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url: (rootUrl +
                    '/androidpublisher/v3/applications/{packageName}/edits')
                       .replace(/([^:]\/)\/+/g, '$1'),
              method: 'POST'
            },
            options),
        params,
        requiredParams: ['packageName'],
        pathParams: ['packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$AppEdit>(parameters, callback);
      } else {
        return createAPIRequest<Schema$AppEdit>(parameters);
      }
    }


/**
     * androidpublisher.edits.validate
     * @desc Checks that the edit can be successfully committed. The edit's
     * changes are not applied to the live app.
     * @alias androidpublisher.edits.validate
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
validate(params?: Params$Resource$Edits$Validate, options?: MethodOptions):
        GaxiosPromise<Schema$AppEdit>;


validate(
        params: Params$Resource$Edits$Validate,
        options: MethodOptions|BodyResponseCallback<Schema$AppEdit>,
        callback: BodyResponseCallback<Schema$AppEdit>): void;


validate(
        params: Params$Resource$Edits$Validate,
        callback: BodyResponseCallback<Schema$AppEdit>): void;


validate(callback: BodyResponseCallback<Schema$AppEdit>): void;


validate(
        paramsOrCallback?: Params$Resource$Edits$Validate|
        BodyResponseCallback<Schema$AppEdit>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$AppEdit>,
        callback?: BodyResponseCallback<Schema$AppEdit>):
        void|GaxiosPromise<Schema$AppEdit> {
      let params = (paramsOrCallback || {}) as Params$Resource$Edits$Validate;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Validate;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}:validate')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'POST'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$AppEdit>(parameters, callback);
      } else {
        return createAPIRequest<Schema$AppEdit>(parameters);
      }
    }


/**
     * androidpublisher.edits.apks.addexternallyhosted
     * @desc Creates a new APK without uploading the APK itself to Google Play,
     * instead hosting the APK at a specified URL. This function is only
     * available to enterprises using Google Play for Work whose application is
     * configured to restrict distribution to the enterprise domain.
     * @alias androidpublisher.edits.apks.addexternallyhosted
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {().ApksAddExternallyHostedRequest} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
addexternallyhosted(
        params?: Params$Resource$Edits$Apks$Addexternallyhosted,
        options?: MethodOptions):
        GaxiosPromise<Schema$ApksAddExternallyHostedResponse>;


addexternallyhosted(
        params: Params$Resource$Edits$Apks$Addexternallyhosted,
        options: MethodOptions|
        BodyResponseCallback<Schema$ApksAddExternallyHostedResponse>,
        callback: BodyResponseCallback<Schema$ApksAddExternallyHostedResponse>):
        void;


addexternallyhosted(
        params: Params$Resource$Edits$Apks$Addexternallyhosted,
        callback: BodyResponseCallback<Schema$ApksAddExternallyHostedResponse>):
        void;


addexternallyhosted(
        callback: BodyResponseCallback<Schema$ApksAddExternallyHostedResponse>):
        void;


addexternallyhosted(
        paramsOrCallback?: Params$Resource$Edits$Apks$Addexternallyhosted|
        BodyResponseCallback<Schema$ApksAddExternallyHostedResponse>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$ApksAddExternallyHostedResponse>,
        callback?:
            BodyResponseCallback<Schema$ApksAddExternallyHostedResponse>):
        void|GaxiosPromise<Schema$ApksAddExternallyHostedResponse> {
      let params = (paramsOrCallback || {}) as
          Params$Resource$Edits$Apks$Addexternallyhosted;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Apks$Addexternallyhosted;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/externallyHosted')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'POST'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$ApksAddExternallyHostedResponse>(
            parameters, callback);
      } else {
        return createAPIRequest<Schema$ApksAddExternallyHostedResponse>(
            parameters);
      }
    }


/**
     * androidpublisher.edits.apks.list
     * @alias androidpublisher.edits.apks.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
list(params?: Params$Resource$Edits$Apks$List, options?: MethodOptions):
        GaxiosPromise<Schema$ApksListResponse>;


list(
        params: Params$Resource$Edits$Apks$List,
        options: MethodOptions|BodyResponseCallback<Schema$ApksListResponse>,
        callback: BodyResponseCallback<Schema$ApksListResponse>): void;


list(
        params: Params$Resource$Edits$Apks$List,
        callback: BodyResponseCallback<Schema$ApksListResponse>): void;


list(callback: BodyResponseCallback<Schema$ApksListResponse>): void;


list(
        paramsOrCallback?: Params$Resource$Edits$Apks$List|
        BodyResponseCallback<Schema$ApksListResponse>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$ApksListResponse>,
        callback?: BodyResponseCallback<Schema$ApksListResponse>):
        void|GaxiosPromise<Schema$ApksListResponse> {
      let params = (paramsOrCallback || {}) as Params$Resource$Edits$Apks$List;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Apks$List;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'GET'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$ApksListResponse>(parameters, callback);
      } else {
        return createAPIRequest<Schema$ApksListResponse>(parameters);
      }
    }


/**
     * androidpublisher.edits.apks.upload
     * @alias androidpublisher.edits.apks.upload
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} params.media Media object
     * @param {string} params.media.mimeType Media mime-type
     * @param {string|object} params.media.body Media body contents
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
upload(params?: Params$Resource$Edits$Apks$Upload, options?: MethodOptions):
        GaxiosPromise<Schema$Apk>;


upload(
        params: Params$Resource$Edits$Apks$Upload,
        options: MethodOptions|BodyResponseCallback<Schema$Apk>,
        callback: BodyResponseCallback<Schema$Apk>): void;


upload(
        params: Params$Resource$Edits$Apks$Upload,
        callback: BodyResponseCallback<Schema$Apk>): void;


upload(callback: BodyResponseCallback<Schema$Apk>): void;


upload(
        paramsOrCallback?: Params$Resource$Edits$Apks$Upload|
        BodyResponseCallback<Schema$Apk>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$Apk>,
        callback?: BodyResponseCallback<Schema$Apk>):
        void|GaxiosPromise<Schema$Apk> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Apks$Upload;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Apks$Upload;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'POST'
            },
            options),
        params,
        mediaUrl:
            (rootUrl +
             '/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks')
                .replace(/([^:]\/)\/+/g, '$1'),
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$Apk>(parameters, callback);
      } else {
        return createAPIRequest<Schema$Apk>(parameters);
      }
    }


/**
     * androidpublisher.edits.bundles.list
     * @alias androidpublisher.edits.bundles.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
list(params?: Params$Resource$Edits$Bundles$List, options?: MethodOptions):
        GaxiosPromise<Schema$BundlesListResponse>;


list(
        params: Params$Resource$Edits$Bundles$List,
        options: MethodOptions|BodyResponseCallback<Schema$BundlesListResponse>,
        callback: BodyResponseCallback<Schema$BundlesListResponse>): void;


list(
        params: Params$Resource$Edits$Bundles$List,
        callback: BodyResponseCallback<Schema$BundlesListResponse>): void;


list(callback: BodyResponseCallback<Schema$BundlesListResponse>): void;


list(
        paramsOrCallback?: Params$Resource$Edits$Bundles$List|
        BodyResponseCallback<Schema$BundlesListResponse>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$BundlesListResponse>,
        callback?: BodyResponseCallback<Schema$BundlesListResponse>):
        void|GaxiosPromise<Schema$BundlesListResponse> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Bundles$List;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Bundles$List;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'GET'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$BundlesListResponse>(parameters, callback);
      } else {
        return createAPIRequest<Schema$BundlesListResponse>(parameters);
      }
    }


/**
     * androidpublisher.edits.bundles.upload
     * @desc Uploads a new Android App Bundle to this edit. If you are using the
     * Google API client libraries, please increase the timeout of the http
     * request before calling this endpoint (a timeout of 2 minutes is
     * recommended). See:
     * https://developers.google.com/api-client-library/java/google-api-java-client/errors
     * for an example in java.
     * @alias androidpublisher.edits.bundles.upload
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {boolean=} params.ackBundleInstallationWarning Must be set to true if the bundle installation may trigger a warning on user devices (for example, if installation size may be over a threshold, typically 100 MB).
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} params.media Media object
     * @param {string} params.media.mimeType Media mime-type
     * @param {string|object} params.media.body Media body contents
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
upload(
        params?: Params$Resource$Edits$Bundles$Upload,
        options?: MethodOptions): GaxiosPromise<Schema$Bundle>;


upload(
        params: Params$Resource$Edits$Bundles$Upload,
        options: MethodOptions|BodyResponseCallback<Schema$Bundle>,
        callback: BodyResponseCallback<Schema$Bundle>): void;


upload(
        params: Params$Resource$Edits$Bundles$Upload,
        callback: BodyResponseCallback<Schema$Bundle>): void;


upload(callback: BodyResponseCallback<Schema$Bundle>): void;


upload(
        paramsOrCallback?: Params$Resource$Edits$Bundles$Upload|
        BodyResponseCallback<Schema$Bundle>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$Bundle>,
        callback?: BodyResponseCallback<Schema$Bundle>):
        void|GaxiosPromise<Schema$Bundle> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Bundles$Upload;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Bundles$Upload;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'POST'
            },
            options),
        params,
        mediaUrl:
            (rootUrl +
             '/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles')
                .replace(/([^:]\/)\/+/g, '$1'),
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$Bundle>(parameters, callback);
      } else {
        return createAPIRequest<Schema$Bundle>(parameters);
      }
    }


/**
     * androidpublisher.edits.deobfuscationfiles.upload
     * @desc Uploads the deobfuscation file of the specified APK. If a
     * deobfuscation file already exists, it will be replaced.
     * @alias androidpublisher.edits.deobfuscationfiles.upload
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {integer} params.apkVersionCode The version code of the APK whose deobfuscation file is being uploaded.
     * @param {string} params.deobfuscationFileType
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier of the Android app for which the deobfuscatiuon files are being uploaded; for example, "com.spiffygame".
     * @param {object} params.media Media object
     * @param {string} params.media.mimeType Media mime-type
     * @param {string|object} params.media.body Media body contents
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
upload(
        params?: Params$Resource$Edits$Deobfuscationfiles$Upload,
        options?: MethodOptions):
        GaxiosPromise<Schema$DeobfuscationFilesUploadResponse>;


upload(
        params: Params$Resource$Edits$Deobfuscationfiles$Upload,
        options: MethodOptions|
        BodyResponseCallback<Schema$DeobfuscationFilesUploadResponse>,
        callback:
            BodyResponseCallback<Schema$DeobfuscationFilesUploadResponse>):
        void;


upload(
        params: Params$Resource$Edits$Deobfuscationfiles$Upload,
        callback:
            BodyResponseCallback<Schema$DeobfuscationFilesUploadResponse>):
        void;


upload(callback:
               BodyResponseCallback<Schema$DeobfuscationFilesUploadResponse>):
        void;


upload(
        paramsOrCallback?: Params$Resource$Edits$Deobfuscationfiles$Upload|
        BodyResponseCallback<Schema$DeobfuscationFilesUploadResponse>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$DeobfuscationFilesUploadResponse>,
        callback?:
            BodyResponseCallback<Schema$DeobfuscationFilesUploadResponse>):
        void|GaxiosPromise<Schema$DeobfuscationFilesUploadResponse> {
      let params = (paramsOrCallback || {}) as
          Params$Resource$Edits$Deobfuscationfiles$Upload;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Deobfuscationfiles$Upload;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/deobfuscationFiles/{deobfuscationFileType}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'POST'
            },
            options),
        params,
        mediaUrl:
            (rootUrl +
             '/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/deobfuscationFiles/{deobfuscationFileType}')
                .replace(/([^:]\/)\/+/g, '$1'),
        requiredParams: [
          'packageName', 'editId', 'apkVersionCode', 'deobfuscationFileType'
        ],
        pathParams: [
          'apkVersionCode', 'deobfuscationFileType', 'editId', 'packageName'
        ],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$DeobfuscationFilesUploadResponse>(
            parameters, callback);
      } else {
        return createAPIRequest<Schema$DeobfuscationFilesUploadResponse>(
            parameters);
      }
    }


/**
     * androidpublisher.edits.details.get
     * @desc Fetches app details for this edit. This includes the default
     * language and developer support contact information.
     * @alias androidpublisher.edits.details.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
get(params?: Params$Resource$Edits$Details$Get,
        options?: MethodOptions): GaxiosPromise<Schema$AppDetails>;


get(params: Params$Resource$Edits$Details$Get,
        options: MethodOptions|BodyResponseCallback<Schema$AppDetails>,
        callback: BodyResponseCallback<Schema$AppDetails>): void;


get(params: Params$Resource$Edits$Details$Get,
        callback: BodyResponseCallback<Schema$AppDetails>): void;


get(callback: BodyResponseCallback<Schema$AppDetails>): void;


get(paramsOrCallback?: Params$Resource$Edits$Details$Get|
        BodyResponseCallback<Schema$AppDetails>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$AppDetails>,
        callback?: BodyResponseCallback<Schema$AppDetails>):
        void|GaxiosPromise<Schema$AppDetails> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Details$Get;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Details$Get;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/details')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'GET'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$AppDetails>(parameters, callback);
      } else {
        return createAPIRequest<Schema$AppDetails>(parameters);
      }
    }


/**
     * androidpublisher.edits.details.patch
     * @desc Updates app details for this edit. This method supports patch
     * semantics.
     * @alias androidpublisher.edits.details.patch
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {().AppDetails} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
patch(
        params?: Params$Resource$Edits$Details$Patch,
        options?: MethodOptions): GaxiosPromise<Schema$AppDetails>;


patch(
        params: Params$Resource$Edits$Details$Patch,
        options: MethodOptions|BodyResponseCallback<Schema$AppDetails>,
        callback: BodyResponseCallback<Schema$AppDetails>): void;


patch(
        params: Params$Resource$Edits$Details$Patch,
        callback: BodyResponseCallback<Schema$AppDetails>): void;


patch(callback: BodyResponseCallback<Schema$AppDetails>): void;


patch(
        paramsOrCallback?: Params$Resource$Edits$Details$Patch|
        BodyResponseCallback<Schema$AppDetails>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$AppDetails>,
        callback?: BodyResponseCallback<Schema$AppDetails>):
        void|GaxiosPromise<Schema$AppDetails> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Details$Patch;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Details$Patch;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/details')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'PATCH'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$AppDetails>(parameters, callback);
      } else {
        return createAPIRequest<Schema$AppDetails>(parameters);
      }
    }


/**
     * androidpublisher.edits.details.update
     * @desc Updates app details for this edit.
     * @alias androidpublisher.edits.details.update
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {().AppDetails} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
update(
        params?: Params$Resource$Edits$Details$Update,
        options?: MethodOptions): GaxiosPromise<Schema$AppDetails>;


update(
        params: Params$Resource$Edits$Details$Update,
        options: MethodOptions|BodyResponseCallback<Schema$AppDetails>,
        callback: BodyResponseCallback<Schema$AppDetails>): void;


update(
        params: Params$Resource$Edits$Details$Update,
        callback: BodyResponseCallback<Schema$AppDetails>): void;


update(callback: BodyResponseCallback<Schema$AppDetails>): void;


update(
        paramsOrCallback?: Params$Resource$Edits$Details$Update|
        BodyResponseCallback<Schema$AppDetails>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$AppDetails>,
        callback?: BodyResponseCallback<Schema$AppDetails>):
        void|GaxiosPromise<Schema$AppDetails> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Details$Update;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Details$Update;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/details')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'PUT'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$AppDetails>(parameters, callback);
      } else {
        return createAPIRequest<Schema$AppDetails>(parameters);
      }
    }


/**
     * androidpublisher.edits.expansionfiles.get
     * @desc Fetches the Expansion File configuration for the APK specified.
     * @alias androidpublisher.edits.expansionfiles.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {integer} params.apkVersionCode The version code of the APK whose Expansion File configuration is being read or modified.
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.expansionFileType
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
get(params?: Params$Resource$Edits$Expansionfiles$Get,
        options?: MethodOptions): GaxiosPromise<Schema$ExpansionFile>;


get(params: Params$Resource$Edits$Expansionfiles$Get,
        options: MethodOptions|BodyResponseCallback<Schema$ExpansionFile>,
        callback: BodyResponseCallback<Schema$ExpansionFile>): void;


get(params: Params$Resource$Edits$Expansionfiles$Get,
        callback: BodyResponseCallback<Schema$ExpansionFile>): void;


get(callback: BodyResponseCallback<Schema$ExpansionFile>): void;


get(paramsOrCallback?: Params$Resource$Edits$Expansionfiles$Get|
        BodyResponseCallback<Schema$ExpansionFile>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$ExpansionFile>,
        callback?: BodyResponseCallback<Schema$ExpansionFile>):
        void|GaxiosPromise<Schema$ExpansionFile> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Expansionfiles$Get;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Expansionfiles$Get;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'GET'
            },
            options),
        params,
        requiredParams:
            ['packageName', 'editId', 'apkVersionCode', 'expansionFileType'],
        pathParams:
            ['apkVersionCode', 'editId', 'expansionFileType', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$ExpansionFile>(parameters, callback);
      } else {
        return createAPIRequest<Schema$ExpansionFile>(parameters);
      }
    }


/**
     * androidpublisher.edits.expansionfiles.patch
     * @desc Updates the APK's Expansion File configuration to reference another
     * APK's Expansion Files. To add a new Expansion File use the Upload method.
     * This method supports patch semantics.
     * @alias androidpublisher.edits.expansionfiles.patch
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {integer} params.apkVersionCode The version code of the APK whose Expansion File configuration is being read or modified.
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.expansionFileType
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {().ExpansionFile} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
patch(
        params?: Params$Resource$Edits$Expansionfiles$Patch,
        options?: MethodOptions): GaxiosPromise<Schema$ExpansionFile>;


patch(
        params: Params$Resource$Edits$Expansionfiles$Patch,
        options: MethodOptions|BodyResponseCallback<Schema$ExpansionFile>,
        callback: BodyResponseCallback<Schema$ExpansionFile>): void;


patch(
        params: Params$Resource$Edits$Expansionfiles$Patch,
        callback: BodyResponseCallback<Schema$ExpansionFile>): void;


patch(callback: BodyResponseCallback<Schema$ExpansionFile>): void;


patch(
        paramsOrCallback?: Params$Resource$Edits$Expansionfiles$Patch|
        BodyResponseCallback<Schema$ExpansionFile>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$ExpansionFile>,
        callback?: BodyResponseCallback<Schema$ExpansionFile>):
        void|GaxiosPromise<Schema$ExpansionFile> {
      let params = (paramsOrCallback || {}) as
          Params$Resource$Edits$Expansionfiles$Patch;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Expansionfiles$Patch;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'PATCH'
            },
            options),
        params,
        requiredParams:
            ['packageName', 'editId', 'apkVersionCode', 'expansionFileType'],
        pathParams:
            ['apkVersionCode', 'editId', 'expansionFileType', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$ExpansionFile>(parameters, callback);
      } else {
        return createAPIRequest<Schema$ExpansionFile>(parameters);
      }
    }


/**
     * androidpublisher.edits.expansionfiles.update
     * @desc Updates the APK's Expansion File configuration to reference another
     * APK's Expansion Files. To add a new Expansion File use the Upload method.
     * @alias androidpublisher.edits.expansionfiles.update
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {integer} params.apkVersionCode The version code of the APK whose Expansion File configuration is being read or modified.
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.expansionFileType
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {().ExpansionFile} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
update(
        params?: Params$Resource$Edits$Expansionfiles$Update,
        options?: MethodOptions): GaxiosPromise<Schema$ExpansionFile>;


update(
        params: Params$Resource$Edits$Expansionfiles$Update,
        options: MethodOptions|BodyResponseCallback<Schema$ExpansionFile>,
        callback: BodyResponseCallback<Schema$ExpansionFile>): void;


update(
        params: Params$Resource$Edits$Expansionfiles$Update,
        callback: BodyResponseCallback<Schema$ExpansionFile>): void;


update(callback: BodyResponseCallback<Schema$ExpansionFile>): void;


update(
        paramsOrCallback?: Params$Resource$Edits$Expansionfiles$Update|
        BodyResponseCallback<Schema$ExpansionFile>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$ExpansionFile>,
        callback?: BodyResponseCallback<Schema$ExpansionFile>):
        void|GaxiosPromise<Schema$ExpansionFile> {
      let params = (paramsOrCallback || {}) as
          Params$Resource$Edits$Expansionfiles$Update;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Expansionfiles$Update;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'PUT'
            },
            options),
        params,
        requiredParams:
            ['packageName', 'editId', 'apkVersionCode', 'expansionFileType'],
        pathParams:
            ['apkVersionCode', 'editId', 'expansionFileType', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$ExpansionFile>(parameters, callback);
      } else {
        return createAPIRequest<Schema$ExpansionFile>(parameters);
      }
    }


/**
     * androidpublisher.edits.expansionfiles.upload
     * @desc Uploads and attaches a new Expansion File to the APK specified.
     * @alias androidpublisher.edits.expansionfiles.upload
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {integer} params.apkVersionCode The version code of the APK whose Expansion File configuration is being read or modified.
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.expansionFileType
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} params.media Media object
     * @param {string} params.media.mimeType Media mime-type
     * @param {string|object} params.media.body Media body contents
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
upload(
        params?: Params$Resource$Edits$Expansionfiles$Upload,
        options?: MethodOptions):
        GaxiosPromise<Schema$ExpansionFilesUploadResponse>;


upload(
        params: Params$Resource$Edits$Expansionfiles$Upload,
        options: MethodOptions|
        BodyResponseCallback<Schema$ExpansionFilesUploadResponse>,
        callback: BodyResponseCallback<Schema$ExpansionFilesUploadResponse>):
        void;


upload(
        params: Params$Resource$Edits$Expansionfiles$Upload,
        callback: BodyResponseCallback<Schema$ExpansionFilesUploadResponse>):
        void;


upload(callback: BodyResponseCallback<Schema$ExpansionFilesUploadResponse>):
        void;


upload(
        paramsOrCallback?: Params$Resource$Edits$Expansionfiles$Upload|
        BodyResponseCallback<Schema$ExpansionFilesUploadResponse>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$ExpansionFilesUploadResponse>,
        callback?: BodyResponseCallback<Schema$ExpansionFilesUploadResponse>):
        void|GaxiosPromise<Schema$ExpansionFilesUploadResponse> {
      let params = (paramsOrCallback || {}) as
          Params$Resource$Edits$Expansionfiles$Upload;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Expansionfiles$Upload;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'POST'
            },
            options),
        params,
        mediaUrl:
            (rootUrl +
             '/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}')
                .replace(/([^:]\/)\/+/g, '$1'),
        requiredParams:
            ['packageName', 'editId', 'apkVersionCode', 'expansionFileType'],
        pathParams:
            ['apkVersionCode', 'editId', 'expansionFileType', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$ExpansionFilesUploadResponse>(
            parameters, callback);
      } else {
        return createAPIRequest<Schema$ExpansionFilesUploadResponse>(
            parameters);
      }
    }


/**
     * androidpublisher.edits.images.delete
     * @desc Deletes the image (specified by id) from the edit.
     * @alias androidpublisher.edits.images.delete
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.imageId Unique identifier an image within the set of images attached to this edit.
     * @param {string} params.imageType
     * @param {string} params.language The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass "de-AT".
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
delete(
        params?: Params$Resource$Edits$Images$Delete,
        options?: MethodOptions): GaxiosPromise<void>;


delete(
        params: Params$Resource$Edits$Images$Delete,
        options: MethodOptions|BodyResponseCallback<void>,
        callback: BodyResponseCallback<void>): void;


delete(
        params: Params$Resource$Edits$Images$Delete,
        callback: BodyResponseCallback<void>): void;


delete(
        paramsOrCallback?: Params$Resource$Edits$Images$Delete|
        BodyResponseCallback<void>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<void>,
        callback?: BodyResponseCallback<void>): void|GaxiosPromise<void> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Images$Delete;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Images$Delete;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}/{imageId}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'DELETE'
            },
            options),
        params,
        requiredParams:
            ['packageName', 'editId', 'language', 'imageType', 'imageId'],
        pathParams:
            ['editId', 'imageId', 'imageType', 'language', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<void>(parameters, callback);
      } else {
        return createAPIRequest<void>(parameters);
      }
    }


/**
     * androidpublisher.edits.images.deleteall
     * @desc Deletes all images for the specified language and image type.
     * @alias androidpublisher.edits.images.deleteall
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.imageType
     * @param {string} params.language The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass "de-AT".
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
deleteall(
        params?: Params$Resource$Edits$Images$Deleteall,
        options?: MethodOptions): GaxiosPromise<Schema$ImagesDeleteAllResponse>;


deleteall(
        params: Params$Resource$Edits$Images$Deleteall,
        options: MethodOptions|
        BodyResponseCallback<Schema$ImagesDeleteAllResponse>,
        callback: BodyResponseCallback<Schema$ImagesDeleteAllResponse>): void;


deleteall(
        params: Params$Resource$Edits$Images$Deleteall,
        callback: BodyResponseCallback<Schema$ImagesDeleteAllResponse>): void;


deleteall(callback: BodyResponseCallback<Schema$ImagesDeleteAllResponse>):
        void;


deleteall(
        paramsOrCallback?: Params$Resource$Edits$Images$Deleteall|
        BodyResponseCallback<Schema$ImagesDeleteAllResponse>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$ImagesDeleteAllResponse>,
        callback?: BodyResponseCallback<Schema$ImagesDeleteAllResponse>):
        void|GaxiosPromise<Schema$ImagesDeleteAllResponse> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Images$Deleteall;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Images$Deleteall;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'DELETE'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'language', 'imageType'],
        pathParams: ['editId', 'imageType', 'language', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$ImagesDeleteAllResponse>(parameters, callback);
      } else {
        return createAPIRequest<Schema$ImagesDeleteAllResponse>(parameters);
      }
    }


/**
     * androidpublisher.edits.images.list
     * @desc Lists all images for the specified language and image type.
     * @alias androidpublisher.edits.images.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.imageType
     * @param {string} params.language The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass "de-AT".
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
list(params?: Params$Resource$Edits$Images$List, options?: MethodOptions):
        GaxiosPromise<Schema$ImagesListResponse>;


list(
        params: Params$Resource$Edits$Images$List,
        options: MethodOptions|BodyResponseCallback<Schema$ImagesListResponse>,
        callback: BodyResponseCallback<Schema$ImagesListResponse>): void;


list(
        params: Params$Resource$Edits$Images$List,
        callback: BodyResponseCallback<Schema$ImagesListResponse>): void;


list(callback: BodyResponseCallback<Schema$ImagesListResponse>): void;


list(
        paramsOrCallback?: Params$Resource$Edits$Images$List|
        BodyResponseCallback<Schema$ImagesListResponse>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$ImagesListResponse>,
        callback?: BodyResponseCallback<Schema$ImagesListResponse>):
        void|GaxiosPromise<Schema$ImagesListResponse> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Images$List;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Images$List;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'GET'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'language', 'imageType'],
        pathParams: ['editId', 'imageType', 'language', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$ImagesListResponse>(parameters, callback);
      } else {
        return createAPIRequest<Schema$ImagesListResponse>(parameters);
      }
    }


/**
     * androidpublisher.edits.images.upload
     * @desc Uploads a new image and adds it to the list of images for the
     * specified language and image type.
     * @alias androidpublisher.edits.images.upload
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.imageType
     * @param {string} params.language The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass "de-AT".
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} params.media Media object
     * @param {string} params.media.mimeType Media mime-type
     * @param {string|object} params.media.body Media body contents
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
upload(
        params?: Params$Resource$Edits$Images$Upload,
        options?: MethodOptions): GaxiosPromise<Schema$ImagesUploadResponse>;


upload(
        params: Params$Resource$Edits$Images$Upload,
        options: MethodOptions|
        BodyResponseCallback<Schema$ImagesUploadResponse>,
        callback: BodyResponseCallback<Schema$ImagesUploadResponse>): void;


upload(
        params: Params$Resource$Edits$Images$Upload,
        callback: BodyResponseCallback<Schema$ImagesUploadResponse>): void;


upload(callback: BodyResponseCallback<Schema$ImagesUploadResponse>): void;


upload(
        paramsOrCallback?: Params$Resource$Edits$Images$Upload|
        BodyResponseCallback<Schema$ImagesUploadResponse>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$ImagesUploadResponse>,
        callback?: BodyResponseCallback<Schema$ImagesUploadResponse>):
        void|GaxiosPromise<Schema$ImagesUploadResponse> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Images$Upload;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Images$Upload;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'POST'
            },
            options),
        params,
        mediaUrl:
            (rootUrl +
             '/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}')
                .replace(/([^:]\/)\/+/g, '$1'),
        requiredParams: ['packageName', 'editId', 'language', 'imageType'],
        pathParams: ['editId', 'imageType', 'language', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$ImagesUploadResponse>(parameters, callback);
      } else {
        return createAPIRequest<Schema$ImagesUploadResponse>(parameters);
      }
    }


/**
     * androidpublisher.edits.listings.delete
     * @desc Deletes the specified localized store listing from an edit.
     * @alias androidpublisher.edits.listings.delete
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.language The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass "de-AT".
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
delete(
        params?: Params$Resource$Edits$Listings$Delete,
        options?: MethodOptions): GaxiosPromise<void>;


delete(
        params: Params$Resource$Edits$Listings$Delete,
        options: MethodOptions|BodyResponseCallback<void>,
        callback: BodyResponseCallback<void>): void;


delete(
        params: Params$Resource$Edits$Listings$Delete,
        callback: BodyResponseCallback<void>): void;


delete(
        paramsOrCallback?: Params$Resource$Edits$Listings$Delete|
        BodyResponseCallback<void>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<void>,
        callback?: BodyResponseCallback<void>): void|GaxiosPromise<void> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Listings$Delete;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Listings$Delete;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'DELETE'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'language'],
        pathParams: ['editId', 'language', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<void>(parameters, callback);
      } else {
        return createAPIRequest<void>(parameters);
      }
    }


/**
     * androidpublisher.edits.listings.deleteall
     * @desc Deletes all localized listings from an edit.
     * @alias androidpublisher.edits.listings.deleteall
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
deleteall(
        params?: Params$Resource$Edits$Listings$Deleteall,
        options?: MethodOptions): GaxiosPromise<void>;


deleteall(
        params: Params$Resource$Edits$Listings$Deleteall,
        options: MethodOptions|BodyResponseCallback<void>,
        callback: BodyResponseCallback<void>): void;


deleteall(
        params: Params$Resource$Edits$Listings$Deleteall,
        callback: BodyResponseCallback<void>): void;


deleteall(callback: BodyResponseCallback<void>): void;


deleteall(
        paramsOrCallback?: Params$Resource$Edits$Listings$Deleteall|
        BodyResponseCallback<void>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<void>,
        callback?: BodyResponseCallback<void>): void|GaxiosPromise<void> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Listings$Deleteall;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Listings$Deleteall;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'DELETE'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<void>(parameters, callback);
      } else {
        return createAPIRequest<void>(parameters);
      }
    }


/**
     * androidpublisher.edits.listings.get
     * @desc Fetches information about a localized store listing.
     * @alias androidpublisher.edits.listings.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.language The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass "de-AT".
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
get(params?: Params$Resource$Edits$Listings$Get,
        options?: MethodOptions): GaxiosPromise<Schema$Listing>;


get(params: Params$Resource$Edits$Listings$Get,
        options: MethodOptions|BodyResponseCallback<Schema$Listing>,
        callback: BodyResponseCallback<Schema$Listing>): void;


get(params: Params$Resource$Edits$Listings$Get,
        callback: BodyResponseCallback<Schema$Listing>): void;


get(callback: BodyResponseCallback<Schema$Listing>): void;


get(paramsOrCallback?: Params$Resource$Edits$Listings$Get|
        BodyResponseCallback<Schema$Listing>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$Listing>,
        callback?: BodyResponseCallback<Schema$Listing>):
        void|GaxiosPromise<Schema$Listing> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Listings$Get;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Listings$Get;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'GET'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'language'],
        pathParams: ['editId', 'language', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$Listing>(parameters, callback);
      } else {
        return createAPIRequest<Schema$Listing>(parameters);
      }
    }


/**
     * androidpublisher.edits.listings.list
     * @desc Returns all of the localized store listings attached to this edit.
     * @alias androidpublisher.edits.listings.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
list(params?: Params$Resource$Edits$Listings$List, options?: MethodOptions):
        GaxiosPromise<Schema$ListingsListResponse>;


list(
        params: Params$Resource$Edits$Listings$List,
        options: MethodOptions|
        BodyResponseCallback<Schema$ListingsListResponse>,
        callback: BodyResponseCallback<Schema$ListingsListResponse>): void;


list(
        params: Params$Resource$Edits$Listings$List,
        callback: BodyResponseCallback<Schema$ListingsListResponse>): void;


list(callback: BodyResponseCallback<Schema$ListingsListResponse>): void;


list(
        paramsOrCallback?: Params$Resource$Edits$Listings$List|
        BodyResponseCallback<Schema$ListingsListResponse>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$ListingsListResponse>,
        callback?: BodyResponseCallback<Schema$ListingsListResponse>):
        void|GaxiosPromise<Schema$ListingsListResponse> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Listings$List;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Listings$List;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'GET'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$ListingsListResponse>(parameters, callback);
      } else {
        return createAPIRequest<Schema$ListingsListResponse>(parameters);
      }
    }


/**
     * androidpublisher.edits.listings.patch
     * @desc Creates or updates a localized store listing. This method supports
     * patch semantics.
     * @alias androidpublisher.edits.listings.patch
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.language The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass "de-AT".
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {().Listing} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
patch(
        params?: Params$Resource$Edits$Listings$Patch,
        options?: MethodOptions): GaxiosPromise<Schema$Listing>;


patch(
        params: Params$Resource$Edits$Listings$Patch,
        options: MethodOptions|BodyResponseCallback<Schema$Listing>,
        callback: BodyResponseCallback<Schema$Listing>): void;


patch(
        params: Params$Resource$Edits$Listings$Patch,
        callback: BodyResponseCallback<Schema$Listing>): void;


patch(callback: BodyResponseCallback<Schema$Listing>): void;


patch(
        paramsOrCallback?: Params$Resource$Edits$Listings$Patch|
        BodyResponseCallback<Schema$Listing>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$Listing>,
        callback?: BodyResponseCallback<Schema$Listing>):
        void|GaxiosPromise<Schema$Listing> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Listings$Patch;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Listings$Patch;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'PATCH'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'language'],
        pathParams: ['editId', 'language', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$Listing>(parameters, callback);
      } else {
        return createAPIRequest<Schema$Listing>(parameters);
      }
    }


/**
     * androidpublisher.edits.listings.update
     * @desc Creates or updates a localized store listing.
     * @alias androidpublisher.edits.listings.update
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.language The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass "de-AT".
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {().Listing} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
update(
        params?: Params$Resource$Edits$Listings$Update,
        options?: MethodOptions): GaxiosPromise<Schema$Listing>;


update(
        params: Params$Resource$Edits$Listings$Update,
        options: MethodOptions|BodyResponseCallback<Schema$Listing>,
        callback: BodyResponseCallback<Schema$Listing>): void;


update(
        params: Params$Resource$Edits$Listings$Update,
        callback: BodyResponseCallback<Schema$Listing>): void;


update(callback: BodyResponseCallback<Schema$Listing>): void;


update(
        paramsOrCallback?: Params$Resource$Edits$Listings$Update|
        BodyResponseCallback<Schema$Listing>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$Listing>,
        callback?: BodyResponseCallback<Schema$Listing>):
        void|GaxiosPromise<Schema$Listing> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Listings$Update;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Listings$Update;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'PUT'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'language'],
        pathParams: ['editId', 'language', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$Listing>(parameters, callback);
      } else {
        return createAPIRequest<Schema$Listing>(parameters);
      }
    }


/**
     * androidpublisher.edits.testers.get
     * @alias androidpublisher.edits.testers.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {string} params.track The track to read or modify. Acceptable values are: "alpha", "beta", "production", "rollout" or "internal".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
get(params?: Params$Resource$Edits$Testers$Get,
        options?: MethodOptions): GaxiosPromise<Schema$Testers>;


get(params: Params$Resource$Edits$Testers$Get,
        options: MethodOptions|BodyResponseCallback<Schema$Testers>,
        callback: BodyResponseCallback<Schema$Testers>): void;


get(params: Params$Resource$Edits$Testers$Get,
        callback: BodyResponseCallback<Schema$Testers>): void;


get(callback: BodyResponseCallback<Schema$Testers>): void;


get(paramsOrCallback?: Params$Resource$Edits$Testers$Get|
        BodyResponseCallback<Schema$Testers>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$Testers>,
        callback?: BodyResponseCallback<Schema$Testers>):
        void|GaxiosPromise<Schema$Testers> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Testers$Get;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Testers$Get;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/testers/{track}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'GET'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'track'],
        pathParams: ['editId', 'packageName', 'track'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$Testers>(parameters, callback);
      } else {
        return createAPIRequest<Schema$Testers>(parameters);
      }
    }


/**
     * androidpublisher.edits.testers.patch
     * @alias androidpublisher.edits.testers.patch
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {string} params.track The track to read or modify. Acceptable values are: "alpha", "beta", "production", "rollout" or "internal".
     * @param {().Testers} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
patch(
        params?: Params$Resource$Edits$Testers$Patch,
        options?: MethodOptions): GaxiosPromise<Schema$Testers>;


patch(
        params: Params$Resource$Edits$Testers$Patch,
        options: MethodOptions|BodyResponseCallback<Schema$Testers>,
        callback: BodyResponseCallback<Schema$Testers>): void;


patch(
        params: Params$Resource$Edits$Testers$Patch,
        callback: BodyResponseCallback<Schema$Testers>): void;


patch(callback: BodyResponseCallback<Schema$Testers>): void;


patch(
        paramsOrCallback?: Params$Resource$Edits$Testers$Patch|
        BodyResponseCallback<Schema$Testers>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$Testers>,
        callback?: BodyResponseCallback<Schema$Testers>):
        void|GaxiosPromise<Schema$Testers> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Testers$Patch;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Testers$Patch;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/testers/{track}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'PATCH'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'track'],
        pathParams: ['editId', 'packageName', 'track'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$Testers>(parameters, callback);
      } else {
        return createAPIRequest<Schema$Testers>(parameters);
      }
    }


/**
     * androidpublisher.edits.testers.update
     * @alias androidpublisher.edits.testers.update
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {string} params.track The track to read or modify. Acceptable values are: "alpha", "beta", "production", "rollout" or "internal".
     * @param {().Testers} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
update(
        params?: Params$Resource$Edits$Testers$Update,
        options?: MethodOptions): GaxiosPromise<Schema$Testers>;


update(
        params: Params$Resource$Edits$Testers$Update,
        options: MethodOptions|BodyResponseCallback<Schema$Testers>,
        callback: BodyResponseCallback<Schema$Testers>): void;


update(
        params: Params$Resource$Edits$Testers$Update,
        callback: BodyResponseCallback<Schema$Testers>): void;


update(callback: BodyResponseCallback<Schema$Testers>): void;


update(
        paramsOrCallback?: Params$Resource$Edits$Testers$Update|
        BodyResponseCallback<Schema$Testers>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$Testers>,
        callback?: BodyResponseCallback<Schema$Testers>):
        void|GaxiosPromise<Schema$Testers> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Testers$Update;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Testers$Update;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/testers/{track}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'PUT'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'track'],
        pathParams: ['editId', 'packageName', 'track'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$Testers>(parameters, callback);
      } else {
        return createAPIRequest<Schema$Testers>(parameters);
      }
    }


/**
     * androidpublisher.edits.tracks.get
     * @desc Fetches the track configuration for the specified track type.
     * Includes the APK version codes that are in this track.
     * @alias androidpublisher.edits.tracks.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {string} params.track The track to read or modify.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
get(params?: Params$Resource$Edits$Tracks$Get,
        options?: MethodOptions): GaxiosPromise<Schema$Track>;


get(params: Params$Resource$Edits$Tracks$Get,
        options: MethodOptions|BodyResponseCallback<Schema$Track>,
        callback: BodyResponseCallback<Schema$Track>): void;


get(params: Params$Resource$Edits$Tracks$Get,
        callback: BodyResponseCallback<Schema$Track>): void;


get(callback: BodyResponseCallback<Schema$Track>): void;


get(paramsOrCallback?: Params$Resource$Edits$Tracks$Get|
        BodyResponseCallback<Schema$Track>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$Track>,
        callback?: BodyResponseCallback<Schema$Track>):
        void|GaxiosPromise<Schema$Track> {
      let params = (paramsOrCallback || {}) as Params$Resource$Edits$Tracks$Get;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Tracks$Get;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks/{track}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'GET'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'track'],
        pathParams: ['editId', 'packageName', 'track'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$Track>(parameters, callback);
      } else {
        return createAPIRequest<Schema$Track>(parameters);
      }
    }


/**
     * androidpublisher.edits.tracks.list
     * @desc Lists all the track configurations for this edit.
     * @alias androidpublisher.edits.tracks.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
list(params?: Params$Resource$Edits$Tracks$List, options?: MethodOptions):
        GaxiosPromise<Schema$TracksListResponse>;


list(
        params: Params$Resource$Edits$Tracks$List,
        options: MethodOptions|BodyResponseCallback<Schema$TracksListResponse>,
        callback: BodyResponseCallback<Schema$TracksListResponse>): void;


list(
        params: Params$Resource$Edits$Tracks$List,
        callback: BodyResponseCallback<Schema$TracksListResponse>): void;


list(callback: BodyResponseCallback<Schema$TracksListResponse>): void;


list(
        paramsOrCallback?: Params$Resource$Edits$Tracks$List|
        BodyResponseCallback<Schema$TracksListResponse>,
        optionsOrCallback?: MethodOptions|
        BodyResponseCallback<Schema$TracksListResponse>,
        callback?: BodyResponseCallback<Schema$TracksListResponse>):
        void|GaxiosPromise<Schema$TracksListResponse> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Tracks$List;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Tracks$List;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'GET'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId'],
        pathParams: ['editId', 'packageName'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$TracksListResponse>(parameters, callback);
      } else {
        return createAPIRequest<Schema$TracksListResponse>(parameters);
      }
    }


/**
     * androidpublisher.edits.tracks.patch
     * @desc Updates the track configuration for the specified track type. When
     * halted, the rollout track cannot be updated without adding new APKs, and
     * adding new APKs will cause it to resume. This method supports patch
     * semantics.
     * @alias androidpublisher.edits.tracks.patch
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {string} params.track The track to read or modify.
     * @param {().Track} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
patch(params?: Params$Resource$Edits$Tracks$Patch, options?: MethodOptions):
        GaxiosPromise<Schema$Track>;


patch(
        params: Params$Resource$Edits$Tracks$Patch,
        options: MethodOptions|BodyResponseCallback<Schema$Track>,
        callback: BodyResponseCallback<Schema$Track>): void;


patch(
        params: Params$Resource$Edits$Tracks$Patch,
        callback: BodyResponseCallback<Schema$Track>): void;


patch(callback: BodyResponseCallback<Schema$Track>): void;


patch(
        paramsOrCallback?: Params$Resource$Edits$Tracks$Patch|
        BodyResponseCallback<Schema$Track>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$Track>,
        callback?: BodyResponseCallback<Schema$Track>):
        void|GaxiosPromise<Schema$Track> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Tracks$Patch;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Tracks$Patch;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks/{track}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'PATCH'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'track'],
        pathParams: ['editId', 'packageName', 'track'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$Track>(parameters, callback);
      } else {
        return createAPIRequest<Schema$Track>(parameters);
      }
    }


/**
     * androidpublisher.edits.tracks.update
     * @desc Updates the track configuration for the specified track type. When
     * halted, the rollout track cannot be updated without adding new APKs, and
     * adding new APKs will cause it to resume.
     * @alias androidpublisher.edits.tracks.update
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.editId Unique identifier for this edit.
     * @param {string} params.packageName Unique identifier for the Android app that is being updated; for example, "com.spiffygame".
     * @param {string} params.track The track to read or modify.
     * @param {().Track} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
update(
        params?: Params$Resource$Edits$Tracks$Update,
        options?: MethodOptions): GaxiosPromise<Schema$Track>;


update(
        params: Params$Resource$Edits$Tracks$Update,
        options: MethodOptions|BodyResponseCallback<Schema$Track>,
        callback: BodyResponseCallback<Schema$Track>): void;


update(
        params: Params$Resource$Edits$Tracks$Update,
        callback: BodyResponseCallback<Schema$Track>): void;


update(callback: BodyResponseCallback<Schema$Track>): void;


update(
        paramsOrCallback?: Params$Resource$Edits$Tracks$Update|
        BodyResponseCallback<Schema$Track>,
        optionsOrCallback?: MethodOptions|BodyResponseCallback<Schema$Track>,
        callback?: BodyResponseCallback<Schema$Track>):
        void|GaxiosPromise<Schema$Track> {
      let params =
          (paramsOrCallback || {}) as Params$Resource$Edits$Tracks$Update;
      let options = (optionsOrCallback || {}) as MethodOptions;

      if (typeof paramsOrCallback === 'function') {
        callback = paramsOrCallback;
        params = {} as Params$Resource$Edits$Tracks$Update;
        options = {};
      }

      if (typeof optionsOrCallback === 'function') {
        callback = optionsOrCallback;
        options = {};
      }

      const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
      const parameters = {
        options: Object.assign(
            {
              url:
                  (rootUrl +
                   '/androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks/{track}')
                      .replace(/([^:]\/)\/+/g, '$1'),
              method: 'PUT'
            },
            options),
        params,
        requiredParams: ['packageName', 'editId', 'track'],
        pathParams: ['editId', 'packageName', 'track'],
        context: this.context
      };
      if (callback) {
        createAPIRequest<Schema$Track>(parameters, callback);
      } else {
        return createAPIRequest<Schema$Track>(parameters);
      }
    }


/**
     * androidpublisher.inappproducts.delete
     * @desc Delete an in-app product for an app.
     * @alias androidpublisher.inappproducts.delete
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.packageName Unique identifier for the Android app with the in-app product; for example, "com.spiffygame".
     * @param {string} params.sku Unique identifier for the in-app product.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
delete(
        params?: Params$Resource$Inappproducts$Delete,
        options?: MethodOptions): GaxiosPromise<void>;


delete(
        params: Params$Resource$Inappproducts$Delete,
        options: MethodOptions|BodyResponseCallback<void>,
        callback: BodyResponseCallback<void>): void;


delete(
        params: Params$Resource$Inappproducts$Delete,
        callback: BodyResponseCallback<void>): void;