export interface DesignRules { colors?: { primary?: string[]; secondary?: string[]; neutral?: string[]; allowUnknown?: boolean; }; typography?: { families?: string[]; sizes?: number[]; weights?: number[]; }; spacing?: { values?: number[]; tolerance?: number; }; borderRadius?: { values?: number[]; tolerance?: number; }; notifications?: { slack?: { webhook?: string; channel?: string; }; discord?: { webhook?: string; }; }; github?: { enabled?: boolean; repo?: string; labels?: string[]; }; ignore?: { frames?: string[]; components?: string[]; }; severity?: { [key: string]: 'critical' | 'warning' | 'info'; }; } export interface Violation { type: 'color' | 'typography' | 'spacing' | 'borderRadius' | 'custom'; severity: 'critical' | 'warning' | 'info'; message: string; node: { id: string; name: string; type: string; }; expected?: any; actual?: any; frame?: string; page?: string; } export interface FigmaNode { id: string; name: string; type: string; fills?: any[]; strokes?: any[]; effects?: any[]; style?: any; children?: FigmaNode[]; absoluteBoundingBox?: any; paddingLeft?: number; paddingRight?: number; paddingTop?: number; paddingBottom?: number; itemSpacing?: number; cornerRadius?: number; } export interface ComplianceReport { fileKey: string; fileName: string; timestamp: string; violations: Violation[]; summary: { total: number; bySeverity: Record; byType: Record; }; } export interface BotConfig { figmaToken: string; rules: string | DesignRules; githubToken?: string; slackWebhook?: string; discordWebhook?: string; }