import type { z } from "zod/v4"; import { AudioContentFormatSchema, ContentFormatSchema, ImageContentFormatSchema, NonTextContentFormatSchema, TextContentFormatSchema, VideoContentFormatSchema, } from "../schemas/contentformat.ts"; import type { JSONObject } from "../types.ts"; export class ContentFormat { public static fromJSON(data: JSONObject): Promise { return ContentFormatSchema.parseAsync(data).then( (d) => new ContentFormat(d), ); } public constructor(public data: z.infer) {} } export class TextContentFormat extends ContentFormat { public static override fromJSON( data: JSONObject, ): Promise { return TextContentFormatSchema.parseAsync(data).then( (d) => new TextContentFormat(d), ); } public constructor( public override data: z.infer, ) { super(data); } } export class NonTextContentFormat extends ContentFormat { public static override fromJSON( data: JSONObject, ): Promise { return NonTextContentFormatSchema.parseAsync(data).then( (d) => new NonTextContentFormat(d), ); } public constructor( public override data: z.infer, ) { super(data); } } export class ImageContentFormat extends ContentFormat { public static override fromJSON( data: JSONObject, ): Promise { return ImageContentFormatSchema.parseAsync(data).then( (d) => new ImageContentFormat(d), ); } public constructor( public override data: z.infer, ) { super(data); } } export class VideoContentFormat extends ContentFormat { public static override fromJSON( data: JSONObject, ): Promise { return VideoContentFormatSchema.parseAsync(data).then( (d) => new VideoContentFormat(d), ); } public constructor( public override data: z.infer, ) { super(data); } } export class AudioContentFormat extends ContentFormat { public static override fromJSON( data: JSONObject, ): Promise { return AudioContentFormatSchema.parseAsync(data).then( (d) => new AudioContentFormat(d), ); } public constructor( public override data: z.infer, ) { super(data); } }