/*
 * 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 {
  SymbolUploadsGetLocationOptionalParams,
  SymbolUploadsGetLocationResponse,
  SymbolUploadsGetOptionalParams,
  SymbolUploadsGetResponse,
  PatchContentSchemaStatus,
  SymbolUploadsCompleteOptionalParams,
  SymbolUploadsCompleteResponse,
  SymbolUploadsDeleteOptionalParams,
  SymbolUploadsDeleteResponse,
  SymbolUploadsListOptionalParams,
  SymbolUploadsListResponse,
  Paths18RbyikV01AppsOwnerNameAppNameSymbolUploadsPostRequestbodyContentApplicationJsonSchema,
  SymbolUploadsCreateOptionalParams,
  SymbolUploadsCreateResponse
} from "../models";

/** Interface representing a SymbolUploads. */
export interface SymbolUploads {
  /**
   * Gets the URL to download the symbol upload
   * @param symbolUploadId The ID of the symbol upload
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getLocation(
    symbolUploadId: string,
    ownerName: string,
    appName: string,
    options?: SymbolUploadsGetLocationOptionalParams
  ): Promise<SymbolUploadsGetLocationResponse>;
  /**
   * Gets a symbol upload by id for the specified application
   * @param symbolUploadId The ID of the symbol upload
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  get(
    symbolUploadId: string,
    ownerName: string,
    appName: string,
    options?: SymbolUploadsGetOptionalParams
  ): Promise<SymbolUploadsGetResponse>;
  /**
   * Commits or aborts the symbol upload process for a new set of symbols for the specified application
   * @param symbolUploadId The ID of the symbol upload
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param status The desired operation for the symbol upload
   * @param options The options parameters.
   */
  complete(
    symbolUploadId: string,
    ownerName: string,
    appName: string,
    status: PatchContentSchemaStatus,
    options?: SymbolUploadsCompleteOptionalParams
  ): Promise<SymbolUploadsCompleteResponse>;
  /**
   * Deletes a symbol upload by id for the specified application
   * @param symbolUploadId The ID of the symbol upload
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  delete(
    symbolUploadId: string,
    ownerName: string,
    appName: string,
    options?: SymbolUploadsDeleteOptionalParams
  ): Promise<SymbolUploadsDeleteResponse>;
  /**
   * Gets a list of all uploads for the specified application
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  list(
    ownerName: string,
    appName: string,
    options?: SymbolUploadsListOptionalParams
  ): Promise<SymbolUploadsListResponse>;
  /**
   * Begins the symbol upload process for a new set of symbols for the specified application
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param body The symbol information
   * @param options The options parameters.
   */
  create(
    ownerName: string,
    appName: string,
    body: Paths18RbyikV01AppsOwnerNameAppNameSymbolUploadsPostRequestbodyContentApplicationJsonSchema,
    options?: SymbolUploadsCreateOptionalParams
  ): Promise<SymbolUploadsCreateResponse>;
}
