/*
 * 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 * as msRest from "@azure/ms-rest-js";

/**
 * Bounding box that defines a region of an image.
 */
export interface BoundingBox {
  /**
   * Coordinate of the left boundary.
   */
  left: number;
  /**
   * Coordinate of the top boundary.
   */
  top: number;
  /**
   * Width.
   */
  width: number;
  /**
   * Height.
   */
  height: number;
}

/**
 * Options used for createProject.
 */
export interface CreateProjectOptions {
  /**
   * The uri to the Azure Storage container that will be used to store exported models.
   */
  exportModelContainerUri?: string;
  /**
   * The uri to the Azure Storage queue that will be used to send project-related notifications.
   * See <a href="https://go.microsoft.com/fwlink/?linkid=2144149">Storage notifications</a>
   * documentation for setup and message format.
   */
  notificationQueueUri?: string;
}

/**
 * An interface representing CustomBaseModelInfo.
 */
export interface CustomBaseModelInfo {
  /**
   * Project Id of the previously trained project to be used for current iteration's training.
   */
  projectId: string;
  /**
   * Iteration Id of the previously trained project to be used for current iteration's training.
   */
  iterationId: string;
}

/**
 * An interface representing CustomVisionError.
 */
export interface CustomVisionError {
  /**
   * The error code. Possible values include: 'NoError', 'BadRequest',
   * 'BadRequestExceededBatchSize', 'BadRequestNotSupported', 'BadRequestInvalidIds',
   * 'BadRequestProjectName', 'BadRequestProjectNameNotUnique', 'BadRequestProjectDescription',
   * 'BadRequestProjectUnknownDomain', 'BadRequestProjectUnknownClassification',
   * 'BadRequestProjectUnsupportedDomainTypeChange', 'BadRequestProjectUnsupportedExportPlatform',
   * 'BadRequestProjectImagePreprocessingSettings', 'BadRequestProjectDuplicated',
   * 'BadRequestIterationName', 'BadRequestIterationNameNotUnique',
   * 'BadRequestIterationDescription', 'BadRequestIterationIsNotTrained',
   * 'BadRequestIterationValidationFailed', 'BadRequestWorkspaceCannotBeModified',
   * 'BadRequestWorkspaceNotDeletable', 'BadRequestTagName', 'BadRequestTagNameNotUnique',
   * 'BadRequestTagDescription', 'BadRequestTagType', 'BadRequestMultipleNegativeTag',
   * 'BadRequestMultipleGeneralProductTag', 'BadRequestImageTags', 'BadRequestImageRegions',
   * 'BadRequestNegativeAndRegularTagOnSameImage', 'BadRequestUnsupportedDomain',
   * 'BadRequestRequiredParamIsNull', 'BadRequestIterationIsPublished',
   * 'BadRequestInvalidPublishName', 'BadRequestInvalidPublishTarget', 'BadRequestUnpublishFailed',
   * 'BadRequestIterationNotPublished', 'BadRequestSubscriptionApi',
   * 'BadRequestExceedProjectLimit', 'BadRequestExceedIterationPerProjectLimit',
   * 'BadRequestExceedTagPerProjectLimit', 'BadRequestExceedTagPerImageLimit',
   * 'BadRequestExceededQuota', 'BadRequestCannotMigrateProjectWithName',
   * 'BadRequestNotLimitedTrial', 'BadRequestImageBatch', 'BadRequestImageStream',
   * 'BadRequestImageUrl', 'BadRequestImageFormat', 'BadRequestImageSizeBytes',
   * 'BadRequestImageDimensions', 'BadRequestImageAspectRatio', 'BadRequestImageExceededCount',
   * 'BadRequestTrainingNotNeeded', 'BadRequestTrainingNotNeededButTrainingPipelineUpdated',
   * 'BadRequestTrainingValidationFailed', 'BadRequestClassificationTrainingValidationFailed',
   * 'BadRequestMultiClassClassificationTrainingValidationFailed',
   * 'BadRequestMultiLabelClassificationTrainingValidationFailed',
   * 'BadRequestDetectionTrainingValidationFailed', 'BadRequestTrainingAlreadyInProgress',
   * 'BadRequestDetectionTrainingNotAllowNegativeTag', 'BadRequestInvalidEmailAddress',
   * 'BadRequestRetiredDomainNotSupportedForTraining',
   * 'BadRequestDomainNotSupportedForAdvancedTraining',
   * 'BadRequestExportPlatformNotSupportedForAdvancedTraining',
   * 'BadRequestReservedBudgetInHoursNotEnoughForAdvancedTraining',
   * 'BadRequestCustomBaseModelIterationStatusNotCompleted',
   * 'BadRequestCustomBaseModelDomainNotCompatible',
   * 'BadRequestCustomBaseModelArchitectureRetired', 'BadRequestExportValidationFailed',
   * 'BadRequestExportAlreadyInProgress', 'BadRequestPredictionIdsMissing',
   * 'BadRequestPredictionIdsExceededCount', 'BadRequestPredictionTagsExceededCount',
   * 'BadRequestPredictionResultsExceededCount', 'BadRequestPredictionInvalidApplicationName',
   * 'BadRequestPredictionInvalidQueryParameters', 'BadRequestInvalidImportToken',
   * 'BadRequestExportWhileTraining', 'BadRequestImageMetadataKey', 'BadRequestImageMetadataValue',
   * 'BadRequestOperationNotSupported', 'BadRequestInvalidArtifactUri',
   * 'BadRequestCustomerManagedKeyRevoked', 'BadRequestInvalidUri', 'BadRequestInvalid',
   * 'UnsupportedMediaType', 'Forbidden', 'ForbiddenUser', 'ForbiddenUserResource',
   * 'ForbiddenUserSignupDisabled', 'ForbiddenUserSignupAllowanceExceeded',
   * 'ForbiddenUserDoesNotExist', 'ForbiddenUserDisabled', 'ForbiddenUserInsufficientCapability',
   * 'ForbiddenDRModeEnabled', 'ForbiddenInvalid', 'NotFound', 'NotFoundProject',
   * 'NotFoundProjectDefaultIteration', 'NotFoundIteration', 'NotFoundIterationPerformance',
   * 'NotFoundTag', 'NotFoundImage', 'NotFoundDomain', 'NotFoundApimSubscription',
   * 'NotFoundInvalid', 'Conflict', 'ConflictInvalid', 'ErrorUnknown', 'ErrorIterationCopyFailed',
   * 'ErrorPreparePerformanceMigrationFailed', 'ErrorProjectInvalidWorkspace',
   * 'ErrorProjectInvalidPipelineConfiguration', 'ErrorProjectInvalidDomain',
   * 'ErrorProjectTrainingRequestFailed', 'ErrorProjectImportRequestFailed',
   * 'ErrorProjectExportRequestFailed', 'ErrorFeaturizationServiceUnavailable',
   * 'ErrorFeaturizationQueueTimeout', 'ErrorFeaturizationInvalidFeaturizer',
   * 'ErrorFeaturizationAugmentationUnavailable', 'ErrorFeaturizationUnrecognizedJob',
   * 'ErrorFeaturizationAugmentationError', 'ErrorExporterInvalidPlatform',
   * 'ErrorExporterInvalidFeaturizer', 'ErrorExporterInvalidClassifier',
   * 'ErrorPredictionServiceUnavailable', 'ErrorPredictionModelNotFound',
   * 'ErrorPredictionModelNotCached', 'ErrorPrediction', 'ErrorPredictionStorage',
   * 'ErrorRegionProposal', 'ErrorUnknownBaseModel', 'ErrorServerTimeOut', 'ErrorInvalid'
   */
  code: CustomVisionErrorCodes;
  /**
   * A message explaining the error reported by the service.
   */
  message: string;
}

/**
 * Model information.
 */
export interface ModelInformation {
  /**
   * Estimation of the exported FP32 Onnx model size (2 tags) in megabytes. This information is not
   * present if the model cannot be exported.
   */
  estimatedModelSizeInMegabytes?: number;
  /**
   * Model description.
   */
  description: string;
}

/**
 * Domains are used as the starting point for your project. Each domain is optimized for specific
 * types of images. Domains with compact in their name can be exported. For more information visit
 * the <a href="https://go.microsoft.com/fwlink/?linkid=2117014">domain documentation</a>.
 */
