import type * as gax from 'google-gax';
import type { Callback, CallOptions, Descriptors, ClientOptions, LROperation, PaginationCallback } from 'google-gax';
import { Transform } from 'stream';
import * as protos from '../../protos/protos';
/**
 *  The InstanceGroupManagers API.
 * @class
 * @memberof v1beta
 */
export declare class InstanceGroupManagersClient {
    private _terminated;
    private _opts;
    private _providedCustomServicePath;
    private _gaxModule;
    private _gaxGrpc;
    private _protos;
    private _defaults;
    private _universeDomain;
    private _servicePath;
    private _log;
    auth: gax.GoogleAuth;
    descriptors: Descriptors;
    warn: (code: string, message: string, warnType?: string) => void;
    innerApiCalls: {
        [name: string]: Function;
    };
    instanceGroupManagersStub?: Promise<{
        [name: string]: Function;
    }>;
    /**
     * Construct an instance of InstanceGroupManagersClient.
     *
     * @param {object} [options] - The configuration object.
     * The options accepted by the constructor are described in detail
     * in [this document](https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#creating-the-client-instance).
     * The common options are:
     * @param {object} [options.credentials] - Credentials object.
     * @param {string} [options.credentials.client_email]
     * @param {string} [options.credentials.private_key]
     * @param {string} [options.email] - Account email address. Required when
     *     using a .pem or .p12 keyFilename.
     * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or
     *     .p12 key downloaded from the Google Developers Console. If you provide
     *     a path to a JSON file, the projectId option below is not necessary.
     *     NOTE: .pem and .p12 require you to specify options.email as well.
     * @param {number} [options.port] - The port on which to connect to
     *     the remote host.
     * @param {string} [options.projectId] - The project ID from the Google
     *     Developer's Console, e.g. 'grape-spaceship-123'. We will also check
     *     the environment variable GCLOUD_PROJECT for your project ID. If your
     *     app is running in an environment which supports
     *     {@link https://cloud.google.com/docs/authentication/application-default-credentials Application Default Credentials},
     *     your project ID will be detected automatically.
     * @param {string} [options.apiEndpoint] - The domain name of the
     *     API remote host.
     * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override.
     *     Follows the structure of {@link gapicConfig}.
     * @param {boolean} [options.fallback] - Use HTTP/1.1 REST mode.
     *     For more information, please check the
     *     {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}.
     * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you
     *     need to avoid loading the default gRPC version and want to use the fallback
     *     HTTP implementation. Load only fallback version and pass it to the constructor:
     *     ```
     *     const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC
     *     const client = new InstanceGroupManagersClient({fallback: true}, gax);
     *     ```
     */
    constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback);
    /**
     * Initialize the client.
     * Performs asynchronous operations (such as authentication) and prepares the client.
     * This function will be called automatically when any class method is called for the
     * first time, but if you need to initialize it before calling an actual method,
     * feel free to call initialize() directly.
     *
     * You can await on this method if you want to make sure the client is initialized.
     *
     * @returns {Promise} A promise that resolves to an authenticated service stub.
     */
    initialize(): Promise<{
        [name: string]: Function;
    }>;
    /**
     * The DNS address for this API service.
     * @deprecated Use the apiEndpoint method of the client instance.
     * @returns {string} The DNS address for this service.
     */
    static get servicePath(): string;
    /**
     * The DNS address for this API service - same as servicePath.
     * @deprecated Use the apiEndpoint method of the client instance.
     * @returns {string} The DNS address for this service.
     */
    static get apiEndpoint(): string;
    /**
     * The DNS address for this API service.
     * @returns {string} The DNS address for this service.
     */
    get apiEndpoint(): string;
    get universeDomain(): string;
    /**
     * The port for this API service.
     * @returns {number} The default port for this service.
     */
    static get port(): number;
    /**
     * The scopes needed to make gRPC calls for every method defined
     * in this service.
     * @returns {string[]} List of default scopes.
     */
    static get scopes(): string[];
    getProjectId(): Promise<string>;
    getProjectId(callback: Callback<string, undefined, undefined>): void;
    /**
     * Flags the specified instances to be removed from the
     * managed instance group. Abandoning an instance does not delete the
     * instance, but it does remove the instance from any target pools that are
     * applied by the managed instance group. This method reduces thetargetSize of the managed instance group by the
     * number of instances that you abandon. This operation is marked asDONE when the action is scheduled even if the instances have
     * not yet been removed from the group. You must separately verify the
     * status of the abandoning action with thelistmanagedinstances
     * method.
     *
     * If the group is part of a backend
     * service that has enabled
     * connection draining, it can take up to 60 seconds after the connection
     * draining duration has elapsed before the VM instance is removed or deleted.
     *
     * You can specify a maximum of 1000 instances with this method per request.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersAbandonInstancesRequest} request.instanceGroupManagersAbandonInstancesRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.abandon_instances.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_AbandonInstances_async
     */
    abandonInstances(request?: protos.google.cloud.compute.v1beta.IAbandonInstancesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    abandonInstances(request: protos.google.cloud.compute.v1beta.IAbandonInstancesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IAbandonInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    abandonInstances(request: protos.google.cloud.compute.v1beta.IAbandonInstancesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IAbandonInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Applies changes to selected instances on the managed instance group.
     * This method can be used to apply new overrides and/or new versions.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group, should conform to RFC1035.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersApplyUpdatesRequest} request.instanceGroupManagersApplyUpdatesRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.zone
     *   The name of thezone
     *   where the managed instance group is located. Should conform to RFC1035.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.apply_updates_to_instances.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_ApplyUpdatesToInstances_async
     */
    applyUpdatesToInstances(request?: protos.google.cloud.compute.v1beta.IApplyUpdatesToInstancesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    applyUpdatesToInstances(request: protos.google.cloud.compute.v1beta.IApplyUpdatesToInstancesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IApplyUpdatesToInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    applyUpdatesToInstances(request: protos.google.cloud.compute.v1beta.IApplyUpdatesToInstancesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IApplyUpdatesToInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Updates the accelerator topologies configuration.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     *   It should conform to RFC1035.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersConfigureAcceleratorTopologiesRequest} request.instanceGroupManagersConfigureAcceleratorTopologiesRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone
     *   where the managed instance group is located.
     *   It should conform to RFC1035.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.configure_accelerator_topologies.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_ConfigureAcceleratorTopologies_async
     */
    configureAcceleratorTopologies(request?: protos.google.cloud.compute.v1beta.IConfigureAcceleratorTopologiesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    configureAcceleratorTopologies(request: protos.google.cloud.compute.v1beta.IConfigureAcceleratorTopologiesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IConfigureAcceleratorTopologiesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    configureAcceleratorTopologies(request: protos.google.cloud.compute.v1beta.IConfigureAcceleratorTopologiesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IConfigureAcceleratorTopologiesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Creates instances with per-instance configurations in this managed instance
     * group. Instances are created using the current instance template. Thecreate instances operation is marked DONE if thecreateInstances request is successful. The underlying actions
     * take additional time. You must separately verify the status of thecreating or actions with the listmanagedinstances
     * method.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     *   It should conform to RFC1035.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersCreateInstancesRequest} request.instanceGroupManagersCreateInstancesRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone
     *   where the managed instance group is located.
     *   It should conform to RFC1035.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.create_instances.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_CreateInstances_async
     */
    createInstances(request?: protos.google.cloud.compute.v1beta.ICreateInstancesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    createInstances(request: protos.google.cloud.compute.v1beta.ICreateInstancesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.ICreateInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    createInstances(request: protos.google.cloud.compute.v1beta.ICreateInstancesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.ICreateInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Deletes the specified managed instance group and all of the instances
     * in that group. Note that the instance group must not belong to a
     * backend service. Read
     * Deleting an instance group for more information.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group to delete.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.delete.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_Delete_async
     */
    delete(request?: protos.google.cloud.compute.v1beta.IDeleteInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    delete(request: protos.google.cloud.compute.v1beta.IDeleteInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IDeleteInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    delete(request: protos.google.cloud.compute.v1beta.IDeleteInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IDeleteInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Flags the specified instances in the managed instance group for immediate
     * deletion. The instances are also removed from any target
     * pools of which they were a member. This method reduces thetargetSize of the managed instance group by the number of
     * instances that you delete. This operation is marked as DONE
     * when the action is scheduled even if the instances are still being deleted.
     * You must separately verify the status of the deleting action
     * with thelistmanagedinstances
     * method.
     *
     * If the group is part of a backend
     * service that has enabled
     * connection draining, it can take up to 60 seconds after the connection
     * draining duration has elapsed before the VM instance is removed or deleted.
     *
     * You can specify a maximum of 1000 instances with this method per request.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersDeleteInstancesRequest} request.instanceGroupManagersDeleteInstancesRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.delete_instances.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_DeleteInstances_async
     */
    deleteInstances(request?: protos.google.cloud.compute.v1beta.IDeleteInstancesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    deleteInstances(request: protos.google.cloud.compute.v1beta.IDeleteInstancesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IDeleteInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    deleteInstances(request: protos.google.cloud.compute.v1beta.IDeleteInstancesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IDeleteInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Deletes selected per-instance configurations for the managed instance
     * group.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     *   It should conform to RFC1035.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersDeletePerInstanceConfigsReq} request.instanceGroupManagersDeletePerInstanceConfigsReqResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.zone
     *   The name of thezone
     *   where the managed instance
     *   group is located.
     *   It should conform to RFC1035.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.delete_per_instance_configs.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_DeletePerInstanceConfigs_async
     */
    deletePerInstanceConfigs(request?: protos.google.cloud.compute.v1beta.IDeletePerInstanceConfigsInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    deletePerInstanceConfigs(request: protos.google.cloud.compute.v1beta.IDeletePerInstanceConfigsInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IDeletePerInstanceConfigsInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    deletePerInstanceConfigs(request: protos.google.cloud.compute.v1beta.IDeletePerInstanceConfigsInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IDeletePerInstanceConfigsInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Returns all of the details about the specified managed instance group.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing {@link protos.google.cloud.compute.v1beta.InstanceGroupManager|InstanceGroupManager}.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.get.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_Get_async
     */
    get(request?: protos.google.cloud.compute.v1beta.IGetInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        protos.google.cloud.compute.v1beta.IInstanceGroupManager,
        protos.google.cloud.compute.v1beta.IGetInstanceGroupManagerRequest | undefined,
        {} | undefined
    ]>;
    get(request: protos.google.cloud.compute.v1beta.IGetInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IInstanceGroupManager, protos.google.cloud.compute.v1beta.IGetInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    get(request: protos.google.cloud.compute.v1beta.IGetInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IInstanceGroupManager, protos.google.cloud.compute.v1beta.IGetInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Returns information about available accelerator topologies for a given MIG.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.project
     *   Required. Project ID for this request.
     * @param {string} request.resourceId
     *   Required. The name of the managed instance group.
     *   It should conform to RFC1035.
     * @param {string} request.zone
     *   Required. The name of thezone where the managed
     *   instance group is located.
     *   Name should conform to RFC1035.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing {@link protos.google.cloud.compute.v1beta.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse|InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse}.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.get_available_accelerator_topologies.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_GetAvailableAcceleratorTopologies_async
     */
    getAvailableAcceleratorTopologies(request?: protos.google.cloud.compute.v1beta.IGetAvailableAcceleratorTopologiesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        protos.google.cloud.compute.v1beta.IInstanceGroupManagersGetAvailableAcceleratorTopologiesResponse,
        protos.google.cloud.compute.v1beta.IGetAvailableAcceleratorTopologiesInstanceGroupManagerRequest | undefined,
        {} | undefined
    ]>;
    getAvailableAcceleratorTopologies(request: protos.google.cloud.compute.v1beta.IGetAvailableAcceleratorTopologiesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IInstanceGroupManagersGetAvailableAcceleratorTopologiesResponse, protos.google.cloud.compute.v1beta.IGetAvailableAcceleratorTopologiesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    getAvailableAcceleratorTopologies(request: protos.google.cloud.compute.v1beta.IGetAvailableAcceleratorTopologiesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IInstanceGroupManagersGetAvailableAcceleratorTopologiesResponse, protos.google.cloud.compute.v1beta.IGetAvailableAcceleratorTopologiesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Creates a managed instance group using the information that you specify
     * in the request. After the group is created, instances in the group are
     * created using the specified instance template.
     * This operation is marked as DONE when the group is created
     * even if the instances in the group have not yet been created. You
     * must separately verify the status of the individual instances with thelistmanagedinstances
     * method.
     *
     * A managed instance group can have up to 1000 VM instances per group. Please
     * contact Cloud Support if you need an increase in
     * this limit.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {google.cloud.compute.v1beta.InstanceGroupManager} request.instanceGroupManagerResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of the zone
     *   where you want to create the managed instance group.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.insert.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_Insert_async
     */
    insert(request?: protos.google.cloud.compute.v1beta.IInsertInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    insert(request: protos.google.cloud.compute.v1beta.IInsertInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IInsertInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    insert(request: protos.google.cloud.compute.v1beta.IInsertInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IInsertInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Updates a managed instance group using the information that you specify
     * in the request.
     * This operation is marked as DONE when the group is patched
     * even if the instances in the group are still in the process of being
     * patched. You must separately verify the status of the individual instances
     * with thelistManagedInstances
     * method. This method supportsPATCH
     * semantics and uses theJSON merge
     * patch format and processing rules.
     *
     * If you update your group to specify a new template or instance
     * configuration, it's possible that your intended specification for each VM
     * in the group is different from the current state of that VM. To learn how
     * to apply an updated configuration to the VMs in a MIG, seeUpdating instances in
     * a MIG.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the instance group manager.
     * @param {google.cloud.compute.v1beta.InstanceGroupManager} request.instanceGroupManagerResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of the zone where
     *   you want to create the managed instance group.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.patch.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_Patch_async
     */
    patch(request?: protos.google.cloud.compute.v1beta.IPatchInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    patch(request: protos.google.cloud.compute.v1beta.IPatchInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IPatchInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    patch(request: protos.google.cloud.compute.v1beta.IPatchInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IPatchInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Inserts or patches per-instance configurations for the managed instance
     * group. perInstanceConfig.name serves as a key used to
     * distinguish whether to perform insert or patch.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     *   It should conform to RFC1035.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersPatchPerInstanceConfigsReq} request.instanceGroupManagersPatchPerInstanceConfigsReqResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone
     *   where the managed instance group is located.
     *   It should conform to RFC1035.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.patch_per_instance_configs.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_PatchPerInstanceConfigs_async
     */
    patchPerInstanceConfigs(request?: protos.google.cloud.compute.v1beta.IPatchPerInstanceConfigsInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    patchPerInstanceConfigs(request: protos.google.cloud.compute.v1beta.IPatchPerInstanceConfigsInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IPatchPerInstanceConfigsInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    patchPerInstanceConfigs(request: protos.google.cloud.compute.v1beta.IPatchPerInstanceConfigsInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IPatchPerInstanceConfigsInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Flags the specified VM instances in the managed instance group to be
     * immediately recreated. Each instance is recreated using the group's current
     * configuration. This operation is marked as DONE when the flag
     * is set even if the instances have not yet been recreated. You must
     * separately verify the status of each instance by checking itscurrentAction field; for more information, see Checking
     * the status of managed instances.
     *
     * If the group is part of a backend
     * service that has enabled
     * connection draining, it can take up to 60 seconds after the connection
     * draining duration has elapsed before the VM instance is removed or deleted.
     *
     * You can specify a maximum of 1000 instances with this method per request.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersRecreateInstancesRequest} request.instanceGroupManagersRecreateInstancesRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.recreate_instances.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_RecreateInstances_async
     */
    recreateInstances(request?: protos.google.cloud.compute.v1beta.IRecreateInstancesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    recreateInstances(request: protos.google.cloud.compute.v1beta.IRecreateInstancesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IRecreateInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    recreateInstances(request: protos.google.cloud.compute.v1beta.IRecreateInstancesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IRecreateInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Resizes the managed instance group. If you increase the size, the group
     * creates new instances using the current instance template. If you decrease
     * the size, the group deletes instances. The resize operation is markedDONE when the resize actions are scheduled even if the group
     * has not yet added or deleted any instances. You must separately
     * verify the status of the creating or deleting
     * actions with thelistmanagedinstances
     * method.
     *
     * When resizing down, the instance group arbitrarily chooses the order in
     * which VMs are deleted. The group takes into account some VM attributes when
     * making the selection including:
     *
     * + The status of the VM instance.
     * + The health of the VM instance.
     * + The instance template version the VM is based on.
     * + For regional managed instance groups, the location of the VM instance.
     *
     * This list is subject to change.
     *
     * If the group is part of a backend
     * service that has enabled
     * connection draining, it can take up to 60 seconds after the connection
     * draining duration has elapsed before the VM instance is removed or deleted.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {number} request.size
     *   The number of running instances that the managed instance group should
     *   maintain at any given time. The group automatically adds or removes
     *   instances to maintain the number of instances specified by this parameter.
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.resize.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_Resize_async
     */
    resize(request?: protos.google.cloud.compute.v1beta.IResizeInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    resize(request: protos.google.cloud.compute.v1beta.IResizeInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IResizeInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    resize(request: protos.google.cloud.compute.v1beta.IResizeInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IResizeInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Resizes the managed instance group with advanced configuration options like
     * disabling creation retries. This is an extended version of theresize method.
     *
     * If you increase the size of the instance group, the group creates new
     * instances using the current instance template. If you decrease the size,
     * the group deletes instances. The resize operation is markedDONE when the resize actions are scheduled even if the group
     * has not yet added or deleted any instances. You must separately
     * verify the status of the creating,creatingWithoutRetries, or deleting actions with
     * the get
     * orlistmanagedinstances
     * method.
     *
     * If the group is part of a backend
     * service that has enabled
     * connection draining, it can take up to 60 seconds after the connection
     * draining duration has elapsed before the VM instance is removed or deleted.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersResizeAdvancedRequest} request.instanceGroupManagersResizeAdvancedRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.resize_advanced.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_ResizeAdvanced_async
     */
    resizeAdvanced(request?: protos.google.cloud.compute.v1beta.IResizeAdvancedInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    resizeAdvanced(request: protos.google.cloud.compute.v1beta.IResizeAdvancedInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IResizeAdvancedInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    resizeAdvanced(request: protos.google.cloud.compute.v1beta.IResizeAdvancedInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IResizeAdvancedInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Flags the specified instances in the managed instance group to be
     * resumed. This method increases thetargetSize and decreases the targetSuspendedSize
     * of the managed instance group by the number of instances that you resume.
     * The resumeInstances operation is marked DONE if
     * the resumeInstances request is successful. The underlying
     * actions take additional time. You must separately verify the status of theRESUMING action with thelistmanagedinstances
     * method.
     *
     * In this request, you can only specify instances that are suspended. For
     * example, if an instance was previously suspended using the suspendInstances
     * method, it can be resumed using the resumeInstances method.
     *
     * If a health check is attached to the managed instance group, the specified
     * instances will be verified as healthy after they are resumed.
     *
     * You can specify a maximum of 1000 instances with this method per request.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersResumeInstancesRequest} request.instanceGroupManagersResumeInstancesRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.resume_instances.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_ResumeInstances_async
     */
    resumeInstances(request?: protos.google.cloud.compute.v1beta.IResumeInstancesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    resumeInstances(request: protos.google.cloud.compute.v1beta.IResumeInstancesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IResumeInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    resumeInstances(request: protos.google.cloud.compute.v1beta.IResumeInstancesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IResumeInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Motifies the autohealing policy for the instances in this managed
     * instance group.
     * [Deprecated] This method is deprecated. UseinstanceGroupManagers.patch instead.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the instance group manager.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersSetAutoHealingRequest} request.instanceGroupManagersSetAutoHealingRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.set_auto_healing_policies.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_SetAutoHealingPolicies_async
     */
    setAutoHealingPolicies(request?: protos.google.cloud.compute.v1beta.ISetAutoHealingPoliciesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    setAutoHealingPolicies(request: protos.google.cloud.compute.v1beta.ISetAutoHealingPoliciesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.ISetAutoHealingPoliciesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    setAutoHealingPolicies(request: protos.google.cloud.compute.v1beta.ISetAutoHealingPoliciesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.ISetAutoHealingPoliciesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Specifies the instance template to use when creating new instances in this
     * group. The templates for existing instances in the group do not change
     * unless you run recreateInstances, runapplyUpdatesToInstances, or set the group'supdatePolicy.type to PROACTIVE.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersSetInstanceTemplateRequest} request.instanceGroupManagersSetInstanceTemplateRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.set_instance_template.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_SetInstanceTemplate_async
     */
    setInstanceTemplate(request?: protos.google.cloud.compute.v1beta.ISetInstanceTemplateInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    setInstanceTemplate(request: protos.google.cloud.compute.v1beta.ISetInstanceTemplateInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.ISetInstanceTemplateInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    setInstanceTemplate(request: protos.google.cloud.compute.v1beta.ISetInstanceTemplateInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.ISetInstanceTemplateInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Modifies the target pools to which all instances in this managed instance
     * group are assigned. The target pools automatically apply to all of the
     * instances in the managed instance group. This operation is markedDONE when you make the request even if the instances have not
     * yet been added to their target pools. The change might take some time to
     * apply to all of the instances in the group depending on the size of the
     * group.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersSetTargetPoolsRequest} request.instanceGroupManagersSetTargetPoolsRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.set_target_pools.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_SetTargetPools_async
     */
    setTargetPools(request?: protos.google.cloud.compute.v1beta.ISetTargetPoolsInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    setTargetPools(request: protos.google.cloud.compute.v1beta.ISetTargetPoolsInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.ISetTargetPoolsInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    setTargetPools(request: protos.google.cloud.compute.v1beta.ISetTargetPoolsInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.ISetTargetPoolsInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Flags the specified instances in the managed instance group to be
     * started. This method increases thetargetSize and decreases the targetStoppedSize
     * of the managed instance group by the number of instances that you start.
     * The startInstances operation is marked DONE if
     * the startInstances request is successful. The underlying
     * actions take additional time. You must separately verify the status of theSTARTING action with thelistmanagedinstances
     * method.
     *
     * In this request, you can only specify instances that are stopped. For
     * example, if an instance was previously stopped using the stopInstances
     * method, it can be started using the startInstances method.
     *
     * If a health check is attached to the managed instance group, the specified
     * instances will be verified as healthy after they are started.
     *
     * You can specify a maximum of 1000 instances with this method per request.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersStartInstancesRequest} request.instanceGroupManagersStartInstancesRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.start_instances.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_StartInstances_async
     */
    startInstances(request?: protos.google.cloud.compute.v1beta.IStartInstancesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    startInstances(request: protos.google.cloud.compute.v1beta.IStartInstancesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IStartInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    startInstances(request: protos.google.cloud.compute.v1beta.IStartInstancesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IStartInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Flags the specified instances in the managed instance group to be
     * immediately stopped. You can only specify instances that are running in
     * this request. This method reduces thetargetSize and increases the targetStoppedSize
     * of the managed instance group by the number of instances that you stop.
     * The stopInstances operation is marked DONE if
     * the stopInstances request is successful. The underlying
     * actions take additional time. You must separately verify the status of theSTOPPING action with thelistmanagedinstances
     * method.
     *
     * If the standbyPolicy.initialDelaySec field is set, the group
     * delays stopping the instances until initialDelaySec have
     * passed from instance.creationTimestamp (that is, when the
     * instance was created). This delay gives your application time to
     * set itself up and initialize on the instance. If more thaninitialDelaySec seconds have passed sinceinstance.creationTimestamp when this method is called, there
     * will be zero delay.
     *
     * If the group is part of a backend
     * service that has enabled
     * connection draining, it can take up to 60 seconds after the connection
     * draining duration has elapsed before the VM instance is stopped.
     *
     * Stopped instances can be started using the startInstances
     * method.
     *
     * You can specify a maximum of 1000 instances with this method per request.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersStopInstancesRequest} request.instanceGroupManagersStopInstancesRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.stop_instances.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_StopInstances_async
     */
    stopInstances(request?: protos.google.cloud.compute.v1beta.IStopInstancesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    stopInstances(request: protos.google.cloud.compute.v1beta.IStopInstancesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IStopInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    stopInstances(request: protos.google.cloud.compute.v1beta.IStopInstancesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IStopInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Flags the specified instances in the managed instance group to be
     * immediately suspended. You can only specify instances that are running in
     * this request. This method reduces thetargetSize and increases the targetSuspendedSize
     * of the managed instance group by the number of instances that you suspend.
     * The suspendInstances operation is marked DONE if
     * the suspendInstances request is successful. The underlying
     * actions take additional time. You must separately verify the status of theSUSPENDING action with thelistmanagedinstances
     * method.
     *
     * If the standbyPolicy.initialDelaySec field is set, the group
     * delays suspension of the instances until initialDelaySec have
     * passed from instance.creationTimestamp (that is, when the
     * instance was created). This delay gives your application time to
     * set itself up and initialize on the instance. If more thaninitialDelaySec seconds have passed sinceinstance.creationTimestamp when this method is called, there
     * will be zero delay.
     *
     * If the group is part of a backend
     * service that has enabled
     * connection draining, it can take up to 60 seconds after the connection
     * draining duration has elapsed before the VM instance is suspended.
     *
     * Suspended instances can be resumed using the resumeInstances
     * method.
     *
     * You can specify a maximum of 1000 instances with this method per request.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersSuspendInstancesRequest} request.instanceGroupManagersSuspendInstancesRequestResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.suspend_instances.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_SuspendInstances_async
     */
    suspendInstances(request?: protos.google.cloud.compute.v1beta.ISuspendInstancesInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    suspendInstances(request: protos.google.cloud.compute.v1beta.ISuspendInstancesInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.ISuspendInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    suspendInstances(request: protos.google.cloud.compute.v1beta.ISuspendInstancesInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.ISuspendInstancesInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Returns permissions that a caller has on the specified resource.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.resource
     *   Name or id of the resource for this request.
     * @param {google.cloud.compute.v1beta.TestPermissionsRequest} request.testPermissionsRequestResource
     *   The body resource for this request
     * @param {string} request.zone
     *   The name of the zone for this request.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing {@link protos.google.cloud.compute.v1beta.TestPermissionsResponse|TestPermissionsResponse}.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.test_iam_permissions.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_TestIamPermissions_async
     */
    testIamPermissions(request?: protos.google.cloud.compute.v1beta.ITestIamPermissionsInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        protos.google.cloud.compute.v1beta.ITestPermissionsResponse,
        protos.google.cloud.compute.v1beta.ITestIamPermissionsInstanceGroupManagerRequest | undefined,
        {} | undefined
    ]>;
    testIamPermissions(request: protos.google.cloud.compute.v1beta.ITestIamPermissionsInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.ITestPermissionsResponse, protos.google.cloud.compute.v1beta.ITestIamPermissionsInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    testIamPermissions(request: protos.google.cloud.compute.v1beta.ITestIamPermissionsInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.ITestPermissionsResponse, protos.google.cloud.compute.v1beta.ITestIamPermissionsInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Updates a managed instance group using the information that you specify
     * in the request.
     * This operation is marked as DONE when the group is updated
     * even if the instances in the group have not yet been updated. You must
     * separately verify the status of the individual instances with thelistManagedInstances
     * method.
     *
     * If you update your group to specify a new template or instance
     * configuration, it's possible that your intended specification for each VM
     * in the group is different from the current state of that VM. To learn how
     * to apply an updated configuration to the VMs in a MIG, seeUpdating instances in
     * a MIG.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the instance group manager.
     * @param {google.cloud.compute.v1beta.InstanceGroupManager} request.instanceGroupManagerResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of the zone
     *   where you want to create the managed instance group.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.update.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_Update_async
     */
    update(request?: protos.google.cloud.compute.v1beta.IUpdateInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    update(request: protos.google.cloud.compute.v1beta.IUpdateInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IUpdateInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    update(request: protos.google.cloud.compute.v1beta.IUpdateInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IUpdateInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Inserts or updates per-instance configurations for the managed instance
     * group. perInstanceConfig.name serves as a key used to
     * distinguish whether to perform insert or patch.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     *   It should conform to RFC1035.
     * @param {google.cloud.compute.v1beta.InstanceGroupManagersUpdatePerInstanceConfigsReq} request.instanceGroupManagersUpdatePerInstanceConfigsReqResource
     *   The body resource for this request
     * @param {string} request.project
     *   Project ID for this request.
     * @param {string} request.requestId
     *   An optional request ID to identify requests. Specify a unique request ID so
     *   that if you must retry your request, the server will know to ignore the
     *   request if it has already been completed.
     *
     *   For example, consider a situation where you make an initial request and
     *   the request times out. If you make the request again with the same
     *   request ID, the server can check if original operation with the same
     *   request ID was received, and if so, will ignore the second request. This
     *   prevents clients from accidentally creating duplicate commitments.
     *
     *   The request ID must be
     *   a valid UUID with the exception that zero UUID is not supported
     *   (00000000-0000-0000-0000-000000000000).
     * @param {string} request.zone
     *   The name of thezone
     *   where the managed instance group is located.
     *   It should conform to RFC1035.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing
     *   a long running operation.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
     *   for more details and examples.
     *   This method is considered to be in beta. This means while
     *   stable it is still a work-in-progress and under active development,
     *   and might get backwards-incompatible changes at any time.
     *   `.promise()` is not supported yet.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.update_per_instance_configs.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_UpdatePerInstanceConfigs_async
     */
    updatePerInstanceConfigs(request?: protos.google.cloud.compute.v1beta.IUpdatePerInstanceConfigsInstanceGroupManagerRequest, options?: CallOptions): Promise<[
        LROperation<protos.google.cloud.compute.v1beta.IOperation, null>,
        protos.google.cloud.compute.v1beta.IOperation | undefined,
        {} | undefined
    ]>;
    updatePerInstanceConfigs(request: protos.google.cloud.compute.v1beta.IUpdatePerInstanceConfigsInstanceGroupManagerRequest, options: CallOptions, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IUpdatePerInstanceConfigsInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    updatePerInstanceConfigs(request: protos.google.cloud.compute.v1beta.IUpdatePerInstanceConfigsInstanceGroupManagerRequest, callback: Callback<protos.google.cloud.compute.v1beta.IOperation, protos.google.cloud.compute.v1beta.IUpdatePerInstanceConfigsInstanceGroupManagerRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Retrieves the list of managed instance groups and groups them by zone.
     *
     * To prevent failure, Google recommends that you set the
     * `returnPartialSuccess` parameter to `true`.
     *
     * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.filter
     *   A filter expression that filters resources listed in the response. Most
     *   Compute resources support two types of filter expressions:
     *   expressions that support regular expressions and expressions that follow
     *   API improvement proposal AIP-160.
     *   These two types of filter expressions cannot be mixed in one request.
     *
     *   If you want to use AIP-160, your expression must specify the field name, an
     *   operator, and the value that you want to use for filtering. The value
     *   must be a string, a number, or a boolean. The operator
     *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
     *
     *   For example, if you are filtering Compute Engine instances, you can
     *   exclude instances named `example-instance` by specifying
     *   `name != example-instance`.
     *
     *   The `:*` comparison can be used to test whether a key has been defined.
     *   For example, to find all objects with `owner` label use:
     *   ```
     *   labels.owner:*
     *   ```
     *
     *   You can also filter nested fields. For example, you could specify
     *   `scheduling.automaticRestart = false` to include instances only
     *   if they are not scheduled for automatic restarts. You can use filtering
     *   on nested fields to filter based onresource labels.
     *
     *   To filter on multiple expressions, provide each separate expression within
     *   parentheses. For example:
     *   ```
     *   (scheduling.automaticRestart = true)
     *   (cpuPlatform = "Intel Skylake")
     *   ```
     *   By default, each expression is an `AND` expression. However, you
     *   can include `AND` and `OR` expressions explicitly.
     *   For example:
     *   ```
     *   (cpuPlatform = "Intel Skylake") OR
     *   (cpuPlatform = "Intel Broadwell") AND
     *   (scheduling.automaticRestart = true)
     *   ```
     *
     *   If you want to use a regular expression, use the `eq` (equal) or `ne`
     *   (not equal) operator against a single un-parenthesized expression with or
     *   without quotes or against multiple parenthesized expressions. Examples:
     *
     *   `fieldname eq unquoted literal`
     *   `fieldname eq 'single quoted literal'`
     *   `fieldname eq "double quoted literal"`
     *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
     *
     *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
     *   The literal value must match the entire field.
     *
     *   For example, to filter for instances that do not end with name "instance",
     *   you would use `name ne .*instance`.
     *
     *   You cannot combine constraints on multiple fields using regular
     *   expressions.
     * @param {boolean} request.includeAllScopes
     *   Indicates whether every visible scope for each scope type (zone, region,
     *   global) should be included in the response. For new resource types added
     *   after this field, the flag has no effect as new resource types will always
     *   include every visible scope for each scope type in response. For resource
     *   types which predate this field, if this flag is omitted or false, only
     *   scopes of the scope types where the resource type is expected to be found
     *   will be included.
     * @param {number} request.maxResults
     *   The maximum number of results per page that should be returned.
     *   If the number of available results is larger than `maxResults`,
     *   Compute Engine returns a `nextPageToken` that can be used to get
     *   the next page of results in subsequent list requests. Acceptable values are
     *   `0` to `500`, inclusive. (Default: `500`)
     * @param {string} request.orderBy
     *   Sorts list results by a certain order. By default, results
     *   are returned in alphanumerical order based on the resource name.
     *
     *   You can also sort results in descending order based on the creation
     *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
     *   results based on the `creationTimestamp` field in
     *   reverse chronological order (newest result first). Use this to sort
     *   resources like operations so that the newest operation is returned first.
     *
     *   Currently, only sorting by `name` or
     *   `creationTimestamp desc` is supported.
     * @param {string} request.pageToken
     *   Specifies a page token to use. Set `pageToken` to the
     *   `nextPageToken` returned by a previous list request to get
     *   the next page of results.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {boolean} request.returnPartialSuccess
     *   Opt-in for partial success behavior which provides partial results in case
     *   of failure. The default value is false.
     *
     *   For example, when partial success behavior is enabled, aggregatedList for a
     *   single zone scope either returns all resources in the zone or no resources,
     *   with an error code.
     * @param {number} request.serviceProjectNumber
     *   The Shared VPC service project id or service project number for which
     *   aggregated list request is invoked for subnetworks list-usable api.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Object}
     *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
     *   When you iterate the returned iterable, each element will be an object representing
     *   as tuple [string, {@link protos.google.cloud.compute.v1beta.InstanceGroupManagersScopedList|InstanceGroupManagersScopedList}]. The API will be called under the hood as needed, once per the page,
     *   so you can stop the iteration when you don't need more results.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.aggregated_list.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_AggregatedList_async
     */
    aggregatedListAsync(request?: protos.google.cloud.compute.v1beta.IAggregatedListInstanceGroupManagersRequest, options?: CallOptions): AsyncIterable<[string, protos.google.cloud.compute.v1beta.IInstanceGroupManagersScopedList]>;
    /**
    * Retrieves a list of managed instance groups that are contained within the
    * specified project and zone.
    *
    * @param {Object} request
    *   The request object that will be sent.
    * @param {string} request.filter
    *   A filter expression that filters resources listed in the response. Most
    *   Compute resources support two types of filter expressions:
    *   expressions that support regular expressions and expressions that follow
    *   API improvement proposal AIP-160.
    *   These two types of filter expressions cannot be mixed in one request.
    *
    *   If you want to use AIP-160, your expression must specify the field name, an
    *   operator, and the value that you want to use for filtering. The value
    *   must be a string, a number, or a boolean. The operator
    *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
    *
    *   For example, if you are filtering Compute Engine instances, you can
    *   exclude instances named `example-instance` by specifying
    *   `name != example-instance`.
    *
    *   The `:*` comparison can be used to test whether a key has been defined.
    *   For example, to find all objects with `owner` label use:
    *   ```
    *   labels.owner:*
    *   ```
    *
    *   You can also filter nested fields. For example, you could specify
    *   `scheduling.automaticRestart = false` to include instances only
    *   if they are not scheduled for automatic restarts. You can use filtering
    *   on nested fields to filter based onresource labels.
    *
    *   To filter on multiple expressions, provide each separate expression within
    *   parentheses. For example:
    *   ```
    *   (scheduling.automaticRestart = true)
    *   (cpuPlatform = "Intel Skylake")
    *   ```
    *   By default, each expression is an `AND` expression. However, you
    *   can include `AND` and `OR` expressions explicitly.
    *   For example:
    *   ```
    *   (cpuPlatform = "Intel Skylake") OR
    *   (cpuPlatform = "Intel Broadwell") AND
    *   (scheduling.automaticRestart = true)
    *   ```
    *
    *   If you want to use a regular expression, use the `eq` (equal) or `ne`
    *   (not equal) operator against a single un-parenthesized expression with or
    *   without quotes or against multiple parenthesized expressions. Examples:
    *
    *   `fieldname eq unquoted literal`
    *   `fieldname eq 'single quoted literal'`
    *   `fieldname eq "double quoted literal"`
    *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
    *
    *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
    *   The literal value must match the entire field.
    *
    *   For example, to filter for instances that do not end with name "instance",
    *   you would use `name ne .*instance`.
    *
    *   You cannot combine constraints on multiple fields using regular
    *   expressions.
    * @param {number} request.maxResults
    *   The maximum number of results per page that should be returned.
    *   If the number of available results is larger than `maxResults`,
    *   Compute Engine returns a `nextPageToken` that can be used to get
    *   the next page of results in subsequent list requests. Acceptable values are
    *   `0` to `500`, inclusive. (Default: `500`)
    * @param {string} request.orderBy
    *   Sorts list results by a certain order. By default, results
    *   are returned in alphanumerical order based on the resource name.
    *
    *   You can also sort results in descending order based on the creation
    *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
    *   results based on the `creationTimestamp` field in
    *   reverse chronological order (newest result first). Use this to sort
    *   resources like operations so that the newest operation is returned first.
    *
    *   Currently, only sorting by `name` or
    *   `creationTimestamp desc` is supported.
    * @param {string} request.pageToken
    *   Specifies a page token to use. Set `pageToken` to the
    *   `nextPageToken` returned by a previous list request to get
    *   the next page of results.
    * @param {string} request.project
    *   Project ID for this request.
    * @param {boolean} request.returnPartialSuccess
    *   Opt-in for partial success behavior which provides partial results in case
    *   of failure. The default value is false.
    *
    *   For example, when partial success behavior is enabled, aggregatedList for a
    *   single zone scope either returns all resources in the zone or no resources,
    *   with an error code.
    * @param {string} request.zone
    *   The name of thezone where the managed
    *   instance group is located.
    * @param {object} [options]
    *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
    * @returns {Promise} - The promise which resolves to an array.
    *   The first element of the array is Array of {@link protos.google.cloud.compute.v1beta.InstanceGroupManager|InstanceGroupManager}.
    *   The client library will perform auto-pagination by default: it will call the API as many
    *   times as needed and will merge results from all the pages into this array.
    *   Note that it can affect your quota.
    *   We recommend using `listAsync()`
    *   method described below for async iteration which you can stop as needed.
    *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
    *   for more details and examples.
    */
    list(request?: protos.google.cloud.compute.v1beta.IListInstanceGroupManagersRequest, options?: CallOptions): Promise<[
        protos.google.cloud.compute.v1beta.IInstanceGroupManager[],
        protos.google.cloud.compute.v1beta.IListInstanceGroupManagersRequest | null,
        protos.google.cloud.compute.v1beta.IInstanceGroupManagerList
    ]>;
    list(request: protos.google.cloud.compute.v1beta.IListInstanceGroupManagersRequest, options: CallOptions, callback: PaginationCallback<protos.google.cloud.compute.v1beta.IListInstanceGroupManagersRequest, protos.google.cloud.compute.v1beta.IInstanceGroupManagerList | null | undefined, protos.google.cloud.compute.v1beta.IInstanceGroupManager>): void;
    list(request: protos.google.cloud.compute.v1beta.IListInstanceGroupManagersRequest, callback: PaginationCallback<protos.google.cloud.compute.v1beta.IListInstanceGroupManagersRequest, protos.google.cloud.compute.v1beta.IInstanceGroupManagerList | null | undefined, protos.google.cloud.compute.v1beta.IInstanceGroupManager>): void;
    /**
     * Equivalent to `list`, but returns a NodeJS Stream object.
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.filter
     *   A filter expression that filters resources listed in the response. Most
     *   Compute resources support two types of filter expressions:
     *   expressions that support regular expressions and expressions that follow
     *   API improvement proposal AIP-160.
     *   These two types of filter expressions cannot be mixed in one request.
     *
     *   If you want to use AIP-160, your expression must specify the field name, an
     *   operator, and the value that you want to use for filtering. The value
     *   must be a string, a number, or a boolean. The operator
     *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
     *
     *   For example, if you are filtering Compute Engine instances, you can
     *   exclude instances named `example-instance` by specifying
     *   `name != example-instance`.
     *
     *   The `:*` comparison can be used to test whether a key has been defined.
     *   For example, to find all objects with `owner` label use:
     *   ```
     *   labels.owner:*
     *   ```
     *
     *   You can also filter nested fields. For example, you could specify
     *   `scheduling.automaticRestart = false` to include instances only
     *   if they are not scheduled for automatic restarts. You can use filtering
     *   on nested fields to filter based onresource labels.
     *
     *   To filter on multiple expressions, provide each separate expression within
     *   parentheses. For example:
     *   ```
     *   (scheduling.automaticRestart = true)
     *   (cpuPlatform = "Intel Skylake")
     *   ```
     *   By default, each expression is an `AND` expression. However, you
     *   can include `AND` and `OR` expressions explicitly.
     *   For example:
     *   ```
     *   (cpuPlatform = "Intel Skylake") OR
     *   (cpuPlatform = "Intel Broadwell") AND
     *   (scheduling.automaticRestart = true)
     *   ```
     *
     *   If you want to use a regular expression, use the `eq` (equal) or `ne`
     *   (not equal) operator against a single un-parenthesized expression with or
     *   without quotes or against multiple parenthesized expressions. Examples:
     *
     *   `fieldname eq unquoted literal`
     *   `fieldname eq 'single quoted literal'`
     *   `fieldname eq "double quoted literal"`
     *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
     *
     *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
     *   The literal value must match the entire field.
     *
     *   For example, to filter for instances that do not end with name "instance",
     *   you would use `name ne .*instance`.
     *
     *   You cannot combine constraints on multiple fields using regular
     *   expressions.
     * @param {number} request.maxResults
     *   The maximum number of results per page that should be returned.
     *   If the number of available results is larger than `maxResults`,
     *   Compute Engine returns a `nextPageToken` that can be used to get
     *   the next page of results in subsequent list requests. Acceptable values are
     *   `0` to `500`, inclusive. (Default: `500`)
     * @param {string} request.orderBy
     *   Sorts list results by a certain order. By default, results
     *   are returned in alphanumerical order based on the resource name.
     *
     *   You can also sort results in descending order based on the creation
     *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
     *   results based on the `creationTimestamp` field in
     *   reverse chronological order (newest result first). Use this to sort
     *   resources like operations so that the newest operation is returned first.
     *
     *   Currently, only sorting by `name` or
     *   `creationTimestamp desc` is supported.
     * @param {string} request.pageToken
     *   Specifies a page token to use. Set `pageToken` to the
     *   `nextPageToken` returned by a previous list request to get
     *   the next page of results.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {boolean} request.returnPartialSuccess
     *   Opt-in for partial success behavior which provides partial results in case
     *   of failure. The default value is false.
     *
     *   For example, when partial success behavior is enabled, aggregatedList for a
     *   single zone scope either returns all resources in the zone or no resources,
     *   with an error code.
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Stream}
     *   An object stream which emits an object representing {@link protos.google.cloud.compute.v1beta.InstanceGroupManager|InstanceGroupManager} on 'data' event.
     *   The client library will perform auto-pagination by default: it will call the API as many
     *   times as needed. Note that it can affect your quota.
     *   We recommend using `listAsync()`
     *   method described below for async iteration which you can stop as needed.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     */
    listStream(request?: protos.google.cloud.compute.v1beta.IListInstanceGroupManagersRequest, options?: CallOptions): Transform;
    /**
     * Equivalent to `list`, but returns an iterable object.
     *
     * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.filter
     *   A filter expression that filters resources listed in the response. Most
     *   Compute resources support two types of filter expressions:
     *   expressions that support regular expressions and expressions that follow
     *   API improvement proposal AIP-160.
     *   These two types of filter expressions cannot be mixed in one request.
     *
     *   If you want to use AIP-160, your expression must specify the field name, an
     *   operator, and the value that you want to use for filtering. The value
     *   must be a string, a number, or a boolean. The operator
     *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
     *
     *   For example, if you are filtering Compute Engine instances, you can
     *   exclude instances named `example-instance` by specifying
     *   `name != example-instance`.
     *
     *   The `:*` comparison can be used to test whether a key has been defined.
     *   For example, to find all objects with `owner` label use:
     *   ```
     *   labels.owner:*
     *   ```
     *
     *   You can also filter nested fields. For example, you could specify
     *   `scheduling.automaticRestart = false` to include instances only
     *   if they are not scheduled for automatic restarts. You can use filtering
     *   on nested fields to filter based onresource labels.
     *
     *   To filter on multiple expressions, provide each separate expression within
     *   parentheses. For example:
     *   ```
     *   (scheduling.automaticRestart = true)
     *   (cpuPlatform = "Intel Skylake")
     *   ```
     *   By default, each expression is an `AND` expression. However, you
     *   can include `AND` and `OR` expressions explicitly.
     *   For example:
     *   ```
     *   (cpuPlatform = "Intel Skylake") OR
     *   (cpuPlatform = "Intel Broadwell") AND
     *   (scheduling.automaticRestart = true)
     *   ```
     *
     *   If you want to use a regular expression, use the `eq` (equal) or `ne`
     *   (not equal) operator against a single un-parenthesized expression with or
     *   without quotes or against multiple parenthesized expressions. Examples:
     *
     *   `fieldname eq unquoted literal`
     *   `fieldname eq 'single quoted literal'`
     *   `fieldname eq "double quoted literal"`
     *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
     *
     *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
     *   The literal value must match the entire field.
     *
     *   For example, to filter for instances that do not end with name "instance",
     *   you would use `name ne .*instance`.
     *
     *   You cannot combine constraints on multiple fields using regular
     *   expressions.
     * @param {number} request.maxResults
     *   The maximum number of results per page that should be returned.
     *   If the number of available results is larger than `maxResults`,
     *   Compute Engine returns a `nextPageToken` that can be used to get
     *   the next page of results in subsequent list requests. Acceptable values are
     *   `0` to `500`, inclusive. (Default: `500`)
     * @param {string} request.orderBy
     *   Sorts list results by a certain order. By default, results
     *   are returned in alphanumerical order based on the resource name.
     *
     *   You can also sort results in descending order based on the creation
     *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
     *   results based on the `creationTimestamp` field in
     *   reverse chronological order (newest result first). Use this to sort
     *   resources like operations so that the newest operation is returned first.
     *
     *   Currently, only sorting by `name` or
     *   `creationTimestamp desc` is supported.
     * @param {string} request.pageToken
     *   Specifies a page token to use. Set `pageToken` to the
     *   `nextPageToken` returned by a previous list request to get
     *   the next page of results.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {boolean} request.returnPartialSuccess
     *   Opt-in for partial success behavior which provides partial results in case
     *   of failure. The default value is false.
     *
     *   For example, when partial success behavior is enabled, aggregatedList for a
     *   single zone scope either returns all resources in the zone or no resources,
     *   with an error code.
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Object}
     *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
     *   When you iterate the returned iterable, each element will be an object representing
     *   {@link protos.google.cloud.compute.v1beta.InstanceGroupManager|InstanceGroupManager}. The API will be called under the hood as needed, once per the page,
     *   so you can stop the iteration when you don't need more results.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.list.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_List_async
     */
    listAsync(request?: protos.google.cloud.compute.v1beta.IListInstanceGroupManagersRequest, options?: CallOptions): AsyncIterable<protos.google.cloud.compute.v1beta.IInstanceGroupManager>;
    /**
    * Lists all errors thrown by actions on instances for a given managed
    * instance group. The filter and orderBy query
    * parameters are not supported.
    *
    * @param {Object} request
    *   The request object that will be sent.
    * @param {string} request.filter
    *   A filter expression that filters resources listed in the response. Most
    *   Compute resources support two types of filter expressions:
    *   expressions that support regular expressions and expressions that follow
    *   API improvement proposal AIP-160.
    *   These two types of filter expressions cannot be mixed in one request.
    *
    *   If you want to use AIP-160, your expression must specify the field name, an
    *   operator, and the value that you want to use for filtering. The value
    *   must be a string, a number, or a boolean. The operator
    *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
    *
    *   For example, if you are filtering Compute Engine instances, you can
    *   exclude instances named `example-instance` by specifying
    *   `name != example-instance`.
    *
    *   The `:*` comparison can be used to test whether a key has been defined.
    *   For example, to find all objects with `owner` label use:
    *   ```
    *   labels.owner:*
    *   ```
    *
    *   You can also filter nested fields. For example, you could specify
    *   `scheduling.automaticRestart = false` to include instances only
    *   if they are not scheduled for automatic restarts. You can use filtering
    *   on nested fields to filter based onresource labels.
    *
    *   To filter on multiple expressions, provide each separate expression within
    *   parentheses. For example:
    *   ```
    *   (scheduling.automaticRestart = true)
    *   (cpuPlatform = "Intel Skylake")
    *   ```
    *   By default, each expression is an `AND` expression. However, you
    *   can include `AND` and `OR` expressions explicitly.
    *   For example:
    *   ```
    *   (cpuPlatform = "Intel Skylake") OR
    *   (cpuPlatform = "Intel Broadwell") AND
    *   (scheduling.automaticRestart = true)
    *   ```
    *
    *   If you want to use a regular expression, use the `eq` (equal) or `ne`
    *   (not equal) operator against a single un-parenthesized expression with or
    *   without quotes or against multiple parenthesized expressions. Examples:
    *
    *   `fieldname eq unquoted literal`
    *   `fieldname eq 'single quoted literal'`
    *   `fieldname eq "double quoted literal"`
    *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
    *
    *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
    *   The literal value must match the entire field.
    *
    *   For example, to filter for instances that do not end with name "instance",
    *   you would use `name ne .*instance`.
    *
    *   You cannot combine constraints on multiple fields using regular
    *   expressions.
    * @param {string} request.instanceGroupManager
    *   The name of the managed instance group.
    *   It must be a string that meets the requirements in RFC1035, or an
    *   unsigned long integer: must match regexp pattern:
    *   (?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?)|1-9{0,19}.
    * @param {number} request.maxResults
    *   The maximum number of results per page that should be returned.
    *   If the number of available results is larger than `maxResults`,
    *   Compute Engine returns a `nextPageToken` that can be used to get
    *   the next page of results in subsequent list requests. Acceptable values are
    *   `0` to `500`, inclusive. (Default: `500`)
    * @param {string} request.orderBy
    *   Sorts list results by a certain order. By default, results
    *   are returned in alphanumerical order based on the resource name.
    *
    *   You can also sort results in descending order based on the creation
    *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
    *   results based on the `creationTimestamp` field in
    *   reverse chronological order (newest result first). Use this to sort
    *   resources like operations so that the newest operation is returned first.
    *
    *   Currently, only sorting by `name` or
    *   `creationTimestamp desc` is supported.
    * @param {string} request.pageToken
    *   Specifies a page token to use. Set `pageToken` to the
    *   `nextPageToken` returned by a previous list request to get
    *   the next page of results.
    * @param {string} request.project
    *   Project ID for this request.
    * @param {boolean} request.returnPartialSuccess
    *   Opt-in for partial success behavior which provides partial results in case
    *   of failure. The default value is false.
    *
    *   For example, when partial success behavior is enabled, aggregatedList for a
    *   single zone scope either returns all resources in the zone or no resources,
    *   with an error code.
    * @param {string} request.zone
    *   The name of thezone where the managed
    *   instance group is located.
    *   It should conform to RFC1035.
    * @param {object} [options]
    *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
    * @returns {Promise} - The promise which resolves to an array.
    *   The first element of the array is Array of {@link protos.google.cloud.compute.v1beta.InstanceManagedByIgmError|InstanceManagedByIgmError}.
    *   The client library will perform auto-pagination by default: it will call the API as many
    *   times as needed and will merge results from all the pages into this array.
    *   Note that it can affect your quota.
    *   We recommend using `listErrorsAsync()`
    *   method described below for async iteration which you can stop as needed.
    *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
    *   for more details and examples.
    */
    listErrors(request?: protos.google.cloud.compute.v1beta.IListErrorsInstanceGroupManagersRequest, options?: CallOptions): Promise<[
        protos.google.cloud.compute.v1beta.IInstanceManagedByIgmError[],
        protos.google.cloud.compute.v1beta.IListErrorsInstanceGroupManagersRequest | null,
        protos.google.cloud.compute.v1beta.IInstanceGroupManagersListErrorsResponse
    ]>;
    listErrors(request: protos.google.cloud.compute.v1beta.IListErrorsInstanceGroupManagersRequest, options: CallOptions, callback: PaginationCallback<protos.google.cloud.compute.v1beta.IListErrorsInstanceGroupManagersRequest, protos.google.cloud.compute.v1beta.IInstanceGroupManagersListErrorsResponse | null | undefined, protos.google.cloud.compute.v1beta.IInstanceManagedByIgmError>): void;
    listErrors(request: protos.google.cloud.compute.v1beta.IListErrorsInstanceGroupManagersRequest, callback: PaginationCallback<protos.google.cloud.compute.v1beta.IListErrorsInstanceGroupManagersRequest, protos.google.cloud.compute.v1beta.IInstanceGroupManagersListErrorsResponse | null | undefined, protos.google.cloud.compute.v1beta.IInstanceManagedByIgmError>): void;
    /**
     * Equivalent to `listErrors`, but returns a NodeJS Stream object.
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.filter
     *   A filter expression that filters resources listed in the response. Most
     *   Compute resources support two types of filter expressions:
     *   expressions that support regular expressions and expressions that follow
     *   API improvement proposal AIP-160.
     *   These two types of filter expressions cannot be mixed in one request.
     *
     *   If you want to use AIP-160, your expression must specify the field name, an
     *   operator, and the value that you want to use for filtering. The value
     *   must be a string, a number, or a boolean. The operator
     *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
     *
     *   For example, if you are filtering Compute Engine instances, you can
     *   exclude instances named `example-instance` by specifying
     *   `name != example-instance`.
     *
     *   The `:*` comparison can be used to test whether a key has been defined.
     *   For example, to find all objects with `owner` label use:
     *   ```
     *   labels.owner:*
     *   ```
     *
     *   You can also filter nested fields. For example, you could specify
     *   `scheduling.automaticRestart = false` to include instances only
     *   if they are not scheduled for automatic restarts. You can use filtering
     *   on nested fields to filter based onresource labels.
     *
     *   To filter on multiple expressions, provide each separate expression within
     *   parentheses. For example:
     *   ```
     *   (scheduling.automaticRestart = true)
     *   (cpuPlatform = "Intel Skylake")
     *   ```
     *   By default, each expression is an `AND` expression. However, you
     *   can include `AND` and `OR` expressions explicitly.
     *   For example:
     *   ```
     *   (cpuPlatform = "Intel Skylake") OR
     *   (cpuPlatform = "Intel Broadwell") AND
     *   (scheduling.automaticRestart = true)
     *   ```
     *
     *   If you want to use a regular expression, use the `eq` (equal) or `ne`
     *   (not equal) operator against a single un-parenthesized expression with or
     *   without quotes or against multiple parenthesized expressions. Examples:
     *
     *   `fieldname eq unquoted literal`
     *   `fieldname eq 'single quoted literal'`
     *   `fieldname eq "double quoted literal"`
     *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
     *
     *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
     *   The literal value must match the entire field.
     *
     *   For example, to filter for instances that do not end with name "instance",
     *   you would use `name ne .*instance`.
     *
     *   You cannot combine constraints on multiple fields using regular
     *   expressions.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     *   It must be a string that meets the requirements in RFC1035, or an
     *   unsigned long integer: must match regexp pattern:
     *   (?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?)|1-9{0,19}.
     * @param {number} request.maxResults
     *   The maximum number of results per page that should be returned.
     *   If the number of available results is larger than `maxResults`,
     *   Compute Engine returns a `nextPageToken` that can be used to get
     *   the next page of results in subsequent list requests. Acceptable values are
     *   `0` to `500`, inclusive. (Default: `500`)
     * @param {string} request.orderBy
     *   Sorts list results by a certain order. By default, results
     *   are returned in alphanumerical order based on the resource name.
     *
     *   You can also sort results in descending order based on the creation
     *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
     *   results based on the `creationTimestamp` field in
     *   reverse chronological order (newest result first). Use this to sort
     *   resources like operations so that the newest operation is returned first.
     *
     *   Currently, only sorting by `name` or
     *   `creationTimestamp desc` is supported.
     * @param {string} request.pageToken
     *   Specifies a page token to use. Set `pageToken` to the
     *   `nextPageToken` returned by a previous list request to get
     *   the next page of results.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {boolean} request.returnPartialSuccess
     *   Opt-in for partial success behavior which provides partial results in case
     *   of failure. The default value is false.
     *
     *   For example, when partial success behavior is enabled, aggregatedList for a
     *   single zone scope either returns all resources in the zone or no resources,
     *   with an error code.
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     *   It should conform to RFC1035.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Stream}
     *   An object stream which emits an object representing {@link protos.google.cloud.compute.v1beta.InstanceManagedByIgmError|InstanceManagedByIgmError} on 'data' event.
     *   The client library will perform auto-pagination by default: it will call the API as many
     *   times as needed. Note that it can affect your quota.
     *   We recommend using `listErrorsAsync()`
     *   method described below for async iteration which you can stop as needed.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     */
    listErrorsStream(request?: protos.google.cloud.compute.v1beta.IListErrorsInstanceGroupManagersRequest, options?: CallOptions): Transform;
    /**
     * Equivalent to `listErrors`, but returns an iterable object.
     *
     * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.filter
     *   A filter expression that filters resources listed in the response. Most
     *   Compute resources support two types of filter expressions:
     *   expressions that support regular expressions and expressions that follow
     *   API improvement proposal AIP-160.
     *   These two types of filter expressions cannot be mixed in one request.
     *
     *   If you want to use AIP-160, your expression must specify the field name, an
     *   operator, and the value that you want to use for filtering. The value
     *   must be a string, a number, or a boolean. The operator
     *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
     *
     *   For example, if you are filtering Compute Engine instances, you can
     *   exclude instances named `example-instance` by specifying
     *   `name != example-instance`.
     *
     *   The `:*` comparison can be used to test whether a key has been defined.
     *   For example, to find all objects with `owner` label use:
     *   ```
     *   labels.owner:*
     *   ```
     *
     *   You can also filter nested fields. For example, you could specify
     *   `scheduling.automaticRestart = false` to include instances only
     *   if they are not scheduled for automatic restarts. You can use filtering
     *   on nested fields to filter based onresource labels.
     *
     *   To filter on multiple expressions, provide each separate expression within
     *   parentheses. For example:
     *   ```
     *   (scheduling.automaticRestart = true)
     *   (cpuPlatform = "Intel Skylake")
     *   ```
     *   By default, each expression is an `AND` expression. However, you
     *   can include `AND` and `OR` expressions explicitly.
     *   For example:
     *   ```
     *   (cpuPlatform = "Intel Skylake") OR
     *   (cpuPlatform = "Intel Broadwell") AND
     *   (scheduling.automaticRestart = true)
     *   ```
     *
     *   If you want to use a regular expression, use the `eq` (equal) or `ne`
     *   (not equal) operator against a single un-parenthesized expression with or
     *   without quotes or against multiple parenthesized expressions. Examples:
     *
     *   `fieldname eq unquoted literal`
     *   `fieldname eq 'single quoted literal'`
     *   `fieldname eq "double quoted literal"`
     *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
     *
     *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
     *   The literal value must match the entire field.
     *
     *   For example, to filter for instances that do not end with name "instance",
     *   you would use `name ne .*instance`.
     *
     *   You cannot combine constraints on multiple fields using regular
     *   expressions.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     *   It must be a string that meets the requirements in RFC1035, or an
     *   unsigned long integer: must match regexp pattern:
     *   (?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?)|1-9{0,19}.
     * @param {number} request.maxResults
     *   The maximum number of results per page that should be returned.
     *   If the number of available results is larger than `maxResults`,
     *   Compute Engine returns a `nextPageToken` that can be used to get
     *   the next page of results in subsequent list requests. Acceptable values are
     *   `0` to `500`, inclusive. (Default: `500`)
     * @param {string} request.orderBy
     *   Sorts list results by a certain order. By default, results
     *   are returned in alphanumerical order based on the resource name.
     *
     *   You can also sort results in descending order based on the creation
     *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
     *   results based on the `creationTimestamp` field in
     *   reverse chronological order (newest result first). Use this to sort
     *   resources like operations so that the newest operation is returned first.
     *
     *   Currently, only sorting by `name` or
     *   `creationTimestamp desc` is supported.
     * @param {string} request.pageToken
     *   Specifies a page token to use. Set `pageToken` to the
     *   `nextPageToken` returned by a previous list request to get
     *   the next page of results.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {boolean} request.returnPartialSuccess
     *   Opt-in for partial success behavior which provides partial results in case
     *   of failure. The default value is false.
     *
     *   For example, when partial success behavior is enabled, aggregatedList for a
     *   single zone scope either returns all resources in the zone or no resources,
     *   with an error code.
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     *   It should conform to RFC1035.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Object}
     *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
     *   When you iterate the returned iterable, each element will be an object representing
     *   {@link protos.google.cloud.compute.v1beta.InstanceManagedByIgmError|InstanceManagedByIgmError}. The API will be called under the hood as needed, once per the page,
     *   so you can stop the iteration when you don't need more results.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.list_errors.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_ListErrors_async
     */
    listErrorsAsync(request?: protos.google.cloud.compute.v1beta.IListErrorsInstanceGroupManagersRequest, options?: CallOptions): AsyncIterable<protos.google.cloud.compute.v1beta.IInstanceManagedByIgmError>;
    /**
    * Lists all of the instances in the managed instance group. Each instance
    * in the list has a currentAction, which indicates the action
    * that the managed instance group is performing on the instance. For example,
    * if the group is still creating an instance, the currentAction
    * is CREATING. If a previous action failed, the
    * list displays the errors for that failed action. The orderBy
    * query parameter is not supported. The `pageToken` query parameter is
    * supported only if the group's `listManagedInstancesResults` field is set
    * to `PAGINATED`.
    *
    * @param {Object} request
    *   The request object that will be sent.
    * @param {string} request.filter
    *   A filter expression that filters resources listed in the response. Most
    *   Compute resources support two types of filter expressions:
    *   expressions that support regular expressions and expressions that follow
    *   API improvement proposal AIP-160.
    *   These two types of filter expressions cannot be mixed in one request.
    *
    *   If you want to use AIP-160, your expression must specify the field name, an
    *   operator, and the value that you want to use for filtering. The value
    *   must be a string, a number, or a boolean. The operator
    *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
    *
    *   For example, if you are filtering Compute Engine instances, you can
    *   exclude instances named `example-instance` by specifying
    *   `name != example-instance`.
    *
    *   The `:*` comparison can be used to test whether a key has been defined.
    *   For example, to find all objects with `owner` label use:
    *   ```
    *   labels.owner:*
    *   ```
    *
    *   You can also filter nested fields. For example, you could specify
    *   `scheduling.automaticRestart = false` to include instances only
    *   if they are not scheduled for automatic restarts. You can use filtering
    *   on nested fields to filter based onresource labels.
    *
    *   To filter on multiple expressions, provide each separate expression within
    *   parentheses. For example:
    *   ```
    *   (scheduling.automaticRestart = true)
    *   (cpuPlatform = "Intel Skylake")
    *   ```
    *   By default, each expression is an `AND` expression. However, you
    *   can include `AND` and `OR` expressions explicitly.
    *   For example:
    *   ```
    *   (cpuPlatform = "Intel Skylake") OR
    *   (cpuPlatform = "Intel Broadwell") AND
    *   (scheduling.automaticRestart = true)
    *   ```
    *
    *   If you want to use a regular expression, use the `eq` (equal) or `ne`
    *   (not equal) operator against a single un-parenthesized expression with or
    *   without quotes or against multiple parenthesized expressions. Examples:
    *
    *   `fieldname eq unquoted literal`
    *   `fieldname eq 'single quoted literal'`
    *   `fieldname eq "double quoted literal"`
    *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
    *
    *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
    *   The literal value must match the entire field.
    *
    *   For example, to filter for instances that do not end with name "instance",
    *   you would use `name ne .*instance`.
    *
    *   You cannot combine constraints on multiple fields using regular
    *   expressions.
    * @param {string} request.instanceGroupManager
    *   The name of the managed instance group.
    * @param {number} request.maxResults
    *   The maximum number of results per page that should be returned.
    *   If the number of available results is larger than `maxResults`,
    *   Compute Engine returns a `nextPageToken` that can be used to get
    *   the next page of results in subsequent list requests. Acceptable values are
    *   `0` to `500`, inclusive. (Default: `500`)
    * @param {string} request.orderBy
    *   Sorts list results by a certain order. By default, results
    *   are returned in alphanumerical order based on the resource name.
    *
    *   You can also sort results in descending order based on the creation
    *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
    *   results based on the `creationTimestamp` field in
    *   reverse chronological order (newest result first). Use this to sort
    *   resources like operations so that the newest operation is returned first.
    *
    *   Currently, only sorting by `name` or
    *   `creationTimestamp desc` is supported.
    * @param {string} request.pageToken
    *   Specifies a page token to use. Set `pageToken` to the
    *   `nextPageToken` returned by a previous list request to get
    *   the next page of results.
    * @param {string} request.project
    *   Project ID for this request.
    * @param {boolean} request.returnPartialSuccess
    *   Opt-in for partial success behavior which provides partial results in case
    *   of failure. The default value is false.
    *
    *   For example, when partial success behavior is enabled, aggregatedList for a
    *   single zone scope either returns all resources in the zone or no resources,
    *   with an error code.
    * @param {string} request.zone
    *   The name of thezone where the managed
    *   instance group is located.
    * @param {object} [options]
    *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
    * @returns {Promise} - The promise which resolves to an array.
    *   The first element of the array is Array of {@link protos.google.cloud.compute.v1beta.ManagedInstance|ManagedInstance}.
    *   The client library will perform auto-pagination by default: it will call the API as many
    *   times as needed and will merge results from all the pages into this array.
    *   Note that it can affect your quota.
    *   We recommend using `listManagedInstancesAsync()`
    *   method described below for async iteration which you can stop as needed.
    *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
    *   for more details and examples.
    */
    listManagedInstances(request?: protos.google.cloud.compute.v1beta.IListManagedInstancesInstanceGroupManagersRequest, options?: CallOptions): Promise<[
        protos.google.cloud.compute.v1beta.IManagedInstance[],
        protos.google.cloud.compute.v1beta.IListManagedInstancesInstanceGroupManagersRequest | null,
        protos.google.cloud.compute.v1beta.IInstanceGroupManagersListManagedInstancesResponse
    ]>;
    listManagedInstances(request: protos.google.cloud.compute.v1beta.IListManagedInstancesInstanceGroupManagersRequest, options: CallOptions, callback: PaginationCallback<protos.google.cloud.compute.v1beta.IListManagedInstancesInstanceGroupManagersRequest, protos.google.cloud.compute.v1beta.IInstanceGroupManagersListManagedInstancesResponse | null | undefined, protos.google.cloud.compute.v1beta.IManagedInstance>): void;
    listManagedInstances(request: protos.google.cloud.compute.v1beta.IListManagedInstancesInstanceGroupManagersRequest, callback: PaginationCallback<protos.google.cloud.compute.v1beta.IListManagedInstancesInstanceGroupManagersRequest, protos.google.cloud.compute.v1beta.IInstanceGroupManagersListManagedInstancesResponse | null | undefined, protos.google.cloud.compute.v1beta.IManagedInstance>): void;
    /**
     * Equivalent to `listManagedInstances`, but returns a NodeJS Stream object.
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.filter
     *   A filter expression that filters resources listed in the response. Most
     *   Compute resources support two types of filter expressions:
     *   expressions that support regular expressions and expressions that follow
     *   API improvement proposal AIP-160.
     *   These two types of filter expressions cannot be mixed in one request.
     *
     *   If you want to use AIP-160, your expression must specify the field name, an
     *   operator, and the value that you want to use for filtering. The value
     *   must be a string, a number, or a boolean. The operator
     *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
     *
     *   For example, if you are filtering Compute Engine instances, you can
     *   exclude instances named `example-instance` by specifying
     *   `name != example-instance`.
     *
     *   The `:*` comparison can be used to test whether a key has been defined.
     *   For example, to find all objects with `owner` label use:
     *   ```
     *   labels.owner:*
     *   ```
     *
     *   You can also filter nested fields. For example, you could specify
     *   `scheduling.automaticRestart = false` to include instances only
     *   if they are not scheduled for automatic restarts. You can use filtering
     *   on nested fields to filter based onresource labels.
     *
     *   To filter on multiple expressions, provide each separate expression within
     *   parentheses. For example:
     *   ```
     *   (scheduling.automaticRestart = true)
     *   (cpuPlatform = "Intel Skylake")
     *   ```
     *   By default, each expression is an `AND` expression. However, you
     *   can include `AND` and `OR` expressions explicitly.
     *   For example:
     *   ```
     *   (cpuPlatform = "Intel Skylake") OR
     *   (cpuPlatform = "Intel Broadwell") AND
     *   (scheduling.automaticRestart = true)
     *   ```
     *
     *   If you want to use a regular expression, use the `eq` (equal) or `ne`
     *   (not equal) operator against a single un-parenthesized expression with or
     *   without quotes or against multiple parenthesized expressions. Examples:
     *
     *   `fieldname eq unquoted literal`
     *   `fieldname eq 'single quoted literal'`
     *   `fieldname eq "double quoted literal"`
     *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
     *
     *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
     *   The literal value must match the entire field.
     *
     *   For example, to filter for instances that do not end with name "instance",
     *   you would use `name ne .*instance`.
     *
     *   You cannot combine constraints on multiple fields using regular
     *   expressions.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {number} request.maxResults
     *   The maximum number of results per page that should be returned.
     *   If the number of available results is larger than `maxResults`,
     *   Compute Engine returns a `nextPageToken` that can be used to get
     *   the next page of results in subsequent list requests. Acceptable values are
     *   `0` to `500`, inclusive. (Default: `500`)
     * @param {string} request.orderBy
     *   Sorts list results by a certain order. By default, results
     *   are returned in alphanumerical order based on the resource name.
     *
     *   You can also sort results in descending order based on the creation
     *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
     *   results based on the `creationTimestamp` field in
     *   reverse chronological order (newest result first). Use this to sort
     *   resources like operations so that the newest operation is returned first.
     *
     *   Currently, only sorting by `name` or
     *   `creationTimestamp desc` is supported.
     * @param {string} request.pageToken
     *   Specifies a page token to use. Set `pageToken` to the
     *   `nextPageToken` returned by a previous list request to get
     *   the next page of results.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {boolean} request.returnPartialSuccess
     *   Opt-in for partial success behavior which provides partial results in case
     *   of failure. The default value is false.
     *
     *   For example, when partial success behavior is enabled, aggregatedList for a
     *   single zone scope either returns all resources in the zone or no resources,
     *   with an error code.
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Stream}
     *   An object stream which emits an object representing {@link protos.google.cloud.compute.v1beta.ManagedInstance|ManagedInstance} on 'data' event.
     *   The client library will perform auto-pagination by default: it will call the API as many
     *   times as needed. Note that it can affect your quota.
     *   We recommend using `listManagedInstancesAsync()`
     *   method described below for async iteration which you can stop as needed.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     */
    listManagedInstancesStream(request?: protos.google.cloud.compute.v1beta.IListManagedInstancesInstanceGroupManagersRequest, options?: CallOptions): Transform;
    /**
     * Equivalent to `listManagedInstances`, but returns an iterable object.
     *
     * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.filter
     *   A filter expression that filters resources listed in the response. Most
     *   Compute resources support two types of filter expressions:
     *   expressions that support regular expressions and expressions that follow
     *   API improvement proposal AIP-160.
     *   These two types of filter expressions cannot be mixed in one request.
     *
     *   If you want to use AIP-160, your expression must specify the field name, an
     *   operator, and the value that you want to use for filtering. The value
     *   must be a string, a number, or a boolean. The operator
     *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
     *
     *   For example, if you are filtering Compute Engine instances, you can
     *   exclude instances named `example-instance` by specifying
     *   `name != example-instance`.
     *
     *   The `:*` comparison can be used to test whether a key has been defined.
     *   For example, to find all objects with `owner` label use:
     *   ```
     *   labels.owner:*
     *   ```
     *
     *   You can also filter nested fields. For example, you could specify
     *   `scheduling.automaticRestart = false` to include instances only
     *   if they are not scheduled for automatic restarts. You can use filtering
     *   on nested fields to filter based onresource labels.
     *
     *   To filter on multiple expressions, provide each separate expression within
     *   parentheses. For example:
     *   ```
     *   (scheduling.automaticRestart = true)
     *   (cpuPlatform = "Intel Skylake")
     *   ```
     *   By default, each expression is an `AND` expression. However, you
     *   can include `AND` and `OR` expressions explicitly.
     *   For example:
     *   ```
     *   (cpuPlatform = "Intel Skylake") OR
     *   (cpuPlatform = "Intel Broadwell") AND
     *   (scheduling.automaticRestart = true)
     *   ```
     *
     *   If you want to use a regular expression, use the `eq` (equal) or `ne`
     *   (not equal) operator against a single un-parenthesized expression with or
     *   without quotes or against multiple parenthesized expressions. Examples:
     *
     *   `fieldname eq unquoted literal`
     *   `fieldname eq 'single quoted literal'`
     *   `fieldname eq "double quoted literal"`
     *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
     *
     *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
     *   The literal value must match the entire field.
     *
     *   For example, to filter for instances that do not end with name "instance",
     *   you would use `name ne .*instance`.
     *
     *   You cannot combine constraints on multiple fields using regular
     *   expressions.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group.
     * @param {number} request.maxResults
     *   The maximum number of results per page that should be returned.
     *   If the number of available results is larger than `maxResults`,
     *   Compute Engine returns a `nextPageToken` that can be used to get
     *   the next page of results in subsequent list requests. Acceptable values are
     *   `0` to `500`, inclusive. (Default: `500`)
     * @param {string} request.orderBy
     *   Sorts list results by a certain order. By default, results
     *   are returned in alphanumerical order based on the resource name.
     *
     *   You can also sort results in descending order based on the creation
     *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
     *   results based on the `creationTimestamp` field in
     *   reverse chronological order (newest result first). Use this to sort
     *   resources like operations so that the newest operation is returned first.
     *
     *   Currently, only sorting by `name` or
     *   `creationTimestamp desc` is supported.
     * @param {string} request.pageToken
     *   Specifies a page token to use. Set `pageToken` to the
     *   `nextPageToken` returned by a previous list request to get
     *   the next page of results.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {boolean} request.returnPartialSuccess
     *   Opt-in for partial success behavior which provides partial results in case
     *   of failure. The default value is false.
     *
     *   For example, when partial success behavior is enabled, aggregatedList for a
     *   single zone scope either returns all resources in the zone or no resources,
     *   with an error code.
     * @param {string} request.zone
     *   The name of thezone where the managed
     *   instance group is located.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Object}
     *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
     *   When you iterate the returned iterable, each element will be an object representing
     *   {@link protos.google.cloud.compute.v1beta.ManagedInstance|ManagedInstance}. The API will be called under the hood as needed, once per the page,
     *   so you can stop the iteration when you don't need more results.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.list_managed_instances.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_ListManagedInstances_async
     */
    listManagedInstancesAsync(request?: protos.google.cloud.compute.v1beta.IListManagedInstancesInstanceGroupManagersRequest, options?: CallOptions): AsyncIterable<protos.google.cloud.compute.v1beta.IManagedInstance>;
    /**
    * Lists all of the per-instance configurations defined for the managed
    * instance group. The orderBy query parameter is not supported.
    *
    * @param {Object} request
    *   The request object that will be sent.
    * @param {string} request.filter
    *   A filter expression that filters resources listed in the response. Most
    *   Compute resources support two types of filter expressions:
    *   expressions that support regular expressions and expressions that follow
    *   API improvement proposal AIP-160.
    *   These two types of filter expressions cannot be mixed in one request.
    *
    *   If you want to use AIP-160, your expression must specify the field name, an
    *   operator, and the value that you want to use for filtering. The value
    *   must be a string, a number, or a boolean. The operator
    *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
    *
    *   For example, if you are filtering Compute Engine instances, you can
    *   exclude instances named `example-instance` by specifying
    *   `name != example-instance`.
    *
    *   The `:*` comparison can be used to test whether a key has been defined.
    *   For example, to find all objects with `owner` label use:
    *   ```
    *   labels.owner:*
    *   ```
    *
    *   You can also filter nested fields. For example, you could specify
    *   `scheduling.automaticRestart = false` to include instances only
    *   if they are not scheduled for automatic restarts. You can use filtering
    *   on nested fields to filter based onresource labels.
    *
    *   To filter on multiple expressions, provide each separate expression within
    *   parentheses. For example:
    *   ```
    *   (scheduling.automaticRestart = true)
    *   (cpuPlatform = "Intel Skylake")
    *   ```
    *   By default, each expression is an `AND` expression. However, you
    *   can include `AND` and `OR` expressions explicitly.
    *   For example:
    *   ```
    *   (cpuPlatform = "Intel Skylake") OR
    *   (cpuPlatform = "Intel Broadwell") AND
    *   (scheduling.automaticRestart = true)
    *   ```
    *
    *   If you want to use a regular expression, use the `eq` (equal) or `ne`
    *   (not equal) operator against a single un-parenthesized expression with or
    *   without quotes or against multiple parenthesized expressions. Examples:
    *
    *   `fieldname eq unquoted literal`
    *   `fieldname eq 'single quoted literal'`
    *   `fieldname eq "double quoted literal"`
    *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
    *
    *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
    *   The literal value must match the entire field.
    *
    *   For example, to filter for instances that do not end with name "instance",
    *   you would use `name ne .*instance`.
    *
    *   You cannot combine constraints on multiple fields using regular
    *   expressions.
    * @param {string} request.instanceGroupManager
    *   The name of the managed instance group. It should conform to RFC1035.
    * @param {number} request.maxResults
    *   The maximum number of results per page that should be returned.
    *   If the number of available results is larger than `maxResults`,
    *   Compute Engine returns a `nextPageToken` that can be used to get
    *   the next page of results in subsequent list requests. Acceptable values are
    *   `0` to `500`, inclusive. (Default: `500`)
    * @param {string} request.orderBy
    *   Sorts list results by a certain order. By default, results
    *   are returned in alphanumerical order based on the resource name.
    *
    *   You can also sort results in descending order based on the creation
    *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
    *   results based on the `creationTimestamp` field in
    *   reverse chronological order (newest result first). Use this to sort
    *   resources like operations so that the newest operation is returned first.
    *
    *   Currently, only sorting by `name` or
    *   `creationTimestamp desc` is supported.
    * @param {string} request.pageToken
    *   Specifies a page token to use. Set `pageToken` to the
    *   `nextPageToken` returned by a previous list request to get
    *   the next page of results.
    * @param {string} request.project
    *   Project ID for this request.
    * @param {boolean} request.returnPartialSuccess
    *   Opt-in for partial success behavior which provides partial results in case
    *   of failure. The default value is false.
    *
    *   For example, when partial success behavior is enabled, aggregatedList for a
    *   single zone scope either returns all resources in the zone or no resources,
    *   with an error code.
    * @param {string} request.zone
    *   The name of thezone
    *   where the managed instance group is located.
    *   It should conform to RFC1035.
    * @param {object} [options]
    *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
    * @returns {Promise} - The promise which resolves to an array.
    *   The first element of the array is Array of {@link protos.google.cloud.compute.v1beta.PerInstanceConfig|PerInstanceConfig}.
    *   The client library will perform auto-pagination by default: it will call the API as many
    *   times as needed and will merge results from all the pages into this array.
    *   Note that it can affect your quota.
    *   We recommend using `listPerInstanceConfigsAsync()`
    *   method described below for async iteration which you can stop as needed.
    *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
    *   for more details and examples.
    */
    listPerInstanceConfigs(request?: protos.google.cloud.compute.v1beta.IListPerInstanceConfigsInstanceGroupManagersRequest, options?: CallOptions): Promise<[
        protos.google.cloud.compute.v1beta.IPerInstanceConfig[],
        protos.google.cloud.compute.v1beta.IListPerInstanceConfigsInstanceGroupManagersRequest | null,
        protos.google.cloud.compute.v1beta.IInstanceGroupManagersListPerInstanceConfigsResp
    ]>;
    listPerInstanceConfigs(request: protos.google.cloud.compute.v1beta.IListPerInstanceConfigsInstanceGroupManagersRequest, options: CallOptions, callback: PaginationCallback<protos.google.cloud.compute.v1beta.IListPerInstanceConfigsInstanceGroupManagersRequest, protos.google.cloud.compute.v1beta.IInstanceGroupManagersListPerInstanceConfigsResp | null | undefined, protos.google.cloud.compute.v1beta.IPerInstanceConfig>): void;
    listPerInstanceConfigs(request: protos.google.cloud.compute.v1beta.IListPerInstanceConfigsInstanceGroupManagersRequest, callback: PaginationCallback<protos.google.cloud.compute.v1beta.IListPerInstanceConfigsInstanceGroupManagersRequest, protos.google.cloud.compute.v1beta.IInstanceGroupManagersListPerInstanceConfigsResp | null | undefined, protos.google.cloud.compute.v1beta.IPerInstanceConfig>): void;
    /**
     * Equivalent to `listPerInstanceConfigs`, but returns a NodeJS Stream object.
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.filter
     *   A filter expression that filters resources listed in the response. Most
     *   Compute resources support two types of filter expressions:
     *   expressions that support regular expressions and expressions that follow
     *   API improvement proposal AIP-160.
     *   These two types of filter expressions cannot be mixed in one request.
     *
     *   If you want to use AIP-160, your expression must specify the field name, an
     *   operator, and the value that you want to use for filtering. The value
     *   must be a string, a number, or a boolean. The operator
     *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
     *
     *   For example, if you are filtering Compute Engine instances, you can
     *   exclude instances named `example-instance` by specifying
     *   `name != example-instance`.
     *
     *   The `:*` comparison can be used to test whether a key has been defined.
     *   For example, to find all objects with `owner` label use:
     *   ```
     *   labels.owner:*
     *   ```
     *
     *   You can also filter nested fields. For example, you could specify
     *   `scheduling.automaticRestart = false` to include instances only
     *   if they are not scheduled for automatic restarts. You can use filtering
     *   on nested fields to filter based onresource labels.
     *
     *   To filter on multiple expressions, provide each separate expression within
     *   parentheses. For example:
     *   ```
     *   (scheduling.automaticRestart = true)
     *   (cpuPlatform = "Intel Skylake")
     *   ```
     *   By default, each expression is an `AND` expression. However, you
     *   can include `AND` and `OR` expressions explicitly.
     *   For example:
     *   ```
     *   (cpuPlatform = "Intel Skylake") OR
     *   (cpuPlatform = "Intel Broadwell") AND
     *   (scheduling.automaticRestart = true)
     *   ```
     *
     *   If you want to use a regular expression, use the `eq` (equal) or `ne`
     *   (not equal) operator against a single un-parenthesized expression with or
     *   without quotes or against multiple parenthesized expressions. Examples:
     *
     *   `fieldname eq unquoted literal`
     *   `fieldname eq 'single quoted literal'`
     *   `fieldname eq "double quoted literal"`
     *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
     *
     *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
     *   The literal value must match the entire field.
     *
     *   For example, to filter for instances that do not end with name "instance",
     *   you would use `name ne .*instance`.
     *
     *   You cannot combine constraints on multiple fields using regular
     *   expressions.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group. It should conform to RFC1035.
     * @param {number} request.maxResults
     *   The maximum number of results per page that should be returned.
     *   If the number of available results is larger than `maxResults`,
     *   Compute Engine returns a `nextPageToken` that can be used to get
     *   the next page of results in subsequent list requests. Acceptable values are
     *   `0` to `500`, inclusive. (Default: `500`)
     * @param {string} request.orderBy
     *   Sorts list results by a certain order. By default, results
     *   are returned in alphanumerical order based on the resource name.
     *
     *   You can also sort results in descending order based on the creation
     *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
     *   results based on the `creationTimestamp` field in
     *   reverse chronological order (newest result first). Use this to sort
     *   resources like operations so that the newest operation is returned first.
     *
     *   Currently, only sorting by `name` or
     *   `creationTimestamp desc` is supported.
     * @param {string} request.pageToken
     *   Specifies a page token to use. Set `pageToken` to the
     *   `nextPageToken` returned by a previous list request to get
     *   the next page of results.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {boolean} request.returnPartialSuccess
     *   Opt-in for partial success behavior which provides partial results in case
     *   of failure. The default value is false.
     *
     *   For example, when partial success behavior is enabled, aggregatedList for a
     *   single zone scope either returns all resources in the zone or no resources,
     *   with an error code.
     * @param {string} request.zone
     *   The name of thezone
     *   where the managed instance group is located.
     *   It should conform to RFC1035.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Stream}
     *   An object stream which emits an object representing {@link protos.google.cloud.compute.v1beta.PerInstanceConfig|PerInstanceConfig} on 'data' event.
     *   The client library will perform auto-pagination by default: it will call the API as many
     *   times as needed. Note that it can affect your quota.
     *   We recommend using `listPerInstanceConfigsAsync()`
     *   method described below for async iteration which you can stop as needed.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     */
    listPerInstanceConfigsStream(request?: protos.google.cloud.compute.v1beta.IListPerInstanceConfigsInstanceGroupManagersRequest, options?: CallOptions): Transform;
    /**
     * Equivalent to `listPerInstanceConfigs`, but returns an iterable object.
     *
     * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.filter
     *   A filter expression that filters resources listed in the response. Most
     *   Compute resources support two types of filter expressions:
     *   expressions that support regular expressions and expressions that follow
     *   API improvement proposal AIP-160.
     *   These two types of filter expressions cannot be mixed in one request.
     *
     *   If you want to use AIP-160, your expression must specify the field name, an
     *   operator, and the value that you want to use for filtering. The value
     *   must be a string, a number, or a boolean. The operator
     *   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
     *
     *   For example, if you are filtering Compute Engine instances, you can
     *   exclude instances named `example-instance` by specifying
     *   `name != example-instance`.
     *
     *   The `:*` comparison can be used to test whether a key has been defined.
     *   For example, to find all objects with `owner` label use:
     *   ```
     *   labels.owner:*
     *   ```
     *
     *   You can also filter nested fields. For example, you could specify
     *   `scheduling.automaticRestart = false` to include instances only
     *   if they are not scheduled for automatic restarts. You can use filtering
     *   on nested fields to filter based onresource labels.
     *
     *   To filter on multiple expressions, provide each separate expression within
     *   parentheses. For example:
     *   ```
     *   (scheduling.automaticRestart = true)
     *   (cpuPlatform = "Intel Skylake")
     *   ```
     *   By default, each expression is an `AND` expression. However, you
     *   can include `AND` and `OR` expressions explicitly.
     *   For example:
     *   ```
     *   (cpuPlatform = "Intel Skylake") OR
     *   (cpuPlatform = "Intel Broadwell") AND
     *   (scheduling.automaticRestart = true)
     *   ```
     *
     *   If you want to use a regular expression, use the `eq` (equal) or `ne`
     *   (not equal) operator against a single un-parenthesized expression with or
     *   without quotes or against multiple parenthesized expressions. Examples:
     *
     *   `fieldname eq unquoted literal`
     *   `fieldname eq 'single quoted literal'`
     *   `fieldname eq "double quoted literal"`
     *   `(fieldname1 eq literal) (fieldname2 ne "literal")`
     *
     *   The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
     *   The literal value must match the entire field.
     *
     *   For example, to filter for instances that do not end with name "instance",
     *   you would use `name ne .*instance`.
     *
     *   You cannot combine constraints on multiple fields using regular
     *   expressions.
     * @param {string} request.instanceGroupManager
     *   The name of the managed instance group. It should conform to RFC1035.
     * @param {number} request.maxResults
     *   The maximum number of results per page that should be returned.
     *   If the number of available results is larger than `maxResults`,
     *   Compute Engine returns a `nextPageToken` that can be used to get
     *   the next page of results in subsequent list requests. Acceptable values are
     *   `0` to `500`, inclusive. (Default: `500`)
     * @param {string} request.orderBy
     *   Sorts list results by a certain order. By default, results
     *   are returned in alphanumerical order based on the resource name.
     *
     *   You can also sort results in descending order based on the creation
     *   timestamp using `orderBy="creationTimestamp desc"`. This sorts
     *   results based on the `creationTimestamp` field in
     *   reverse chronological order (newest result first). Use this to sort
     *   resources like operations so that the newest operation is returned first.
     *
     *   Currently, only sorting by `name` or
     *   `creationTimestamp desc` is supported.
     * @param {string} request.pageToken
     *   Specifies a page token to use. Set `pageToken` to the
     *   `nextPageToken` returned by a previous list request to get
     *   the next page of results.
     * @param {string} request.project
     *   Project ID for this request.
     * @param {boolean} request.returnPartialSuccess
     *   Opt-in for partial success behavior which provides partial results in case
     *   of failure. The default value is false.
     *
     *   For example, when partial success behavior is enabled, aggregatedList for a
     *   single zone scope either returns all resources in the zone or no resources,
     *   with an error code.
     * @param {string} request.zone
     *   The name of thezone
     *   where the managed instance group is located.
     *   It should conform to RFC1035.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Object}
     *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
     *   When you iterate the returned iterable, each element will be an object representing
     *   {@link protos.google.cloud.compute.v1beta.PerInstanceConfig|PerInstanceConfig}. The API will be called under the hood as needed, once per the page,
     *   so you can stop the iteration when you don't need more results.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1beta/instance_group_managers.list_per_instance_configs.js</caption>
     * region_tag:compute_v1beta_generated_InstanceGroupManagers_ListPerInstanceConfigs_async
     */
    listPerInstanceConfigsAsync(request?: protos.google.cloud.compute.v1beta.IListPerInstanceConfigsInstanceGroupManagersRequest, options?: CallOptions): AsyncIterable<protos.google.cloud.compute.v1beta.IPerInstanceConfig>;
    /**
     * Terminate the gRPC channel and close the client.
     *
     * The client will no longer be usable and all future behavior is undefined.
     * @returns {Promise} A promise that resolves when the client is closed.
     */
    close(): Promise<void>;
}
