import { WardnConfig, ScanResult, WardnRequest, Rule } from "./types"; import { PatternErrorMetrics } from "./utils/safe-regex"; import { SessionStateProvider } from "./state/session-manager"; export declare class Wardn { private static instance; private config; private stateProvider; private telemetry; private patternDetector; private sequenceDetector; private stateDetector; private semanticDetector; private pollTimer; private isShutdown; private lastRuleUpdate; private updateCount; private updateCountResetTime; private constructor(); private initTelemetry; static getInstance(): Wardn; static init(config: WardnConfig, stateProvider?: SessionStateProvider): Wardn; /** * Reset the singleton instance (useful for testing) */ static reset(): void; /** * Shutdown the Wardn instance, cleaning up resources */ shutdown(): void; /** * Scan a request for security violations * @param request The agent request context (prompt, tools, etc.) * @returns ScanResult with allowed/blocked status and violations */ scan(request: WardnRequest): Promise; /** * v0.3.0: Determine final action based on all violations * Priority: block > confirm > warn > log > allow * * Defensive design: Uses fail-closed approach - defaults to 'block' if * recommendedAction is missing or invalid, ensuring security by default. */ private determineAction; /** Normalize request to ToolData format */ private normalizeRequest; /** Run detector for a single rule */ private detectViolation; /** Handle semantic detection */ private detectSemanticViolation; /** Report violation to telemetry (redacts sensitive toolData) */ private reportViolation; /** Report scan completion to telemetry */ private reportScanComplete; /** * Update rules dynamically * This allows external systems (like MCP server with Supabase threat rules) * to update the rule set without restarting * * @param rules New rule set to use * @returns void */ updateRules(rules: Rule[]): void; /** * Get current rules * @returns Current rule set */ getRules(): readonly Rule[]; /** * Get pattern error metrics for monitoring * @returns Pattern error statistics */ getPatternErrorMetrics(): Readonly; /** Poll remote rules for updates with validation */ private pollRemoteRules; }