/** * Filter engine - orchestrates filter rules */ import type { FilterRule } from './filter-rules.js'; import type { ToolDefinition } from '../../types/profile.js'; /** * Filter result */ export declare class FilterResult { readonly allowed: boolean; readonly reason?: string | undefined; private constructor(); static allowed(reason?: string): FilterResult; static denied(reason: string): FilterResult; } /** * Filter engine that evaluates tools against rules */ export declare class FilterEngine { private allowRules; private denyRules; constructor(allowRules: FilterRule[], denyRules: FilterRule[]); /** * Evaluate tool name against rules * * Rule precedence: * 1. Deny rules (if any match, deny immediately) * 2. If no allow rules, allow by default * 3. Allow rules (must match at least one) */ evaluate(toolName: string): FilterResult; /** * Evaluate tool definition against rules * * Used when rules need full tool definition (e.g., CategoryMatchRule). * Tool name is normalized (NFC) before passing to name-based rules. * * Rule precedence: * 1. Deny rules (if any match, deny immediately) * 2. If no allow rules, allow by default * 3. Allow rules (must match at least one) */ evaluateTool(tool: ToolDefinition): FilterResult; } //# sourceMappingURL=filter-engine.d.ts.map