import { z } from 'zod'; export const timestampSchema = z.object({ createdAt: z.coerce.date(), updatedAt: z.coerce.date(), }); export const paginationQuerySchema = z.object({ page: z.coerce.number().int().positive().default(1), limit: z.coerce.number().int().positive().max(100).default(20), }); export const paginationResponseSchema = z.object({ page: z.number().int().positive(), limit: z.number().int().positive(), total: z.number().int().nonnegative(), totalPages: z.number().int().nonnegative(), }); export const errorResponseSchema = z.object({ message: z.string(), code: z.string().optional(), details: z.record(z.unknown()).optional(), }); /** Standard body for HTTP 402 — clients branch on `code === 'INSUFFICIENT_TOKENS'`. */ export const insufficientTokensErrorSchema = z.object({ message: z.string(), code: z.literal('INSUFFICIENT_TOKENS'), requiredTokens: z.number().int().nonnegative(), balance: z.number().int().nonnegative(), }); export const successResponseSchema = z.object({ message: z.string(), }); export type TimestampFields = z.infer; export type PaginationQuery = z.infer; export type PaginationResponse = z.infer; export type ErrorResponse = z.infer; export type InsufficientTokensError = z.infer; export type SuccessResponse = z.infer;