export const RATE_LIMITS = {
  master: {
    requests: {
      windowMs: 60 * 60 * 1000, // 1 hour
      max: 1000,
    },
    generations: {
      windowMs: 60 * 60 * 1000, // 1 hour
      max: 100,
    },
  },
  project: {
    requests: {
      windowMs: 60 * 60 * 1000, // 1 hour
      max: 500,
    },
    generations: {
      windowMs: 60 * 60 * 1000, // 1 hour
      max: 50,
    },
  },
} as const;

export const PAGINATION_LIMITS = {
  DEFAULT_LIMIT: 20,
  MAX_LIMIT: 100,
  MIN_LIMIT: 1,
  DEFAULT_OFFSET: 0,
} as const;

export const IMAGE_LIMITS = {
  MAX_FILE_SIZE: 5 * 1024 * 1024, // 5MB
  MAX_REFERENCE_IMAGES: 3,
  MAX_WIDTH: 8192,
  MAX_HEIGHT: 8192,
  ALLOWED_MIME_TYPES: ['image/jpeg', 'image/png', 'image/webp'] as const,
} as const;

export const GENERATION_LIMITS = {
  MAX_PROMPT_LENGTH: 5000,
  MAX_RETRY_COUNT: 3,
  DEFAULT_ASPECT_RATIO: '16:9',
  ALLOWED_ASPECT_RATIOS: ['1:1', '16:9', '9:16', '3:2', '2:3', '4:3', '3:4'] as const,
} as const;

export const FLOW_LIMITS = {
  MAX_NAME_LENGTH: 100,
  MAX_DESCRIPTION_LENGTH: 500,
  MAX_ALIASES_PER_FLOW: 50,
} as const;

export const CACHE_LIMITS = {
  PRESIGNED_URL_EXPIRY: 24 * 60 * 60, // 24 hours in seconds
  CACHE_MAX_AGE: 365 * 24 * 60 * 60, // 1 year in seconds
} as const;
