/**
 * ignoreFields — strips non-deterministic fields before assertion comparison.
 *
 * For tool outputs that contain timestamps, UUIDs, temp paths, or other
 * non-deterministic values, assertions need a way to exclude specific
 * fields from comparison. This module provides field stripping using
 * dot-notation paths.
 *
 * Usage in task definitions:
 * ```typescript
 * assertions: [
 *   {
 *     type: "tool-output-matches",
 *     value: { title: "Hello" },
 *     ignoreFields: ["metadata.createdAt", "result.id", "_rev"],
 *   },
 * ]
 * ```
 *
 * @see docs/archive/exec-plans/architecture-overhaul/phase-4-agent-harness.md
 */
/**
 * Strip specified fields from an object using dot-notation paths.
 *
 * @param obj - The object to strip fields from (not mutated)
 * @param fields - Dot-notation field paths to remove
 * @returns A new object with the specified fields removed
 *
 * @example
 * ```typescript
 * stripFields(
 *   { title: "Hello", metadata: { createdAt: "2024-01-01", author: "Alice" } },
 *   ["metadata.createdAt"]
 * )
 * // => { title: "Hello", metadata: { author: "Alice" } }
 * ```
 */
export declare function stripFields(obj: unknown, fields: string[]): unknown;
/**
 * Strip specified fields from both actual and expected values,
 * then compare them.
 *
 * @returns true if the objects are equal after stripping
 */
export declare function compareWithIgnoredFields(actual: unknown, expected: unknown, ignoreFields: string[]): boolean;
/**
 * Generate a Promptfoo-compatible JavaScript assertion that applies
 * ignoreFields stripping before comparison.
 *
 * This wraps a comparison assertion with field stripping logic,
 * producing a self-contained JS assertion string.
 */
export declare function buildIgnoreFieldsWrapper(comparisonCode: string, ignoreFields: string[]): string;
