/*
 * 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 {
  DataCollectionRuleAssociationProxyOnlyResource,
  DataCollectionRuleAssociationsListByResourceOptionalParams,
  DataCollectionRuleAssociationsListByRuleOptionalParams,
  DataCollectionRuleAssociationsGetOptionalParams,
  DataCollectionRuleAssociationsGetResponse,
  DataCollectionRuleAssociationsCreateOptionalParams,
  DataCollectionRuleAssociationsCreateResponse,
  DataCollectionRuleAssociationsDeleteOptionalParams
} from "../models";

/// <reference lib="esnext.asynciterable" />
/** Interface representing a DataCollectionRuleAssociations. */
export interface DataCollectionRuleAssociations {
  /**
   * Lists associations for the specified resource.
   * @param resourceUri The identifier of the resource.
   * @param options The options parameters.
   */
  listByResource(
    resourceUri: string,
    options?: DataCollectionRuleAssociationsListByResourceOptionalParams
  ): PagedAsyncIterableIterator<DataCollectionRuleAssociationProxyOnlyResource>;
  /**
   * Lists associations for 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.
   */
  listByRule(
    resourceGroupName: string,
    dataCollectionRuleName: string,
    options?: DataCollectionRuleAssociationsListByRuleOptionalParams
  ): PagedAsyncIterableIterator<DataCollectionRuleAssociationProxyOnlyResource>;
  /**
   * Returns the specified association.
   * @param resourceUri The identifier of the resource.
   * @param associationName The name of the association. The name is case insensitive.
   * @param options The options parameters.
   */
  get(
    resourceUri: string,
    associationName: string,
    options?: DataCollectionRuleAssociationsGetOptionalParams
  ): Promise<DataCollectionRuleAssociationsGetResponse>;
  /**
   * Creates or updates an association.
   * @param resourceUri The identifier of the resource.
   * @param associationName The name of the association. The name is case insensitive.
   * @param options The options parameters.
   */
  create(
    resourceUri: string,
    associationName: string,
    options?: DataCollectionRuleAssociationsCreateOptionalParams
  ): Promise<DataCollectionRuleAssociationsCreateResponse>;
  /**
   * Deletes an association.
   * @param resourceUri The identifier of the resource.
   * @param associationName The name of the association. The name is case insensitive.
   * @param options The options parameters.
   */
  delete(
    resourceUri: string,
    associationName: string,
    options?: DataCollectionRuleAssociationsDeleteOptionalParams
  ): Promise<void>;
}
