/** A single optional field found in a Zod register-*.ts file */
export interface ZodOptionalField {
    /** Absolute path to the register-*.ts file */
    registerFile: string;
    /** Name of the tool (e.g. "generate_teammate_prompt") */
    toolName: string;
    /** Name of the optional field (e.g. "assignedFiles") */
    fieldName: string;
    /** Zod type string (e.g. "z.array", "z.string") */
    zodType: string;
}
/** Result of checking if a TypeScript type has "?" for an optional field */
export interface TypeCheckResult {
    /** Whether the field was found in any type file */
    found: boolean;
    /** Whether the field has "?" in the type definition */
    hasOptionalMark: boolean;
    /** The type file where the field was found (if found) */
    typeFile: string;
}
/** Result of checking if a handler uses safe access patterns for an optional field */
export interface HandlerCheckResult {
    /** The handler file that was checked */
    handlerFile: string;
    /** Whether any unsafe access (field.xxx without guard) was found */
    hasUnsafeAccess: boolean;
    /** Whether handler uses "field ?? " pattern */
    hasNullishCoalescing: boolean;
    /** Whether handler uses "if (field)" pattern */
    hasIfCheck: boolean;
}
/** A single discrepancy between Zod schema and TypeScript type */
export interface ParityDiscrepancy {
    /** Absolute path to the register-*.ts file */
    registerFile: string;
    /** Name of the field that is optional in Zod but possibly required in TS */
    fieldName: string;
    /** Name of the tool */
    toolName: string;
    /** The TypeScript type file where the discrepancy was found */
    typeFile: string;
    /** True when the TypeScript type is missing "?" for this field */
    hasMissingOptionalInType: boolean;
    /** True when the handler accesses the field without a null check */
    hasUnsafeAccess: boolean;
    /** "critical" = unsafe access in handler; "warning" = only missing "?" in type */
    severity: 'critical' | 'warning';
    /** Human-readable fix suggestion */
    suggestedFix: string;
}
/** Result returned by auditSchemaParity() */
export interface ParityAuditResult {
    /** Total number of optional fields scanned */
    totalOptionalFields: number;
    /** List of detected discrepancies */
    discrepancies: ParityDiscrepancy[];
    /** Human-readable summary */
    summary: string;
}
/** Input for fix_schema_type_parity tool */
export interface ParityFixInput {
    /** Root path of the project to fix */
    projectPath: string;
    /** When true, shows changes without applying them */
    dryRun: boolean;
}
/** A single fix applied (or to be applied) by fixSchemaParity() */
export interface ParityFix {
    /** The file that was (or would be) modified */
    file: string;
    /** Short description of what changed */
    description: string;
    /** When dryRun=true, the diff preview */
    preview?: string;
}
/** Result returned by fixSchemaParity() */
export interface ParityFixResult {
    /** Whether this was a dry run */
    dryRun: boolean;
    /** List of fixes applied or previewed */
    fixes: ParityFix[];
    /** Human-readable summary */
    summary: string;
}
//# sourceMappingURL=schema-parity.d.ts.map