import { BundledLanguage, BundledTheme } from 'shiki';
import { ContextMenuItem } from '../useContextMenu';
import { UseMonacoEditReturn } from '../useMonacoEdit';
import * as monaco from "monaco-editor-core";
export interface MonacoDiffOptions extends monaco.editor.IStandaloneDiffEditorConstructionOptions {
    target: HTMLElement;
    languages: BundledLanguage[];
    themes: BundledTheme[];
    defaultTheme: BundledTheme;
    contextMenu?: {
        enabled?: boolean;
        items?: string[] | "minimal" | "basic" | "full";
        customItems?: ContextMenuItem[];
    };
    diffViewType?: "inline" | "multi" | "default";
}
export type DiffEditInstance = monaco.editor.IStandaloneDiffEditor;
export type DiffViewOptions = Pick<monaco.editor.IStandaloneDiffEditorConstructionOptions, "enableSplitViewResizing" | "renderSideBySide" | "enableSplitViewResizing" | "originalEditable">;
export type EditModelType = monaco.editor.IDiffEditorModel | monaco.editor.IDiffEditorViewModel | null;
export type DefaultReturn = Omit<UseMonacoEditReturn, "initMonacoEdit" | "destroy" | "setLanguage" | "editInstance" | "onContextMenu" | "offContextMenu">;
export type CreateModelType = monaco.editor.ITextModel;
export interface UseMonacoDiffEditReturn extends DefaultReturn {
    initMonacoDiffEdit: () => Promise<DiffEditInstance>;
    destroy: (target: HTMLElement) => void;
    createModel: (code: string, language: BundledLanguage) => CreateModelType;
    setDiffModel: (model: EditModelType) => void;
    setDiffViewOptions: (type: MonacoDiffOptions["diffViewType"]) => void;
    diffEditInstance: DiffEditInstance | null;
    onOriginalContextMenu: (callback: (event: MouseEvent) => void) => void;
    onModifiedContextMenu: (callback: (event: MouseEvent) => void) => void;
    offOriginalContextMenu: () => void;
    offModifiedContextMenu: () => void;
    onMinimapContextMenu: (callback: (event: MouseEvent) => void) => void;
    offMinimapContextMenu: () => void;
}
export declare function useMonacoDiffEdit(options: MonacoDiffOptions): UseMonacoDiffEditReturn;
