/*
 * Copyright (c) Microsoft Corporation.
 * Licensed under the MIT License.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is regenerated.
 */

import { PagedAsyncIterableIterator } from "@azure/core-paging";
import { SimplePollerLike, OperationState } from "@azure/core-lro";
import {
  AppServiceEnvironmentResource,
  AppServiceEnvironmentsListOptionalParams,
  AppServiceEnvironmentsListByResourceGroupOptionalParams,
  StampCapacity,
  AppServiceEnvironmentsListCapacitiesOptionalParams,
  Site,
  VirtualNetworkProfile,
  AppServiceEnvironmentsChangeVnetOptionalParams,
  InboundEnvironmentEndpoint,
  AppServiceEnvironmentsGetInboundNetworkDependenciesEndpointsOptionalParams,
  WorkerPoolResource,
  AppServiceEnvironmentsListMultiRolePoolsOptionalParams,
  ResourceMetricDefinition,
  AppServiceEnvironmentsListMultiRolePoolInstanceMetricDefinitionsOptionalParams,
  AppServiceEnvironmentsListMultiRoleMetricDefinitionsOptionalParams,
  SkuInfo,
  AppServiceEnvironmentsListMultiRolePoolSkusOptionalParams,
  Usage,
  AppServiceEnvironmentsListMultiRoleUsagesOptionalParams,
  OutboundEnvironmentEndpoint,
  AppServiceEnvironmentsGetOutboundNetworkDependenciesEndpointsOptionalParams,
  RemotePrivateEndpointConnectionARMResource,
  AppServiceEnvironmentsGetPrivateEndpointConnectionListOptionalParams,
  AppServiceEnvironmentsResumeOptionalParams,
  AppServicePlan,
  AppServiceEnvironmentsListAppServicePlansOptionalParams,
  AppServiceEnvironmentsListWebAppsOptionalParams,
  AppServiceEnvironmentsSuspendOptionalParams,
  CsmUsageQuota,
  AppServiceEnvironmentsListUsagesOptionalParams,
  AppServiceEnvironmentsListWorkerPoolsOptionalParams,
  AppServiceEnvironmentsListWorkerPoolInstanceMetricDefinitionsOptionalParams,
  AppServiceEnvironmentsListWebWorkerMetricDefinitionsOptionalParams,
  AppServiceEnvironmentsListWorkerPoolSkusOptionalParams,
  AppServiceEnvironmentsListWebWorkerUsagesOptionalParams,
  AppServiceEnvironmentsGetOptionalParams,
  AppServiceEnvironmentsGetResponse,
  AppServiceEnvironmentsCreateOrUpdateOptionalParams,
  AppServiceEnvironmentsCreateOrUpdateResponse,
  AppServiceEnvironmentsDeleteOptionalParams,
  AppServiceEnvironmentPatchResource,
  AppServiceEnvironmentsUpdateOptionalParams,
  AppServiceEnvironmentsUpdateResponse,
  AppServiceEnvironmentsGetVipInfoOptionalParams,
  AppServiceEnvironmentsGetVipInfoResponse,
  AppServiceEnvironmentsGetAseCustomDnsSuffixConfigurationOptionalParams,
  AppServiceEnvironmentsGetAseCustomDnsSuffixConfigurationResponse,
  CustomDnsSuffixConfiguration,
  AppServiceEnvironmentsUpdateAseCustomDnsSuffixConfigurationOptionalParams,
  AppServiceEnvironmentsUpdateAseCustomDnsSuffixConfigurationResponse,
  AppServiceEnvironmentsDeleteAseCustomDnsSuffixConfigurationOptionalParams,
  AppServiceEnvironmentsDeleteAseCustomDnsSuffixConfigurationResponse,
  AppServiceEnvironmentsGetAseV3NetworkingConfigurationOptionalParams,
  AppServiceEnvironmentsGetAseV3NetworkingConfigurationResponse,
  AseV3NetworkingConfiguration,
  AppServiceEnvironmentsUpdateAseNetworkingConfigurationOptionalParams,
  AppServiceEnvironmentsUpdateAseNetworkingConfigurationResponse,
  AppServiceEnvironmentsListDiagnosticsOptionalParams,
  AppServiceEnvironmentsListDiagnosticsResponse,
  AppServiceEnvironmentsGetDiagnosticsItemOptionalParams,
  AppServiceEnvironmentsGetDiagnosticsItemResponse,
  AppServiceEnvironmentsGetMultiRolePoolOptionalParams,
  AppServiceEnvironmentsGetMultiRolePoolResponse,
  AppServiceEnvironmentsCreateOrUpdateMultiRolePoolOptionalParams,
  AppServiceEnvironmentsCreateOrUpdateMultiRolePoolResponse,
  AppServiceEnvironmentsUpdateMultiRolePoolOptionalParams,
  AppServiceEnvironmentsUpdateMultiRolePoolResponse,
  AppServiceEnvironmentsTestUpgradeAvailableNotificationOptionalParams,
  AppServiceEnvironmentsUpgradeOptionalParams,
  AppServiceEnvironmentsListOperationsOptionalParams,
  AppServiceEnvironmentsListOperationsResponse,
  AppServiceEnvironmentsGetPrivateEndpointConnectionOptionalParams,
  AppServiceEnvironmentsGetPrivateEndpointConnectionResponse,
  PrivateLinkConnectionApprovalRequestResource,
  AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionOptionalParams,
  AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionResponse,
  AppServiceEnvironmentsDeletePrivateEndpointConnectionOptionalParams,
  AppServiceEnvironmentsDeletePrivateEndpointConnectionResponse,
  AppServiceEnvironmentsGetPrivateLinkResourcesOptionalParams,
  AppServiceEnvironmentsGetPrivateLinkResourcesResponse,
  AppServiceEnvironmentsRebootOptionalParams,
  AppServiceEnvironmentsGetWorkerPoolOptionalParams,
  AppServiceEnvironmentsGetWorkerPoolResponse,
  AppServiceEnvironmentsCreateOrUpdateWorkerPoolOptionalParams,
  AppServiceEnvironmentsCreateOrUpdateWorkerPoolResponse,
  AppServiceEnvironmentsUpdateWorkerPoolOptionalParams,
  AppServiceEnvironmentsUpdateWorkerPoolResponse
} from "../models";

