import { z } from "zod" export const mediaAssetTypeSchema = z.enum([ "artwork", "banner", "promotion", "video", "gif", "generic", ]) export const artworkRenditionSlotSchema = z.enum(["thumbnail", "card", "full", "custom"]) export const createMediaAssetInputSchema = z.object({ id: z.string().uuid().optional(), type: mediaAssetTypeSchema, title: z.string().min(1).max(180), description: z.string().max(5000).optional(), altText: z.string().max(1000).optional(), source: z.string().max(500).optional(), copyright: z.string().max(500).optional(), author: z.string().max(180).optional(), tags: z.array(z.string().min(1).max(100)).default([]), storageKey: z.string().max(500).optional(), mimeType: z.string().max(180).optional(), sizeBytes: z.number().int().min(0).optional(), width: z.number().int().positive().optional(), height: z.number().int().positive().optional(), isPublished: z.boolean().optional(), }) export const updateMediaAssetInputSchema = z.object({ id: z.string().uuid(), type: mediaAssetTypeSchema.optional(), title: z.string().min(1).max(180).optional(), description: z.string().max(5000).nullable().optional(), altText: z.string().max(1000).nullable().optional(), source: z.string().max(500).nullable().optional(), copyright: z.string().max(500).nullable().optional(), author: z.string().max(180).nullable().optional(), tags: z.array(z.string().min(1).max(100)).optional(), mimeType: z.string().max(180).nullable().optional(), width: z.number().int().positive().nullable().optional(), height: z.number().int().positive().nullable().optional(), sizeBytes: z.number().int().min(0).nullable().optional(), isPublished: z.boolean().optional(), }) export const createArtworkInputSchema = z.object({ title: z.string().min(1).max(180), slug: z.string().min(1).max(180), description: z.string().max(5000).optional(), medium: z.string().max(180).optional(), dimensions: z.string().max(180).optional(), year: z.number().int().min(1000).max(9999).optional(), framing: z.string().max(180).optional(), availability: z.string().max(180).optional(), }) export const createGroupingInputSchema = z.object({ name: z.string().min(1).max(180), slug: z.string().min(1).max(180), description: z.string().max(5000).optional(), sortOrder: z.number().int().min(0).default(0), isVisible: z.boolean().default(true), }) export const linkArtworkGroupingInputSchema = z.object({ artworkId: z.string().uuid(), groupType: z.enum(["gallery", "album", "category", "tag"]), groupId: z.string().uuid(), }) export const attachArtworkRenditionInputSchema = z.object({ artworkId: z.string().uuid(), mediaAssetId: z.string().uuid(), slot: artworkRenditionSlotSchema, width: z.number().int().positive().optional(), height: z.number().int().positive().optional(), isPrimary: z.boolean().default(false), }) export type MediaAssetType = z.infer export type ArtworkRenditionSlot = z.infer export type CreateMediaAssetInput = z.infer export type UpdateMediaAssetInput = z.infer export type CreateArtworkInput = z.infer export type CreateGroupingInput = z.infer export type LinkArtworkGroupingInput = z.infer export type AttachArtworkRenditionInput = z.infer