import type { PagedAsyncIterableIterator } from "@azure/core-paging";
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";
/** Interface representing a Snapshots. */
export interface Snapshots {
    /**
     * Lists snapshots under a subscription.
     * @param options The options parameters.
     */
    list(options?: SnapshotsListOptionalParams): PagedAsyncIterableIterator<Snapshot>;
    /**
     * 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>;
    /**
     * 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>;
}
//# sourceMappingURL=snapshots.d.ts.map