import type { ExtractPropTypes, InjectionKey, PropType, SetupContext, Ref } from 'vue';
import type { DiffFile } from 'diff2html/lib/types';
export declare type DiffType = 'modify' | 'add' | 'delete' | 'rename';
export declare type OutputFormat = 'line-by-line' | 'side-by-side';
export declare type ExpandDirection = 'up' | 'down' | 'updown' | 'all';
export declare type LineSide = 'left' | 'right';
export declare type IncrementCodeInsertDirection = 'up' | 'down';
export interface CommentPosition {
    left: number;
    right: number;
}
export interface CodeReviewMethods {
    toggleFold: (status?: boolean) => void;
    insertComment: (lineNumber: number, lineSide: LineSide, commentDom: HTMLElement) => void;
    removeComment: (lineNumber: number, lineSide: LineSide) => void;
}
export declare const codeReviewProps: {
    diff: {
        type: StringConstructor;
        required: boolean;
        default: string;
    };
    fold: {
        type: BooleanConstructor;
        default: boolean;
    };
    allowComment: {
        type: BooleanConstructor;
        default: boolean;
    };
    allowExpand: {
        type: BooleanConstructor;
        default: boolean;
    };
    showBlob: {
        type: BooleanConstructor;
        default: boolean;
    };
    diffType: {
        type: PropType<DiffType>;
        default: string;
    };
    outputFormat: {
        type: PropType<OutputFormat>;
        default: string;
    };
    expandThreshold: {
        type: NumberConstructor;
        default: number;
    };
    expandLoader: {
        type: PropType<(interval: Array<number | undefined>, update: (code: string) => void) => void>;
    };
};
export declare type CodeReviewProps = ExtractPropTypes<typeof codeReviewProps>;
export interface CodeReviewContext {
    diffType: Ref<DiffType>;
    reviewContentRef: Ref<HTMLElement>;
    diffInfo: DiffFile;
    isFold: Ref<boolean>;
    rootCtx: SetupContext;
}
export declare const CodeReviewInjectionKey: InjectionKey<CodeReviewContext>;
