export type QaSource = 'drc' | 'erc' | 'layout' | 'manual-log'; export type QaSeverity = 'error' | 'warning' | 'info'; export type QaCategory = 'duplicate_net_names' | 'free_network_no_pins' | 'unconnected_pin' | 'native_drc_unavailable' | 'native_erc_unavailable' | 'native_rule_violation' | 'uncategorized'; export type QaPolicy = 'circuit' | 'diagnostic-fixture'; export type QaStatus = 'pass' | 'fail' | 'inconclusive'; export interface NativeRuleViolationInput { rule?: string; description?: string; message?: string; severity?: QaSeverity; net?: string; component?: string; } export interface NativeRuleRunInput { not_available?: boolean; error?: string; violations?: NativeRuleViolationInput[]; total_violations?: number; error_count?: number; warning_count?: number; passed?: boolean; inferred_floating_pins?: Array<{ primitiveId?: string; designator?: string; pinNumber?: string; }>; } export interface ClassifiedQaIssue { source: QaSource; category: QaCategory; severity: QaSeverity; fatal: boolean; message: string; rule?: string; net?: string; component?: string; remediation_hint: string; } export interface PostWriteQaInput { projectId: string; policy?: QaPolicy; drc?: NativeRuleRunInput; erc?: NativeRuleRunInput; } export interface PostWriteQaSummary { project_id: string; status: QaStatus; passed: boolean; policy: QaPolicy; issue_count: number; fatal_count: number; warning_count: number; inconclusive_count: number; categories: Record; issues: ClassifiedQaIssue[]; summary: string; } export interface NativeQaBridge { call, TResult = unknown>(method: string, params?: TParams): Promise; } export declare function collectNativeRuleRunsForPostWriteQa(bridge: NativeQaBridge, projectId: string, options?: { drc?: boolean; erc?: boolean; }): Promise<{ drc?: NativeRuleRunInput; erc?: NativeRuleRunInput; }>; export declare function classifyPostWriteQa(input: PostWriteQaInput): PostWriteQaSummary;