import { z } from 'zod'; import { createPageSchema, createPageSizeSchema, createPaginationSchema } from './pagination.js'; const isoDateTimeSchema = z.string().datetime(); const pageSchema = createPageSchema(); const pageSizeSchema = createPageSizeSchema(10); const paginationSchema = createPaginationSchema(); export const paymentStatusSchema = z.enum(['PENDING', 'PAID', 'OVERDUE', 'CANCELLED']); export const PaymentDtoSchema = z.object({ id: z.string(), groupId: z.string(), attendeeId: z.string(), amount: z.coerce.number().positive(), currency: z.string(), status: paymentStatusSchema, dueDate: isoDateTimeSchema, paidAt: isoDateTimeSchema.nullable(), createdAt: isoDateTimeSchema, updatedAt: isoDateTimeSchema, }); export type PaymentDto = z.output; export const PaymentQuerySchema = z.object({ page: pageSchema, pageSize: pageSizeSchema, }); export type PaymentQuery = z.output; export const PaymentListSchema = z.object({ data: z.array(PaymentDtoSchema), pagination: paginationSchema, }); export type PaymentList = z.output;