import { z } from 'zod';

// =============================================================================
// Referral Program Schemas
// =============================================================================

export const CreateReferralSchema = z.object({
  name: z.string().min(1, 'Campaign name is required').max(200),
  description: z.string().max(500).optional().nullable(),
  rewardType: z.enum(['percentage', 'fixed', 'free_session']),
  rewardValue: z.number().min(0).max(10000),
  maxUses: z.number().int().min(1).optional().nullable(),
  expiresAt: z.string().optional().nullable(),
});

export const UpdateReferralSchema = CreateReferralSchema.partial().extend({
  status: z.enum(['active', 'paused', 'expired']).optional(),
});

// =============================================================================
// Inferred Types
// =============================================================================

export type CreateReferralInput = z.infer<typeof CreateReferralSchema>;
export type UpdateReferralInput = z.infer<typeof UpdateReferralSchema>;
