import type { Profile } from '../interfaces/profile.interface.js'; import type { ProfilerTag, TagSeverity } from './profiler-tag.interface.js'; import type { TagConfig, TaggableEntry } from './taggable-collector.interface.js'; export interface AnalyzedCollector { readonly name: string; readonly domain: string; readonly entries: TaggableEntry[]; readonly config: TagConfig; } export interface PerformanceRuleContext { readonly profile: Profile; readonly collectors: readonly AnalyzedCollector[]; isProfileError(): boolean; readonly profileErrorSeverity: TagSeverity; tagEntry(entry: TaggableEntry, tag: ProfilerTag): void; tagProfile(tag: ProfilerTag): void; } export interface PerformanceRule { readonly id: string; evaluate(ctx: PerformanceRuleContext): void; }