export type VisualTool = "lucid" | "figma" | "drawio" | "mermaid"; export type VisualValidationSeverity = "info" | "warning" | "blocking"; export interface VisualBounds { x: number; y: number; width: number; height: number; } export interface VisualArtifactItem extends VisualBounds { id: string; text?: string; expectedText?: string; kind?: "shape" | "icon" | "label" | "container" | "edge"; groupId?: string; containerId?: string; requiredContent?: boolean; rotation?: number; rotationUnit?: "degrees" | "radians"; expectedRotation?: number; expectedRotationUnit?: "degrees" | "radians"; } export interface VisualExportArtifact { type: "png" | "svg" | "json"; path: string; } export interface VisualArtifactManifest { tool: VisualTool; documentId: string; pageId?: string; items: VisualArtifactItem[]; exports?: VisualExportArtifact[]; } export interface VisualValidationConfig { duplicateThresholdPx: number; minIconTextGapPx: number; fallbackTextPatterns: string[]; maxLabelOverflowPx: number; rotationToleranceRadians: number; requirePngExport: boolean; } export interface VisualValidationFinding { id: string; severity: VisualValidationSeverity; type: "bounds" | "duplicate" | "fallback_text" | "icon_text_gap" | "orphan" | "png_export" | "rotation"; message: string; itemIds: string[]; remediable: boolean; } export interface VisualValidationResult { gateId: "visual_validation"; passed: boolean; blocking: boolean; summary: string; tool: VisualTool; documentId: string; pageId?: string; itemCount: number; pngExports: string[]; findings: VisualValidationFinding[]; remediations: string[]; } export declare const DEFAULT_VISUAL_VALIDATION_CONFIG: VisualValidationConfig; export declare function readVisualArtifactManifest(manifestPath: string): Promise; export declare function readVisualValidationConfig(configPath?: string): Promise; export declare function validateVisualManifest(manifest: VisualArtifactManifest, config?: VisualValidationConfig): VisualValidationResult; export declare function recordVisualArtifactsManifest({ taskId, manifest, root, }: { taskId: string; manifest: VisualArtifactManifest; root?: string; }): Promise; export declare function recordVisualValidationEvidence({ taskId, result, root, }: { taskId: string; result: VisualValidationResult; root?: string; }): Promise<{ artifact: string; content: string; }>; export declare function renderVisualValidationReport(taskId: string, result: VisualValidationResult): string; export declare function rotationToRadians(value: number, unit: "degrees" | "radians" | undefined, tool: VisualTool): number; export declare function visualArtifactPath(root: string, artifactPath: string): string;