/*
 * 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 {
  BuildsListXcodeVersionsOptionalParams,
  BuildsListXcodeVersionsResponse,
  BuildsListXamarinSDKBundlesOptionalParams,
  BuildsListXamarinSDKBundlesResponse,
  BuildsListToolsetsOptionalParams,
  BuildsListToolsetsResponse,
  BuildsGetLogOptionalParams,
  BuildsGetLogResponse,
  Enum475,
  BuildsGetDownloadUriOptionalParams,
  BuildsGetDownloadUriResponse,
  Paths1P28L53V01AppsOwnerNameAppNameBuildsBuildIdDistributePostRequestbodyContentApplicationJsonSchema,
  BuildsDistributeOptionalParams,
  BuildsDistributeResponse,
  BuildsGetOptionalParams,
  BuildsGetResponse,
  BuildsUpdateOptionalParams,
  BuildsUpdateResponse,
  BuildsGetStatusByAppIdOptionalParams,
  BuildsGetStatusByAppIdResponse,
  Enum484,
  Enum485,
  BuildsListToolsetProjectsOptionalParams,
  BuildsListToolsetProjectsResponse,
  BuildsListByBranchOptionalParams,
  BuildsListByBranchResponse,
  BuildsCreateOptionalParams,
  BuildsCreateResponse,
  BuildsListBranchesOptionalParams,
  BuildsListBranchesResponse
} from "../models";

/** Interface representing a Builds. */
export interface Builds {
  /**
   * Gets the Xcode versions available to this app
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  listXcodeVersions(
    ownerName: string,
    appName: string,
    options?: BuildsListXcodeVersionsOptionalParams
  ): Promise<BuildsListXcodeVersionsResponse>;
  /**
   * Gets the Xamarin SDK bundles available to this app
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  listXamarinSDKBundles(
    ownerName: string,
    appName: string,
    options?: BuildsListXamarinSDKBundlesOptionalParams
  ): Promise<BuildsListXamarinSDKBundlesResponse>;
  /**
   * Returns available toolsets for application
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  listToolsets(
    ownerName: string,
    appName: string,
    options?: BuildsListToolsetsOptionalParams
  ): Promise<BuildsListToolsetsResponse>;
  /**
   * Get the build log
   * @param buildId The build ID
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getLog(
    buildId: number,
    ownerName: string,
    appName: string,
    options?: BuildsGetLogOptionalParams
  ): Promise<BuildsGetLogResponse>;
  /**
   * Gets the download URI
   * @param buildId The build ID
   * @param downloadType The download type
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getDownloadUri(
    buildId: number,
    downloadType: Enum475,
    ownerName: string,
    appName: string,
    options?: BuildsGetDownloadUriOptionalParams
  ): Promise<BuildsGetDownloadUriResponse>;
  /**
   * Distribute a build
   * @param buildId The build ID
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param distributeInfo The distribution details
   * @param options The options parameters.
   */
  distribute(
    buildId: number,
    ownerName: string,
    appName: string,
    distributeInfo: Paths1P28L53V01AppsOwnerNameAppNameBuildsBuildIdDistributePostRequestbodyContentApplicationJsonSchema,
    options?: BuildsDistributeOptionalParams
  ): Promise<BuildsDistributeResponse>;
  /**
   * Returns the build detail for the given build ID
   * @param buildId The build ID
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  get(
    buildId: number,
    ownerName: string,
    appName: string,
    options?: BuildsGetOptionalParams
  ): Promise<BuildsGetResponse>;
  /**
   * Cancels a build
   * @param buildId The build ID
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  update(
    buildId: number,
    ownerName: string,
    appName: string,
    options?: BuildsUpdateOptionalParams
  ): Promise<BuildsUpdateResponse>;
  /**
   * Application specific build service status
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getStatusByAppId(
    ownerName: string,
    appName: string,
    options?: BuildsGetStatusByAppIdOptionalParams
  ): Promise<BuildsGetStatusByAppIdResponse>;
  /**
   * Returns the projects in the repository for the branch, for all toolsets
   * @param branch The branch name
   * @param os The desired OS for the project scan; normally the same as the app OS
   * @param platform The desired platform for the project scan
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  listToolsetProjects(
    branch: string,
    os: Enum484,
    platform: Enum485,
    ownerName: string,
    appName: string,
    options?: BuildsListToolsetProjectsOptionalParams
  ): Promise<BuildsListToolsetProjectsResponse>;
  /**
   * Returns the list of builds for the branch
   * @param branch The branch name
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  listByBranch(
    branch: string,
    ownerName: string,
    appName: string,
    options?: BuildsListByBranchOptionalParams
  ): Promise<BuildsListByBranchResponse>;
  /**
   * Create a build
   * @param branch The branch name
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  create(
    branch: string,
    ownerName: string,
    appName: string,
    options?: BuildsCreateOptionalParams
  ): Promise<BuildsCreateResponse>;
  /**
   * Returns the list of Git branches for this application
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  listBranches(
    ownerName: string,
    appName: string,
    options?: BuildsListBranchesOptionalParams
  ): Promise<BuildsListBranchesResponse>;
}