export interface Domain {
  /**
   * Domain id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Name of the domain, describing the types of images used to train it.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
  /**
   * Domain type: Classification or ObjectDetection. Possible values include: 'Classification',
   * 'ObjectDetection'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly type?: DomainType;
  /**
   * Indicating if the domain is exportable.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly exportable?: boolean;
  /**
   * Indicating if the domain is enabled.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly enabled?: boolean;
  /**
   * Platforms that the domain can be exported to.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly exportablePlatforms?: string[];
  /**
   * Model information.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly modelInformation?: ModelInformation;
}

/**
 * An interface representing ExportModel.
 */
export interface ExportModel {
  /**
   * Platform of the export. Possible values include: 'CoreML', 'TensorFlow', 'DockerFile', 'ONNX',
   * 'VAIDK', 'OpenVino'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly platform?: ExportPlatform;
  /**
   * Status of the export. Possible values include: 'Exporting', 'Failed', 'Done'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly status?: ExportStatus;
  /**
   * URI used to download the model. If VNET feature is enabled this will be a relative path to be
   * used with GetArtifact, otherwise this will be an absolute URI to the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly downloadUri?: string;
  /**
   * Flavor of the export. These are specializations of the export platform.
   * Docker platform has valid flavors: Linux, Windows, ARM.
   * Tensorflow platform has valid flavors: TensorFlowNormal, TensorFlowLite.
   * ONNX platform has valid flavors: ONNX10, ONNX12. Possible values include: 'Linux', 'Windows',
   * 'ONNX10', 'ONNX12', 'ARM', 'TensorFlowNormal', 'TensorFlowLite'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly flavor?: ExportFlavor;
  /**
   * Indicates an updated version of the export package is available and should be re-exported for
   * the latest changes.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly newerVersionAvailable?: boolean;
}

/**
 * An interface representing ImageTag.
 */
export interface ImageTag {
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly tagId?: string;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly tagName?: string;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly created?: Date;
}

/**
 * An interface representing ImageRegion.
 */
export interface ImageRegion {
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly regionId?: string;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly tagName?: string;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly created?: Date;
  /**
   * Id of the tag associated with this region.
   */
  tagId: string;
  /**
   * Coordinate of the left boundary.
   */
  left: number;
  /**
   * Coordinate of the top boundary.
   */
  top: number;
  /**
   * Width.
   */
  width: number;
  /**
   * Height.
   */
  height: number;
}

/**
 * Image model to be sent as JSON.
 */
export interface Image {
  /**
   * Id of the image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Date the image was created.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly created?: Date;
  /**
   * Width of the image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly width?: number;
  /**
   * Height of the image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly height?: number;
  /**
   * The URI to the (resized) image used for training. If VNET feature is enabled this will be a
   * relative path to be used with GetArtifact, otherwise this will be an absolute URI to the
   * resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly resizedImageUri?: string;
  /**
   * The URI to the thumbnail of the original image. If VNET feature is enabled this will be a
   * relative path to be used with GetArtifact, otherwise this will be an absolute URI to the
   * resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly thumbnailUri?: string;
  /**
   * The URI to the original uploaded image. If VNET feature is enabled this will be a relative
   * path to be used with GetArtifact, otherwise this will be an absolute URI to the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly originalImageUri?: string;
  /**
   * Tags associated with this image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly tags?: ImageTag[];
  /**
   * Regions associated with this image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly regions?: ImageRegion[];
  /**
   * Metadata associated with this image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly metadata?: { [propertyName: string]: string };
}

/**
 * An interface representing ImageCreateResult.
 */
export interface ImageCreateResult {
  /**
   * Source URL of the image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly sourceUrl?: string;
  /**
   * Status of the image creation. Possible values include: 'OK', 'OKDuplicate', 'ErrorSource',
   * 'ErrorImageFormat', 'ErrorImageSize', 'ErrorStorage', 'ErrorLimitExceed',
   * 'ErrorTagLimitExceed', 'ErrorRegionLimitExceed', 'ErrorUnknown',
   * 'ErrorNegativeAndRegularTagOnSameImage', 'ErrorImageDimensions', 'ErrorInvalidTag'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly status?: ImageCreateStatus;
  /**
   * The image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly image?: Image;
}

/**
 * An interface representing ImageCreateSummary.
 */
export interface ImageCreateSummary {
  /**
   * True if all of the images in the batch were created successfully, otherwise false.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly isBatchSuccessful?: boolean;
  /**
   * List of the image creation results.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly images?: ImageCreateResult[];
}

/**
 * An interface representing Region.
 */
export interface Region {
  /**
   * Id of the tag associated with this region.
   */
  tagId: string;
  /**
   * Coordinate of the left boundary.
   */
  left: number;
  /**
   * Coordinate of the top boundary.
   */
  top: number;
  /**
   * Width.
   */
  width: number;
  /**
   * Height.
   */
  height: number;
}

/**
 * An interface representing ImageFileCreateEntry.
 */
export interface ImageFileCreateEntry {
  name?: string;
  contents?: Uint8Array;
  tagIds?: string[];
  regions?: Region[];
}

/**
 * An interface representing ImageFileCreateBatch.
 */
export interface ImageFileCreateBatch {
  images?: ImageFileCreateEntry[];
  tagIds?: string[];
  /**
   * The metadata of image. Limited to 10 key-value pairs per image. The length of key is limited
   * to 128. The length of value is limited to 256.
   */
  metadata?: { [propertyName: string]: string };
}

/**
 * An interface representing ImageIdCreateEntry.
 */
export interface ImageIdCreateEntry {
  /**
   * Id of the image.
   */
  id?: string;
  tagIds?: string[];
  regions?: Region[];
}

/**
 * An interface representing ImageIdCreateBatch.
 */
export interface ImageIdCreateBatch {
  images?: ImageIdCreateEntry[];
  tagIds?: string[];
  /**
   * The metadata of image. Limited to 10 key-value pairs per image. The length of key is limited
   * to 128. The length of value is limited to 256.
   */
  metadata?: { [propertyName: string]: string };
}

/**
 * Entry associating a metadata to an image.
 */
export interface ImageMetadataUpdateEntry {
  /**
   * Id of the image.
   */
  imageId?: string;
  /**
   * Status of the metadata update. Possible values include: 'OK', 'ErrorImageNotFound',
   * 'ErrorLimitExceed', 'ErrorUnknown'
   */
  status?: ImageMetadataUpdateStatus;
  /**
   * Metadata of the image.
   */
  metadata?: { [propertyName: string]: string };
}

/**
 * An interface representing ImageMetadataUpdateSummary.
 */
export interface ImageMetadataUpdateSummary {
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly isBatchSuccessful?: boolean;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly images?: ImageMetadataUpdateEntry[];
}

/**
 * Prediction result.
 */
export interface Prediction {
  /**
   * Probability of the tag.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly probability?: number;
  /**
   * Id of the predicted tag.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly tagId?: string;
  /**
   * Name of the predicted tag.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly tagName?: string;
  /**
   * Bounding box of the prediction.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly boundingBox?: BoundingBox;
  /**
   * Type of the predicted tag. Possible values include: 'Regular', 'Negative', 'GeneralProduct'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly tagType?: TagType;
}

/**
 * Image performance model.
 */
export interface ImagePerformance {
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly predictions?: Prediction[];
  /**
   * Id of the image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Date the image was created.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly created?: Date;
  /**
   * Width of the image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly width?: number;
  /**
   * Height of the image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly height?: number;
  /**
   * The URI to the image used for training. If VNET feature is enabled this will be a relative
   * path to be used with GetArtifact, otherwise this will be an absolute URI to the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly imageUri?: string;
  /**
   * The URI to the thumbnail of the original image. If VNET feature is enabled this will be a
   * relative path to be used with GetArtifact, otherwise this will be an absolute URI to the
   * resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly thumbnailUri?: string;
  /**
   * Tags associated with this image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly tags?: ImageTag[];
  /**
   * Regions associated with this image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly regions?: ImageRegion[];
}

/**
 * Result of an image prediction request.
 */
export interface ImagePrediction {
  /**
   * Prediction Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Project Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly project?: string;
  /**
   * Iteration Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly iteration?: string;
  /**
   * Date this prediction was created.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly created?: Date;
  /**
   * List of predictions.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly predictions?: Prediction[];
}

/**
 * Represents image preprocessing settings used by image augmentation.
 */
export interface ImageProcessingSettings {
  /**
   * Gets or sets enabled image transforms. The key corresponds to the transform name. If value is
   * set to true, then correspondent transform is enabled. Otherwise this transform will not be
   * used.
   * Augmentation will be uniformly distributed among enabled transforms.
   */
  augmentationMethods?: { [propertyName: string]: boolean };
}

/**
 * Entry associating a region to an image.
 */
export interface ImageRegionCreateEntry {
  /**
   * Id of the image.
   */
  imageId: string;
  /**
   * Id of the tag associated with this region.
   */
  tagId: string;
  /**
   * Coordinate of the left boundary.
   */
  left: number;
  /**
   * Coordinate of the top boundary.
   */
  top: number;
  /**
   * Width.
   */
  width: number;
  /**
   * Height.
   */
  height: number;
}

/**
 * Batch of image region information to create.
 */
export interface ImageRegionCreateBatch {
  regions?: ImageRegionCreateEntry[];
}

/**
 * An interface representing ImageRegionCreateResult.
 */
export interface ImageRegionCreateResult {
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly imageId?: string;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly regionId?: string;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly tagName?: string;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly created?: Date;
  /**
   * Id of the tag associated with this region.
   */
  tagId: string;
  /**
   * Coordinate of the left boundary.
   */
  left: number;
  /**
   * Coordinate of the top boundary.
   */
  top: number;
  /**
   * Width.
   */
  width: number;
  /**
   * Height.
   */
  height: number;
}

/**
 * An interface representing ImageRegionCreateSummary.
 */
export interface ImageRegionCreateSummary {
  created?: ImageRegionCreateResult[];
  duplicated?: ImageRegionCreateEntry[];
  exceeded?: ImageRegionCreateEntry[];
}

/**
 * An interface representing RegionProposal.
 */
export interface RegionProposal {
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly confidence?: number;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly boundingBox?: BoundingBox;
}

/**
 * An interface representing ImageRegionProposal.
 */
export interface ImageRegionProposal {
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly projectId?: string;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly imageId?: string;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly proposals?: RegionProposal[];
}

/**
 * Entry associating a tag to an image.
 */
export interface ImageTagCreateEntry {
  /**
   * Id of the image.
   */
  imageId?: string;
  /**
   * Id of the tag.
   */
  tagId?: string;
}

/**
 * Batch of image tags.
 */
export interface ImageTagCreateBatch {
  /**
   * Image Tag entries to include in this batch.
   */
  tags?: ImageTagCreateEntry[];
}

/**
 * An interface representing ImageTagCreateSummary.
 */
export interface ImageTagCreateSummary {
  created?: ImageTagCreateEntry[];
  duplicated?: ImageTagCreateEntry[];
  exceeded?: ImageTagCreateEntry[];
}

/**
 * Image url.
 */
export interface ImageUrl {
  /**
   * Url of the image.
   */
  url: string;
}

/**
 * An interface representing ImageUrlCreateEntry.
 */
export interface ImageUrlCreateEntry {
  /**
   * Url of the image.
   */
  url: string;
  tagIds?: string[];
  regions?: Region[];
}

/**
 * An interface representing ImageUrlCreateBatch.
 */
export interface ImageUrlCreateBatch {
  images?: ImageUrlCreateEntry[];
  tagIds?: string[];
  /**
   * The metadata of image. Limited to 10 key-value pairs per image. The length of key is limited
   * to 128. The length of value is limited to 256.
   */
  metadata?: { [propertyName: string]: string };
}

/**
 * Iteration model to be sent over JSON.
 */
export interface Iteration {
  /**
   * Gets the id of the iteration.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Gets or sets the name of the iteration.
   */
  name: string;
  /**
   * Gets the current iteration status.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly status?: string;
  /**
   * Gets the time this iteration was completed.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly created?: Date;
  /**
   * Gets the time this iteration was last modified.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModified?: Date;
  /**
   * Gets the time this iteration was last modified.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly trainedAt?: Date;
  /**
   * Gets the project id of the iteration.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly projectId?: string;
  /**
   * Whether the iteration can be exported to another format for download.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly exportable?: boolean;
  /**
   * A set of platforms this iteration can export to.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly exportableTo?: string[];
  /**
   * Get or sets a guid of the domain the iteration has been trained on.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly domainId?: string;
  /**
   * Gets the classification type of the project. Possible values include: 'Multiclass',
   * 'Multilabel'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly classificationType?: Classifier;
  /**
   * Gets the training type of the iteration. Possible values include: 'Regular', 'Advanced'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly trainingType?: TrainingType;
  /**
   * Gets the reserved advanced training budget for the iteration.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly reservedBudgetInHours?: number;
  /**
   * Gets the training time for the iteration.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly trainingTimeInMinutes?: number;
  /**
   * Name of the published model.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly publishName?: string;
  /**
   * Resource Provider Id this iteration was originally published to.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly originalPublishResourceId?: string;
  /**
   * Information of the previously trained iteration which provides the base model for current
   * iteration's training.
   * Default value of null specifies that no previously trained iteration will be used for
   * incremental learning.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly customBaseModelInfo?: CustomBaseModelInfo;
  /**
   * Training error details, when training fails.
   * Value is null when training succeeds.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly trainingErrorDetails?: string;
}

/**
 * Represents performance data for a particular tag in a trained iteration.
 */
export interface TagPerformance {
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
  /**
   * Gets the precision.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly precision?: number;
  /**
   * Gets the standard deviation for the precision.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly precisionStdDeviation?: number;
  /**
   * Gets the recall.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly recall?: number;
  /**
   * Gets the standard deviation for the recall.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly recallStdDeviation?: number;
  /**
   * Gets the average precision when applicable.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly averagePrecision?: number;
}

/**
 * Represents the detailed performance data for a trained iteration.
 */
export interface IterationPerformance {
  /**
   * Gets the per-tag performance details for this iteration.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly perTagPerformance?: TagPerformance[];
  /**
   * Gets the precision.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly precision?: number;
  /**
   * Gets the standard deviation for the precision.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly precisionStdDeviation?: number;
  /**
   * Gets the recall.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly recall?: number;
  /**
   * Gets the standard deviation for the recall.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly recallStdDeviation?: number;
  /**
   * Gets the average precision when applicable.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly averagePrecision?: number;
}

/**
 * An interface representing PredictionQueryTag.
 */
export interface PredictionQueryTag {
  id?: string;
  minThreshold?: number;
  maxThreshold?: number;
}

/**
 * An interface representing PredictionQueryToken.
 */
export interface PredictionQueryToken {
  session?: string;
  continuation?: string;
  maxCount?: number;
  /**
   * Possible values include: 'Newest', 'Oldest', 'Suggested'
   */
  orderBy?: OrderBy;
  tags?: PredictionQueryTag[];
  iterationId?: string;
  startTime?: Date;
  endTime?: Date;
  application?: string;
}

/**
 * Result of an image prediction request.
 */
export interface StoredImagePrediction {
  /**
   * The URI to the (resized) prediction image. If VNET feature is enabled this will be a relative
   * path to be used with GetArtifact, otherwise this will be an absolute URI to the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly resizedImageUri?: string;
  /**
   * The URI to the thumbnail of the original prediction image. If VNET feature is enabled this
   * will be a relative path to be used with GetArtifact, otherwise this will be an absolute URI to
   * the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly thumbnailUri?: string;
  /**
   * The URI to the original prediction image. If VNET feature is enabled this will be a relative
   * path to be used with GetArtifact, otherwise this will be an absolute URI to the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly originalImageUri?: string;
  /**
   * Domain used for the prediction.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly domain?: string;
  /**
   * Prediction Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Project Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly project?: string;
  /**
   * Iteration Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly iteration?: string;
  /**
   * Date this prediction was created.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly created?: Date;
  /**
   * List of predictions.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly predictions?: Prediction[];
}

/**
 * Query result of the prediction images that were sent to your prediction endpoint.
 */
export interface PredictionQueryResult {
  /**
   * Prediction Query Token.
   */
  token?: PredictionQueryToken;
  /**
   * Result of an image prediction request.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly results?: StoredImagePrediction[];
}

/**
 * Represents settings associated with a project.
 */
export interface ProjectSettings {
  /**
   * Gets or sets the id of the Domain to use with this project.
   */
  domainId?: string;
  /**
   * Gets or sets the classification type of the project. Possible values include: 'Multiclass',
   * 'Multilabel'
   */
  classificationType?: Classifier;
  /**
   * A list of ExportPlatform that the trained model should be able to support.
   */
  targetExportPlatforms?: string[];
  /**
   * Indicates if negative set is being used.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly useNegativeSet?: boolean;
  /**
   * Detection parameters in use, if any.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly detectionParameters?: string;
  /**
   * Gets or sets image preprocessing settings.
   */
  imageProcessingSettings?: ImageProcessingSettings;
  /**
   * The uri to the Azure Storage container that will be used to store exported models.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly exportModelContainerUri?: string;
  /**
   * The uri to the Azure Storage queue that will be used to send project-related notifications.
   * See <a href="https://go.microsoft.com/fwlink/?linkid=2144149">Storage notifications</a>
   * documentation for setup and message format.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly notificationQueueUri?: string;
}

/**
 * Represents a project.
 */
export interface Project {
  /**
   * Gets the project id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Gets or sets the name of the project.
   */
  name: string;
  /**
   * Gets or sets the description of the project.
   */
  description: string;
  /**
   * Gets or sets the project settings.
   */
  settings: ProjectSettings;
  /**
   * Gets the date this project was created.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly created?: Date;
  /**
   * Gets the date this project was last modified.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModified?: Date;
  /**
   * Gets the thumbnail url representing the image. If VNET feature is enabled this will be a
   * relative path to be used with GetArtifact, otherwise this will be an absolute URI to the
   * resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly thumbnailUri?: string;
  /**
   * Gets if the Disaster Recovery (DR) mode is on, indicating the project is temporarily
   * read-only.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly drModeEnabled?: boolean;
  /**
   * Gets the status of the project. Possible values include: 'Succeeded', 'Importing', 'Failed'
   */
  status?: ProjectStatus;
}

/**
 * Represents information about a project export.
 */
export interface ProjectExport {
  /**
   * Count of iterations that will be exported.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly iterationCount?: number;
  /**
   * Count of images that will be exported.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly imageCount?: number;
  /**
   * Count of tags that will be exported.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly tagCount?: number;
  /**
   * Count of regions that will be exported.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly regionCount?: number;
  /**
   * Estimated time this project will take to import, can change based on network connectivity and
   * load between
   * source and destination regions.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly estimatedImportTimeInMS?: number;
  /**
   * Opaque token that should be passed to ImportProject to perform the import. This token grants
   * access to import this
   * project to all that have the token.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly token?: string;
}

/**
 * Result of a suggested tags and regions request of the untagged image.
 */
export interface StoredSuggestedTagAndRegion {
  /**
   * Width of the resized image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly width?: number;
  /**
   * Height of the resized image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly height?: number;
  /**
   * The URI to the (resized) prediction image. If VNET feature is enabled this will be a relative
   * path to be used with GetArtifact, otherwise this will be an absolute URI to the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly resizedImageUri?: string;
  /**
   * The URI to the thumbnail of the original prediction image. If VNET feature is enabled this
   * will be a relative path to be used with GetArtifact, otherwise this will be an absolute URI to
   * the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly thumbnailUri?: string;
  /**
   * The URI to the original prediction image. If VNET feature is enabled this will be a relative
   * path to be used with GetArtifact, otherwise this will be an absolute URI to the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly originalImageUri?: string;
  /**
   * Domain used for the prediction.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly domain?: string;
  /**
   * Prediction Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Project Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly project?: string;
  /**
   * Iteration Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly iteration?: string;
  /**
   * Date this prediction was created.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly created?: Date;
  /**
   * List of predictions.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly predictions?: Prediction[];
  /**
   * Uncertainty (entropy) of suggested tags or regions per image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly predictionUncertainty?: number;
}

/**
 * Result of a suggested tags and regions request.
 */
export interface SuggestedTagAndRegion {
  /**
   * Prediction Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Project Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly project?: string;
  /**
   * Iteration Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly iteration?: string;
  /**
   * Date this prediction was created.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly created?: Date;
  /**
   * List of predictions.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly predictions?: Prediction[];
  /**
   * Uncertainty (entropy) of suggested tags or regions per image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly predictionUncertainty?: number;
}

/**
 * Contains properties we need to fetch suggested tags for. For the first call, Session and
 * continuation set to null.
 * Then on subsequent calls, uses the session/continuation from the previous
 * SuggestedTagAndRegionQuery result to fetch additional results.
 */
export interface SuggestedTagAndRegionQueryToken {
  /**
   * Existing TagIds in project to filter suggested tags on.
   */
  tagIds?: string[];
  /**
   * Confidence threshold to filter suggested tags on.
   */
  threshold?: number;
  /**
   * SessionId for database query. Initially set to null but later used to paginate.
   */
  session?: string;
  /**
   * Continuation Id for database pagination. Initially null but later used to paginate.
   */
  continuation?: string;
  /**
   * Maximum number of results you want to be returned in the response.
   */
  maxCount?: number;
  /**
   * OrderBy. Ordering mechanism for your results. Possible values include: 'UncertaintyAscending',
   * 'UncertaintyDescending'
   */
  sortBy?: SortBy;
}

/**
 * The array of result images and token containing session and continuation Ids for the next query.
 */
export interface SuggestedTagAndRegionQuery {
  /**
   * Contains properties we need to fetch suggested tags for.
   */
  token?: SuggestedTagAndRegionQueryToken;
  /**
   * Result of a suggested tags and regions request of the untagged image.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly results?: StoredSuggestedTagAndRegion[];
}

/**
 * Represents a Tag.
 */
export interface Tag {
  /**
   * Gets the Tag ID.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Gets or sets the name of the tag.
   */
  name: string;
  /**
   * Gets or sets the description of the tag.
   */
  description: string;
  /**
   * Gets or sets the type of the tag. Possible values include: 'Regular', 'Negative',
   * 'GeneralProduct'
   */
  type: TagType;
  /**
   * Gets the number of images with this tag.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly imageCount?: number;
}

/**
 * Model that query for counting of images whose suggested tags match given tags and their
 * probability are greater than or equal to the given threshold.
 */
export interface TagFilter {
  /**
   * Existing TagIds in project to get suggested tags count for.
   */
  tagIds?: string[];
  /**
   * Confidence threshold to filter suggested tags on.
   */
  threshold?: number;
}

/**
 * Parameters used for training.
 */
export interface TrainingParameters {
  /**
   * List of tags selected for this training session, other tags in the project will be ignored.
   */
  selectedTags?: string[];
  /**
   * Information of the previously trained iteration which provides the base model for current
   * iteration's training.
   */
  customBaseModelInfo?: CustomBaseModelInfo;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientCreateProjectOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The description of the project.
   */
  description?: string;
  /**
   * The id of the domain to use for this project. Defaults to General.
   */
  domainId?: string;
  /**
   * The type of classifier to create for this project. Possible values include: 'Multiclass',
   * 'Multilabel'
   */
  classificationType?: ClassificationType;
  /**
   * List of platforms the trained model is intending exporting to.
   */
  targetExportPlatforms?: string[];
  /**
   * Additional project creation options.
   */
  options?: CreateProjectOptions;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetImagesOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The iteration id. Defaults to workspace.
   */
  iterationId?: string;
  /**
   * A list of tags ids to filter the images. Defaults to all tagged images when null. Limited to
   * 20.
   */
  tagIds?: string[];
  /**
   * The tagging status filter. It can be 'All', 'Tagged', or 'Untagged'. Defaults to 'All'.
   * Possible values include: 'All', 'Tagged', 'Untagged'
   */
  taggingStatus?: TaggingStatus;
  /**
   * An expression to filter the images against image metadata. Only images where the expression
   * evaluates to true are included in the response.
   * The expression supports eq (Equal), ne (Not equal), and (Logical and), or (Logical or)
   * operators.
   * Here is an example, metadata=key1 eq 'value1' and key2 ne 'value2'.
   */
  filter?: string;
  /**
   * The ordering. Defaults to newest. Possible values include: 'Newest', 'Oldest'
   */
  orderBy?: OrderBy1;
  /**
   * Maximum number of images to return. Defaults to 50, limited to 256. Default value: 50.
   */
  take?: number;
  /**
   * Number of images to skip before beginning the image batch. Defaults to 0. Default value: 0.
   */
  skip?: number;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientCreateImagesFromDataOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The tags ids with which to tag each image. Limited to 20.
   */
  tagIds?: string[];
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientDeleteImagesOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Ids of the images to be deleted. Limited to 256 images per batch.
   */
  imageIds?: string[];
  /**
   * Flag to specify delete all images, specify this flag or a list of images. Using this flag will
   * return a 202 response to indicate the images are being deleted.
   */
  allImages?: boolean;
  /**
   * Removes these images from all iterations, not just the current workspace. Using this flag will
   * return a 202 response to indicate the images are being deleted.
   */
  allIterations?: boolean;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetImageCountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The iteration id. Defaults to workspace.
   */
  iterationId?: string;
  /**
   * The tagging status filter. It can be 'All', 'Tagged', or 'Untagged'. Defaults to 'All'.
   * Possible values include: 'All', 'Tagged', 'Untagged'
   */
  taggingStatus?: TaggingStatus1;
  /**
   * An expression to filter the images against image metadata. Only images where the expression
   * evaluates to true are included in the response.
   * The expression supports eq (Equal), ne (Not equal), and (Logical and), or (Logical or)
   * operators.
   * Here is an example, metadata=key1 eq 'value1' and key2 ne 'value2'.
   */
  filter?: string;
  /**
   * A list of tags ids to filter the images to count. Defaults to all tags when null.
   */
  tagIds?: string[];
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetImagesByIdsOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The list of image ids to retrieve. Limited to 256.
   */
  imageIds?: string[];
  /**
   * The iteration id. Defaults to workspace.
   */
  iterationId?: string;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetTaggedImagesOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The iteration id. Defaults to workspace.
   */
  iterationId?: string;
  /**
   * A list of tags ids to filter the images. Defaults to all tagged images when null. Limited to
   * 20.
   */
  tagIds?: string[];
  /**
   * The ordering. Defaults to newest. Possible values include: 'Newest', 'Oldest'
   */
  orderBy?: OrderBy2;
  /**
   * Maximum number of images to return. Defaults to 50, limited to 256. Default value: 50.
   */
  take?: number;
  /**
   * Number of images to skip before beginning the image batch. Defaults to 0. Default value: 0.
   */
  skip?: number;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetTaggedImageCountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The iteration id. Defaults to workspace.
   */
  iterationId?: string;
  /**
   * A list of tags ids to filter the images to count. Defaults to all tags when null.
   */
  tagIds?: string[];
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetUntaggedImagesOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The iteration id. Defaults to workspace.
   */
  iterationId?: string;
  /**
   * The ordering. Defaults to newest. Possible values include: 'Newest', 'Oldest'
   */
  orderBy?: OrderBy3;
  /**
   * Maximum number of images to return. Defaults to 50, limited to 256. Default value: 50.
   */
  take?: number;
  /**
   * Number of images to skip before beginning the image batch. Defaults to 0. Default value: 0.
   */
  skip?: number;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetUntaggedImageCountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The iteration id. Defaults to workspace.
   */
  iterationId?: string;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientExportIterationOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The flavor of the target platform. Possible values include: 'Linux', 'Windows', 'ONNX10',
   * 'ONNX12', 'ARM', 'TensorFlowNormal', 'TensorFlowLite'
   */
  flavor?: Flavor;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetIterationPerformanceOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The threshold used to determine true predictions.
   */
  threshold?: number;
  /**
   * If applicable, the bounding box overlap threshold used to determine true predictions.
   */
  overlapThreshold?: number;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetImagePerformancesOptionalParams extends msRest.RequestOptionsBase {
  /**
   * A list of tags ids to filter the images. Defaults to all tagged images when null. Limited to
   * 20.
   */
  tagIds?: string[];
  /**
   * The ordering. Defaults to newest. Possible values include: 'Newest', 'Oldest'
   */
  orderBy?: OrderBy4;
  /**
   * Maximum number of images to return. Defaults to 50, limited to 256. Default value: 50.
   */
  take?: number;
  /**
   * Number of images to skip before beginning the image batch. Defaults to 0. Default value: 0.
   */
  skip?: number;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetImagePerformanceCountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * A list of tags ids to filter the images to count. Defaults to all tags when null.
   */
  tagIds?: string[];
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientPublishIterationOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Whether to overwrite the published model with the given name (default: false).
   */
  overwrite?: boolean;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientQuickTestImageOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Optional. Specifies the id of a particular iteration to evaluate against.
   * The default iteration for the project will be used when not specified.
   */
  iterationId?: string;
  /**
   * Optional. Specifies whether or not to store the result of this prediction. The default is
   * true, to store. Default value: true.
   */
  store?: boolean;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientQuickTestImageUrlOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Optional. Specifies the id of a particular iteration to evaluate against.
   * The default iteration for the project will be used when not specified.
   */
  iterationId?: string;
  /**
   * Optional. Specifies whether or not to store the result of this prediction. The default is
   * true, to store. Default value: true.
   */
  store?: boolean;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetTagsOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The iteration id. Defaults to workspace.
   */
  iterationId?: string;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientCreateTagOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Optional description for the tag.
   */
  description?: string;
  /**
   * Optional type for the tag. Possible values include: 'Regular', 'Negative', 'GeneralProduct'
   */
  type?: Type;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientGetTagOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The iteration to retrieve this tag from. Optional, defaults to current training set.
   */
  iterationId?: string;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientTrainProjectOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The type of training to use to train the project (default: Regular). Possible values include:
   * 'Regular', 'Advanced'
   */
  trainingType?: TrainingType1;
  /**
   * The number of hours reserved as budget for training (if applicable). Default value: 0.
   */
  reservedBudgetInHours?: number;
  /**
   * Whether to force train even if dataset and configuration does not change (default: false).
   * Default value: false.
   */
  forceTrain?: boolean;
  /**
   * The email address to send notification to when training finishes (default: null).
   */
  notificationEmailAddress?: string;
  /**
   * Additional training parameters passed in to control how the project is trained.
   */
  trainingParameters?: TrainingParameters;
}

/**
 * Optional Parameters.
 */
export interface TrainingAPIClientImportProjectOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Optional, name of the project to use instead of auto-generated name.
   */
  name?: string;
}

/**
 * Defines values for CustomVisionErrorCodes.
 * Possible values include: 'NoError', 'BadRequest', 'BadRequestExceededBatchSize',
 * 'BadRequestNotSupported', 'BadRequestInvalidIds', 'BadRequestProjectName',
 * 'BadRequestProjectNameNotUnique', 'BadRequestProjectDescription',
 * 'BadRequestProjectUnknownDomain', 'BadRequestProjectUnknownClassification',
 * 'BadRequestProjectUnsupportedDomainTypeChange', 'BadRequestProjectUnsupportedExportPlatform',
 * 'BadRequestProjectImagePreprocessingSettings', 'BadRequestProjectDuplicated',
 * 'BadRequestIterationName', 'BadRequestIterationNameNotUnique', 'BadRequestIterationDescription',
 * 'BadRequestIterationIsNotTrained', 'BadRequestIterationValidationFailed',
 * 'BadRequestWorkspaceCannotBeModified', 'BadRequestWorkspaceNotDeletable', 'BadRequestTagName',
 * 'BadRequestTagNameNotUnique', 'BadRequestTagDescription', 'BadRequestTagType',
 * 'BadRequestMultipleNegativeTag', 'BadRequestMultipleGeneralProductTag', 'BadRequestImageTags',
 * 'BadRequestImageRegions', 'BadRequestNegativeAndRegularTagOnSameImage',
 * 'BadRequestUnsupportedDomain', 'BadRequestRequiredParamIsNull',
 * 'BadRequestIterationIsPublished', 'BadRequestInvalidPublishName',
 * 'BadRequestInvalidPublishTarget', 'BadRequestUnpublishFailed',
 * 'BadRequestIterationNotPublished', 'BadRequestSubscriptionApi', 'BadRequestExceedProjectLimit',
 * 'BadRequestExceedIterationPerProjectLimit', 'BadRequestExceedTagPerProjectLimit',
 * 'BadRequestExceedTagPerImageLimit', 'BadRequestExceededQuota',
 * 'BadRequestCannotMigrateProjectWithName', 'BadRequestNotLimitedTrial', 'BadRequestImageBatch',
 * 'BadRequestImageStream', 'BadRequestImageUrl', 'BadRequestImageFormat',
 * 'BadRequestImageSizeBytes', 'BadRequestImageDimensions', 'BadRequestImageAspectRatio',
 * 'BadRequestImageExceededCount', 'BadRequestTrainingNotNeeded',
 * 'BadRequestTrainingNotNeededButTrainingPipelineUpdated', 'BadRequestTrainingValidationFailed',
 * 'BadRequestClassificationTrainingValidationFailed',
 * 'BadRequestMultiClassClassificationTrainingValidationFailed',
 * 'BadRequestMultiLabelClassificationTrainingValidationFailed',
 * 'BadRequestDetectionTrainingValidationFailed', 'BadRequestTrainingAlreadyInProgress',
 * 'BadRequestDetectionTrainingNotAllowNegativeTag', 'BadRequestInvalidEmailAddress',
 * 'BadRequestRetiredDomainNotSupportedForTraining',
 * 'BadRequestDomainNotSupportedForAdvancedTraining',
 * 'BadRequestExportPlatformNotSupportedForAdvancedTraining',
 * 'BadRequestReservedBudgetInHoursNotEnoughForAdvancedTraining',
 * 'BadRequestCustomBaseModelIterationStatusNotCompleted',
 * 'BadRequestCustomBaseModelDomainNotCompatible', 'BadRequestCustomBaseModelArchitectureRetired',
 * 'BadRequestExportValidationFailed', 'BadRequestExportAlreadyInProgress',
 * 'BadRequestPredictionIdsMissing', 'BadRequestPredictionIdsExceededCount',
 * 'BadRequestPredictionTagsExceededCount', 'BadRequestPredictionResultsExceededCount',
 * 'BadRequestPredictionInvalidApplicationName', 'BadRequestPredictionInvalidQueryParameters',
 * 'BadRequestInvalidImportToken', 'BadRequestExportWhileTraining', 'BadRequestImageMetadataKey',
 * 'BadRequestImageMetadataValue', 'BadRequestOperationNotSupported',
 * 'BadRequestInvalidArtifactUri', 'BadRequestCustomerManagedKeyRevoked', 'BadRequestInvalidUri',
 * 'BadRequestInvalid', 'UnsupportedMediaType', 'Forbidden', 'ForbiddenUser',
 * 'ForbiddenUserResource', 'ForbiddenUserSignupDisabled', 'ForbiddenUserSignupAllowanceExceeded',
 * 'ForbiddenUserDoesNotExist', 'ForbiddenUserDisabled', 'ForbiddenUserInsufficientCapability',
 * 'ForbiddenDRModeEnabled', 'ForbiddenInvalid', 'NotFound', 'NotFoundProject',
 * 'NotFoundProjectDefaultIteration', 'NotFoundIteration', 'NotFoundIterationPerformance',
 * 'NotFoundTag', 'NotFoundImage', 'NotFoundDomain', 'NotFoundApimSubscription', 'NotFoundInvalid',
 * 'Conflict', 'ConflictInvalid', 'ErrorUnknown', 'ErrorIterationCopyFailed',
 * 'ErrorPreparePerformanceMigrationFailed', 'ErrorProjectInvalidWorkspace',
 * 'ErrorProjectInvalidPipelineConfiguration', 'ErrorProjectInvalidDomain',
 * 'ErrorProjectTrainingRequestFailed', 'ErrorProjectImportRequestFailed',
 * 'ErrorProjectExportRequestFailed', 'ErrorFeaturizationServiceUnavailable',
 * 'ErrorFeaturizationQueueTimeout', 'ErrorFeaturizationInvalidFeaturizer',
 * 'ErrorFeaturizationAugmentationUnavailable', 'ErrorFeaturizationUnrecognizedJob',
 * 'ErrorFeaturizationAugmentationError', 'ErrorExporterInvalidPlatform',
 * 'ErrorExporterInvalidFeaturizer', 'ErrorExporterInvalidClassifier',
 * 'ErrorPredictionServiceUnavailable', 'ErrorPredictionModelNotFound',
 * 'ErrorPredictionModelNotCached', 'ErrorPrediction', 'ErrorPredictionStorage',
 * 'ErrorRegionProposal', 'ErrorUnknownBaseModel', 'ErrorServerTimeOut', 'ErrorInvalid'
 * @readonly
 * @enum {string}
 */
export type CustomVisionErrorCodes = 'NoError' | 'BadRequest' | 'BadRequestExceededBatchSize' | 'BadRequestNotSupported' | 'BadRequestInvalidIds' | 'BadRequestProjectName' | 'BadRequestProjectNameNotUnique' | 'BadRequestProjectDescription' | 'BadRequestProjectUnknownDomain' | 'BadRequestProjectUnknownClassification' | 'BadRequestProjectUnsupportedDomainTypeChange' | 'BadRequestProjectUnsupportedExportPlatform' | 'BadRequestProjectImagePreprocessingSettings' | 'BadRequestProjectDuplicated' | 'BadRequestIterationName' | 'BadRequestIterationNameNotUnique' | 'BadRequestIterationDescription' | 'BadRequestIterationIsNotTrained' | 'BadRequestIterationValidationFailed' | 'BadRequestWorkspaceCannotBeModified' | 'BadRequestWorkspaceNotDeletable' | 'BadRequestTagName' | 'BadRequestTagNameNotUnique' | 'BadRequestTagDescription' | 'BadRequestTagType' | 'BadRequestMultipleNegativeTag' | 'BadRequestMultipleGeneralProductTag' | 'BadRequestImageTags' | 'BadRequestImageRegions' | 'BadRequestNegativeAndRegularTagOnSameImage' | 'BadRequestUnsupportedDomain' | 'BadRequestRequiredParamIsNull' | 'BadRequestIterationIsPublished' | 'BadRequestInvalidPublishName' | 'BadRequestInvalidPublishTarget' | 'BadRequestUnpublishFailed' | 'BadRequestIterationNotPublished' | 'BadRequestSubscriptionApi' | 'BadRequestExceedProjectLimit' | 'BadRequestExceedIterationPerProjectLimit' | 'BadRequestExceedTagPerProjectLimit' | 'BadRequestExceedTagPerImageLimit' | 'BadRequestExceededQuota' | 'BadRequestCannotMigrateProjectWithName' | 'BadRequestNotLimitedTrial' | 'BadRequestImageBatch' | 'BadRequestImageStream' | 'BadRequestImageUrl' | 'BadRequestImageFormat' | 'BadRequestImageSizeBytes' | 'BadRequestImageDimensions' | 'BadRequestImageAspectRatio' | 'BadRequestImageExceededCount' | 'BadRequestTrainingNotNeeded' | 'BadRequestTrainingNotNeededButTrainingPipelineUpdated' | 'BadRequestTrainingValidationFailed' | 'BadRequestClassificationTrainingValidationFailed' | 'BadRequestMultiClassClassificationTrainingValidationFailed' | 'BadRequestMultiLabelClassificationTrainingValidationFailed' | 'BadRequestDetectionTrainingValidationFailed' | 'BadRequestTrainingAlreadyInProgress' | 'BadRequestDetectionTrainingNotAllowNegativeTag' | 'BadRequestInvalidEmailAddress' | 'BadRequestRetiredDomainNotSupportedForTraining' | 'BadRequestDomainNotSupportedForAdvancedTraining' | 'BadRequestExportPlatformNotSupportedForAdvancedTraining' | 'BadRequestReservedBudgetInHoursNotEnoughForAdvancedTraining' | 'BadRequestCustomBaseModelIterationStatusNotCompleted' | 'BadRequestCustomBaseModelDomainNotCompatible' | 'BadRequestCustomBaseModelArchitectureRetired' | 'BadRequestExportValidationFailed' | 'BadRequestExportAlreadyInProgress' | 'BadRequestPredictionIdsMissing' | 'BadRequestPredictionIdsExceededCount' | 'BadRequestPredictionTagsExceededCount' | 'BadRequestPredictionResultsExceededCount' | 'BadRequestPredictionInvalidApplicationName' | 'BadRequestPredictionInvalidQueryParameters' | 'BadRequestInvalidImportToken' | 'BadRequestExportWhileTraining' | 'BadRequestImageMetadataKey' | 'BadRequestImageMetadataValue' | 'BadRequestOperationNotSupported' | 'BadRequestInvalidArtifactUri' | 'BadRequestCustomerManagedKeyRevoked' | 'BadRequestInvalidUri' | 'BadRequestInvalid' | 'UnsupportedMediaType' | 'Forbidden' | 'ForbiddenUser' | 'ForbiddenUserResource' | 'ForbiddenUserSignupDisabled' | 'ForbiddenUserSignupAllowanceExceeded' | 'ForbiddenUserDoesNotExist' | 'ForbiddenUserDisabled' | 'ForbiddenUserInsufficientCapability' | 'ForbiddenDRModeEnabled' | 'ForbiddenInvalid' | 'NotFound' | 'NotFoundProject' | 'NotFoundProjectDefaultIteration' | 'NotFoundIteration' | 'NotFoundIterationPerformance' | 'NotFoundTag' | 'NotFoundImage' | 'NotFoundDomain' | 'NotFoundApimSubscription' | 'NotFoundInvalid' | 'Conflict' | 'ConflictInvalid' | 'ErrorUnknown' | 'ErrorIterationCopyFailed' | 'ErrorPreparePerformanceMigrationFailed' | 'ErrorProjectInvalidWorkspace' | 'ErrorProjectInvalidPipelineConfiguration' | 'ErrorProjectInvalidDomain' | 'ErrorProjectTrainingRequestFailed' | 'ErrorProjectImportRequestFailed' | 'ErrorProjectExportRequestFailed' | 'ErrorFeaturizationServiceUnavailable' | 'ErrorFeaturizationQueueTimeout' | 'ErrorFeaturizationInvalidFeaturizer' | 'ErrorFeaturizationAugmentationUnavailable' | 'ErrorFeaturizationUnrecognizedJob' | 'ErrorFeaturizationAugmentationError' | 'ErrorExporterInvalidPlatform' | 'ErrorExporterInvalidFeaturizer' | 'ErrorExporterInvalidClassifier' | 'ErrorPredictionServiceUnavailable' | 'ErrorPredictionModelNotFound' | 'ErrorPredictionModelNotCached' | 'ErrorPrediction' | 'ErrorPredictionStorage' | 'ErrorRegionProposal' | 'ErrorUnknownBaseModel' | 'ErrorServerTimeOut' | 'ErrorInvalid';

/**
 * Defines values for DomainType.
 * Possible values include: 'Classification', 'ObjectDetection'
 * @readonly
 * @enum {string}
 */
export type DomainType = 'Classification' | 'ObjectDetection';

/**
 * Defines values for ExportPlatform.
 * Possible values include: 'CoreML', 'TensorFlow', 'DockerFile', 'ONNX', 'VAIDK', 'OpenVino'
 * @readonly
 * @enum {string}
 */
export type ExportPlatform = 'CoreML' | 'TensorFlow' | 'DockerFile' | 'ONNX' | 'VAIDK' | 'OpenVino';

/**
 * Defines values for ExportStatus.
 * Possible values include: 'Exporting', 'Failed', 'Done'
 * @readonly
 * @enum {string}
 */
export type ExportStatus = 'Exporting' | 'Failed' | 'Done';

/**
 * Defines values for ExportFlavor.
 * Possible values include: 'Linux', 'Windows', 'ONNX10', 'ONNX12', 'ARM', 'TensorFlowNormal',
 * 'TensorFlowLite'
 * @readonly
 * @enum {string}
 */
export type ExportFlavor = 'Linux' | 'Windows' | 'ONNX10' | 'ONNX12' | 'ARM' | 'TensorFlowNormal' | 'TensorFlowLite';

/**
 * Defines values for ImageCreateStatus.
 * Possible values include: 'OK', 'OKDuplicate', 'ErrorSource', 'ErrorImageFormat',
 * 'ErrorImageSize', 'ErrorStorage', 'ErrorLimitExceed', 'ErrorTagLimitExceed',
 * 'ErrorRegionLimitExceed', 'ErrorUnknown', 'ErrorNegativeAndRegularTagOnSameImage',
 * 'ErrorImageDimensions', 'ErrorInvalidTag'
 * @readonly
 * @enum {string}
 */
export type ImageCreateStatus = 'OK' | 'OKDuplicate' | 'ErrorSource' | 'ErrorImageFormat' | 'ErrorImageSize' | 'ErrorStorage' | 'ErrorLimitExceed' | 'ErrorTagLimitExceed' | 'ErrorRegionLimitExceed' | 'ErrorUnknown' | 'ErrorNegativeAndRegularTagOnSameImage' | 'ErrorImageDimensions' | 'ErrorInvalidTag';

/**
 * Defines values for ImageMetadataUpdateStatus.
 * Possible values include: 'OK', 'ErrorImageNotFound', 'ErrorLimitExceed', 'ErrorUnknown'
 * @readonly
 * @enum {string}
 */
export type ImageMetadataUpdateStatus = 'OK' | 'ErrorImageNotFound' | 'ErrorLimitExceed' | 'ErrorUnknown';

/**
 * Defines values for TagType.
 * Possible values include: 'Regular', 'Negative', 'GeneralProduct'
 * @readonly
 * @enum {string}
 */
export type TagType = 'Regular' | 'Negative' | 'GeneralProduct';

/**
 * Defines values for Classifier.
 * Possible values include: 'Multiclass', 'Multilabel'
 * @readonly
 * @enum {string}
 */
export type Classifier = 'Multiclass' | 'Multilabel';

/**
 * Defines values for TrainingType.
 * Possible values include: 'Regular', 'Advanced'
 * @readonly
 * @enum {string}
 */
export type TrainingType = 'Regular' | 'Advanced';

/**
 * Defines values for OrderBy.
 * Possible values include: 'Newest', 'Oldest', 'Suggested'
 * @readonly
 * @enum {string}
 */
export type OrderBy = 'Newest' | 'Oldest' | 'Suggested';

/**
 * Defines values for ProjectStatus.
 * Possible values include: 'Succeeded', 'Importing', 'Failed'
 * @readonly
 * @enum {string}
 */
export type ProjectStatus = 'Succeeded' | 'Importing' | 'Failed';

/**
 * Defines values for SortBy.
 * Possible values include: 'UncertaintyAscending', 'UncertaintyDescending'
 * @readonly
 * @enum {string}
 */
export type SortBy = 'UncertaintyAscending' | 'UncertaintyDescending';

/**
 * Defines values for ClassificationType.
 * Possible values include: 'Multiclass', 'Multilabel'
 * @readonly
 * @enum {string}
 */
export type ClassificationType = 'Multiclass' | 'Multilabel';

/**
 * Defines values for TaggingStatus.
 * Possible values include: 'All', 'Tagged', 'Untagged'
 * @readonly
 * @enum {string}
 */
export type TaggingStatus = 'All' | 'Tagged' | 'Untagged';

/**
 * Defines values for OrderBy1.
 * Possible values include: 'Newest', 'Oldest'
 * @readonly
 * @enum {string}
 */
export type OrderBy1 = 'Newest' | 'Oldest';

/**
 * Defines values for TaggingStatus1.
 * Possible values include: 'All', 'Tagged', 'Untagged'
 * @readonly
 * @enum {string}
 */
export type TaggingStatus1 = 'All' | 'Tagged' | 'Untagged';

/**
 * Defines values for OrderBy2.
 * Possible values include: 'Newest', 'Oldest'
 * @readonly
 * @enum {string}
 */
export type OrderBy2 = 'Newest' | 'Oldest';

/**
 * Defines values for OrderBy3.
 * Possible values include: 'Newest', 'Oldest'
 * @readonly
 * @enum {string}
 */
export type OrderBy3 = 'Newest' | 'Oldest';

/**
 * Defines values for Flavor.
 * Possible values include: 'Linux', 'Windows', 'ONNX10', 'ONNX12', 'ARM', 'TensorFlowNormal',
 * 'TensorFlowLite'
 * @readonly
 * @enum {string}
 */
export type Flavor = 'Linux' | 'Windows' | 'ONNX10' | 'ONNX12' | 'ARM' | 'TensorFlowNormal' | 'TensorFlowLite';

/**
 * Defines values for OrderBy4.
 * Possible values include: 'Newest', 'Oldest'
 * @readonly
 * @enum {string}
 */
export type OrderBy4 = 'Newest' | 'Oldest';

/**
 * Defines values for Type.
 * Possible values include: 'Regular', 'Negative', 'GeneralProduct'
 * @readonly
 * @enum {string}
 */
export type Type = 'Regular' | 'Negative' | 'GeneralProduct';

/**
 * Defines values for TrainingType1.
 * Possible values include: 'Regular', 'Advanced'
 * @readonly
 * @enum {string}
 */
export type TrainingType1 = 'Regular' | 'Advanced';

/**
 * Defines values for Platform.
 * Possible values include: 'CoreML', 'TensorFlow', 'DockerFile', 'ONNX', 'VAIDK', 'OpenVino'
 * @readonly
 * @enum {string}
 */
export type Platform = 'CoreML' | 'TensorFlow' | 'DockerFile' | 'ONNX' | 'VAIDK' | 'OpenVino';

/**
 * Contains response data for the getDomains operation.
 */
export type GetDomainsResponse = Array<Domain> & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Domain[];
    };
};

/**
 * Contains response data for the getDomain operation.
 */
export type GetDomainResponse = Domain & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Domain;
    };
};

/**
 * Contains response data for the getProjects operation.
 */
export type GetProjectsResponse = Array<Project> & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Project[];
    };
};

/**
 * Contains response data for the createProject operation.
 */
export type CreateProjectResponse = Project & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Project;
    };
};

/**
 * Contains response data for the getProject operation.
 */
export type GetProjectResponse = Project & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Project;
    };
};

/**
 * Contains response data for the updateProject operation.
 */
export type UpdateProjectResponse = Project & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Project;
    };
};

/**
 * Contains response data for the getArtifact operation.
 */
export type GetArtifactResponse = {
  /**
   * BROWSER ONLY
   *
   * The response body as a browser Blob.
   * Always undefined in node.js.
   */
  blobBody?: Promise<Blob>;

  /**
   * NODEJS ONLY
   *
   * The response body as a node.js Readable stream.
   * Always undefined in the browser.
   */
  readableStreamBody?: NodeJS.ReadableStream;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse;
};

/**
 * Contains response data for the exportProject operation.
 */
export type ExportProjectResponse = ProjectExport & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ProjectExport;
    };
};

/**
 * Contains response data for the getImages operation.
 */
export type GetImagesResponse = Array<Image> & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Image[];
    };
};

/**
 * Contains response data for the createImagesFromData operation.
 */
export type CreateImagesFromDataResponse = ImageCreateSummary & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ImageCreateSummary;
    };
};

/**
 * Contains response data for the getImageRegionProposals operation.
 */
export type GetImageRegionProposalsResponse = ImageRegionProposal & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ImageRegionProposal;
    };
};

