import { Image } from "../../models/Image";
import { ImageCollection } from "../ImageCollection";
import { Boolean } from "../../dataType/Boolean";
import { String } from "../../dataType/String";
import { Number } from "../../dataType/Number";
import { PrintObject } from "../PrintObject";
import { File } from "../File";
import { FeatureCollection } from "../FeatureCollection";
import { Dictionary } from "../Dictionary";
import { List } from "../../dataType/List";
import { Projection } from "../Projection";

/**
 * Services
 * @class Services.Model
 * @since gve.Services
 * @alias gve.Services.Model
 */
export class Model extends PrintObject {
    /**
     * Model
     * @hideconstructor
     * @returns gve.Services.Model
     * @tutorial gve.Services
     */
    constructor() {
      super();
      if (!(this instanceof Model)) {
        return new Model();
      }
    }
    

    /**
     * 根据AI预测平台模型的描述返回模型
     * @param {string} [projectId] 可选参数,包含该模型的项目ID
     * @param {any} [projectName] 可选参数,包含该模型的项目名称
     * @param {string} [modelName] 可选参数,模型名称
     * @param {string} [version] 可选参数,版本
     * @param {string} [region] 可选参数,部署的区域
     * @param {List|any[]} [inputProperties] 可选参数,每个预测实例传递的属性
     * @param {Dictionary|object} [inputTypeOverride] 可选参数,指定的输入类型
     * @param {Dictionary|object} [inputShapes] 可选参数,指定的输入形状
     * @param {Projection} [proj] 可选参数,对所有波段进行采样的输入投影
     * @param {boolean} [fixInputProj] 可选参数,是否对输入进行投影
     * @param {List|any[]} [inputTileSize] 可选参数,预测实例需要的像素图块大小
     * @param {List|any[]} [inputOverlapSize] 可选参数,预测实例沿X/Y轴传递的像素图块的数量
     * @param {List|any[]} [outputTileSize] 可选参数,AI平台返回的像素图块的矩形尺寸
     * @param {Dictionary|object} [outputBands] 可选参数,输出的波段信息
     * @param {Dictionary|object} [outputProperties] 可选参数,输出属性名称的字典
     * @param {Dictionary|object} [outputMultiplier] 可选参数,模型输入到输出增加的近似值
     * @returns Model
     * @tutorial gve.Services.Model
     * @alias gve.Services.Model.fromAiPlatformPredictor
     */
    static fromAiPlatformPredictor(projectId?: string, projectName?: any, modelName?: string,
         version?: string, region?: string, inputProperties?: List<any>|any[],
          inputTypeOverride?: Dictionary|object, inputShapes?: Dictionary|object, proj?: Projection,
           fixInputProj?: boolean, inputTileSize?: List<any>|any[], inputOverlapSize?: List<any>|any[],
            outputTileSize?: List<any>|any[], outputBands?: Dictionary|object,
            outputProperties?: Dictionary|object, outputMultiplier?: Dictionary|object) {
      return new Model();
    }
    /**
     * 根据给定的影像进行推理预测
     * @param {Image} image 输入的影像
     * @returns Image
     * @alias gve.Services.Model.predictImage
     */
    predictImage(image: Image) {
      return new Image();
    }

    

}