/**
 * Field Canonicalization Service
 *
 * Canonicalizes validated fields to ensure same semantic content produces same canonical form.
 * This is the core of the idempotence pattern - enforcing determinism post-generation.
 */
import type { SchemaDefinition } from "./schema_registry.js";
export interface CanonicalizationOptions {
    preserveCase?: boolean;
    dateFormat?: "iso" | "date-only";
    numberPrecision?: number;
}
/**
 * Canonicalize fields based on schema definition
 * Ensures same semantic content produces same canonical form
 *
 * Case Preservation Priority (for string fields):
 * 1. Global preserveCase option (explicit override)
 * 2. Field definition metadata (preserveCase: true in schema) - RECOMMENDED for new fields
 * 3. Hardcoded PRESERVE_CASE_FIELDS list (backward compatibility)
 * 4. Heuristic patterns (automatic detection for common naming patterns)
 *
 * To preserve case for new fields in schemas:
 * - Add preserveCase: true to the field definition in schema_registry
 * - Or rely on heuristics (fields ending in _name, _title, etc. are auto-detected)
 * - Or add to PRESERVE_CASE_FIELDS list for exact matches
 */
export declare function canonicalizeFields(fields: Record<string, unknown>, schema: SchemaDefinition, options?: CanonicalizationOptions): Record<string, unknown>;
/**
 * Compute hash of canonical fields (for fixed-point convergence)
 */
export declare function hashCanonicalFields(canonicalFields: Record<string, unknown>): string;
//# sourceMappingURL=field_canonicalization.d.ts.map