/**
 * Contains response data for the getImageCount operation.
 */
export type GetImageCountResponse = {
  /**
   * The parsed response body.
   */
  body: number;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: number;
    };
};

/**
 * Contains response data for the createImagesFromFiles operation.
 */
export type CreateImagesFromFilesResponse = ImageCreateSummary & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ImageCreateSummary;
    };
};

/**
 * Contains response data for the getImagesByIds operation.
 */
export type GetImagesByIdsResponse = Array<Image> & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Image[];
    };
};

/**
 * Contains response data for the updateImageMetadata operation.
 */
export type UpdateImageMetadataResponse = ImageMetadataUpdateSummary & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ImageMetadataUpdateSummary;
    };
};

/**
 * Contains response data for the createImagesFromPredictions operation.
 */
export type CreateImagesFromPredictionsResponse = ImageCreateSummary & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ImageCreateSummary;
    };
};

/**
 * Contains response data for the createImageRegions operation.
 */
export type CreateImageRegionsResponse = ImageRegionCreateSummary & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ImageRegionCreateSummary;
    };
};

/**
 * Contains response data for the querySuggestedImages operation.
 */
export type QuerySuggestedImagesResponse = SuggestedTagAndRegionQuery & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SuggestedTagAndRegionQuery;
    };
};

