import { PagedAsyncIterableIterator } from "@azure/core-paging";
import { AvailabilitySets } from "../operationsInterfaces/index.js";
import { ComputeManagementClient } from "../computeManagementClient.js";
import { SimplePollerLike, OperationState } from "@azure/core-lro";
import { AvailabilitySet, AvailabilitySetsListBySubscriptionOptionalParams, AvailabilitySetsListOptionalParams, VirtualMachineSize, AvailabilitySetsListAvailableSizesOptionalParams, AvailabilitySetsGetOptionalParams, AvailabilitySetsGetResponse, AvailabilitySetsCreateOrUpdateOptionalParams, AvailabilitySetsCreateOrUpdateResponse, AvailabilitySetUpdate, AvailabilitySetsUpdateOptionalParams, AvailabilitySetsUpdateResponse, AvailabilitySetsDeleteOptionalParams, AvailabilitySetsCancelMigrationToVirtualMachineScaleSetOptionalParams, AvailabilitySetsConvertToVirtualMachineScaleSetOptionalParams, AvailabilitySetsConvertToVirtualMachineScaleSetResponse, MigrateToVirtualMachineScaleSetInput, AvailabilitySetsStartMigrationToVirtualMachineScaleSetOptionalParams, AvailabilitySetsValidateMigrationToVirtualMachineScaleSetOptionalParams } from "../models/index.js";
/** Class containing AvailabilitySets operations. */
export declare class AvailabilitySetsImpl implements AvailabilitySets {
    private readonly client;
    /**
     * Initialize a new instance of the class AvailabilitySets class.
     * @param client Reference to the service client
     */
    constructor(client: ComputeManagementClient);
    /**
     * Lists all availability sets in a subscription.
     * @param options The options parameters.
     */
    listBySubscription(options?: AvailabilitySetsListBySubscriptionOptionalParams): PagedAsyncIterableIterator<AvailabilitySet>;
    private listBySubscriptionPagingPage;
    private listBySubscriptionPagingAll;
    /**
     * Lists all availability sets in a resource group.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param options The options parameters.
     */
    list(resourceGroupName: string, options?: AvailabilitySetsListOptionalParams): PagedAsyncIterableIterator<AvailabilitySet>;
    private listPagingPage;
    private listPagingAll;
    /**
     * Lists all available virtual machine sizes that can be used to create a new virtual machine in an
     * existing availability set.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param options The options parameters.
     */
    listAvailableSizes(resourceGroupName: string, availabilitySetName: string, options?: AvailabilitySetsListAvailableSizesOptionalParams): PagedAsyncIterableIterator<VirtualMachineSize>;
    private listAvailableSizesPagingPage;
    private listAvailableSizesPagingAll;
    /**
     * Lists all availability sets in a subscription.
     * @param options The options parameters.
     */
    private _listBySubscription;
    /**
     * Lists all availability sets in a resource group.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param options The options parameters.
     */
    private _list;
    /**
     * Retrieves information about an availability set.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param options The options parameters.
     */
    get(resourceGroupName: string, availabilitySetName: string, options?: AvailabilitySetsGetOptionalParams): Promise<AvailabilitySetsGetResponse>;
    /**
     * Create or update an availability set.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param parameters Parameters supplied to the Create Availability Set operation.
     * @param options The options parameters.
     */
    createOrUpdate(resourceGroupName: string, availabilitySetName: string, parameters: AvailabilitySet, options?: AvailabilitySetsCreateOrUpdateOptionalParams): Promise<AvailabilitySetsCreateOrUpdateResponse>;
    /**
     * Update an availability set.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param parameters Parameters supplied to the Update Availability Set operation.
     * @param options The options parameters.
     */
    update(resourceGroupName: string, availabilitySetName: string, parameters: AvailabilitySetUpdate, options?: AvailabilitySetsUpdateOptionalParams): Promise<AvailabilitySetsUpdateResponse>;
    /**
     * Delete an availability set.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param options The options parameters.
     */
    delete(resourceGroupName: string, availabilitySetName: string, options?: AvailabilitySetsDeleteOptionalParams): Promise<void>;
    /**
     * Cancel the migration operation on an Availability Set.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param options The options parameters.
     */
    cancelMigrationToVirtualMachineScaleSet(resourceGroupName: string, availabilitySetName: string, options?: AvailabilitySetsCancelMigrationToVirtualMachineScaleSetOptionalParams): Promise<void>;
    /**
     * Create a new Flexible Virtual Machine Scale Set and migrate all the Virtual Machines in the
     * Availability Set. This does not trigger a downtime on the Virtual Machines.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param options The options parameters.
     */
    beginConvertToVirtualMachineScaleSet(resourceGroupName: string, availabilitySetName: string, options?: AvailabilitySetsConvertToVirtualMachineScaleSetOptionalParams): Promise<SimplePollerLike<OperationState<AvailabilitySetsConvertToVirtualMachineScaleSetResponse>, AvailabilitySetsConvertToVirtualMachineScaleSetResponse>>;
    /**
     * Create a new Flexible Virtual Machine Scale Set and migrate all the Virtual Machines in the
     * Availability Set. This does not trigger a downtime on the Virtual Machines.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param options The options parameters.
     */
    beginConvertToVirtualMachineScaleSetAndWait(resourceGroupName: string, availabilitySetName: string, options?: AvailabilitySetsConvertToVirtualMachineScaleSetOptionalParams): Promise<AvailabilitySetsConvertToVirtualMachineScaleSetResponse>;
    /**
     * Start migration operation on an Availability Set to move its Virtual Machines to a Virtual Machine
     * Scale Set. This should be followed by a migrate operation on each Virtual Machine that triggers a
     * downtime on the Virtual Machine.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param parameters Parameters supplied to the migrate operation on the availability set.
     * @param options The options parameters.
     */
    startMigrationToVirtualMachineScaleSet(resourceGroupName: string, availabilitySetName: string, parameters: MigrateToVirtualMachineScaleSetInput, options?: AvailabilitySetsStartMigrationToVirtualMachineScaleSetOptionalParams): Promise<void>;
    /**
     * Validates that the Virtual Machines in the Availability Set can be migrated to the provided Virtual
     * Machine Scale Set.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param parameters Parameters supplied to the migrate operation on the availability set.
     * @param options The options parameters.
     */
    validateMigrationToVirtualMachineScaleSet(resourceGroupName: string, availabilitySetName: string, parameters: MigrateToVirtualMachineScaleSetInput, options?: AvailabilitySetsValidateMigrationToVirtualMachineScaleSetOptionalParams): Promise<void>;
    /**
     * Lists all available virtual machine sizes that can be used to create a new virtual machine in an
     * existing availability set.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param options The options parameters.
     */
    private _listAvailableSizes;
    /**
     * ListBySubscriptionNext
     * @param nextLink The nextLink from the previous successful call to the ListBySubscription method.
     * @param options The options parameters.
     */
    private _listBySubscriptionNext;
    /**
     * ListNext
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param nextLink The nextLink from the previous successful call to the List method.
     * @param options The options parameters.
     */
    private _listNext;
    /**
     * ListAvailableSizesNext
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param availabilitySetName The name of the availability set.
     * @param nextLink The nextLink from the previous successful call to the ListAvailableSizes method.
     * @param options The options parameters.
     */
    private _listAvailableSizesNext;
}
//# sourceMappingURL=availabilitySets.d.ts.map