/// <reference lib="esnext.asynciterable" />
/** Interface representing a AppServiceEnvironments. */
export interface AppServiceEnvironments {
  /**
   * Description for Get all App Service Environments for a subscription.
   * @param options The options parameters.
   */
  list(
    options?: AppServiceEnvironmentsListOptionalParams
  ): PagedAsyncIterableIterator<AppServiceEnvironmentResource>;
  /**
   * Description for Get all App Service Environments in a resource group.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param options The options parameters.
   */
  listByResourceGroup(
    resourceGroupName: string,
    options?: AppServiceEnvironmentsListByResourceGroupOptionalParams
  ): PagedAsyncIterableIterator<AppServiceEnvironmentResource>;
  /**
   * Description for Get the used, available, and total worker capacity an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listCapacities(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsListCapacitiesOptionalParams
  ): PagedAsyncIterableIterator<StampCapacity>;
  /**
   * Description for Move an App Service Environment to a different VNET.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param vnetInfo Details for the new virtual network.
   * @param options The options parameters.
   */
  beginListChangeVnetAndWait(
    resourceGroupName: string,
    name: string,
    vnetInfo: VirtualNetworkProfile,
    options?: AppServiceEnvironmentsChangeVnetOptionalParams
  ): PagedAsyncIterableIterator<Site>;
  /**
   * Description for Get the network endpoints of all inbound dependencies of an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listInboundNetworkDependenciesEndpoints(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsGetInboundNetworkDependenciesEndpointsOptionalParams
  ): PagedAsyncIterableIterator<InboundEnvironmentEndpoint>;
  /**
   * Description for Get all multi-role pools.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listMultiRolePools(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsListMultiRolePoolsOptionalParams
  ): PagedAsyncIterableIterator<WorkerPoolResource>;
  /**
   * Description for Get metric definitions for a specific instance of a multi-role pool of an App
   * Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param instance Name of the instance in the multi-role pool.
   * @param options The options parameters.
   */
  listMultiRolePoolInstanceMetricDefinitions(
    resourceGroupName: string,
    name: string,
    instance: string,
    options?: AppServiceEnvironmentsListMultiRolePoolInstanceMetricDefinitionsOptionalParams
  ): PagedAsyncIterableIterator<ResourceMetricDefinition>;
  /**
   * Description for Get metric definitions for a multi-role pool of an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listMultiRoleMetricDefinitions(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsListMultiRoleMetricDefinitionsOptionalParams
  ): PagedAsyncIterableIterator<ResourceMetricDefinition>;
  /**
   * Description for Get available SKUs for scaling a multi-role pool.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listMultiRolePoolSkus(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsListMultiRolePoolSkusOptionalParams
  ): PagedAsyncIterableIterator<SkuInfo>;
  /**
   * Description for Get usage metrics for a multi-role pool of an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listMultiRoleUsages(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsListMultiRoleUsagesOptionalParams
  ): PagedAsyncIterableIterator<Usage>;
  /**
   * Description for Get the network endpoints of all outbound dependencies of an App Service
   * Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listOutboundNetworkDependenciesEndpoints(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsGetOutboundNetworkDependenciesEndpointsOptionalParams
  ): PagedAsyncIterableIterator<OutboundEnvironmentEndpoint>;
  /**
   * Description for Gets the list of private endpoints associated with a hosting environment
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listPrivateEndpointConnectionList(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsGetPrivateEndpointConnectionListOptionalParams
  ): PagedAsyncIterableIterator<RemotePrivateEndpointConnectionARMResource>;
  /**
   * Description for Resume an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  beginListResumeAndWait(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsResumeOptionalParams
  ): PagedAsyncIterableIterator<Site>;
  /**
   * Description for Get all App Service plans in an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listAppServicePlans(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsListAppServicePlansOptionalParams
  ): PagedAsyncIterableIterator<AppServicePlan>;
  /**
   * Description for Get all apps in an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listWebApps(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsListWebAppsOptionalParams
  ): PagedAsyncIterableIterator<Site>;
  /**
   * Description for Suspend an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  beginListSuspendAndWait(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsSuspendOptionalParams
  ): PagedAsyncIterableIterator<Site>;
  /**
   * Description for Get global usage metrics of an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listUsages(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsListUsagesOptionalParams
  ): PagedAsyncIterableIterator<CsmUsageQuota>;
  /**
   * Description for Get all worker pools of an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listWorkerPools(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsListWorkerPoolsOptionalParams
  ): PagedAsyncIterableIterator<WorkerPoolResource>;
  /**
   * Description for Get metric definitions for a specific instance of a worker pool of an App Service
   * Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param workerPoolName Name of the worker pool.
   * @param instance Name of the instance in the worker pool.
   * @param options The options parameters.
   */
  listWorkerPoolInstanceMetricDefinitions(
    resourceGroupName: string,
    name: string,
    workerPoolName: string,
    instance: string,
    options?: AppServiceEnvironmentsListWorkerPoolInstanceMetricDefinitionsOptionalParams
  ): PagedAsyncIterableIterator<ResourceMetricDefinition>;
  /**
   * Description for Get metric definitions for a worker pool of an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param workerPoolName Name of the worker pool.
   * @param options The options parameters.
   */
  listWebWorkerMetricDefinitions(
    resourceGroupName: string,
    name: string,
    workerPoolName: string,
    options?: AppServiceEnvironmentsListWebWorkerMetricDefinitionsOptionalParams
  ): PagedAsyncIterableIterator<ResourceMetricDefinition>;
  /**
   * Description for Get available SKUs for scaling a worker pool.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param workerPoolName Name of the worker pool.
   * @param options The options parameters.
   */
  listWorkerPoolSkus(
    resourceGroupName: string,
    name: string,
    workerPoolName: string,
    options?: AppServiceEnvironmentsListWorkerPoolSkusOptionalParams
  ): PagedAsyncIterableIterator<SkuInfo>;
  /**
   * Description for Get usage metrics for a worker pool of an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param workerPoolName Name of the worker pool.
   * @param options The options parameters.
   */
  listWebWorkerUsages(
    resourceGroupName: string,
    name: string,
    workerPoolName: string,
    options?: AppServiceEnvironmentsListWebWorkerUsagesOptionalParams
  ): PagedAsyncIterableIterator<Usage>;
  /**
   * Description for Get the properties of an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  get(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsGetOptionalParams
  ): Promise<AppServiceEnvironmentsGetResponse>;
  /**
   * Description for Create or update an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param hostingEnvironmentEnvelope Configuration details of the App Service Environment.
   * @param options The options parameters.
   */
  beginCreateOrUpdate(
    resourceGroupName: string,
    name: string,
    hostingEnvironmentEnvelope: AppServiceEnvironmentResource,
    options?: AppServiceEnvironmentsCreateOrUpdateOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<AppServiceEnvironmentsCreateOrUpdateResponse>,
      AppServiceEnvironmentsCreateOrUpdateResponse
    >
  >;
  /**
   * Description for Create or update an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param hostingEnvironmentEnvelope Configuration details of the App Service Environment.
   * @param options The options parameters.
   */
  beginCreateOrUpdateAndWait(
    resourceGroupName: string,
    name: string,
    hostingEnvironmentEnvelope: AppServiceEnvironmentResource,
    options?: AppServiceEnvironmentsCreateOrUpdateOptionalParams
  ): Promise<AppServiceEnvironmentsCreateOrUpdateResponse>;
  /**
   * Description for Delete an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  beginDelete(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsDeleteOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>>;
  /**
   * Description for Delete an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  beginDeleteAndWait(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsDeleteOptionalParams
  ): Promise<void>;
  /**
   * Description for Create or update an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param hostingEnvironmentEnvelope Configuration details of the App Service Environment.
   * @param options The options parameters.
   */
  update(
    resourceGroupName: string,
    name: string,
    hostingEnvironmentEnvelope: AppServiceEnvironmentPatchResource,
    options?: AppServiceEnvironmentsUpdateOptionalParams
  ): Promise<AppServiceEnvironmentsUpdateResponse>;
  /**
   * Description for Get IP addresses assigned to an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  getVipInfo(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsGetVipInfoOptionalParams
  ): Promise<AppServiceEnvironmentsGetVipInfoResponse>;
  /**
   * Get Custom Dns Suffix configuration of an App Service Environment
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  getAseCustomDnsSuffixConfiguration(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsGetAseCustomDnsSuffixConfigurationOptionalParams
  ): Promise<AppServiceEnvironmentsGetAseCustomDnsSuffixConfigurationResponse>;
  /**
   * Update Custom Dns Suffix configuration of an App Service Environment
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param customDnsSuffixConfiguration Full view of the custom domain suffix configuration for ASEv3.
   * @param options The options parameters.
   */
  updateAseCustomDnsSuffixConfiguration(
    resourceGroupName: string,
    name: string,
    customDnsSuffixConfiguration: CustomDnsSuffixConfiguration,
    options?: AppServiceEnvironmentsUpdateAseCustomDnsSuffixConfigurationOptionalParams
  ): Promise<
    AppServiceEnvironmentsUpdateAseCustomDnsSuffixConfigurationResponse
  >;
  /**
   * Delete Custom Dns Suffix configuration of an App Service Environment
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  deleteAseCustomDnsSuffixConfiguration(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsDeleteAseCustomDnsSuffixConfigurationOptionalParams
  ): Promise<
    AppServiceEnvironmentsDeleteAseCustomDnsSuffixConfigurationResponse
  >;
  /**
   * Description for Get networking configuration of an App Service Environment
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  getAseV3NetworkingConfiguration(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsGetAseV3NetworkingConfigurationOptionalParams
  ): Promise<AppServiceEnvironmentsGetAseV3NetworkingConfigurationResponse>;
  /**
   * Description for Update networking configuration of an App Service Environment
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param aseNetworkingConfiguration Full view of networking configuration for an ASE.
   * @param options The options parameters.
   */
  updateAseNetworkingConfiguration(
    resourceGroupName: string,
    name: string,
    aseNetworkingConfiguration: AseV3NetworkingConfiguration,
    options?: AppServiceEnvironmentsUpdateAseNetworkingConfigurationOptionalParams
  ): Promise<AppServiceEnvironmentsUpdateAseNetworkingConfigurationResponse>;
  /**
   * Description for Get diagnostic information for an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listDiagnostics(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsListDiagnosticsOptionalParams
  ): Promise<AppServiceEnvironmentsListDiagnosticsResponse>;
  /**
   * Description for Get a diagnostics item for an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param diagnosticsName Name of the diagnostics item.
   * @param options The options parameters.
   */
  getDiagnosticsItem(
    resourceGroupName: string,
    name: string,
    diagnosticsName: string,
    options?: AppServiceEnvironmentsGetDiagnosticsItemOptionalParams
  ): Promise<AppServiceEnvironmentsGetDiagnosticsItemResponse>;
  /**
   * Description for Get properties of a multi-role pool.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  getMultiRolePool(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsGetMultiRolePoolOptionalParams
  ): Promise<AppServiceEnvironmentsGetMultiRolePoolResponse>;
  /**
   * Description for Create or update a multi-role pool.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param multiRolePoolEnvelope Properties of the multi-role pool.
   * @param options The options parameters.
   */
  beginCreateOrUpdateMultiRolePool(
    resourceGroupName: string,
    name: string,
    multiRolePoolEnvelope: WorkerPoolResource,
    options?: AppServiceEnvironmentsCreateOrUpdateMultiRolePoolOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<AppServiceEnvironmentsCreateOrUpdateMultiRolePoolResponse>,
      AppServiceEnvironmentsCreateOrUpdateMultiRolePoolResponse
    >
  >;
  /**
   * Description for Create or update a multi-role pool.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param multiRolePoolEnvelope Properties of the multi-role pool.
   * @param options The options parameters.
   */
  beginCreateOrUpdateMultiRolePoolAndWait(
    resourceGroupName: string,
    name: string,
    multiRolePoolEnvelope: WorkerPoolResource,
    options?: AppServiceEnvironmentsCreateOrUpdateMultiRolePoolOptionalParams
  ): Promise<AppServiceEnvironmentsCreateOrUpdateMultiRolePoolResponse>;
  /**
   * Description for Create or update a multi-role pool.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param multiRolePoolEnvelope Properties of the multi-role pool.
   * @param options The options parameters.
   */
  updateMultiRolePool(
    resourceGroupName: string,
    name: string,
    multiRolePoolEnvelope: WorkerPoolResource,
    options?: AppServiceEnvironmentsUpdateMultiRolePoolOptionalParams
  ): Promise<AppServiceEnvironmentsUpdateMultiRolePoolResponse>;
  /**
   * Send a test notification that an upgrade is available for this App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  testUpgradeAvailableNotification(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsTestUpgradeAvailableNotificationOptionalParams
  ): Promise<void>;
  /**
   * Description for Initiate an upgrade of an App Service Environment if one is available.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  beginUpgrade(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsUpgradeOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>>;
  /**
   * Description for Initiate an upgrade of an App Service Environment if one is available.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  beginUpgradeAndWait(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsUpgradeOptionalParams
  ): Promise<void>;
  /**
   * Description for List all currently running operations on the App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  listOperations(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsListOperationsOptionalParams
  ): Promise<AppServiceEnvironmentsListOperationsResponse>;
  /**
   * Description for Gets a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param privateEndpointConnectionName Name of the private endpoint connection.
   * @param options The options parameters.
   */
  getPrivateEndpointConnection(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    options?: AppServiceEnvironmentsGetPrivateEndpointConnectionOptionalParams
  ): Promise<AppServiceEnvironmentsGetPrivateEndpointConnectionResponse>;
  /**
   * Description for Approves or rejects a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param privateEndpointConnectionName
   * @param privateEndpointWrapper Private Endpoint Connection Approval ARM resource.
   * @param options The options parameters.
   */
  beginApproveOrRejectPrivateEndpointConnection(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    privateEndpointWrapper: PrivateLinkConnectionApprovalRequestResource,
    options?: AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<
        AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionResponse
      >,
      AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionResponse
    >
  >;
  /**
   * Description for Approves or rejects a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param privateEndpointConnectionName
   * @param privateEndpointWrapper Private Endpoint Connection Approval ARM resource.
   * @param options The options parameters.
   */
  beginApproveOrRejectPrivateEndpointConnectionAndWait(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    privateEndpointWrapper: PrivateLinkConnectionApprovalRequestResource,
    options?: AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionOptionalParams
  ): Promise<
    AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionResponse
  >;
  /**
   * Description for Deletes a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param privateEndpointConnectionName
   * @param options The options parameters.
   */
  beginDeletePrivateEndpointConnection(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    options?: AppServiceEnvironmentsDeletePrivateEndpointConnectionOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<
        AppServiceEnvironmentsDeletePrivateEndpointConnectionResponse
      >,
      AppServiceEnvironmentsDeletePrivateEndpointConnectionResponse
    >
  >;
  /**
   * Description for Deletes a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param privateEndpointConnectionName
   * @param options The options parameters.
   */
  beginDeletePrivateEndpointConnectionAndWait(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    options?: AppServiceEnvironmentsDeletePrivateEndpointConnectionOptionalParams
  ): Promise<AppServiceEnvironmentsDeletePrivateEndpointConnectionResponse>;
  /**
   * Description for Gets the private link resources
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  getPrivateLinkResources(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsGetPrivateLinkResourcesOptionalParams
  ): Promise<AppServiceEnvironmentsGetPrivateLinkResourcesResponse>;
  /**
   * Description for Reboot all machines in an App Service Environment.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param options The options parameters.
   */
  reboot(
    resourceGroupName: string,
    name: string,
    options?: AppServiceEnvironmentsRebootOptionalParams
  ): Promise<void>;
  /**
   * Description for Get properties of a worker pool.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param workerPoolName Name of the worker pool.
   * @param options The options parameters.
   */
  getWorkerPool(
    resourceGroupName: string,
    name: string,
    workerPoolName: string,
    options?: AppServiceEnvironmentsGetWorkerPoolOptionalParams
  ): Promise<AppServiceEnvironmentsGetWorkerPoolResponse>;
  /**
   * Description for Create or update a worker pool.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param workerPoolName Name of the worker pool.
   * @param workerPoolEnvelope Properties of the worker pool.
   * @param options The options parameters.
   */
  beginCreateOrUpdateWorkerPool(
    resourceGroupName: string,
    name: string,
    workerPoolName: string,
    workerPoolEnvelope: WorkerPoolResource,
    options?: AppServiceEnvironmentsCreateOrUpdateWorkerPoolOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<AppServiceEnvironmentsCreateOrUpdateWorkerPoolResponse>,
      AppServiceEnvironmentsCreateOrUpdateWorkerPoolResponse
    >
  >;
  /**
   * Description for Create or update a worker pool.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param workerPoolName Name of the worker pool.
   * @param workerPoolEnvelope Properties of the worker pool.
   * @param options The options parameters.
   */
  beginCreateOrUpdateWorkerPoolAndWait(
    resourceGroupName: string,
    name: string,
    workerPoolName: string,
    workerPoolEnvelope: WorkerPoolResource,
    options?: AppServiceEnvironmentsCreateOrUpdateWorkerPoolOptionalParams
  ): Promise<AppServiceEnvironmentsCreateOrUpdateWorkerPoolResponse>;
  /**
   * Description for Create or update a worker pool.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the App Service Environment.
   * @param workerPoolName Name of the worker pool.
   * @param workerPoolEnvelope Properties of the worker pool.
   * @param options The options parameters.
   */
  updateWorkerPool(
    resourceGroupName: string,
    name: string,
    workerPoolName: string,
    workerPoolEnvelope: WorkerPoolResource,
    options?: AppServiceEnvironmentsUpdateWorkerPoolOptionalParams
  ): Promise<AppServiceEnvironmentsUpdateWorkerPoolResponse>;
}