/**
 * Contains response data for the querySuggestedImageCount operation.
 */
export type QuerySuggestedImageCountResponse = {
  /**
   * The response body properties.
   */
  [propertyName: string]: number;
} & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: { [propertyName: string]: number };
    };
};

/**
 * Contains response data for the getTaggedImages operation.
 */
export type GetTaggedImagesResponse = Array<Image> & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Image[];
    };
};

/**
 * Contains response data for the getTaggedImageCount operation.
 */
export type GetTaggedImageCountResponse = {
  /**
   * The parsed response body.
   */
  body: number;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: number;
    };
};

/**
 * Contains response data for the createImageTags operation.
 */
export type CreateImageTagsResponse = ImageTagCreateSummary & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ImageTagCreateSummary;
    };
};

/**
 * Contains response data for the getUntaggedImages operation.
 */
export type GetUntaggedImagesResponse = Array<Image> & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Image[];
    };
};

/**
 * Contains response data for the getUntaggedImageCount operation.
 */
export type GetUntaggedImageCountResponse = {
  /**
   * The parsed response body.
   */
  body: number;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: number;
    };
};

/**
 * Contains response data for the createImagesFromUrls operation.
 */
export type CreateImagesFromUrlsResponse = ImageCreateSummary & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ImageCreateSummary;
    };
};

