/*
 * 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";


export const BoundingBox: msRest.CompositeMapper = {
  serializedName: "BoundingBox",
  type: {
    name: "Composite",
    className: "BoundingBox",
    modelProperties: {
      left: {
        required: true,
        nullable: false,
        serializedName: "left",
        type: {
          name: "Number"
        }
      },
      top: {
        required: true,
        nullable: false,
        serializedName: "top",
        type: {
          name: "Number"
        }
      },
      width: {
        required: true,
        nullable: false,
        serializedName: "width",
        type: {
          name: "Number"
        }
      },
      height: {
        required: true,
        nullable: false,
        serializedName: "height",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const CreateProjectOptions: msRest.CompositeMapper = {
  serializedName: "CreateProjectOptions",
  type: {
    name: "Composite",
    className: "CreateProjectOptions",
    modelProperties: {
      exportModelContainerUri: {
        nullable: false,
        serializedName: "exportModelContainerUri",
        type: {
          name: "String"
        }
      },
      notificationQueueUri: {
        nullable: false,
        serializedName: "notificationQueueUri",
        type: {
          name: "String"
        }
      }
    }
  }
};

export const CustomBaseModelInfo: msRest.CompositeMapper = {
  serializedName: "CustomBaseModelInfo",
  type: {
    name: "Composite",
    className: "CustomBaseModelInfo",
    modelProperties: {
      projectId: {
        required: true,
        nullable: false,
        serializedName: "projectId",
        type: {
          name: "Uuid"
        }
      },
      iterationId: {
        required: true,
        nullable: false,
        serializedName: "iterationId",
        type: {
          name: "Uuid"
        }
      }
    }
  }
};

export const CustomVisionError: msRest.CompositeMapper = {
  serializedName: "CustomVisionError",
  type: {
    name: "Composite",
    className: "CustomVisionError",
    modelProperties: {
      code: {
        required: true,
        serializedName: "code",
        type: {
          name: "String"
        }
      },
      message: {
        required: true,
        serializedName: "message",
        type: {
          name: "String"
        }
      }
    }
  }
};

export const ModelInformation: msRest.CompositeMapper = {
  serializedName: "ModelInformation",
  type: {
    name: "Composite",
    className: "ModelInformation",
    modelProperties: {
      estimatedModelSizeInMegabytes: {
        serializedName: "estimatedModelSizeInMegabytes",
        type: {
          name: "Number"
        }
      },
      description: {
        required: true,
        nullable: false,
        serializedName: "description",
        type: {
          name: "String"
        }
      }
    }
  }
};

export const Domain: msRest.CompositeMapper = {
  serializedName: "Domain",
  type: {
    name: "Composite",
    className: "Domain",
    modelProperties: {
      id: {
        nullable: false,
        readOnly: true,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      name: {
        nullable: false,
        readOnly: true,
        serializedName: "name",
        type: {
          name: "String"
        }
      },
      type: {
        nullable: false,
        readOnly: true,
        serializedName: "type",
        type: {
          name: "String"
        }
      },
      exportable: {
        nullable: false,
        readOnly: true,
        serializedName: "exportable",
        type: {
          name: "Boolean"
        }
      },
      enabled: {
        nullable: false,
        readOnly: true,
        serializedName: "enabled",
        type: {
          name: "Boolean"
        }
      },
      exportablePlatforms: {
        readOnly: true,
        serializedName: "exportablePlatforms",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "String"
            }
          }
        }
      },
      modelInformation: {
        readOnly: true,
        serializedName: "modelInformation",
        type: {
          name: "Composite",
          className: "ModelInformation"
        }
      }
    }
  }
};

export const ExportModel: msRest.CompositeMapper = {
  serializedName: "Export",
  type: {
    name: "Composite",
    className: "ExportModel",
    modelProperties: {
      platform: {
        nullable: false,
        readOnly: true,
        serializedName: "platform",
        type: {
          name: "String"
        }
      },
      status: {
        nullable: false,
        readOnly: true,
        serializedName: "status",
        type: {
          name: "String"
        }
      },
      downloadUri: {
        readOnly: true,
        serializedName: "downloadUri",
        type: {
          name: "String"
        }
      },
      flavor: {
        nullable: true,
        readOnly: true,
        serializedName: "flavor",
        type: {
          name: "String"
        }
      },
      newerVersionAvailable: {
        nullable: false,
        readOnly: true,
        serializedName: "newerVersionAvailable",
        type: {
          name: "Boolean"
        }
      }
    }
  }
};

export const ImageTag: msRest.CompositeMapper = {
  serializedName: "ImageTag",
  type: {
    name: "Composite",
    className: "ImageTag",
    modelProperties: {
      tagId: {
        nullable: false,
        readOnly: true,
        serializedName: "tagId",
        type: {
          name: "Uuid"
        }
      },
      tagName: {
        nullable: false,
        readOnly: true,
        serializedName: "tagName",
        type: {
          name: "String"
        }
      },
      created: {
        nullable: false,
        readOnly: true,
        serializedName: "created",
        type: {
          name: "DateTime"
        }
      }
    }
  }
};

export const ImageRegion: msRest.CompositeMapper = {
  serializedName: "ImageRegion",
  type: {
    name: "Composite",
    className: "ImageRegion",
    modelProperties: {
      regionId: {
        nullable: false,
        readOnly: true,
        serializedName: "regionId",
        type: {
          name: "Uuid"
        }
      },
      tagName: {
        nullable: false,
        readOnly: true,
        serializedName: "tagName",
        type: {
          name: "String"
        }
      },
      created: {
        nullable: false,
        readOnly: true,
        serializedName: "created",
        type: {
          name: "DateTime"
        }
      },
      tagId: {
        required: true,
        nullable: false,
        serializedName: "tagId",
        type: {
          name: "Uuid"
        }
      },
      left: {
        required: true,
        nullable: false,
        serializedName: "left",
        type: {
          name: "Number"
        }
      },
      top: {
        required: true,
        nullable: false,
        serializedName: "top",
        type: {
          name: "Number"
        }
      },
      width: {
        required: true,
        nullable: false,
        serializedName: "width",
        type: {
          name: "Number"
        }
      },
      height: {
        required: true,
        nullable: false,
        serializedName: "height",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const Image: msRest.CompositeMapper = {
  serializedName: "Image",
  type: {
    name: "Composite",
    className: "Image",
    modelProperties: {
      id: {
        nullable: false,
        readOnly: true,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      created: {
        nullable: false,
        readOnly: true,
        serializedName: "created",
        type: {
          name: "DateTime"
        }
      },
      width: {
        nullable: false,
        readOnly: true,
        serializedName: "width",
        type: {
          name: "Number"
        }
      },
      height: {
        nullable: false,
        readOnly: true,
        serializedName: "height",
        type: {
          name: "Number"
        }
      },
      resizedImageUri: {
        readOnly: true,
        serializedName: "resizedImageUri",
        type: {
          name: "String"
        }
      },
      thumbnailUri: {
        readOnly: true,
        serializedName: "thumbnailUri",
        type: {
          name: "String"
        }
      },
      originalImageUri: {
        readOnly: true,
        serializedName: "originalImageUri",
        type: {
          name: "String"
        }
      },
      tags: {
        nullable: true,
        readOnly: true,
        serializedName: "tags",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageTag"
            }
          }
        }
      },
      regions: {
        nullable: true,
        readOnly: true,
        serializedName: "regions",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageRegion"
            }
          }
        }
      },
      metadata: {
        nullable: true,
        readOnly: true,
        serializedName: "metadata",
        type: {
          name: "Dictionary",
          value: {
            type: {
              name: "String"
            }
          }
        }
      }
    }
  }
};

export const ImageCreateResult: msRest.CompositeMapper = {
  serializedName: "ImageCreateResult",
  type: {
    name: "Composite",
    className: "ImageCreateResult",
    modelProperties: {
      sourceUrl: {
        nullable: false,
        readOnly: true,
        serializedName: "sourceUrl",
        type: {
          name: "String"
        }
      },
      status: {
        nullable: false,
        readOnly: true,
        serializedName: "status",
        type: {
          name: "String"
        }
      },
      image: {
        readOnly: true,
        serializedName: "image",
        type: {
          name: "Composite",
          className: "Image"
        }
      }
    }
  }
};

export const ImageCreateSummary: msRest.CompositeMapper = {
  serializedName: "ImageCreateSummary",
  type: {
    name: "Composite",
    className: "ImageCreateSummary",
    modelProperties: {
      isBatchSuccessful: {
        nullable: false,
        readOnly: true,
        serializedName: "isBatchSuccessful",
        type: {
          name: "Boolean"
        }
      },
      images: {
        readOnly: true,
        serializedName: "images",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageCreateResult"
            }
          }
        }
      }
    }
  }
};

export const Region: msRest.CompositeMapper = {
  serializedName: "Region",
  type: {
    name: "Composite",
    className: "Region",
    modelProperties: {
      tagId: {
        required: true,
        nullable: false,
        serializedName: "tagId",
        type: {
          name: "Uuid"
        }
      },
      left: {
        required: true,
        nullable: false,
        serializedName: "left",
        type: {
          name: "Number"
        }
      },
      top: {
        required: true,
        nullable: false,
        serializedName: "top",
        type: {
          name: "Number"
        }
      },
      width: {
        required: true,
        nullable: false,
        serializedName: "width",
        type: {
          name: "Number"
        }
      },
      height: {
        required: true,
        nullable: false,
        serializedName: "height",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const ImageFileCreateEntry: msRest.CompositeMapper = {
  serializedName: "ImageFileCreateEntry",
  type: {
    name: "Composite",
    className: "ImageFileCreateEntry",
    modelProperties: {
      name: {
        nullable: false,
        serializedName: "name",
        type: {
          name: "String"
        }
      },
      contents: {
        serializedName: "contents",
        type: {
          name: "ByteArray"
        }
      },
      tagIds: {
        serializedName: "tagIds",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Uuid"
            }
          }
        }
      },
      regions: {
        serializedName: "regions",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "Region"
            }
          }
        }
      }
    }
  }
};

export const ImageFileCreateBatch: msRest.CompositeMapper = {
  serializedName: "ImageFileCreateBatch",
  type: {
    name: "Composite",
    className: "ImageFileCreateBatch",
    modelProperties: {
      images: {
        serializedName: "images",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageFileCreateEntry"
            }
          }
        }
      },
      tagIds: {
        serializedName: "tagIds",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Uuid"
            }
          }
        }
      },
      metadata: {
        nullable: true,
        serializedName: "metadata",
        type: {
          name: "Dictionary",
          value: {
            type: {
              name: "String"
            }
          }
        }
      }
    }
  }
};

export const ImageIdCreateEntry: msRest.CompositeMapper = {
  serializedName: "ImageIdCreateEntry",
  type: {
    name: "Composite",
    className: "ImageIdCreateEntry",
    modelProperties: {
      id: {
        nullable: false,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      tagIds: {
        serializedName: "tagIds",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Uuid"
            }
          }
        }
      },
      regions: {
        serializedName: "regions",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "Region"
            }
          }
        }
      }
    }
  }
};

export const ImageIdCreateBatch: msRest.CompositeMapper = {
  serializedName: "ImageIdCreateBatch",
  type: {
    name: "Composite",
    className: "ImageIdCreateBatch",
    modelProperties: {
      images: {
        serializedName: "images",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageIdCreateEntry"
            }
          }
        }
      },
      tagIds: {
        serializedName: "tagIds",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Uuid"
            }
          }
        }
      },
      metadata: {
        nullable: true,
        serializedName: "metadata",
        type: {
          name: "Dictionary",
          value: {
            type: {
              name: "String"
            }
          }
        }
      }
    }
  }
};

export const ImageMetadataUpdateEntry: msRest.CompositeMapper = {
  serializedName: "ImageMetadataUpdateEntry",
  type: {
    name: "Composite",
    className: "ImageMetadataUpdateEntry",
    modelProperties: {
      imageId: {
        nullable: false,
        serializedName: "imageId",
        type: {
          name: "Uuid"
        }
      },
      status: {
        nullable: false,
        serializedName: "status",
        type: {
          name: "String"
        }
      },
      metadata: {
        nullable: true,
        serializedName: "metadata",
        type: {
          name: "Dictionary",
          value: {
            type: {
              name: "String"
            }
          }
        }
      }
    }
  }
};

export const ImageMetadataUpdateSummary: msRest.CompositeMapper = {
  serializedName: "ImageMetadataUpdateSummary",
  type: {
    name: "Composite",
    className: "ImageMetadataUpdateSummary",
    modelProperties: {
      isBatchSuccessful: {
        nullable: false,
        readOnly: true,
        serializedName: "isBatchSuccessful",
        type: {
          name: "Boolean"
        }
      },
      images: {
        readOnly: true,
        serializedName: "images",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageMetadataUpdateEntry"
            }
          }
        }
      }
    }
  }
};

export const Prediction: msRest.CompositeMapper = {
  serializedName: "Prediction",
  type: {
    name: "Composite",
    className: "Prediction",
    modelProperties: {
      probability: {
        nullable: false,
        readOnly: true,
        serializedName: "probability",
        type: {
          name: "Number"
        }
      },
      tagId: {
        nullable: false,
        readOnly: true,
        serializedName: "tagId",
        type: {
          name: "Uuid"
        }
      },
      tagName: {
        nullable: true,
        readOnly: true,
        serializedName: "tagName",
        type: {
          name: "String"
        }
      },
      boundingBox: {
        nullable: true,
        readOnly: true,
        serializedName: "boundingBox",
        type: {
          name: "Composite",
          className: "BoundingBox"
        }
      },
      tagType: {
        nullable: true,
        readOnly: true,
        serializedName: "tagType",
        type: {
          name: "String"
        }
      }
    }
  }
};

export const ImagePerformance: msRest.CompositeMapper = {
  serializedName: "ImagePerformance",
  type: {
    name: "Composite",
    className: "ImagePerformance",
    modelProperties: {
      predictions: {
        nullable: true,
        readOnly: true,
        serializedName: "predictions",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "Prediction"
            }
          }
        }
      },
      id: {
        nullable: false,
        readOnly: true,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      created: {
        nullable: false,
        readOnly: true,
        serializedName: "created",
        type: {
          name: "DateTime"
        }
      },
      width: {
        nullable: false,
        readOnly: true,
        serializedName: "width",
        type: {
          name: "Number"
        }
      },
      height: {
        nullable: false,
        readOnly: true,
        serializedName: "height",
        type: {
          name: "Number"
        }
      },
      imageUri: {
        readOnly: true,
        serializedName: "imageUri",
        type: {
          name: "String"
        }
      },
      thumbnailUri: {
        readOnly: true,
        serializedName: "thumbnailUri",
        type: {
          name: "String"
        }
      },
      tags: {
        nullable: true,
        readOnly: true,
        serializedName: "tags",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageTag"
            }
          }
        }
      },
      regions: {
        nullable: true,
        readOnly: true,
        serializedName: "regions",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageRegion"
            }
          }
        }
      }
    }
  }
};

export const ImagePrediction: msRest.CompositeMapper = {
  serializedName: "ImagePrediction",
  type: {
    name: "Composite",
    className: "ImagePrediction",
    modelProperties: {
      id: {
        nullable: false,
        readOnly: true,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      project: {
        nullable: false,
        readOnly: true,
        serializedName: "project",
        type: {
          name: "Uuid"
        }
      },
      iteration: {
        nullable: false,
        readOnly: true,
        serializedName: "iteration",
        type: {
          name: "Uuid"
        }
      },
      created: {
        nullable: false,
        readOnly: true,
        serializedName: "created",
        type: {
          name: "DateTime"
        }
      },
      predictions: {
        readOnly: true,
        serializedName: "predictions",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "Prediction"
            }
          }
        }
      }
    }
  }
};

export const ImageProcessingSettings: msRest.CompositeMapper = {
  serializedName: "ImageProcessingSettings",
  type: {
    name: "Composite",
    className: "ImageProcessingSettings",
    modelProperties: {
      augmentationMethods: {
        nullable: true,
        serializedName: "augmentationMethods",
        type: {
          name: "Dictionary",
          value: {
            type: {
              name: "Boolean"
            }
          }
        }
      }
    }
  }
};

export const ImageRegionCreateEntry: msRest.CompositeMapper = {
  serializedName: "ImageRegionCreateEntry",
  type: {
    name: "Composite",
    className: "ImageRegionCreateEntry",
    modelProperties: {
      imageId: {
        required: true,
        nullable: false,
        serializedName: "imageId",
        type: {
          name: "Uuid"
        }
      },
      tagId: {
        required: true,
        nullable: false,
        serializedName: "tagId",
        type: {
          name: "Uuid"
        }
      },
      left: {
        required: true,
        nullable: false,
        serializedName: "left",
        type: {
          name: "Number"
        }
      },
      top: {
        required: true,
        nullable: false,
        serializedName: "top",
        type: {
          name: "Number"
        }
      },
      width: {
        required: true,
        nullable: false,
        serializedName: "width",
        type: {
          name: "Number"
        }
      },
      height: {
        required: true,
        nullable: false,
        serializedName: "height",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const ImageRegionCreateBatch: msRest.CompositeMapper = {
  serializedName: "ImageRegionCreateBatch",
  type: {
    name: "Composite",
    className: "ImageRegionCreateBatch",
    modelProperties: {
      regions: {
        serializedName: "regions",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageRegionCreateEntry"
            }
          }
        }
      }
    }
  }
};

export const ImageRegionCreateResult: msRest.CompositeMapper = {
  serializedName: "ImageRegionCreateResult",
  type: {
    name: "Composite",
    className: "ImageRegionCreateResult",
    modelProperties: {
      imageId: {
        nullable: false,
        readOnly: true,
        serializedName: "imageId",
        type: {
          name: "Uuid"
        }
      },
      regionId: {
        nullable: false,
        readOnly: true,
        serializedName: "regionId",
        type: {
          name: "Uuid"
        }
      },
      tagName: {
        nullable: false,
        readOnly: true,
        serializedName: "tagName",
        type: {
          name: "String"
        }
      },
      created: {
        nullable: false,
        readOnly: true,
        serializedName: "created",
        type: {
          name: "DateTime"
        }
      },
      tagId: {
        required: true,
        nullable: false,
        serializedName: "tagId",
        type: {
          name: "Uuid"
        }
      },
      left: {
        required: true,
        nullable: false,
        serializedName: "left",
        type: {
          name: "Number"
        }
      },
      top: {
        required: true,
        nullable: false,
        serializedName: "top",
        type: {
          name: "Number"
        }
      },
      width: {
        required: true,
        nullable: false,
        serializedName: "width",
        type: {
          name: "Number"
        }
      },
      height: {
        required: true,
        nullable: false,
        serializedName: "height",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const ImageRegionCreateSummary: msRest.CompositeMapper = {
  serializedName: "ImageRegionCreateSummary",
  type: {
    name: "Composite",
    className: "ImageRegionCreateSummary",
    modelProperties: {
      created: {
        nullable: true,
        serializedName: "created",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageRegionCreateResult"
            }
          }
        }
      },
      duplicated: {
        nullable: true,
        serializedName: "duplicated",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageRegionCreateEntry"
            }
          }
        }
      },
      exceeded: {
        nullable: true,
        serializedName: "exceeded",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageRegionCreateEntry"
            }
          }
        }
      }
    }
  }
};

export const RegionProposal: msRest.CompositeMapper = {
  serializedName: "RegionProposal",
  type: {
    name: "Composite",
    className: "RegionProposal",
    modelProperties: {
      confidence: {
        nullable: false,
        readOnly: true,
        serializedName: "confidence",
        type: {
          name: "Number"
        }
      },
      boundingBox: {
        readOnly: true,
        serializedName: "boundingBox",
        type: {
          name: "Composite",
          className: "BoundingBox"
        }
      }
    }
  }
};

export const ImageRegionProposal: msRest.CompositeMapper = {
  serializedName: "ImageRegionProposal",
  type: {
    name: "Composite",
    className: "ImageRegionProposal",
    modelProperties: {
      projectId: {
        nullable: false,
        readOnly: true,
        serializedName: "projectId",
        type: {
          name: "Uuid"
        }
      },
      imageId: {
        nullable: false,
        readOnly: true,
        serializedName: "imageId",
        type: {
          name: "Uuid"
        }
      },
      proposals: {
        readOnly: true,
        serializedName: "proposals",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "RegionProposal"
            }
          }
        }
      }
    }
  }
};

export const ImageTagCreateEntry: msRest.CompositeMapper = {
  serializedName: "ImageTagCreateEntry",
  type: {
    name: "Composite",
    className: "ImageTagCreateEntry",
    modelProperties: {
      imageId: {
        nullable: false,
        serializedName: "imageId",
        type: {
          name: "Uuid"
        }
      },
      tagId: {
        nullable: false,
        serializedName: "tagId",
        type: {
          name: "Uuid"
        }
      }
    }
  }
};

export const ImageTagCreateBatch: msRest.CompositeMapper = {
  serializedName: "ImageTagCreateBatch",
  type: {
    name: "Composite",
    className: "ImageTagCreateBatch",
    modelProperties: {
      tags: {
        serializedName: "tags",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageTagCreateEntry"
            }
          }
        }
      }
    }
  }
};

export const ImageTagCreateSummary: msRest.CompositeMapper = {
  serializedName: "ImageTagCreateSummary",
  type: {
    name: "Composite",
    className: "ImageTagCreateSummary",
    modelProperties: {
      created: {
        nullable: true,
        serializedName: "created",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageTagCreateEntry"
            }
          }
        }
      },
      duplicated: {
        nullable: true,
        serializedName: "duplicated",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageTagCreateEntry"
            }
          }
        }
      },
      exceeded: {
        nullable: true,
        serializedName: "exceeded",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageTagCreateEntry"
            }
          }
        }
      }
    }
  }
};

export const ImageUrl: msRest.CompositeMapper = {
  serializedName: "ImageUrl",
  type: {
    name: "Composite",
    className: "ImageUrl",
    modelProperties: {
      url: {
        required: true,
        nullable: false,
        serializedName: "url",
        type: {
          name: "String"
        }
      }
    }
  }
};

export const ImageUrlCreateEntry: msRest.CompositeMapper = {
  serializedName: "ImageUrlCreateEntry",
  type: {
    name: "Composite",
    className: "ImageUrlCreateEntry",
    modelProperties: {
      url: {
        required: true,
        nullable: false,
        serializedName: "url",
        type: {
          name: "String"
        }
      },
      tagIds: {
        serializedName: "tagIds",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Uuid"
            }
          }
        }
      },
      regions: {
        serializedName: "regions",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "Region"
            }
          }
        }
      }
    }
  }
};

export const ImageUrlCreateBatch: msRest.CompositeMapper = {
  serializedName: "ImageUrlCreateBatch",
  type: {
    name: "Composite",
    className: "ImageUrlCreateBatch",
    modelProperties: {
      images: {
        serializedName: "images",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "ImageUrlCreateEntry"
            }
          }
        }
      },
      tagIds: {
        serializedName: "tagIds",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Uuid"
            }
          }
        }
      },
      metadata: {
        nullable: true,
        serializedName: "metadata",
        type: {
          name: "Dictionary",
          value: {
            type: {
              name: "String"
            }
          }
        }
      }
    }
  }
};

export const Iteration: msRest.CompositeMapper = {
  serializedName: "Iteration",
  type: {
    name: "Composite",
    className: "Iteration",
    modelProperties: {
      id: {
        nullable: false,
        readOnly: true,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      name: {
        required: true,
        nullable: false,
        serializedName: "name",
        type: {
          name: "String"
        }
      },
      status: {
        nullable: false,
        readOnly: true,
        serializedName: "status",
        type: {
          name: "String"
        }
      },
      created: {
        nullable: false,
        readOnly: true,
        serializedName: "created",
        type: {
          name: "DateTime"
        }
      },
      lastModified: {
        nullable: false,
        readOnly: true,
        serializedName: "lastModified",
        type: {
          name: "DateTime"
        }
      },
      trainedAt: {
        nullable: true,
        readOnly: true,
        serializedName: "trainedAt",
        type: {
          name: "DateTime"
        }
      },
      projectId: {
        nullable: false,
        readOnly: true,
        serializedName: "projectId",
        type: {
          name: "Uuid"
        }
      },
      exportable: {
        nullable: false,
        readOnly: true,
        serializedName: "exportable",
        type: {
          name: "Boolean"
        }
      },
      exportableTo: {
        readOnly: true,
        serializedName: "exportableTo",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "String"
            }
          }
        }
      },
      domainId: {
        nullable: true,
        readOnly: true,
        serializedName: "domainId",
        type: {
          name: "Uuid"
        }
      },
      classificationType: {
        nullable: true,
        readOnly: true,
        serializedName: "classificationType",
        type: {
          name: "String"
        }
      },
      trainingType: {
        nullable: false,
        readOnly: true,
        serializedName: "trainingType",
        type: {
          name: "String"
        }
      },
      reservedBudgetInHours: {
        nullable: false,
        readOnly: true,
        serializedName: "reservedBudgetInHours",
        type: {
          name: "Number"
        }
      },
      trainingTimeInMinutes: {
        nullable: false,
        readOnly: true,
        serializedName: "trainingTimeInMinutes",
        type: {
          name: "Number"
        }
      },
      publishName: {
        nullable: false,
        readOnly: true,
        serializedName: "publishName",
        type: {
          name: "String"
        }
      },
      originalPublishResourceId: {
        nullable: false,
        readOnly: true,
        serializedName: "originalPublishResourceId",
        type: {
          name: "String"
        }
      },
      customBaseModelInfo: {
        readOnly: true,
        serializedName: "customBaseModelInfo",
        type: {
          name: "Composite",
          className: "CustomBaseModelInfo"
        }
      },
      trainingErrorDetails: {
        readOnly: true,
        serializedName: "trainingErrorDetails",
        type: {
          name: "String"
        }
      }
    }
  }
};

export const TagPerformance: msRest.CompositeMapper = {
  serializedName: "TagPerformance",
  type: {
    name: "Composite",
    className: "TagPerformance",
    modelProperties: {
      id: {
        nullable: false,
        readOnly: true,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      name: {
        nullable: false,
        readOnly: true,
        serializedName: "name",
        type: {
          name: "String"
        }
      },
      precision: {
        nullable: false,
        readOnly: true,
        serializedName: "precision",
        type: {
          name: "Number"
        }
      },
      precisionStdDeviation: {
        nullable: false,
        readOnly: true,
        serializedName: "precisionStdDeviation",
        type: {
          name: "Number"
        }
      },
      recall: {
        nullable: false,
        readOnly: true,
        serializedName: "recall",
        type: {
          name: "Number"
        }
      },
      recallStdDeviation: {
        nullable: false,
        readOnly: true,
        serializedName: "recallStdDeviation",
        type: {
          name: "Number"
        }
      },
      averagePrecision: {
        nullable: true,
        readOnly: true,
        serializedName: "averagePrecision",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const IterationPerformance: msRest.CompositeMapper = {
  serializedName: "IterationPerformance",
  type: {
    name: "Composite",
    className: "IterationPerformance",
    modelProperties: {
      perTagPerformance: {
        readOnly: true,
        serializedName: "perTagPerformance",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "TagPerformance"
            }
          }
        }
      },
      precision: {
        nullable: false,
        readOnly: true,
        serializedName: "precision",
        type: {
          name: "Number"
        }
      },
      precisionStdDeviation: {
        nullable: false,
        readOnly: true,
        serializedName: "precisionStdDeviation",
        type: {
          name: "Number"
        }
      },
      recall: {
        nullable: false,
        readOnly: true,
        serializedName: "recall",
        type: {
          name: "Number"
        }
      },
      recallStdDeviation: {
        nullable: false,
        readOnly: true,
        serializedName: "recallStdDeviation",
        type: {
          name: "Number"
        }
      },
      averagePrecision: {
        nullable: true,
        readOnly: true,
        serializedName: "averagePrecision",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const PredictionQueryTag: msRest.CompositeMapper = {
  serializedName: "PredictionQueryTag",
  type: {
    name: "Composite",
    className: "PredictionQueryTag",
    modelProperties: {
      id: {
        nullable: false,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      minThreshold: {
        nullable: false,
        serializedName: "minThreshold",
        type: {
          name: "Number"
        }
      },
      maxThreshold: {
        nullable: false,
        serializedName: "maxThreshold",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const PredictionQueryToken: msRest.CompositeMapper = {
  serializedName: "PredictionQueryToken",
  type: {
    name: "Composite",
    className: "PredictionQueryToken",
    modelProperties: {
      session: {
        nullable: false,
        serializedName: "session",
        type: {
          name: "String"
        }
      },
      continuation: {
        nullable: false,
        serializedName: "continuation",
        type: {
          name: "String"
        }
      },
      maxCount: {
        nullable: false,
        serializedName: "maxCount",
        type: {
          name: "Number"
        }
      },
      orderBy: {
        nullable: false,
        serializedName: "orderBy",
        type: {
          name: "String"
        }
      },
      tags: {
        serializedName: "tags",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "PredictionQueryTag"
            }
          }
        }
      },
      iterationId: {
        nullable: true,
        serializedName: "iterationId",
        type: {
          name: "Uuid"
        }
      },
      startTime: {
        nullable: true,
        serializedName: "startTime",
        type: {
          name: "DateTime"
        }
      },
      endTime: {
        nullable: true,
        serializedName: "endTime",
        type: {
          name: "DateTime"
        }
      },
      application: {
        nullable: false,
        serializedName: "application",
        type: {
          name: "String"
        }
      }
    }
  }
};

export const StoredImagePrediction: msRest.CompositeMapper = {
  serializedName: "StoredImagePrediction",
  type: {
    name: "Composite",
    className: "StoredImagePrediction",
    modelProperties: {
      resizedImageUri: {
        readOnly: true,
        serializedName: "resizedImageUri",
        type: {
          name: "String"
        }
      },
      thumbnailUri: {
        readOnly: true,
        serializedName: "thumbnailUri",
        type: {
          name: "String"
        }
      },
      originalImageUri: {
        readOnly: true,
        serializedName: "originalImageUri",
        type: {
          name: "String"
        }
      },
      domain: {
        nullable: false,
        readOnly: true,
        serializedName: "domain",
        type: {
          name: "Uuid"
        }
      },
      id: {
        nullable: false,
        readOnly: true,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      project: {
        nullable: false,
        readOnly: true,
        serializedName: "project",
        type: {
          name: "Uuid"
        }
      },
      iteration: {
        nullable: false,
        readOnly: true,
        serializedName: "iteration",
        type: {
          name: "Uuid"
        }
      },
      created: {
        nullable: false,
        readOnly: true,
        serializedName: "created",
        type: {
          name: "DateTime"
        }
      },
      predictions: {
        readOnly: true,
        serializedName: "predictions",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "Prediction"
            }
          }
        }
      }
    }
  }
};

export const PredictionQueryResult: msRest.CompositeMapper = {
  serializedName: "PredictionQueryResult",
  type: {
    name: "Composite",
    className: "PredictionQueryResult",
    modelProperties: {
      token: {
        serializedName: "token",
        type: {
          name: "Composite",
          className: "PredictionQueryToken"
        }
      },
      results: {
        readOnly: true,
        serializedName: "results",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "StoredImagePrediction"
            }
          }
        }
      }
    }
  }
};

export const ProjectSettings: msRest.CompositeMapper = {
  serializedName: "ProjectSettings",
  type: {
    name: "Composite",
    className: "ProjectSettings",
    modelProperties: {
      domainId: {
        nullable: false,
        serializedName: "domainId",
        type: {
          name: "Uuid"
        }
      },
      classificationType: {
        nullable: true,
        serializedName: "classificationType",
        type: {
          name: "String"
        }
      },
      targetExportPlatforms: {
        serializedName: "targetExportPlatforms",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "String"
            }
          }
        }
      },
      useNegativeSet: {
        nullable: true,
        readOnly: true,
        serializedName: "useNegativeSet",
        type: {
          name: "Boolean"
        }
      },
      detectionParameters: {
        nullable: false,
        readOnly: true,
        serializedName: "detectionParameters",
        type: {
          name: "String"
        }
      },
      imageProcessingSettings: {
        serializedName: "imageProcessingSettings",
        type: {
          name: "Composite",
          className: "ImageProcessingSettings"
        }
      },
      exportModelContainerUri: {
        nullable: true,
        readOnly: true,
        serializedName: "exportModelContainerUri",
        type: {
          name: "String"
        }
      },
      notificationQueueUri: {
        nullable: true,
        readOnly: true,
        serializedName: "notificationQueueUri",
        type: {
          name: "String"
        }
      }
    }
  }
};

export const Project: msRest.CompositeMapper = {
  serializedName: "Project",
  type: {
    name: "Composite",
    className: "Project",
    modelProperties: {
      id: {
        nullable: false,
        readOnly: true,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      name: {
        required: true,
        nullable: false,
        serializedName: "name",
        type: {
          name: "String"
        }
      },
      description: {
        required: true,
        nullable: true,
        serializedName: "description",
        type: {
          name: "String"
        }
      },
      settings: {
        required: true,
        serializedName: "settings",
        type: {
          name: "Composite",
          className: "ProjectSettings"
        }
      },
      created: {
        nullable: false,
        readOnly: true,
        serializedName: "created",
        type: {
          name: "DateTime"
        }
      },
      lastModified: {
        nullable: false,
        readOnly: true,
        serializedName: "lastModified",
        type: {
          name: "DateTime"
        }
      },
      thumbnailUri: {
        readOnly: true,
        serializedName: "thumbnailUri",
        type: {
          name: "String"
        }
      },
      drModeEnabled: {
        nullable: true,
        readOnly: true,
        serializedName: "drModeEnabled",
        type: {
          name: "Boolean"
        }
      },
      status: {
        nullable: false,
        serializedName: "status",
        type: {
          name: "String"
        }
      }
    }
  }
};

export const ProjectExport: msRest.CompositeMapper = {
  serializedName: "ProjectExport",
  type: {
    name: "Composite",
    className: "ProjectExport",
    modelProperties: {
      iterationCount: {
        nullable: false,
        readOnly: true,
        serializedName: "iterationCount",
        type: {
          name: "Number"
        }
      },
      imageCount: {
        nullable: false,
        readOnly: true,
        serializedName: "imageCount",
        type: {
          name: "Number"
        }
      },
      tagCount: {
        nullable: false,
        readOnly: true,
        serializedName: "tagCount",
        type: {
          name: "Number"
        }
      },
      regionCount: {
        nullable: false,
        readOnly: true,
        serializedName: "regionCount",
        type: {
          name: "Number"
        }
      },
      estimatedImportTimeInMS: {
        nullable: false,
        readOnly: true,
        serializedName: "estimatedImportTimeInMS",
        type: {
          name: "Number"
        }
      },
      token: {
        nullable: false,
        readOnly: true,
        serializedName: "token",
        type: {
          name: "String"
        }
      }
    }
  }
};

export const StoredSuggestedTagAndRegion: msRest.CompositeMapper = {
  serializedName: "StoredSuggestedTagAndRegion",
  type: {
    name: "Composite",
    className: "StoredSuggestedTagAndRegion",
    modelProperties: {
      width: {
        nullable: false,
        readOnly: true,
        serializedName: "width",
        type: {
          name: "Number"
        }
      },
      height: {
        nullable: false,
        readOnly: true,
        serializedName: "height",
        type: {
          name: "Number"
        }
      },
      resizedImageUri: {
        readOnly: true,
        serializedName: "resizedImageUri",
        type: {
          name: "String"
        }
      },
      thumbnailUri: {
        readOnly: true,
        serializedName: "thumbnailUri",
        type: {
          name: "String"
        }
      },
      originalImageUri: {
        readOnly: true,
        serializedName: "originalImageUri",
        type: {
          name: "String"
        }
      },
      domain: {
        nullable: false,
        readOnly: true,
        serializedName: "domain",
        type: {
          name: "Uuid"
        }
      },
      id: {
        nullable: false,
        readOnly: true,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      project: {
        nullable: false,
        readOnly: true,
        serializedName: "project",
        type: {
          name: "Uuid"
        }
      },
      iteration: {
        nullable: false,
        readOnly: true,
        serializedName: "iteration",
        type: {
          name: "Uuid"
        }
      },
      created: {
        nullable: false,
        readOnly: true,
        serializedName: "created",
        type: {
          name: "DateTime"
        }
      },
      predictions: {
        readOnly: true,
        serializedName: "predictions",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "Prediction"
            }
          }
        }
      },
      predictionUncertainty: {
        nullable: false,
        readOnly: true,
        serializedName: "predictionUncertainty",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const SuggestedTagAndRegion: msRest.CompositeMapper = {
  serializedName: "SuggestedTagAndRegion",
  type: {
    name: "Composite",
    className: "SuggestedTagAndRegion",
    modelProperties: {
      id: {
        nullable: false,
        readOnly: true,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      project: {
        nullable: false,
        readOnly: true,
        serializedName: "project",
        type: {
          name: "Uuid"
        }
      },
      iteration: {
        nullable: false,
        readOnly: true,
        serializedName: "iteration",
        type: {
          name: "Uuid"
        }
      },
      created: {
        nullable: false,
        readOnly: true,
        serializedName: "created",
        type: {
          name: "DateTime"
        }
      },
      predictions: {
        readOnly: true,
        serializedName: "predictions",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "Prediction"
            }
          }
        }
      },
      predictionUncertainty: {
        nullable: false,
        readOnly: true,
        serializedName: "predictionUncertainty",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const SuggestedTagAndRegionQueryToken: msRest.CompositeMapper = {
  serializedName: "SuggestedTagAndRegionQueryToken",
  type: {
    name: "Composite",
    className: "SuggestedTagAndRegionQueryToken",
    modelProperties: {
      tagIds: {
        serializedName: "tagIds",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Uuid"
            }
          }
        }
      },
      threshold: {
        nullable: false,
        serializedName: "threshold",
        type: {
          name: "Number"
        }
      },
      session: {
        nullable: false,
        serializedName: "session",
        type: {
          name: "String"
        }
      },
      continuation: {
        nullable: false,
        serializedName: "continuation",
        type: {
          name: "String"
        }
      },
      maxCount: {
        nullable: false,
        serializedName: "maxCount",
        type: {
          name: "Number"
        }
      },
      sortBy: {
        nullable: false,
        serializedName: "sortBy",
        type: {
          name: "String"
        }
      }
    }
  }
};

export const SuggestedTagAndRegionQuery: msRest.CompositeMapper = {
  serializedName: "SuggestedTagAndRegionQuery",
  type: {
    name: "Composite",
    className: "SuggestedTagAndRegionQuery",
    modelProperties: {
      token: {
        serializedName: "token",
        type: {
          name: "Composite",
          className: "SuggestedTagAndRegionQueryToken"
        }
      },
      results: {
        readOnly: true,
        serializedName: "results",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Composite",
              className: "StoredSuggestedTagAndRegion"
            }
          }
        }
      }
    }
  }
};

export const Tag: msRest.CompositeMapper = {
  serializedName: "Tag",
  type: {
    name: "Composite",
    className: "Tag",
    modelProperties: {
      id: {
        nullable: false,
        readOnly: true,
        serializedName: "id",
        type: {
          name: "Uuid"
        }
      },
      name: {
        required: true,
        nullable: false,
        serializedName: "name",
        type: {
          name: "String"
        }
      },
      description: {
        required: true,
        nullable: true,
        serializedName: "description",
        type: {
          name: "String"
        }
      },
      type: {
        required: true,
        nullable: false,
        serializedName: "type",
        type: {
          name: "String"
        }
      },
      imageCount: {
        nullable: false,
        readOnly: true,
        serializedName: "imageCount",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const TagFilter: msRest.CompositeMapper = {
  serializedName: "TagFilter",
  type: {
    name: "Composite",
    className: "TagFilter",
    modelProperties: {
      tagIds: {
        serializedName: "tagIds",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Uuid"
            }
          }
        }
      },
      threshold: {
        nullable: false,
        serializedName: "threshold",
        type: {
          name: "Number"
        }
      }
    }
  }
};

export const TrainingParameters: msRest.CompositeMapper = {
  serializedName: "TrainingParameters",
  type: {
    name: "Composite",
    className: "TrainingParameters",
    modelProperties: {
      selectedTags: {
        serializedName: "selectedTags",
        type: {
          name: "Sequence",
          element: {
            type: {
              name: "Uuid"
            }
          }
        }
      },
      customBaseModelInfo: {
        serializedName: "customBaseModelInfo",
        type: {
          name: "Composite",
          className: "CustomBaseModelInfo"
        }
      }
    }
  }
};
