import { z } from 'zod';

export const featuresConfigSchema = z.object({
  // Scanner features
  screenshots: z.object({
    enabled: z.boolean().default(true),
    quality: z.number().min(0).max(100).default(80),
    fullPage: z.boolean().default(false),
  }).default({}),
  
  customRules: z.object({
    enabled: z.boolean().default(true),
    maxRules: z.number().default(50),
  }).default({}),
  
  multiPage: z.object({
    enabled: z.boolean().default(true),
    maxPages: z.number().default(10),
    maxDepth: z.number().default(3),
  }).default({}),
  
  // API features
  apiKeys: z.object({
    enabled: z.boolean().default(true),
    maxPerUser: z.number().default(5),
  }).default({}),
  
  webhooks: z.object({
    enabled: z.boolean().default(true),
    maxPerWebsite: z.number().default(3),
    retryAttempts: z.number().default(3),
  }).default({}),
  
  // Report features
  reports: z.object({
    pdf: z.object({
      enabled: z.boolean().default(true),
      watermark: z.boolean().default(true),
    }).default({}),
    excel: z.object({
      enabled: z.boolean().default(false),
    }).default({}),
    scheduling: z.object({
      enabled: z.boolean().default(true),
    }).default({}),
  }).default({}),
  
  // Compliance features
  compliance: z.object({
    wcag20: z.boolean().default(true),
    wcag21: z.boolean().default(true),
    wcag22: z.boolean().default(true),
    section508: z.boolean().default(false),
    ada: z.boolean().default(true),
  }).default({}),
  
  // Integration features
  integrations: z.object({
    github: z.object({
      enabled: z.boolean().default(true),
    }).default({}),
    slack: z.object({
      enabled: z.boolean().default(true),
    }).default({}),
    teams: z.object({
      enabled: z.boolean().default(false),
    }).default({}),
    jira: z.object({
      enabled: z.boolean().default(false),
    }).default({}),
  }).default({}),
  
  // Enterprise features
  enterprise: z.object({
    sso: z.object({
      enabled: z.boolean().default(false),
      providers: z.array(z.enum(['saml', 'oauth', 'ldap'])).default([]),
    }).default({}),
    whiteLabel: z.object({
      enabled: z.boolean().default(false),
    }).default({}),
    audit: z.object({
      enabled: z.boolean().default(true),
      retention: z.number().default(365), // days
    }).default({}),
  }).default({}),
});

export type FeaturesConfig = z.infer<typeof featuresConfigSchema>;