/**
 * Contains response data for the getIterations operation.
 */
export type GetIterationsResponse = Array<Iteration> & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Iteration[];
    };
};

/**
 * Contains response data for the getIteration operation.
 */
export type GetIterationResponse = Iteration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Iteration;
    };
};

/**
 * Contains response data for the updateIteration operation.
 */
export type UpdateIterationResponse = Iteration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Iteration;
    };
};

/**
 * Contains response data for the getExports operation.
 */
export type GetExportsResponse = Array<ExportModel> & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ExportModel[];
    };
};

/**
 * Contains response data for the exportIteration operation.
 */
export type ExportIterationResponse = ExportModel & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ExportModel;
    };
};

/**
 * Contains response data for the getIterationPerformance operation.
 */
export type GetIterationPerformanceResponse = IterationPerformance & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: IterationPerformance;
    };
};

/**
 * Contains response data for the getImagePerformances operation.
 */
export type GetImagePerformancesResponse = Array<ImagePerformance> & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ImagePerformance[];
    };
};

/**
 * Contains response data for the getImagePerformanceCount operation.
 */
export type GetImagePerformanceCountResponse = {
  /**
   * The parsed response body.
   */
  body: number;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: number;
    };
};

/**
 * Contains response data for the publishIteration operation.
 */
