/**
 * 统一对外接口模块
 * 收费系统统一对外接口协议文档.docx
 */

 import { Singleton } from "typescript-ioc";
 import { ApiResponse, ApiRequestBase, throwIfResCodeNoSuccess, axiosInstance } from './TyApiCommon'
 
 /**
  * 统一对外接口客户端
  * 
  * ```ts
  * import { Singleton, Inject } from "typescript-ioc";
  * import { IService } from "mslib"
  * import { TyApi, TyExternalApi, ApiResponse, TyExternalApiClient } from "refs/nslib";
  * 
  * export class PostCarInInfo implements IService {
  *    //去掉注释
  *    //@Inject
  *    externalApiClient:TyExternalApiClient;
  * 
  *    //去掉注释
  *    //@TyApi.Service()
  *    async doService(input: TyExternalApi.PostCarInInfoInput): Promise<ApiResponse> {
  *        //使用已封装的方法
  *        let res = await this.externalApiClient.getConfigInfo();
  *          
  *        return ApiResponse.success;
  *    }
  * }
  * ```
  */
 @Singleton
 export default class TyExternalApiClient {
     /**
      * 2.0.1获取平台配置信息
      * 获取appid配置信息
      */
     async getConfigInfo(request?: GetConfigInfoRequest): Promise<GetConfigInfoResponse> {
         let config: any = { apiDesc: '2.0.1获取平台配置信息' };
         let axiosResponse = await axiosInstance.post<ApiResponse<GetConfigInfoResponse>>('/config/platform/GetConfigInfo', request || new GetConfigInfoRequest(), config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return axiosResponse.data.data;
     }
 
     /**
      * 2.1.3车场终端设备查询接口
      * 获取车场终端设备信息列表
      */
     async getDeviceList(request?: GetDeviceListRequest): Promise<{
         deviceList: {
             /**
              * 设备编码（此设备编号为设备的id（数据库主键））
              */
             deviceCode: string;
 
             /**
              * 设备Ip
              */
             deviceIp: string;
 
             /**
              * 设备名称
              */
             deviceName: string;
 
             /**
              * 设备类型 详见参数枚举1.6.6
              */
             deviceType: number;
         }[]
     }> {
         let config: any = { apiDesc: '2.1.3车场终端设备查询接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('/api/wec/GetDeviceList', request || new GetDeviceListRequest(), config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return axiosResponse.data.data ? JSON.parse(axiosResponse.data.data) : axiosResponse.data.data;
     }
 
     /**
      * 由于接口2.1.5通道信息提供的是分页版本，所以再写个获取所有通道
      */
     async getAllParkingNodes(parkId: any): Promise<any[]> {
         let request = new GetParkingNodeRequest();
         request.pageIndex = 1;
         request.pageSize = 100;
         request.parkId = parkId;
 
         let nodes = [];
         while (true) {
             let apiResponse = await this.getParkingNode(request);
             if (!apiResponse.nodeList || apiResponse.nodeList.length === 0) break;
 
             nodes = nodes.concat(apiResponse.nodeList);
 
             if (apiResponse.nodeList.length < request.pageSize) break;
             request.pageIndex = request.pageIndex + 1;
         }
 
         return nodes;
     }
 
     /**
      * 2.1.5通道信息
      * 获取通道信息
      */
     async getParkingNode(request: GetParkingNodeRequest): Promise<GetParkingNodeResponse> {
         let config: any = { apiDesc: '2.1.5通道信息' };
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('/api/wec/GetParkingNode', request, config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return axiosResponse.data.data ? JSON.parse(axiosResponse.data.data) : axiosResponse.data.data;
     }
 
     /**
      * 2.2.1固定车新增接口
      */
     async addCarCardNo(request: AddCarCardNoRequest): Promise<ApiResponse<string>> {
         let config: any = { apiDesc: '2.2.1固定车新增接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('/api/wec/AddCarCardNo', request, config);
 
         return axiosResponse.data;
     }
 
     /**
      * 2.2.2固定车查询接口
      */
     async getCarCardInfo(request: GetCarCardInfoRequest): Promise<GetCarCardInfoResponse> {
         let config: any = { apiDesc: '2.2.2固定车查询接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('/api/wec/GetCarCardInfo', request, config);
         throwIfResCodeNoSuccess(axiosResponse.data);
        
         //没查到会返回空字符串
         return axiosResponse.data.data ? JSON.parse(axiosResponse.data.data) : null;
     }
 
     /**
      * 2.2.3固定车修改接口
      */
     async modifyCarCardNo(request: ModifyCarCardNoRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.2.3固定车修改接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/wec/ModifyCarCardNo', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.2.4固定车删除接口
      */
     async delCarCardInfo(request: DelCarCardInfoRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.2.4固定车删除接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('api/wec/DelCarCardInfo', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.2.6固定车充值接口
      */
     async payCarCardFee(request: PayCarCardFeeRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.2.6固定车充值接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/wec/PayCarCardFee', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.2.9固定车退款接口
      */
     async refundCarCardFee(request: RefundCarCardFeeRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.2.9固定车退款接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('api/wec/RefundCarCardFee', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.4.1用户车位预订
      */
     async reserveSpace(request: ReserveSpaceRequest): Promise<ApiResponse> {//ReserveSpaceResponse
         let config: any = { apiDesc: '2.4.1用户车位预订' };
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('/api/find/ReserveSpace', request, config);
         return axiosResponse.data;
         //throwIfResCodeNoSuccess(axiosResponse.data);
 
         //return axiosResponse.data.data ? JSON.parse(axiosResponse.data.data) : axiosResponse.data.data;
     }
 
     /**
      * 2.4.2修改预约车有效期
      */
     async reserveSpace_ChangeTime(request: ReserveSpaceChangeTimeRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.4.2修改预约车有效期' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/find/ReserveSpace_ChangeTime', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.4.3车位预订取消接口
      */
     async cancelReserveSpace(request: CancelReserveSpaceRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.4.3车位预订取消接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/find/CancelReserveSpace', request, config);
         return axiosResponse.data;
     }
      /**
      * 2.4.4预订车位查询接口
      */
     async getReservableInfo(request: GetReservableInfoRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.4.4预订车位查询接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/find/GetReservableInfo', request, config);
         return axiosResponse.data;
     }
     /**
      * 2.5.1账单查询/费用查询
      */
     async getParkingPaymentInfo(request: GetParkingPaymentInfoReuqest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.5.1账单查询/费用查询' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/wec/GetParkingPaymentInfo', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.5.2停车费支付
      */
     async payParkingFee(request: PayParkingFeeRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.5.2停车费支付' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/wec/PayParkingFee', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.5.5无牌车扫出入口二维码进出场
      */
     async unlicensedCarInout(request: UnlicensedCarInoutRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.5.2停车费支付' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/wec/UnlicensedCarInout', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.5.6车辆无感支付签约变更通知接口
      */
     async signing(request: SigningRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.5.6车辆无感支付签约变更通知接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('/api/nosense/Signing', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.6.2剩余车位查询
      */
     async getFreeSpaceNum(request: GetFreeSpaceNumRequest): Promise<GetFreeSpaceNumResponse> {
         let config: any = { apiDesc: '2.6.2剩余车位查询' };
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('/api/wec/GetFreeSpaceNum', request, config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return JSON.parse(axiosResponse.data.data);
     }
 
     /**
      * 2.6.3设备状态查询
      */
     async getDeviceStatus(request?: GetDeviceStatusRequest): Promise<{
         /**
          * 设备编码（此设备编号为设备的id（数据库主键））
          */
         deviceCode: string;
         deviceIp: string;
         deviceName: string;
         deviceType: string;
         deviceStatus: string;
         deviceTime: string
     }[]> {
         let config: any = { apiDesc: '2.6.3设备状态查询' };
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('/api/wec/GetDeviceStatus', request || new GetDeviceStatusRequest(), config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return axiosResponse.data.data ? JSON.parse(axiosResponse.data.data) : axiosResponse.data.data;
     }
 
     /**
      * 2.6.16根据通道获取当前车辆(地感车辆信息)
      */
     async getNodeCarInfo(request: GetCarInfoByNodeIdRequest): Promise<{
         carPlateNum: string;
         capTime: string;
         serial: string;
     }> {
         let config: any = { apiDesc: '2.6.16根据通道获取当前车辆(地感车辆信息)' };
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('/api/wec/GetNodeCarInfo', request, config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return axiosResponse.data.data ? JSON.parse(axiosResponse.data.data) : axiosResponse.data.data;
     }
 
     /**
      * 2.7.5远程开闸
      */
     async remoteOpen(request: RemoteOpenRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.7.5远程开闸' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/control/RemoteOpen', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.7.6修改场内车数据
      */
     async modifyCarInfo(request: ModifyCarInfoRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.7.6修改场内车数据' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/control/ModifyCarInfo', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.7.15新增虚拟进出场
      */
     async addVirtualTraffic(request: AddVirtualTrafficReuqest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.7.15新增虚拟进出场' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/traffic/AddVirtualTraffic', request, config);
 
         return axiosResponse.data;
     }
 
     /**
      * 2.8.1新增黑名单车牌信息
      */
     async addCarBlackInfo(request: AddCarBlackInfoReuqest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.8.1新增黑名单车牌信息' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/blacklist/AddCarBlackInfo', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.8.3删除黑名单车牌信息
      */
     async delCarBlackInfo(request: DelCarBlackInfoReuqest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.8.3删除黑名单车牌信息' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/blacklist/DelCarBlackInfo', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.9.1锁车接口
      */
     async lockCarplate(request: LockCarplateReuqest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.9.1锁车接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/card/LockCarplate', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.9.2解锁接口
      */
     async unlockCarplate(request: UnlockCarplateReuqest): Promise<ApiResponse> {
         let config: any = { apiDesc: '2.9.2解锁接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/api/card/UnlockCarplate', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.10.9车位图片URL接口
      */
     async getCarImageUrl(request: any) {
         let config: any = { apiDesc: '2.10.9车位图片URL接口' };
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('findCar/GetCarImageUrl', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 2.14.9获取当前用户信息
      */
     async queryCurrentUser(token: string, request?: QueryCurrentUserRequest): Promise<QueryCurrentUserResponse> {
         let config = {
             headers: {
                 'kt-token': token,
                 'Cookie': 'mer=' + token,
                 'content-type': 'application/json;charset=UTF-8',
                 'access-control-allow-credentials': true,
                 'access-control-allow-headers': 'Origin,Content-Type,Accept,token,X-Requested-With,cookie,lotId',
             },
             apiDesc: '2.14.9获取当前用户信息'
         };
 
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('/mercoupon/unity/queryCurrentUser', request || new QueryCurrentUserRequest(), config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return axiosResponse.data.data ? JSON.parse(axiosResponse.data.data) : axiosResponse.data.data;
     }
 
     /**
      * 2.14.12 根据抵扣劵号查询抵扣明细
      */
     async queryRecordById(request: QueryRecordByIdRequest): Promise<QueryRecordByIdResponse> {
         let config: any = { apiDesc: '2.14.12 根据抵扣劵号查询抵扣明细' };
         let axiosResponse = await axiosInstance.post<ApiResponse<QueryRecordByIdResponse>>('/kosCouponConsole/service/open/queryRecordById', request, config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return axiosResponse.data.data;
     }
 
     /**
      * 2.15.10获取用户信息
      */
     async getMyBaseInfo(request: GetMyBaseInfoRequest, token: string): Promise<GetMyBaseInfoReponse> {
         let config = { headers: { 'kt-token': token }, apiDesc: '2.15.10获取用户信息' };
         let axiosResponse = await axiosInstance.post<ApiResponse<GetMyBaseInfoReponse>>('/unity/service/open/user/getMyBaseInfo', request, config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return axiosResponse.data.data;
     }
 
     /**
      * 2.15.4停车场与角色关系查询
      */
     async findLotRoles(request: FindLotRolesRequest): Promise<FindLotRolesResponse> {
         let config: any = { apiDesc: '2.15.4停车场与角色关系查询' };
         let axiosResponse = await axiosInstance.post<ApiResponse<FindLotRolesResponse>>('/unity/service/open/role/findLotRoles', request, config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return axiosResponse.data.data;
     }
 
     /**
      * 2.15.8停车场与用户关系查询
      */
     async findListByLotIdPage(request: FindListByLotIdPageRequest): Promise<FindListByLotIdPageResponse> {
         let config: any = { apiDesc: '2.15.8停车场与用户关系查询' };
         let axiosResponse = await axiosInstance.post<ApiResponse<FindListByLotIdPageResponse>>('/unity/service/open/user/findListByLotIdPage', request, config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return axiosResponse.data.data;
     }
 
     /**
      * 第三方充值抵扣券
      */
     async recharge3rdByUnity(request: Recharge3rdByUnityRequest): Promise<ApiResponse> {
         let config: any = { apiDesc: '第三方充值抵扣券' };
         let axiosResponse = await axiosInstance.post<ApiResponse>('/mercoupon/unity/recharge3rdByUnity', request, config);
         return axiosResponse.data;
     }
 
     /**
      * 查看车场商户信息
      */
     async queryLotMer4Unity(request: QueryLotMer4UnityRequest): Promise<{
         id: string;
         name: string;
     }[]> {
         let config: any = { apiDesc: '查看车场商户信息' };
         let axiosResponse = await axiosInstance.post<ApiResponse<string>>('/mercoupon/unity/queryLotMer4Unity', request, config);
         throwIfResCodeNoSuccess(axiosResponse.data);
 
         return axiosResponse.data.data ? JSON.parse(axiosResponse.data.data) : axiosResponse.data.data;
     }
 }
 
 export class GetConfigInfoRequest extends ApiRequestBase {
 
 }
 
 export class GetConfigInfoResponse {
     /**
      * appid 配置信息
      */
     config?: string;
 
     /**
      * 已授权车场扩展配置
      */
     parkConfig?: any[];
 }
 
 export class GetParkingPaymentInfoReuqest extends ApiRequestBase {
     /**
      * 车牌号
      */
     plateNo?: string;
 
     /**
      * 入场取票号/无牌车入场的卡号
      */
     cardNo?: string;
 
     /**
      设备编码(出口) 设备编码仅支持出口有停放车辆,并识别正确的情况不支持无牌车 
      */
     deviceCode?: string;
 
     /**
      * 免费时长（秒）
      */
     freeTime: number;
 
     /**
      * 免费金额（单位:分）
      */
     freeMoney: number;
 }
 
 export class PayParkingFeeRequest extends ApiRequestBase {
     /**
      * 车场账单号，不允许为空
      */
     orderNo: string;
 
     /**
      * 应付金额
      */
     payableAmount: number;
 
     /**
      * 缴费时间, 'yyyy-mm-dd hh:mi:ss'
      */
     payTime: string;
 
     /**
      * 支付金额(不包含减免部分),单位为分，不允许为空
      */
     amount: number;
 
     /**
      * 收费终端，详见参数枚举1.6.4
      */
     payType: string;
 
     /**
      * 付款方式，详见参数枚举 1.6.3(针对amount的支付方式)
      */
     payMethod: string;
 
     /**
      * 减免总金额（单位 分）
      */
     freeMoney: number;
 
     /**
      * 减免总时长（单位 秒）
      */
     freeTime: number;
 
     /**
      * 车场是否离线(6.x系统无感支付及后付费用必须传.6.x支持、5.x不支持)：1、表示车辆已经离场
      */
     isCarLeave: string;
 
     /**
      * json数组字符串（如果freeMoney或freeTime大于零时， 不能为空）
      */
     freeDetail: string;
 
     /**
      * 商户订单号 非必填,主要用与后期本地数据和支付平台直接对账使用.
      */
     outOrderNo: string;
 
     /**
      * 支付扩展信息，json对象
      */
     paymentExt: string;
 }
 
 export class UnlicensedCarInoutRequest extends ApiRequestBase {
     /**
      * 设备标识 0-设备编码 1-设备Ip
      */
     deviceType: 0 | 1;
 
     deviceCode: string;
     cardNo: string;
 }
 
 export class SigningRequest extends ApiRequestBase {
     plateNo: string;
 
     /**
      * 是否签约无感支付0：否（解约）；1：是
      */
     signed: 0 | 1;
 
     /**
      * 无感付款方式，详见参数枚举 1.6.3
      */
     payMethod: number;
     inTime: string;
 }
 
 /**
  * 数据上报基类
  */
 class DataPushBase {
     appId: string;
 
     /**
      * 验证码
      */
     key: string;
 
     parkId: number;
 
     /**
      * 时间戳
      */
     ts: string;
 
     /**
      * 每次请求的唯一标识
      */
     reqId: string;
 }
 
 export class PostPaymentInput extends DataPushBase {
     plateNo: string;
     orderNo: string;
 
     /**
      * 应收金额（单位：分）
      */
     money: number;
 
     /**
      * 进场时间
      */
     entryTime: string;
 
     /**
      * 停车时长（秒）
      */
     elapsedTime: string;
 
     /**
      * 固定车类型  详见参数枚举 1.6.2
      */
     carType?: string;
 
     /**
      * 车辆类型 详见参数枚举1.6.8
      */
     carStyle?: string;
 
     /**
      * 出口编号
      */
     leaveNodeId?: string;
 
     /**
      * 车牌颜色 详见参数枚举1.6.11（白、黑、灰等）
      */
     plateColor?: string;
 }
 
 /**
  * 3.2.1
  * 进场上报
  */
 export class PostCarInInfoInput extends DataPushBase {
     /**
      * 出入场唯一记录ID
      */
     trafficId: string;
 
     /**
      * 车牌号(全)
      */
     plateNo: string;
 
     /**
      * 入场取票号/无牌车入场的卡号
      */
     cardNo?: string;
 
     /**
      * 入场时间
      */
     entryTime: string;
 
     /**
      * 卡片类型  详见参数枚举 1.6.2
      */
     carType: number;
 
     /**
      * 入口名称（6.x系统取值是：通道名称 +“- ”+ 通道id；5.x系统取值是：通道名称（后续也需要调整成6.x一样，对接方需要兼容）
      */
     entryPlace: string;
 
     /**
      * 出口抓拍图片名称
      */
     imgName: string;
 
     /**
      * 图片地址
      */
     imgInfo: string;
 
     /**
      * 场中场标识（0=否 1=是）
      */
     area?: number;
 
     /**
      * 车牌修正标识（0=否 1=是）
      */
     modifyLpnFlag?: number;
 
     /**
      * 识别可信度
      */
     recognitionCredibility?: string;
 
     /**
      * 放行类型 ，详见参数枚举1.6.10
      */
     passType?: number;
 
     /**
      * 放行说明
      */
     passRemark?: string;
 
     /**
      * 剩余车位
      */
     freeLots?: number;
 
     /**
      * 总车位
      */
     totalLots?: number;
 
     /**
      * 入场数据扩展信息，json对象
      */
     carInExt?: {
         /**
          * 车牌颜色 详见参数枚举1.6.11（白、黑、灰等）
          */
         plateColor?: string;
 
         /**
          * 车辆品牌（奥迪、宝马、奔驰等）
          */
         vehicleBrand?: string;
 
         /**
          * 车辆型号（大型车，小型车，摩托车等现只有6x才有此值）
          */
         vehicleModel?: string;
 
         /**
          * 固定车过期天数
          */
         carExpireDay?: number;
 
         /**
          * 扩展字符串（6x才存在的参数）
          */
         extinfo?: string;
     };
 }
 
 /**
  * 3.2.2
  * 出场上报
  */
 export class PostCarOutInfoInput extends DataPushBase {
     /**
      * 出入场唯一记录ID
      */
     trafficId: string;
 
     /**
     * 车牌号
     */
     plateNo: string;
 
     /**
      * 入场取票号/无牌车入场的卡号
      */
     cardNo: string;
 
     /**
      * 入场时间
      */
     entryTime?: string;
 
     /**
      * 出场时间
      */
     leaveTime?: string;
 
     /**
      * 卡片类型 详见参数枚举1.6.2
      */
     carType?: number;
 
     /**
      * 出口名称（6.x系统取值是：通道名称 +“- ”+ 通道id；5.x系统取值是：通道名称（后续也需要调整成6.x一样，对接方需要兼容）
      */
     leavePlace?: string;
 
     /**
      * 出口抓拍图片名称
      */
     imgName?: string;
 
     /**
      * 图片信息类型：2=图片URL（可公网访问地址）
      */
     imgType: number;
 
     /**
      * 图片URL
      */
     imgInfo: string;
 
     /**
      * 场中场标识（0=否 1=是）
      */
     area: number;
 
     /**
      * 识别可信度
      */
     recognitionCredibility: string;
 
     /**
      * 放行类型，详见参数枚举1.6.10
      */
     passType: number;
 
     /**
      * 放行说明
      */
     passRemark: string;
 
     /**
      * 剩余车位
      */
     freeLots: number;
 
     /**
      * 总车位
      */
     totalLots: number;
 
     /**
      * 支付信息，json对象
      */
     payMentInfo?: {
         /**
          * 应收总金额（单位分）
          */
         totalMoney?: number;
 
         /**
          * 实收总金额（单位分）
          */
         paidMoney?: number;
 
         /**
          * 抵扣时长（单位秒）
          */
         freeTime?: number;
 
         /**
          * 抵扣金额（单位分）
          */
         freeMoney?: number;
 
         /**
          * 后付费出场（0=否 1=是）
          */
         isPostPay: number;
     };
 
     /**
      * 车辆扩展信息，json对象（不参与签名）
      */
     carExtInfo?: {
         /**
          * 车牌颜色 详见参数枚举1.6.11（白、黑、灰等）
          */
         plateColor: string;
 
         /**
          * 车辆品牌（奥迪、宝马、奔驰等）
          */
         vehicleBrand: string;
 
         /**
          * 车辆型号（大型车，小型车，摩托车等现只有6x才有此值）
          */
         vehicleModel: string;
 
         /**
          * 扩展字符串（6x才存在的参数）
          */
         extinfo: string;
     };
 }
 
 /**
  * 3.2.3缴费记录上报
  */
 export class PostPayFeeInfoInput extends DataPushBase {
     /**
      * 车牌号
      */
     plateNo?: string;
 
     /**
      * 入场取票号/无牌车入场的卡号
      */
     cardNo?: string;
 
     /**
      * 主账单id
      */
     billId: string;
 
     /**
      * 入场时间
      */
     entryTime: string;
 
     /**
      * 支付时间
      */
     payTime: string;
 
     /**
      * 支付来源 详见参数枚举 1.6.5
      * 对应dict表PAY_SOURCE
      */
     paySource: number;
 
     /**
      * 收费终端，详见参数枚举1.6.4
      * 对应dict表PAY_CHANNEL
      */
     payType: number;
 
     /**
      * 付款方式，详见参数枚举 1.6.3
      * 对应dict表PAY_METHOD
      */
     payMethod: number;
 
     /**
      * 应收总金额（单位分）
      */
     totalMoney: number;
 
     /**
      * 实收总金额（单位分）
      */
     paidMoney: number;
 
     /**
      * 抵扣时长（单位秒）
      */
     freeTime: number;
 
     /**
      * 抵扣金额（单位分）
      */
     freeMoney: number;
 
     /**
      * 车场订单号
      */
     orderNo?: string;
 
     /**
      * 支付定单号
      */
     paymentOrderNo?: string;
 
     /**
      * 车牌颜色 详见参数枚举1.6.11（白、黑、灰等）
      */
     plateColor?: string;
 
     /**
      * 获取优惠金额，单位分
      * 不能直接从字段freeMoney取
      * @param input 
      * @returns 
      */
     static getFreeMoney(input: PostPayFeeInfoInput) {
         return ([1010, 1012, 1013, 1014].includes(input.payMethod) ? input.paidMoney : 0) + input.freeMoney;
     }
 
     /**
      * 获取实收金额，单位分
      * 不能直接从字段paidMoney取
      * @param input 
      */
     static getPaidMoney(input: PostPayFeeInfoInput) {
         return [1010, 1012, 1013, 1014].includes(input.payMethod) ? 0 : input.paidMoney;
     }
 }
 
 /**
  * 3.2.4空闲车位上报
  */
 export class PostFreeParkingSpaceInput extends DataPushBase {
     /**
      * 总剩余车位数
      */
     freeSpaceNum: number;
 
     /**
      * 总车位数
      */
     totalSpaceNum: number;
 
     areaInfo: [{
         areaCode: string;
         areaName: string;
 
         /**
          * 区域剩余车位数
          */
         areaFreeSpaceNum: number;
     }]
 }
 
 /**
  * 3.2.6修改车牌信息上报
  */
 export class PostModifyPlateNoInput extends DataPushBase {
     /**
      * 出入场唯一记录ID
      */
     trafficId: string;
     oldPlateNo: string;
     newPlateNo: string;
     remark: string;
 }
 
 /**
  * 3.2.7车场固定车信息上报
  */
 export class PostCarCardInfoInput extends DataPushBase {
     /**
      * 卡片id
      */
     cardId: number;
 
     /**
      * 卡片名称  
      */
     cardName: string;
 
     /**
      * 户主名  
      */
     useName?: string;
 
     /**
      * 用户手机号
      */
     tel?: string;
 
     /**
      * 房间号
      */
     roomId?: string;
 
     /**
      * 备注
      */
     remak?: string;
 
     /**
      * 车位数量
      */
     lotCount?: string;
 
     /**
      * 未过期车位数量
      */
     validCount?: string;
     carLotList: {
         /**
          * 车位ID
          */
         id: number;
 
         /**
          * 车位名称
          */
         lotName?: string;
 
         /**
          * 固定车类型  详见参数枚举 1.6.2
          */
         carType: number;
 
         /**
          * 车牌类型名称
          */
         carTypeName: string;
 
         /**
          * 区域名称
          */
         areaName: string;
 
         /**
          * 区域id
          */
         areaId: string;
 
         /**
          * 有效期开始时间（没有有效期时为空）
          */
         beginTime?: string;
 
         /**
          * 有效期结束时间（没有有效期时为空）
          */
         endTime?: string;
 
         /**
          * 占用车位个数
          */
         lotCount: number;
 
         /**
          * 卡内余额(充值车：分，计次车：次)
          */
         validValue: number;
     }
 
     plateNoInfo: {
         id: number;
 
         /**
          * 车牌号
          */
         plateNo: string;
 
         /**
          * ETC号/卡号
          */
         etcNo: string;
 
     }[];
 
     /**
      * 审核状态(0:未审核,1:审核,2:审核不通过)默认为1
      */
     cardState: number;
 
     /**
      * 操作标识 0=删除 1=新增 2=更新
      */
     operationType: number;
 
     /**
      * 创建时间，yyyy-MM-dd HH:mm:ss
      */
     createTime: string;
 }
 
 /**
  * 
  * 进出车位上报
  */
 export class PostBusInOutInput extends DataPushBase {
     carList: any;
     /*
     plateNo: string;
     //plateColor: string;
     busNumber: string;
     areaName: string;
     mapName: string;
     stopTime: string;
     stopFlag: string;
     imgName: string;
     */
 }
 
 /**
  * 3.2.10车场交班信息上报
  */
 export class PostShiftWorkInfoInput extends DataPushBase {
     /**
      * 交班ID （车场自定义）
      */
     exchangeCode: string;
 
     /**
      * 收费员
      */
     chargeMan: string;
 
     /**
      * 交班时间，yyyy-MM-dd HH:mm:ss
      * 
      * 退机时间
      */
     exchangeTime: string;
 
     /**
      * 上岗时间，yyyy-MM-dd HH:mm:ss
      * 
      * 上机时间
      */
     startTime: string;
 
     /**
      * 实收金额（单位：分）
      */
     money: number;
 
     /**
      * 应收金额（单位：分）
      */
     totalMoney: number;
 }
 
 export class GetCarCardInfoRequest extends ApiRequestBase {
     /**
      * 车牌号
      */
     plateNo?: string;
 
     /**
      * 卡片id
      */
     cardId?: number;
 }
 
 export class GetCarCardInfoResponse {
     /**
      * 卡片id
      */
     cardId?: number;
 
     /**
      * 卡片名称  
      */
     cardName?: string;
 
     /**
      * 户主名  
      */
     useName?: string;
 
     /**
      * 房间号
      */
     roomId?: string;
 
     /**
      * 否
      */
     remak?: string;
 
     /**
      * 车位数量
      */
     lotCount?: string;
 
     /**
      * 未过期车位数量
      */
     validCount?: string;
 
     /**
      * 车主电话
      */
     tel?: string;
 
     /**
      * 车牌号，多个车牌号用，隔开
      */
     fullCarNoStr?: string;
 
     /**
      * 联系地址
      */
     contact?: string;
 
     /**
      * 辅助信息
      */
     assist?: string;
 
     /**
      * 车位信息 array字符串
      */
     carLotList: string;
 
     /**
      * 车牌列表 json数组字符串
      */
     plateNoInfo: string;
 
     /**
      * 最后一次更新时间yyyy-MM-dd 00:00:00
      */
     lastUpdateTime: string;
 
     /**
      * 审核状态(0:未审核,1:审核,2:审核不通过（注销）)默认为1
      */
     cardState: number;
 }
 
 export class AddCarCardNoRequest extends ApiRequestBase {
     /**
      * 操作人id
      */
     userId: number;
 
     /**
      * 操作人姓名
      */
     userName: string;
 
     /**
      * 车主信息Object字符串
      */
     cardInfo: string;
 
     /**
      * 车位信息 array字符串
      */
     carLotList: string;
 
     /**
      * 车牌列表 json数组字符串
      */
     plateNoInfo: string;
 }
 
 export class GetParkingNodeRequest extends ApiRequestBase {
     pageIndex: number;
     pageSize: number;
 }
 
 export class GetParkingNodeResponse {
     pageIndex: number;
     pageSize: number;
     totalCount: number;
     nodeList: {
         /**
              * 设备编码（此设备编号为设备的id（数据库主键））
              */
         deviceCode: string;
 
         /**
          * 设备Ip
          */
         deviceIp: string;
 
         /**
          * 设备名称
          */
         deviceName: string;
 
         /**
          * 设备类型 详见参数枚举1.6.6
          */
         deviceType: number;
     }[];
 }
 
 export class GetDeviceListRequest extends ApiRequestBase {
     deviceType?: number = 0;
 }
 
 export class GetFreeSpaceNumRequest extends ApiRequestBase {
 }
 
 export class GetFreeSpaceNumResponse {
     /**
      * 车场id
      */
     parkId: number;
 
     /**
      * string
      */
     parkName: string;
 
     /**
      * 总车位数
      */
     totalNum: number;
 
     /**
      * 空闲车位数
      */
     freeSpaceNum: number;
 }
 
 export class GetDeviceStatusRequest extends ApiRequestBase {
     deviceType?: number = 0;
 }
 
 export class GetCarInfoByNodeIdRequest extends ApiRequestBase {
     /**
      * nodeId、nodeIp二选一
      */
     nodeId?: any;
 
     /**
      * nodeId、nodeIp二选一
      */
     nodeIp?: string;
 }
 
 export class GetCarInfoByNodeIdResponse {
     /**
      * 车牌号 
      */
     carPlateNum: string;
 
     /**
      * 抓拍时间
      */
     capTime: string;
 
     /**
      * 序列号
      */
     serial: string;
 }
 
 export class RemoteOpenRequest extends ApiRequestBase {
     nodeId: any;
     plateNo?: string;
 
     /**
      * 放行类型
      */
     type: number;
 
     /**
      * 放行说明
      */
     remark?: string;
 }
 
 export class ModifyCarInfoRequest extends ApiRequestBase {
     /**
      * 车牌号码 必填
      */
     plateNo?: string;
 
     /**
      * 入场取票号/无牌车入场的卡号
      */
     cardNo?: string;
 
     /**
      * 修改后的入场取票号/卡号
      */
     newCardNo?: string;
 
     /**
      * 车辆类型 详见参数枚举1.6.8
      */
     carStyle?: string;
 
     /**
      * 车颜色 黑、白、蓝、红等
      */
     carColor?: string;
 
     /**
      * 备注
      */
     remark?: string;
 }
 
 export class AddVirtualTrafficReuqest extends ApiRequestBase {
     /**
      * 车牌号
      */
     plateNo?: string;
 
     /**
      * 入场通道id
      */
     nodeId?: number;
 
     /**
      车辆图片
      */
     imgName?: string;
 
     /**
      * 相机识别值
      */
     recogEnable: number;
 
     /**
      * 免进出场时间（yyyy-MM-dd HH:mm:ss）
      */
     carTime: string;
 
     /**
     * 放行类型
     */
     abnormal: number;
 
     /**
      * 车型类型
      */
     carStyle: number;
 
     /**
    * 来源车场
    */
     fromLotCode: string;
 
     /**
     * 车牌颜色
     */
     plateNoColor: string;
 }
 
 export class AddCarBlackInfoReuqest extends ApiRequestBase {
     /**
      * 车牌号
      */
     plateNo: string;
 
     /**
      * 原因备注
      */
     remark;
 
     /**
      * 车场Id
      */
     parkId: any;
 
     /**
      * 限制类型
      */
     readonly type = 3;
 }
 
 export class DelCarBlackInfoReuqest extends ApiRequestBase {
     /**
      * 车牌号
      */
     plateNo: string;
 
     /**
      * 原因备注
      */
     remark;
 
     /**
      * 车场Id
      */
     parkId: any;
 }
 
 export class LockCarplateReuqest extends ApiRequestBase {
     plateNo: string;
 }
 
 export class UnlockCarplateReuqest extends ApiRequestBase {
     plateNo: string;
 }
 
 export class QueryCurrentUserRequest extends ApiRequestBase {
 }
 
 export class QueryCurrentUserResponse {
     /**
      * 
      */
     createDate?: string;
 
     /**
      * 
      */
     createId?: string;
 
     /**
      * 
      */
     createSystem?: string;
 
     /**
      * 
      */
     deleted?: number;
 
     /**
      * 
      */
     lotId?: string;
 
     /**
      * 
      */
     merId?: string;
 
     /**
      * 
      */
     merName?: string;
 
     /**
      * 
      */
     password?: string;
 
     /**
      * 
      */
     permissions?: string;
 
     /**
      * 
      */
     realName?: string;
 
     /**
      * 
      */
     remark?: string;
 
     /**
      * 
      */
     sessionId?: string;
 
     /**
      * 
      */
     status?: number;
 
     /**
      * 
      */
     stcId?: string;
 
     /**
      * 
      */
     userAgent?: string;
 
     /**
      * 
      */
     userId?: number;
 
     /**
      * 
      */
     userName?: string;
 
     /**
      * 
      */
     userRole?: string;
 
     /**
      * 
      */
     version?: string;
 }
 
 export class QueryRecordByIdRequest extends ApiRequestBase {
     recordId: string;
 }
 
 export class QueryRecordByIdResponse {
     /**
      * 抵用券名称
      */
     couponName?: string;
 
     /**
      * 抵用券Id
      */
     couponId?: string;
 
     /**
      * 抵扣券类别 1金额 2时间 3全免 4折扣 5访客券
      */
     couponType?: string;
 
     /**
      * 使用张数
      */
     amount?: number;
 
     /**
      * 车牌
      */
     carPlateNum?: string;
 
     /**
      * 抵扣折度
      */
     discountRate?: number;
 
     /**
      * 图片地址
      */
     imgUrl?: string;
 
     /**
      * 创建时间
      */
     createTime?: Date;
 
     /**
      * 商户id
      */
     merId?: string;
 
     /**
      * 商户名称
      */
     merName?: string;
 
     /**
      * 记录Id
      */
     recordId?: string;
 
     /**
      * 备注
      */
     remark?: string;
 
     /**
      * 发券方式 1扫一扫发放 2输车牌 3固定二维码
      */
     useType?: string;
 
     /**
      * 发放人
      */
     realName?: string;
 
     /**
      * 操作人
      */
     userName?: string;
 
     /**
      * 全免抵扣时长（分钟）
      */
     totalDeduTime?: number;
 
     /**
      * 抵用金额
      */
     totalMoney?: number;
 
     /**
      * 抵用时间
      */
     totalTime?: number;
 }
 
 export class FindLotRolesRequest extends ApiRequestBase {
     pageIndex: number;
     pageSize: number;
 }
 
 export class FindListByLotIdPageRequest extends ApiRequestBase {
     pageIndex: number;
     pageSize: number;
 }
 
 export class FindListByLotIdPageResponse {
     totalItems: number;
     totalPages: number;
     list: {
         /**
  * 创建时间
  */
         createdTime?: string;
 
         /**
          * 登录名称
          */
         loginName?: string;
 
         /**
          * 邮箱
          */
         mail?: string;
 
         /**
          * 名称
          */
         name?: string;
 
         /**
          * 昵称
          */
         nickname?: string;
 
         /**
          * 密码
          */
         passwd?: string;
 
         /**
          * 备注
          */
         remarks?: string;
 
         /**
          * 用户拥有的角色id
          */
         roleIds?: string;
 
         /**
          * 用户拥有的角色名称
          */
         roleNames?: string;
 
         /**
          * 状态
          */
         state?: string;
 
         /**
          * 手机号码
          */
         tel?: string;
 
         /**
          * 用户id
          */
         userId?: string;
 
         /**
          * 用户头像
          */
         userImgAddr?: string;
     }[]
 }
 
 export class FindLotRolesResponse {
     totalItems: number;
     totalPages: number;
     list: {
         /**
          * 创建人
          */
         createdBy?: string;
 
         /**
          * 创建人名称
          */
         createdByName?: string;
 
         /**
          * 创建时间
          */
         createdTime?: string;
 
         /**
          * 是否删除
          */
         deleted?: number;
 
         /**
          * 名称
          */
         name?: string;
 
         /**
          * 备注
          */
         remarks?: string;
 
         /**
          * 角色id
          */
         roleId?: string;
 
         /**
          * 模板id
          */
         tempId?: string;
 
         /**
          * 更新人
          */
         updatedBy?: string;
 
         /**
          * 更新人名称
          */
         updatedByName?: string;
 
         /**
          * 更新时间
          */
         updatedTime?: string;
     }[]
 }
 
 export class Recharge3rdByUnityRequest extends ApiRequestBase {
     /**
      * 抵用券id
      */
     couponId: string;
     merId: string;
     password: string;
 
     /**
      * 抵扣张数
      */
     totalNum: number;
     userName: string;
 }
 
 export class QueryLotMer4UnityRequest extends ApiRequestBase {
 }
 
 export class GetMyBaseInfoRequest extends ApiRequestBase {
 }
 
 export class GetMyBaseInfoReponse {
     /**
      * 创建时间
      */
     createdTime?: string;
 
     /**
      * 登录名
      */
     loginName?: string;
 
     /**
      * 邮箱
      */
     mail?: string;
 
     /**
      * 名称
      */
     name?: string;
 
     /**
      * 昵称
      */
     nickname?: string;
 
     /**
      * 密码
      */
     passwd?: string;
 
     /**
      * 备注
      */
     remarks?: string;
 
     /**
      * 角色id
      */
     roleIds?: string;
 
     /**
      * 角色名称
      */
     roleNames?: string;
 
     /**
      * 状态
      */
     state?: string;
 
     /**
      * 电脑
      */
     tel?: string;
 
     /**
      * 用户id
      */
     userId?: string;
 
     /**
      * 用户头像
      */
     userImgAddr?: string;
 }
 
 export class ModifyCarCardNoRequest extends ApiRequestBase {
     userId: number;
     userName: string;
 
     /**
      * 车主信息 object字符串
      */
     cardInfo: string;
 
     /**
      * 车位信息 array字符串
      */
     carLotList: string;
 
     /**
      * 车牌列表 json数组字符串
      * 单独传递一个id就算是删除车牌
      */
     plateNoInfo: string;
 }
 
 export class DelCarCardInfoRequest extends ApiRequestBase {
     /**
      * 卡片Id
      */
     cardId: string;
 }
 
 /**
  * 3.2.8车场固定车充值信息上报
  */
 export class PostCarCardChargeInfoInput extends DataPushBase {
     /**
      * 卡片id
      */
     cardId: number;
         /**
      * 订单号 
      */
     orderNo:string;
         /**
      * 卡片类型  
      */
     carType:number;
         /**
      * 支付渠道 
      */
     payChannel:number;
         /**
      * 充值方式 
      */
     chargeMethod:number;
             /**
      * 充值天数次数钱数
      */
     chargeNumber:number;
         /**
      * 支付金额  
      */
     amount:number;
         /**
      * 免费额度 
      */
     freeNumber:number;
         /**
      * 充值开始时间 
      */
     validFrom :string;
         /**
      * 充值结束时间 
      */
     validTo:string;
         /**
      * 创建时间 
      */
     createTime:string;
         /**
      * 备注 
      */
     remark:string;
         /**
      * 0充值1退款 
      */
     rechargeType:number;
         /**
      * 0=删除 1=新增 2=更新 
      */
     operationType:number;
         /**
      * 操作人员 
      */
     operator:string;
         /**
      * 支付来源 
      */
     paySource:string;
 }
 
 export class PayCarCardFeeRequest extends ApiRequestBase {
     userId: number;
     userName: string;
     cardId: number;
 
     orderNo: string;
 
     /**
      * 固定车类型 详见参数枚举 1.6.2
      */
     carType: number;
 
     /**
      * 支付渠道,详见参数枚举 1.6.3
      */
     payChannel: number;
 
     /**
      * 充值方式,(0 钱(单位:分),1 月,2 天,3 小时,4次)
      */
     chargeMethod: number;
 
     /**
      * 充值车的充值月数或天数或次数或金额
      */
     chargeNumber: number;
 
     /**
      * 支付金额（单位：分）
      */
     amount: number;
 
     /**
      * 免费赠送的月数或天数或次数
      */
     freeNumber: number;
 
     /**
      * 充值开始时间建议00:00:00(yyyy-MM-dd HH:mm:ss）
      */
     validFrom: string;
 
     /**
      * 充值结束时间建议23:59:59(yyyy-MM-dd HH:mm:ss）
      */
     validTo: string;
     createTime: string;
     remark: string;
 }
 
 export class RefundCarCardFeeRequest extends ApiRequestBase {
     userId: number;
     userName: string;
     cardId: number;
     orderNo: string;
     /**
      * 固定车类型 详见参数枚举 1.6.2
      */
     carType: number;
     /**
      * 支付渠道,详见参数枚举 1.6.3
      */
     payChannel: number;
     /**
  * 支付金额（单位：分）
  */
     amount: number;
     /**
  * 退款方式,(0 钱(单位:分),1 月,2 天,3 小时,4次)
  */
     refundMethod: number;
     /**
  * 充值车的充值月数或天数或次数或金额
  */
     refundNumber: number;
     /**
  * 充值开始时间建议00:00:00(yyyy-MM-dd HH:mm:ss）
  */
     validFrom: string;
 
     /**
      * 充值结束时间建议23:59:59(yyyy-MM-dd HH:mm:ss）
      */
     validTo: string;
     remark: string;
 }
 /**
  * 2.4.1用户车位预订
  */
 export class ReserveSpaceRequest extends ApiRequestBase {
     /**
      * 车牌号(6位车牌号)
      */
     plateNo?: string;
 
     /**
      * 取票号 （添加时和车牌二选一（6.x才支持））
      */
     cardNo?: string;
 
     /**
      * 类型： 0：车位 1：区域 
      */
     type: 0 | 1;
 
     /**
      * 选定的车位/区域ID
      */
     addrId: number;
 
     /**
      * 预订入场时间
      */
     enterTime: string;
 
     /**
      * 预约离场时间 若为null，车场默认停车4小时
      */
     leaveTime: string;
 
     /**
      * 用户名
      */
     userName?: string;
 
     /**
      * 联系电话
      */
     tel: string;
 
     /**
      * 预订失效时间
      */
     failureTime: string;
 
     /**
      * 0：只允许进出一次1：允许多次进出场(必传)
      */
     flag: number;
 
     /**
      * 是否允许场内预约(非必传)1：允许
      */
     flag2?: number;
 
     /**
      * 商户名称
      */
     merchantName?: string;
 
     /**
      * 备注
      */
     remark?: string;
 
     /**
      * 车牌类型 默认100（标准预约车）6x才需要传此参数--6x必须填写
      */
     cardType: number;
 }
 
 export class ReserveSpaceResponse { 
     orderNo: string;
     keepTime: string;
 }
 /**
  * 2.4.2修改预约车有效期
  */
 export class ReserveSpaceChangeTimeRequest extends ApiRequestBase {
     orderNo: string;
     enterTime: string;
     leaveTime: string;
     failureTime: string;
     flag?: string;
 }
 /**
  * 2.4.3车位预订取消接口
  */
 export class CancelReserveSpaceRequest extends ApiRequestBase {
     /**
      * 预约订单号
      */
     orderNo: string;
 }
 /**
  * 2.4.4预订车位查询接口
  */
  export class GetReservableInfoRequest extends ApiRequestBase {

    enterTime: string;
    leaveTime?: string;
 }

 export { TyExternalApiClient }