/*
 * 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 {
  DataCollectionEndpointResource,
  DataCollectionEndpointsListByResourceGroupOptionalParams,
  DataCollectionEndpointsListBySubscriptionOptionalParams,
  DataCollectionEndpointsGetOptionalParams,
  DataCollectionEndpointsGetResponse,
  DataCollectionEndpointsCreateOptionalParams,
  DataCollectionEndpointsCreateResponse,
  DataCollectionEndpointsUpdateOptionalParams,
  DataCollectionEndpointsUpdateResponse,
  DataCollectionEndpointsDeleteOptionalParams
} from "../models";

/// <reference lib="esnext.asynciterable" />
/** Interface representing a DataCollectionEndpoints. */
export interface DataCollectionEndpoints {
  /**
   * Lists all data collection endpoints 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?: DataCollectionEndpointsListByResourceGroupOptionalParams
  ): PagedAsyncIterableIterator<DataCollectionEndpointResource>;
  /**
   * Lists all data collection endpoints in the specified subscription
   * @param options The options parameters.
   */
  listBySubscription(
    options?: DataCollectionEndpointsListBySubscriptionOptionalParams
  ): PagedAsyncIterableIterator<DataCollectionEndpointResource>;
  /**
   * Returns the specified data collection endpoint.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param dataCollectionEndpointName The name of the data collection endpoint. The name is case
   *                                   insensitive.
   * @param options The options parameters.
   */
  get(
    resourceGroupName: string,
    dataCollectionEndpointName: string,
    options?: DataCollectionEndpointsGetOptionalParams
  ): Promise<DataCollectionEndpointsGetResponse>;
  /**
   * Creates or updates a data collection endpoint.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param dataCollectionEndpointName The name of the data collection endpoint. The name is case
   *                                   insensitive.
   * @param options The options parameters.
   */
  create(
    resourceGroupName: string,
    dataCollectionEndpointName: string,
    options?: DataCollectionEndpointsCreateOptionalParams
  ): Promise<DataCollectionEndpointsCreateResponse>;
  /**
   * Updates part of a data collection endpoint.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param dataCollectionEndpointName The name of the data collection endpoint. The name is case
   *                                   insensitive.
   * @param options The options parameters.
   */
  update(
    resourceGroupName: string,
    dataCollectionEndpointName: string,
    options?: DataCollectionEndpointsUpdateOptionalParams
  ): Promise<DataCollectionEndpointsUpdateResponse>;
  /**
   * Deletes a data collection endpoint.
   * @param resourceGroupName The name of the resource group. The name is case insensitive.
   * @param dataCollectionEndpointName The name of the data collection endpoint. The name is case
   *                                   insensitive.
   * @param options The options parameters.
   */
  delete(
    resourceGroupName: string,
    dataCollectionEndpointName: string,
    options?: DataCollectionEndpointsDeleteOptionalParams
  ): Promise<void>;
}