export type PublishIterationResponse = {
  /**
   * The parsed response body.
   */
  body: boolean;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: boolean;
    };
};

/**
 * Contains response data for the queryPredictions operation.
 */
export type QueryPredictionsResponse = PredictionQueryResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: PredictionQueryResult;
    };
};

/**
 * Contains response data for the quickTestImage operation.
 */
export type QuickTestImageResponse = ImagePrediction & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ImagePrediction;
    };
};

/**
 * Contains response data for the quickTestImageUrl operation.
 */
export type QuickTestImageUrlResponse = ImagePrediction & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ImagePrediction;
    };
};

/**
 * Contains response data for the getTags operation.
 */
export type GetTagsResponse = Array<Tag> & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Tag[];
    };
};

/**
 * Contains response data for the createTag operation.
 */
export type CreateTagResponse = Tag & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Tag;
    };
};

/**
 * Contains response data for the getTag operation.
 */
export type GetTagResponse = Tag & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Tag;
    };
};

/**
 * Contains response data for the updateTag operation.
 */
export type UpdateTagResponse = Tag & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Tag;
    };
};

/**
 * Contains response data for the suggestTagsAndRegions operation.
 */
export type SuggestTagsAndRegionsResponse = Array<SuggestedTagAndRegion> & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SuggestedTagAndRegion[];
    };
};

/**
 * Contains response data for the trainProject operation.
 */
export type TrainProjectResponse = Iteration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Iteration;
    };
};

/**
 * Contains response data for the importProject operation.
 */
export type ImportProjectResponse = Project & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Project;
    };
};
