import { Extension, StateField } from '@codemirror/state';
import { WidgetType } from '@codemirror/view';
import { LineMapping } from '../types';
/** Data for inline word diff on a line */
export interface InlineWordDiffLine {
    lineNumber: number;
    /** The before content for this line */
    beforeContent: string;
    /** The after content (what's displayed in the document) */
    afterContent: string;
}
/** Effect to set inline word diff data */
export declare const setInlineWordDiffEffect: import('@codemirror/state').StateEffectType<InlineWordDiffLine[]>;
/** State field for inline word diff data */
export declare const inlineWordDiffField: StateField<InlineWordDiffLine[]>;
/** Widget to show removed text inline */
declare class RemovedTextWidget extends WidgetType {
    readonly text: string;
    constructor(text: string);
    toDOM(): HTMLElement;
    eq(other: WidgetType): boolean;
    ignoreEvent(): boolean;
}
/** Configuration for inline word diff */
export interface InlineWordDiffConfig {
    mode: 'word' | 'char';
}
/** State field for config */
export declare const inlineWordDiffConfigField: StateField<InlineWordDiffConfig>;
export declare const setInlineWordDiffConfigEffect: import('@codemirror/state').StateEffectType<InlineWordDiffConfig>;
/** Theme for inline word diff */
export declare const inlineWordDiffTheme: Extension;
/**
 * Build inline word diff data from unified content with beforeContentMap.
 */
export declare function buildInlineWordDiffLines(lines: string[], lineMap: LineMapping[], beforeContentMap: Map<number, string>): InlineWordDiffLine[];
/** Create the inline word diff extension */
export declare function inlineWordDiff(config?: Partial<InlineWordDiffConfig>): Extension;
export { RemovedTextWidget };
