/*
 * 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 {
  Revision,
  ContainerAppsRevisionsListRevisionsOptionalParams,
  ContainerAppsRevisionsGetRevisionOptionalParams,
  ContainerAppsRevisionsGetRevisionResponse,
  ContainerAppsRevisionsActivateRevisionOptionalParams,
  ContainerAppsRevisionsDeactivateRevisionOptionalParams,
  ContainerAppsRevisionsRestartRevisionOptionalParams
} from "../models";

/// <reference lib="esnext.asynciterable" />
/** Interface representing a ContainerAppsRevisions. */
export interface ContainerAppsRevisions {
  /**
   * Get the Revisions for a given Container App.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param containerAppName Name of the Container App for which Revisions are needed.
   * @param options The options parameters.
   */
  listRevisions(
    resourceGroupName: string,
    containerAppName: string,
    options?: ContainerAppsRevisionsListRevisionsOptionalParams
  ): PagedAsyncIterableIterator<Revision>;
  /**
   * Get a revision of a Container App.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param containerAppName Name of the Container App.
   * @param name Name of the Container App Revision.
   * @param options The options parameters.
   */
  getRevision(
    resourceGroupName: string,
    containerAppName: string,
    name: string,
    options?: ContainerAppsRevisionsGetRevisionOptionalParams
  ): Promise<ContainerAppsRevisionsGetRevisionResponse>;
  /**
   * Activates a revision for a Container App
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param containerAppName Name of the Container App.
   * @param name Name of the Container App Revision to activate
   * @param options The options parameters.
   */
  activateRevision(
    resourceGroupName: string,
    containerAppName: string,
    name: string,
    options?: ContainerAppsRevisionsActivateRevisionOptionalParams
  ): Promise<void>;
  /**
   * Deactivates a revision for a Container App
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param containerAppName Name of the Container App.
   * @param name Name of the Container App Revision to deactivate
   * @param options The options parameters.
   */
  deactivateRevision(
    resourceGroupName: string,
    containerAppName: string,
    name: string,
    options?: ContainerAppsRevisionsDeactivateRevisionOptionalParams
  ): Promise<void>;
  /**
   * Restarts a revision for a Container App
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param containerAppName Name of the Container App.
   * @param name Name of the Container App Revision to restart
   * @param options The options parameters.
   */
  restartRevision(
    resourceGroupName: string,
    containerAppName: string,
    name: string,
    options?: ContainerAppsRevisionsRestartRevisionOptionalParams
  ): Promise<void>;
}
