/** * @fileoverview Rule Registry - Manages rule registration and retrieval * @module @nahisaho/musubix-security/rules/engine/rule-registry * @trace REQ-RULE-003 */ import type { SecurityRule, RuleConfig, RuleSettings } from '../types.js'; /** * Rule category for organization */ export type RuleCategory = 'owasp' | 'cwe' | 'custom' | 'all'; /** * Rule filter options */ export interface RuleFilter { /** Filter by category */ category?: RuleCategory; /** Filter by IDs */ ids?: string[]; /** Filter by tags */ tags?: string[]; /** Filter by detection method */ detectionMethod?: string; /** Only enabled rules */ enabledOnly?: boolean; } /** * Rule Registry * Manages registration and retrieval of security rules */ export declare class RuleRegistry { private rules; private rulesByCategory; private rulesByTag; /** * Register a rule * @param rule The rule to register * @param overwrite Whether to overwrite existing rule with same ID */ register(rule: SecurityRule, overwrite?: boolean): void; /** * Register multiple rules */ registerAll(rules: SecurityRule[]): void; /** * Unregister a rule */ unregister(ruleId: string): boolean; /** * Get a rule by ID */ get(ruleId: string): SecurityRule | undefined; /** * Check if a rule exists */ has(ruleId: string): boolean; /** * Get all registered rules */ getAll(): SecurityRule[]; /** * Get rules by filter */ getFiltered(filter: RuleFilter, config?: RuleConfig): SecurityRule[]; /** * Get rules by category */ getByCategory(category: RuleCategory): SecurityRule[]; /** * Get rules by tag */ getByTag(tag: string): SecurityRule[]; /** * Get enabled rules based on config */ getEnabled(config: RuleConfig): SecurityRule[]; /** * Check if a rule is enabled */ isRuleEnabled(ruleId: string, config: RuleConfig): boolean; /** * Get rule settings with defaults */ getRuleSettings(ruleId: string, config: RuleConfig): RuleSettings; /** * Get rule count */ get size(): number; /** * Get rule count (alias for size) */ count(): number; /** * Get all rule IDs */ getIds(): string[]; /** * Get all tags */ getTags(): string[]; /** * Get rules by severity */ getBySeverity(severity: string): SecurityRule[]; /** * Get rules by detection method */ getByDetectionMethod(method: string): SecurityRule[]; /** * Filter rules by predicate */ filter(predicate: (rule: SecurityRule) => boolean): SecurityRule[]; /** * Clear all rules */ clear(): void; /** * Categorize rule by ID prefix */ private categorizeRule; } /** * Get or create global registry */ export declare function getGlobalRegistry(): RuleRegistry; /** * Create a new registry (for isolated use) */ export declare function createRegistry(): RuleRegistry; /** * Reset global registry (for testing) */ export declare function resetGlobalRegistry(): void; //# sourceMappingURL=rule-registry.d.ts.map