import { Extension, StateField } from '@codemirror/state';
import { WidgetType } from '@codemirror/view';
import { DiffData, LineMapping } from '../types';
/** Badge data for a specific line */
export interface BadgeData {
    lineNumber: number;
    position: number;
    breaking: number;
    nonBreaking: number;
    annotation: number;
    unclassified: number;
    total: number;
    blockId: string;
}
/** Effect to set badge data */
export declare const setBadgeDataEffect: import('@codemirror/state').StateEffectType<BadgeData[]>;
/** State field for badge data */
export declare const badgeDataField: StateField<BadgeData[]>;
/** Widget for displaying change badges */
declare class ChangeBadgeWidget extends WidgetType {
    readonly breaking: number;
    readonly nonBreaking: number;
    readonly annotation: number;
    readonly unclassified: number;
    readonly blockId: string;
    constructor(breaking: number, nonBreaking: number, annotation: number, unclassified: number, blockId: string);
    get total(): number;
    toDOM(): HTMLElement;
    private createBadge;
    eq(other: WidgetType): boolean;
    ignoreEvent(): boolean;
}
/** Build badge data from diff data and line mappings */
export declare function buildBadgeData(doc: {
    line: (n: number) => {
        from: number;
        to: number;
    };
}, diffData: DiffData, lineMap: LineMapping[], side: 'before' | 'after' | 'unified'): BadgeData[];
/** Theme for change badges */
export declare const changeBadgesTheme: Extension;
/** Create the change badges extension */
export declare function changeBadges(): Extension;
export { ChangeBadgeWidget };
