export interface FontDefinition {
  family: string;
  url?: string;
  weights: number[];
  fallbacks: string[];
  loadingStrategy: 'eager' | 'lazy' | 'swap';
  category: 'sans-serif' | 'serif' | 'monospace' | 'display' | 'handwriting';
  popularity?: number;
}

export interface FontTheme {
  name: string;
  description?: string;
  fonts: {
    sans: FontDefinition;
    serif: FontDefinition;
    mono: FontDefinition;
    display: FontDefinition;
  };
}

export interface FontPreset {
  [key: string]: FontDefinition;
}

export interface FontLoadingOptions {
  display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';
  weights?: number[];
  subsets?: string[];
  text?: string;
}

export interface FontManagerConfig {
  defaultTheme?: string;
  preloadFonts?: boolean;
  fallbackTimeout?: number;
  cacheEnabled?: boolean;
}