/** * 图片上传响应 DTO */ import { ImageUploadResponseSchema, type ImageUploadResponseInput, type ImageUploadResponseData, } from "@/data/schemas/chat/image_upload_response"; export class ImageUploadResponse { declare readonly success: boolean; declare readonly imageId: string; declare readonly thumbUrl: string; declare readonly mediumUrl: string; declare readonly originalUrl: string; declare readonly width: number; declare readonly height: number; declare readonly bytes: number; private constructor(input: ImageUploadResponseInput) { const data = ImageUploadResponseSchema.parse(input); Object.assign(this, data); Object.freeze(this); } static from(input: ImageUploadResponseInput): ImageUploadResponse { return new ImageUploadResponse(input); } static fromJson(json: unknown): ImageUploadResponse { return ImageUploadResponse.from(json as ImageUploadResponseInput); } toJson(): ImageUploadResponseData { return ImageUploadResponseSchema.parse(this); } }