/** * Unified Rule Configuration System * Single source of truth for all doc-standards rules */ import { z } from 'zod'; /** * Core validation rule schema - used by all validators */ export declare const UnifiedRuleSchema: z.ZodObject<{ maxLines: z.ZodDefault; minCodeBlockPercentage: z.ZodDefault; requiredSections: z.ZodDefault>; blockedPatterns: z.ZodDefault>; claudeEmojis: z.ZodDefault; validEmojis: z.ZodDefault>; }, "strip", z.ZodTypeAny, { required: boolean; validEmojis: string[]; }, { required?: boolean | undefined; validEmojis?: string[] | undefined; }>>; enforcementLevel: z.ZodDefault>; naming: z.ZodOptional; autoSuggestRenames: z.ZodDefault; namingRules: z.ZodOptional; category: z.ZodString; }, "strip", z.ZodTypeAny, { pattern: string; description: string; examples: string[]; category: string; }, { pattern: string; description: string; examples: string[]; category: string; }>, "many">>; }, "strip", z.ZodTypeAny, { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; }, { enforceConventions?: boolean | undefined; autoSuggestRenames?: boolean | undefined; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; }>>; }, "strip", z.ZodTypeAny, { maxLines: number; minCodeBlockPercentage: number; requiredSections: string[]; blockedPatterns: string[]; claudeEmojis: { required: boolean; validEmojis: string[]; }; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }, { maxLines?: number | undefined; minCodeBlockPercentage?: number | undefined; requiredSections?: string[] | undefined; blockedPatterns?: string[] | undefined; claudeEmojis?: { required?: boolean | undefined; validEmojis?: string[] | undefined; } | undefined; enforcementLevel?: "error" | "warning" | "info" | undefined; naming?: { enforceConventions?: boolean | undefined; autoSuggestRenames?: boolean | undefined; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }>; export type UnifiedRule = z.infer; /** * Base blocked patterns that should be avoided in all documentation */ export declare const BASE_BLOCKED_PATTERNS: string[]; /** * Default unified rule configuration */ export declare const DEFAULT_UNIFIED_RULES: UnifiedRule; /** * Project type configurations with specific overrides */ export declare const PROJECT_RULE_CONFIGS: { nextjs: { claudeEmojis: { required: boolean; validEmojis: string[]; }; requiredSections: string[]; blockedPatterns: string[]; maxLines: number; minCodeBlockPercentage: number; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; flutter: { claudeEmojis: { required: boolean; validEmojis: string[]; }; requiredSections: string[]; minCodeBlockPercentage: number; maxLines: number; blockedPatterns: string[]; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; monorepo: { claudeEmojis: { required: boolean; validEmojis: string[]; }; requiredSections: string[]; maxLines: number; minCodeBlockPercentage: number; blockedPatterns: string[]; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; package: { requiredSections: string[]; minCodeBlockPercentage: number; maxLines: number; blockedPatterns: string[]; claudeEmojis: { required: boolean; validEmojis: string[]; }; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; backend: { requiredSections: string[]; blockedPatterns: string[]; maxLines: number; minCodeBlockPercentage: number; claudeEmojis: { required: boolean; validEmojis: string[]; }; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; shopify: { requiredSections: string[]; blockedPatterns: string[]; maxLines: number; minCodeBlockPercentage: number; claudeEmojis: { required: boolean; validEmojis: string[]; }; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; }; /** * Get project-specific rules with fallback to defaults */ export declare function getProjectRules(projectType?: keyof typeof PROJECT_RULE_CONFIGS): UnifiedRule; /** * Merge custom rules with defaults */ export declare function mergeRules(customRules: Partial, baseRules?: UnifiedRule): UnifiedRule; /** * Validate rules configuration */ export declare function validateRules(rules: unknown): UnifiedRule; declare const _default: { DEFAULT_UNIFIED_RULES: { maxLines: number; minCodeBlockPercentage: number; requiredSections: string[]; blockedPatterns: string[]; claudeEmojis: { required: boolean; validEmojis: string[]; }; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; BASE_BLOCKED_PATTERNS: string[]; PROJECT_RULE_CONFIGS: { nextjs: { claudeEmojis: { required: boolean; validEmojis: string[]; }; requiredSections: string[]; blockedPatterns: string[]; maxLines: number; minCodeBlockPercentage: number; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; flutter: { claudeEmojis: { required: boolean; validEmojis: string[]; }; requiredSections: string[]; minCodeBlockPercentage: number; maxLines: number; blockedPatterns: string[]; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; monorepo: { claudeEmojis: { required: boolean; validEmojis: string[]; }; requiredSections: string[]; maxLines: number; minCodeBlockPercentage: number; blockedPatterns: string[]; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; package: { requiredSections: string[]; minCodeBlockPercentage: number; maxLines: number; blockedPatterns: string[]; claudeEmojis: { required: boolean; validEmojis: string[]; }; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; backend: { requiredSections: string[]; blockedPatterns: string[]; maxLines: number; minCodeBlockPercentage: number; claudeEmojis: { required: boolean; validEmojis: string[]; }; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; shopify: { requiredSections: string[]; blockedPatterns: string[]; maxLines: number; minCodeBlockPercentage: number; claudeEmojis: { required: boolean; validEmojis: string[]; }; enforcementLevel: "error" | "warning" | "info"; naming?: { enforceConventions: boolean; autoSuggestRenames: boolean; namingRules?: { pattern: string; description: string; examples: string[]; category: string; }[] | undefined; } | undefined; }; }; getProjectRules: typeof getProjectRules; mergeRules: typeof mergeRules; validateRules: typeof validateRules; }; export default _default; //# sourceMappingURL=unified-rules.d.ts.map