/**
 * Resolves track-changes configuration from the new canonical path
 * (`config.modules.trackChanges`) and the two legacy paths
 * (`config.trackChanges` for visibility, `config.layoutEngineOptions.trackedChanges`
 * for mode/enabled), then mirrors the merged result back to all three
 * paths so internal consumers that still read legacy keys keep working.
 *
 * Precedence per field: canonical > legacy > derived default.
 *
 * Emits a one-time deprecation warning per legacy key path that was
 * populated by the caller. Suppresses warnings on a second pass over the
 * same config object so write-through values don't look like new legacy
 * usage.
 *
 * @param {Record<string, any>} config  The SuperDoc config object (mutated in place)
 * @returns {NormalizedTrackChangesConfig}
 */
export function normalizeTrackChangesConfig(config: Record<string, any>): NormalizedTrackChangesConfig;
/**
 * Test-only hook: clears the deduplicated deprecation-warning set so
 * tests can assert the warning fires on the first invocation.
 */
export function __resetDeprecationWarnings(): void;
export type TrackChangesMode = "review" | "original" | "final" | "off";
export type TrackChangesReplacements = "paired" | "independent";
export type AuthorColorsConfig = {
    enabled?: boolean;
    overrides?: Record<string, string>;
    resolve?: (author: {
        name?: string;
        email?: string;
        image?: string;
    }) => (string | undefined);
};
export type NormalizedTrackChangesConfig = {
    visible: boolean;
    mode: TrackChangesMode;
    enabled: boolean;
    replacements: TrackChangesReplacements;
    authorColors?: AuthorColorsConfig;
};
//# sourceMappingURL=normalize-track-changes-config.d.ts.map