/*
 * 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 {
  BranchConfigurationsGetOptionalParams,
  BranchConfigurationsGetResponse,
  PathsXn26H7V01AppsOwnerNameAppNameBranchesBranchConfigPostRequestbodyContentApplicationJsonSchema,
  BranchConfigurationsCreateOptionalParams,
  BranchConfigurationsCreateResponse,
  Paths1O0K3JpV01AppsOwnerNameAppNameBranchesBranchConfigPutRequestbodyContentApplicationJsonSchema,
  BranchConfigurationsUpdateOptionalParams,
  BranchConfigurationsUpdateResponse,
  BranchConfigurationsDeleteOptionalParams,
  BranchConfigurationsDeleteResponse
} from "../models";

/** Interface representing a BranchConfigurations. */
export interface BranchConfigurations {
  /**
   * Gets the branch configuration
   * @param branch The branch name
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  get(
    branch: string,
    ownerName: string,
    appName: string,
    options?: BranchConfigurationsGetOptionalParams
  ): Promise<BranchConfigurationsGetResponse>;
  /**
   * Configures the branch for build
   * @param branch The branch name
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param params Parameters of the configuration
   * @param options The options parameters.
   */
  create(
    branch: string,
    ownerName: string,
    appName: string,
    params: PathsXn26H7V01AppsOwnerNameAppNameBranchesBranchConfigPostRequestbodyContentApplicationJsonSchema,
    options?: BranchConfigurationsCreateOptionalParams
  ): Promise<BranchConfigurationsCreateResponse>;
  /**
   * Reconfigures the branch for build
   * @param branch The branch name
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param params Parameters of the configuration
   * @param options The options parameters.
   */
  update(
    branch: string,
    ownerName: string,
    appName: string,
    params: Paths1O0K3JpV01AppsOwnerNameAppNameBranchesBranchConfigPutRequestbodyContentApplicationJsonSchema,
    options?: BranchConfigurationsUpdateOptionalParams
  ): Promise<BranchConfigurationsUpdateResponse>;
  /**
   * Deletes the branch build configuration
   * @param branch The branch name
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  delete(
    branch: string,
    ownerName: string,
    appName: string,
    options?: BranchConfigurationsDeleteOptionalParams
  ): Promise<BranchConfigurationsDeleteResponse>;
}
