import { Renderable, type RenderableOptions } from "../Renderable.js";
import type { RenderContext } from "../types.js";
import { type LineColorConfig } from "./LineNumberRenderable.js";
import { RGBA } from "../lib/RGBA.js";
import { SyntaxStyle } from "../syntax-style.js";
import type { TreeSitterClient } from "../lib/tree-sitter/index.js";
import type { MouseEvent } from "../renderer.js";
export interface DiffRenderableOptions extends RenderableOptions<DiffRenderable> {
    diff?: string;
    syncScroll?: boolean;
    view?: "unified" | "split";
    fg?: string | RGBA;
    filetype?: string;
    syntaxStyle?: SyntaxStyle;
    wrapMode?: "word" | "char" | "none";
    conceal?: boolean;
    selectionBg?: string | RGBA;
    selectionFg?: string | RGBA;
    treeSitterClient?: TreeSitterClient;
    showLineNumbers?: boolean;
    lineNumberFg?: string | RGBA;
    lineNumberBg?: string | RGBA;
    addedBg?: string | RGBA;
    removedBg?: string | RGBA;
    contextBg?: string | RGBA;
    addedContentBg?: string | RGBA;
    removedContentBg?: string | RGBA;
    contextContentBg?: string | RGBA;
    addedSignColor?: string | RGBA;
    removedSignColor?: string | RGBA;
    addedLineNumberBg?: string | RGBA;
    removedLineNumberBg?: string | RGBA;
}
export declare class DiffRenderable extends Renderable {
    private _diff;
    private _syncScroll;
    private _view;
    private _parsedDiff;
    private _parseError;
    private _hunkStartLines;
    private _hunkRowOffsets;
    private _fg?;
    private _filetype?;
    private _syntaxStyle?;
    private _wrapMode?;
    private _conceal;
    private _selectionBg?;
    private _selectionFg?;
    private _treeSitterClient?;
    private _showLineNumbers;
    private _lineNumberFg;
    private _lineNumberBg;
    private _addedBg;
    private _removedBg;
    private _contextBg;
    private _addedContentBg;
    private _removedContentBg;
    private _contextContentBg;
    private _addedSignColor;
    private _removedSignColor;
    private _addedLineNumberBg;
    private _removedLineNumberBg;
    private leftSide;
    private rightSide;
    private leftSideAdded;
    private rightSideAdded;
    private leftCodeRenderable;
    private rightCodeRenderable;
    private pendingRebuild;
    private _lastWidth;
    private errorTextRenderable;
    private errorCodeRenderable;
    private _waitingForHighlight;
    private _lineInfoChangeHandler;
    constructor(ctx: RenderContext, options: DiffRenderableOptions);
    private parseDiff;
    private buildView;
    protected onMouseEvent(event: MouseEvent): void;
    private isInsideSide;
    protected onResize(width: number, height: number): void;
    private requestRebuild;
    private invalidateHunkRowOffsets;
    private rebuildView;
    private handleLineInfoChange;
    private attachLineInfoListeners;
    private detachLineInfoListeners;
    destroyRecursively(): void;
    private buildErrorView;
    private createOrUpdateCodeRenderable;
    private createOrUpdateSide;
    private buildUnifiedView;
    private buildSplitView;
    get diff(): string;
    set diff(value: string);
    get syncScroll(): boolean;
    set syncScroll(value: boolean);
    get view(): "unified" | "split";
    set view(value: "unified" | "split");
    get filetype(): string | undefined;
    set filetype(value: string | undefined);
    get syntaxStyle(): SyntaxStyle | undefined;
    set syntaxStyle(value: SyntaxStyle | undefined);
    get wrapMode(): "word" | "char" | "none" | undefined;
    set wrapMode(value: "word" | "char" | "none" | undefined);
    get showLineNumbers(): boolean;
    set showLineNumbers(value: boolean);
    get addedBg(): RGBA;
    set addedBg(value: string | RGBA);
    get removedBg(): RGBA;
    set removedBg(value: string | RGBA);
    get contextBg(): RGBA;
    set contextBg(value: string | RGBA);
    get addedSignColor(): RGBA;
    set addedSignColor(value: string | RGBA);
    get removedSignColor(): RGBA;
    set removedSignColor(value: string | RGBA);
    get addedLineNumberBg(): RGBA;
    set addedLineNumberBg(value: string | RGBA);
    get removedLineNumberBg(): RGBA;
    set removedLineNumberBg(value: string | RGBA);
    get lineNumberFg(): RGBA;
    set lineNumberFg(value: string | RGBA);
    get lineNumberBg(): RGBA;
    set lineNumberBg(value: string | RGBA);
    get addedContentBg(): RGBA | null;
    set addedContentBg(value: string | RGBA | null);
    get removedContentBg(): RGBA | null;
    set removedContentBg(value: string | RGBA | null);
    get contextContentBg(): RGBA | null;
    set contextContentBg(value: string | RGBA | null);
    get selectionBg(): RGBA | undefined;
    set selectionBg(value: string | RGBA | undefined);
    get selectionFg(): RGBA | undefined;
    set selectionFg(value: string | RGBA | undefined);
    get conceal(): boolean;
    set conceal(value: boolean);
    get fg(): RGBA | undefined;
    set fg(value: string | RGBA | undefined);
    setLineColor(line: number, color: string | RGBA | LineColorConfig): void;
    clearLineColor(line: number): void;
    setLineColors(lineColors: Map<number, string | RGBA | LineColorConfig>): void;
    clearAllLineColors(): void;
    highlightLines(startLine: number, endLine: number, color: string | RGBA | LineColorConfig): void;
    clearHighlightLines(startLine: number, endLine: number): void;
    getHunkRowOffsets(): number[];
    private computeHunkRowOffsets;
}
