import type { PagedAsyncIterableIterator } from "@azure/core-paging";
import type { Snapshots } from "../operationsInterfaces/index.js";
import type { ComputeManagementClient } from "../computeManagementClient.js";
import type { SimplePollerLike, OperationState } from "@azure/core-lro";
import type { Snapshot, SnapshotsListOptionalParams, SnapshotsListByResourceGroupOptionalParams, SnapshotsGetOptionalParams, SnapshotsGetResponse, SnapshotsCreateOrUpdateOptionalParams, SnapshotsCreateOrUpdateResponse, SnapshotUpdate, SnapshotsUpdateOptionalParams, SnapshotsUpdateResponse, SnapshotsDeleteOptionalParams, GrantAccessData, SnapshotsGrantAccessOptionalParams, SnapshotsGrantAccessResponse, SnapshotsRevokeAccessOptionalParams } from "../models/index.js";
/** Class containing Snapshots operations. */
export declare class SnapshotsImpl implements Snapshots {
    private readonly client;
    /**
     * Initialize a new instance of the class Snapshots class.
     * @param client Reference to the service client
     */
    constructor(client: ComputeManagementClient);
    /**
     * Lists snapshots under a subscription.
     * @param options The options parameters.
     */
    list(options?: SnapshotsListOptionalParams): PagedAsyncIterableIterator<Snapshot>;
    private listPagingPage;
    private listPagingAll;
    /**
     * Lists snapshots under a resource group.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param options The options parameters.
     */
    listByResourceGroup(resourceGroupName: string, options?: SnapshotsListByResourceGroupOptionalParams): PagedAsyncIterableIterator<Snapshot>;
    private listByResourceGroupPagingPage;
    private listByResourceGroupPagingAll;
    /**
     * Lists snapshots under a subscription.
     * @param options The options parameters.
     */
    private _list;
    /**
     * Lists snapshots under a resource group.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param options The options parameters.
     */
    private _listByResourceGroup;
    /**
     * Gets information about a snapshot.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param snapshotName The name of the snapshot that is being created. The name can't be changed after
     *                     the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name
     *                     length is 80 characters.
     * @param options The options parameters.
     */
    get(resourceGroupName: string, snapshotName: string, options?: SnapshotsGetOptionalParams): Promise<SnapshotsGetResponse>;
    /**
     * Creates or updates a snapshot.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param snapshotName The name of the snapshot that is being created. The name can't be changed after
     *                     the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name
     *                     length is 80 characters.
     * @param snapshot Snapshot object supplied in the body of the Put disk operation.
     * @param options The options parameters.
     */
    beginCreateOrUpdate(resourceGroupName: string, snapshotName: string, snapshot: Snapshot, options?: SnapshotsCreateOrUpdateOptionalParams): Promise<SimplePollerLike<OperationState<SnapshotsCreateOrUpdateResponse>, SnapshotsCreateOrUpdateResponse>>;
    /**
     * Creates or updates a snapshot.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param snapshotName The name of the snapshot that is being created. The name can't be changed after
     *                     the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name
     *                     length is 80 characters.
     * @param snapshot Snapshot object supplied in the body of the Put disk operation.
     * @param options The options parameters.
     */
    beginCreateOrUpdateAndWait(resourceGroupName: string, snapshotName: string, snapshot: Snapshot, options?: SnapshotsCreateOrUpdateOptionalParams): Promise<SnapshotsCreateOrUpdateResponse>;
    /**
     * Updates (patches) a snapshot.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param snapshotName The name of the snapshot that is being created. The name can't be changed after
     *                     the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name
     *                     length is 80 characters.
     * @param snapshot Snapshot object supplied in the body of the Patch snapshot operation.
     * @param options The options parameters.
     */
    beginUpdate(resourceGroupName: string, snapshotName: string, snapshot: SnapshotUpdate, options?: SnapshotsUpdateOptionalParams): Promise<SimplePollerLike<OperationState<SnapshotsUpdateResponse>, SnapshotsUpdateResponse>>;
    /**
     * Updates (patches) a snapshot.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param snapshotName The name of the snapshot that is being created. The name can't be changed after
     *                     the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name
     *                     length is 80 characters.
     * @param snapshot Snapshot object supplied in the body of the Patch snapshot operation.
     * @param options The options parameters.
     */
    beginUpdateAndWait(resourceGroupName: string, snapshotName: string, snapshot: SnapshotUpdate, options?: SnapshotsUpdateOptionalParams): Promise<SnapshotsUpdateResponse>;
    /**
     * Deletes a snapshot.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param snapshotName The name of the snapshot that is being created. The name can't be changed after
     *                     the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name
     *                     length is 80 characters.
     * @param options The options parameters.
     */
    beginDelete(resourceGroupName: string, snapshotName: string, options?: SnapshotsDeleteOptionalParams): Promise<SimplePollerLike<OperationState<void>, void>>;
    /**
     * Deletes a snapshot.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param snapshotName The name of the snapshot that is being created. The name can't be changed after
     *                     the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name
     *                     length is 80 characters.
     * @param options The options parameters.
     */
    beginDeleteAndWait(resourceGroupName: string, snapshotName: string, options?: SnapshotsDeleteOptionalParams): Promise<void>;
    /**
     * Grants access to a snapshot.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param snapshotName The name of the snapshot that is being created. The name can't be changed after
     *                     the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name
     *                     length is 80 characters.
     * @param grantAccessData Access data object supplied in the body of the get snapshot access operation.
     * @param options The options parameters.
     */
    beginGrantAccess(resourceGroupName: string, snapshotName: string, grantAccessData: GrantAccessData, options?: SnapshotsGrantAccessOptionalParams): Promise<SimplePollerLike<OperationState<SnapshotsGrantAccessResponse>, SnapshotsGrantAccessResponse>>;
    /**
     * Grants access to a snapshot.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param snapshotName The name of the snapshot that is being created. The name can't be changed after
     *                     the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name
     *                     length is 80 characters.
     * @param grantAccessData Access data object supplied in the body of the get snapshot access operation.
     * @param options The options parameters.
     */
    beginGrantAccessAndWait(resourceGroupName: string, snapshotName: string, grantAccessData: GrantAccessData, options?: SnapshotsGrantAccessOptionalParams): Promise<SnapshotsGrantAccessResponse>;
    /**
     * Revokes access to a snapshot.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param snapshotName The name of the snapshot that is being created. The name can't be changed after
     *                     the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name
     *                     length is 80 characters.
     * @param options The options parameters.
     */
    beginRevokeAccess(resourceGroupName: string, snapshotName: string, options?: SnapshotsRevokeAccessOptionalParams): Promise<SimplePollerLike<OperationState<void>, void>>;
    /**
     * Revokes access to a snapshot.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param snapshotName The name of the snapshot that is being created. The name can't be changed after
     *                     the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name
     *                     length is 80 characters.
     * @param options The options parameters.
     */
    beginRevokeAccessAndWait(resourceGroupName: string, snapshotName: string, options?: SnapshotsRevokeAccessOptionalParams): Promise<void>;
    /**
     * ListNext
     * @param nextLink The nextLink from the previous successful call to the List method.
     * @param options The options parameters.
     */
    private _listNext;
    /**
     * ListByResourceGroupNext
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param nextLink The nextLink from the previous successful call to the ListByResourceGroup method.
     * @param options The options parameters.
     */
    private _listByResourceGroupNext;
}
//# sourceMappingURL=snapshots.d.ts.map