/*
 * 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 {
  LogProfileResource,
  LogProfilesListOptionalParams,
  LogProfilesDeleteOptionalParams,
  LogProfilesGetOptionalParams,
  LogProfilesGetResponse,
  LogProfilesCreateOrUpdateOptionalParams,
  LogProfilesCreateOrUpdateResponse,
  LogProfileResourcePatch,
  LogProfilesUpdateOptionalParams,
  LogProfilesUpdateResponse
} from "../models";

/// <reference lib="esnext.asynciterable" />
/** Interface representing a LogProfiles. */
export interface LogProfiles {
  /**
   * List the log profiles.
   * @param options The options parameters.
   */
  list(
    options?: LogProfilesListOptionalParams
  ): PagedAsyncIterableIterator<LogProfileResource>;
  /**
   * Deletes the log profile.
   * @param logProfileName The name of the log profile.
   * @param options The options parameters.
   */
  delete(
    logProfileName: string,
    options?: LogProfilesDeleteOptionalParams
  ): Promise<void>;
  /**
   * Gets the log profile.
   * @param logProfileName The name of the log profile.
   * @param options The options parameters.
   */
  get(
    logProfileName: string,
    options?: LogProfilesGetOptionalParams
  ): Promise<LogProfilesGetResponse>;
  /**
   * Create or update a log profile in Azure Monitoring REST API.
   * @param logProfileName The name of the log profile.
   * @param parameters Parameters supplied to the operation.
   * @param options The options parameters.
   */
  createOrUpdate(
    logProfileName: string,
    parameters: LogProfileResource,
    options?: LogProfilesCreateOrUpdateOptionalParams
  ): Promise<LogProfilesCreateOrUpdateResponse>;
  /**
   * Updates an existing LogProfilesResource. To update other fields use the CreateOrUpdate method.
   * @param logProfileName The name of the log profile.
   * @param logProfilesResource Parameters supplied to the operation.
   * @param options The options parameters.
   */
  update(
    logProfileName: string,
    logProfilesResource: LogProfileResourcePatch,
    options?: LogProfilesUpdateOptionalParams
  ): Promise<LogProfilesUpdateResponse>;
}
