/*
 * 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 {
  CrashesGetAppVersionsOptionalParams,
  CrashesGetAppVersionsResponse,
  CrashesGetAppCrashesInfoOptionalParams,
  CrashesGetAppCrashesInfoResponse,
  CrashesListSessionLogsOptionalParams,
  CrashesListSessionLogsResponse,
  CrashesGetCrashTextAttachmentContentOptionalParams,
  CrashesGetCrashTextAttachmentContentResponse,
  CrashesGetCrashAttachmentLocationOptionalParams,
  CrashesGetCrashAttachmentLocationResponse,
  CrashesListAttachmentsOptionalParams,
  CrashesListAttachmentsResponse,
  CrashesGetStacktraceOptionalParams,
  CrashesGetStacktraceResponse,
  CrashesGetRawCrashLocationOptionalParams,
  CrashesGetRawCrashLocationResponse,
  CrashesGetNativeCrashDownloadOptionalParams,
  CrashesGetNativeCrashDownloadResponse,
  CrashesGetNativeCrashOptionalParams,
  CrashesGetNativeCrashResponse,
  CrashesGetOptionalParams,
  CrashesGetResponse,
  CrashesDeleteOptionalParams,
  CrashesDeleteResponse,
  CrashesListOptionalParams,
  CrashesListResponse
} from "../models";

/** Interface representing a Crashes. */
export interface Crashes {
  /**
   * Gets a list of application versions.
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getAppVersions(
    ownerName: string,
    appName: string,
    options?: CrashesGetAppVersionsOptionalParams
  ): Promise<CrashesGetAppVersionsResponse>;
  /**
   * Gets whether the application has any crashes.
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getAppCrashesInfo(
    ownerName: string,
    appName: string,
    options?: CrashesGetAppCrashesInfoOptionalParams
  ): Promise<CrashesGetAppCrashesInfoResponse>;
  /**
   * Get session logs by crash ID
   * @param crashId The id of the a crash
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  listSessionLogs(
    crashId: string,
    ownerName: string,
    appName: string,
    options?: CrashesListSessionLogsOptionalParams
  ): Promise<CrashesListSessionLogsResponse>;
  /**
   * Gets content of the text attachment.
   * @param crashId id of a specific crash
   * @param attachmentId attachment id
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getCrashTextAttachmentContent(
    crashId: string,
    attachmentId: string,
    ownerName: string,
    appName: string,
    options?: CrashesGetCrashTextAttachmentContentOptionalParams
  ): Promise<CrashesGetCrashTextAttachmentContentResponse>;
  /**
   * Gets the URI location to download crash attachment.
   * @param crashId id of a specific crash
   * @param attachmentId attachment id
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getCrashAttachmentLocation(
    crashId: string,
    attachmentId: string,
    ownerName: string,
    appName: string,
    options?: CrashesGetCrashAttachmentLocationOptionalParams
  ): Promise<CrashesGetCrashAttachmentLocationResponse>;
  /**
   * Gets all attachments for a specific crash.
   * @param crashId id of a specific crash
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  listAttachments(
    crashId: string,
    ownerName: string,
    appName: string,
    options?: CrashesListAttachmentsOptionalParams
  ): Promise<CrashesListAttachmentsResponse>;
  /**
   * Gets a stacktrace for a specific crash.
   * @param crashGroupId id of a specific group
   * @param crashId id of a specific crash
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getStacktrace(
    crashGroupId: string,
    crashId: string,
    ownerName: string,
    appName: string,
    options?: CrashesGetStacktraceOptionalParams
  ): Promise<CrashesGetStacktraceResponse>;
  /**
   * Gets the URI location to download json of a specific crash.
   * @param crashGroupId id of a specific group
   * @param crashId id of a specific crash
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getRawCrashLocation(
    crashGroupId: string,
    crashId: string,
    ownerName: string,
    appName: string,
    options?: CrashesGetRawCrashLocationOptionalParams
  ): Promise<CrashesGetRawCrashLocationResponse>;
  /**
   * Gets the native log of a specific crash as a text attachment.
   * @param crashGroupId id of a specific group
   * @param crashId id of a specific crash
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getNativeCrashDownload(
    crashGroupId: string,
    crashId: string,
    ownerName: string,
    appName: string,
    options?: CrashesGetNativeCrashDownloadOptionalParams
  ): Promise<CrashesGetNativeCrashDownloadResponse>;
  /**
   * Gets the native log of a specific crash.
   * @param crashGroupId id of a specific group
   * @param crashId id of a specific crash
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  getNativeCrash(
    crashGroupId: string,
    crashId: string,
    ownerName: string,
    appName: string,
    options?: CrashesGetNativeCrashOptionalParams
  ): Promise<CrashesGetNativeCrashResponse>;
  /**
   * Gets a specific crash for an app.
   * @param crashGroupId id of a specific group
   * @param crashId id of a specific crash
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  get(
    crashGroupId: string,
    crashId: string,
    ownerName: string,
    appName: string,
    options?: CrashesGetOptionalParams
  ): Promise<CrashesGetResponse>;
  /**
   * Delete a specific crash and related attachments and blobs for an app.
   * @param crashGroupId id of a specific group
   * @param crashId id of a specific crash
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  delete(
    crashGroupId: string,
    crashId: string,
    ownerName: string,
    appName: string,
    options?: CrashesDeleteOptionalParams
  ): Promise<CrashesDeleteResponse>;
  /**
   * Gets all crashes of a group.
   * @param crashGroupId id of a specific group
   * @param ownerName The name of the owner
   * @param appName The name of the application
   * @param options The options parameters.
   */
  list(
    crashGroupId: string,
    ownerName: string,
    appName: string,
    options?: CrashesListOptionalParams
  ): Promise<CrashesListResponse>;
}
