/** * @fileoverview Rule Context Builder * @module @nahisaho/musubix-security/rules/engine/rule-context * @trace REQ-RULE-003 */ import { Project, SourceFile } from 'ts-morph'; import type { RuleContext, RuleConfig, RuleFinding, RuleResult } from '../types.js'; /** * Options for building rule context */ export interface RuleContextBuildOptions { /** Project root directory */ projectRoot?: string; /** Rule configuration */ config?: Partial; /** Previous rule results */ previousResults?: Map; /** Existing ts-morph Project */ project?: Project; } /** * Internal context implementation */ declare class RuleContextImpl implements RuleContext { filePath: string; sourceCode: string; sourceFile: SourceFile; projectRoot: string; config: RuleConfig; previousResults: Map; private currentRuleId; private findings; constructor(filePath: string, sourceCode: string, sourceFile: SourceFile, projectRoot: string, config: RuleConfig, previousResults: Map); /** * Set current rule ID (called by engine before rule execution) */ setCurrentRule(ruleId: string): void; /** * Get collected findings */ getFindings(): RuleFinding[]; /** * Report a finding */ report(finding: Omit): void; /** * Get option value for current rule */ getOption(key: string, defaultValue: T): T; } /** * Rule Context Builder * Builds context for rule execution */ export declare class RuleContextBuilder { private projectRoot; private config; private previousResults; private project; constructor(); /** * Set project root */ withProjectRoot(projectRoot: string): this; /** * Set configuration */ withConfig(config: Partial): this; /** * Set previous results */ withPreviousResults(results: Map): this; /** * Use existing ts-morph Project */ withProject(project: Project): this; /** * Enable taint analysis */ withTaintAnalysis(enabled?: boolean): this; /** * Enable DFG analysis */ withDFG(enabled?: boolean): this; /** * Build context for a file */ build(filePath: string): Promise; /** * Build context from source code string */ buildFromSource(filePath: string, sourceCode: string): RuleContextImpl; } /** * Create a context builder */ export declare function createContextBuilder(): RuleContextBuilder; export {}; //# sourceMappingURL=rule-context.d.ts.map