/*
 * 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 {
  ActivityLogAlertResource,
  ActivityLogAlertsListBySubscriptionIdOptionalParams,
  ActivityLogAlertsListByResourceGroupOptionalParams,
  ActivityLogAlertsCreateOrUpdateOptionalParams,
  ActivityLogAlertsCreateOrUpdateResponse,
  ActivityLogAlertsGetOptionalParams,
  ActivityLogAlertsGetResponse,
  ActivityLogAlertsDeleteOptionalParams,
  ActivityLogAlertPatchBody,
  ActivityLogAlertsUpdateOptionalParams,
  ActivityLogAlertsUpdateResponse
} from "../models";

/// <reference lib="esnext.asynciterable" />
/** Interface representing a ActivityLogAlerts. */
export interface ActivityLogAlerts {
  /**
   * Get a list of all activity log alerts in a subscription.
   * @param options The options parameters.
   */
  listBySubscriptionId(
    options?: ActivityLogAlertsListBySubscriptionIdOptionalParams
  ): PagedAsyncIterableIterator<ActivityLogAlertResource>;
  /**
   * Get a list of all activity log alerts in 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?: ActivityLogAlertsListByResourceGroupOptionalParams
  ): PagedAsyncIterableIterator<ActivityLogAlertResource>;
  /**
   * Create a new activity log alert or update an existing one.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param activityLogAlertName The name of the activity log alert.
   * @param activityLogAlert The activity log alert to create or use for the update.
   * @param options The options parameters.
   */
  createOrUpdate(
    resourceGroupName: string,
    activityLogAlertName: string,
    activityLogAlert: ActivityLogAlertResource,
    options?: ActivityLogAlertsCreateOrUpdateOptionalParams
  ): Promise<ActivityLogAlertsCreateOrUpdateResponse>;
  /**
   * Get an activity log alert.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param activityLogAlertName The name of the activity log alert.
   * @param options The options parameters.
   */
  get(
    resourceGroupName: string,
    activityLogAlertName: string,
    options?: ActivityLogAlertsGetOptionalParams
  ): Promise<ActivityLogAlertsGetResponse>;
  /**
   * Delete an activity log alert.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param activityLogAlertName The name of the activity log alert.
   * @param options The options parameters.
   */
  delete(
    resourceGroupName: string,
    activityLogAlertName: string,
    options?: ActivityLogAlertsDeleteOptionalParams
  ): Promise<void>;
  /**
   * Updates an existing ActivityLogAlertResource's tags. To update other fields use the CreateOrUpdate
   * method.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param activityLogAlertName The name of the activity log alert.
   * @param activityLogAlertPatch Parameters supplied to the operation.
   * @param options The options parameters.
   */
  update(
    resourceGroupName: string,
    activityLogAlertName: string,
    activityLogAlertPatch: ActivityLogAlertPatchBody,
    options?: ActivityLogAlertsUpdateOptionalParams
  ): Promise<ActivityLogAlertsUpdateResponse>;
}
