/*
 * 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 {
  DataCollectionRuleResource,
  DataCollectionRulesListByResourceGroupOptionalParams,
  DataCollectionRulesListBySubscriptionOptionalParams,
  DataCollectionRulesGetOptionalParams,
  DataCollectionRulesGetResponse,
  DataCollectionRulesCreateOptionalParams,
  DataCollectionRulesCreateResponse,
  DataCollectionRulesUpdateOptionalParams,
  DataCollectionRulesUpdateResponse,
  DataCollectionRulesDeleteOptionalParams
} from "../models";

/// <reference lib="esnext.asynciterable" />
/** Interface representing a DataCollectionRules. */
export interface DataCollectionRules {
  /**
   * Lists all data collection rules in the specified resource group.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param options The options parameters.
   */
  listByResourceGroup(
    resourceGroupName: string,
    options?: DataCollectionRulesListByResourceGroupOptionalParams
  ): PagedAsyncIterableIterator<DataCollectionRuleResource>;
  /**
   * Lists all data collection rules in the specified subscription.
   * @param options The options parameters.
   */
  listBySubscription(
    options?: DataCollectionRulesListBySubscriptionOptionalParams
  ): PagedAsyncIterableIterator<DataCollectionRuleResource>;
  /**
   * Returns the specified data collection rule.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param dataCollectionRuleName The name of the data collection rule. The name is case insensitive.
   * @param options The options parameters.
   */
  get(
    resourceGroupName: string,
    dataCollectionRuleName: string,
    options?: DataCollectionRulesGetOptionalParams
  ): Promise<DataCollectionRulesGetResponse>;
  /**
   * Creates or updates a data collection rule.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param dataCollectionRuleName The name of the data collection rule. The name is case insensitive.
   * @param options The options parameters.
   */
  create(
    resourceGroupName: string,
    dataCollectionRuleName: string,
    options?: DataCollectionRulesCreateOptionalParams
  ): Promise<DataCollectionRulesCreateResponse>;
  /**
   * Updates part of a data collection rule.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param dataCollectionRuleName The name of the data collection rule. The name is case insensitive.
   * @param options The options parameters.
   */
  update(
    resourceGroupName: string,
    dataCollectionRuleName: string,
    options?: DataCollectionRulesUpdateOptionalParams
  ): Promise<DataCollectionRulesUpdateResponse>;
  /**
   * Deletes a data collection rule.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param dataCollectionRuleName The name of the data collection rule. The name is case insensitive.
   * @param options The options parameters.
   */
  delete(
    resourceGroupName: string,
    dataCollectionRuleName: string,
    options?: DataCollectionRulesDeleteOptionalParams
  ): Promise<void>;
}
