import type { NodeSnapshot } from '../debug/types.js'; export interface SemanticSnapshotInput extends Pick { source?: string; protocol?: string; entryEndpoint?: string; providerKey?: string; providerType?: string; } export interface SemanticSummaryContext { snapshot: SemanticSnapshotInput; spec: SemanticFieldSpec; } export type SemanticSummaryFn = (value: unknown, context: SemanticSummaryContext) => string | null; export type SemanticSelector = (payload: unknown, snapshot: SemanticSnapshotInput) => unknown; export type SemanticValueResolver = (payload: unknown, snapshot: SemanticSnapshotInput) => SemanticValueResolveResult; export interface SemanticValueResolveResult { value: unknown; origin?: string; } export interface SemanticFieldSpec { id: string; label?: string; path?: string; selector?: SemanticSelector; computeValue?: SemanticValueResolver; summarize?: SemanticSummaryFn; normalize?: (value: unknown) => unknown; optional?: boolean; describeChange?: (args: { previous?: SemanticValueEntry; current?: SemanticValueEntry; }) => string | null; } export interface SemanticValueEntry { specId: string; label?: string; value: unknown; summary: string | null; fingerprint: string; present: boolean; derivedPath?: string; } export interface SemanticTracePoint { stage: string; nodeId?: string; direction?: string; timestamp?: number; metadata?: Record; source?: string; values: Record; } export interface SemanticChange { specId: string; label?: string; stage: string; index: number; previous?: SemanticValueEntry; current?: SemanticValueEntry; description?: string | null; } export interface SemanticReplayResult { points: SemanticTracePoint[]; changes: SemanticChange[]; } export interface SemanticTrackerOptions { fields: SemanticFieldSpec[]; includeSnapshotsWithoutValues?: boolean; } export declare class SemanticTracker { private readonly fields; private readonly includeAllSnapshots; constructor(options: SemanticTrackerOptions); track(rawSnapshots: SemanticSnapshotInput[]): SemanticReplayResult; private extractValue; } export declare function unwrapSnapshotPayload(value: unknown): unknown; export declare function getByPath(value: unknown, path: string): unknown; export declare function stableStringify(value: unknown): string; export declare function defaultSummary(value: unknown): string | null;