import { ICodeEditor } from "../editorBrowser.js";
import { TextEdit, WorkspaceEdit, WorkspaceEditMetadata, IWorkspaceFileEdit, WorkspaceFileEditOptions, IWorkspaceTextEdit } from "../../common/languages.js";
import { IProgress, IProgressStep } from "../../../platform/progress/common/progress.js";
import { URI } from "../../../base/common/uri.js";
import { UndoRedoSource } from "../../../platform/undoRedo/common/undoRedo.js";
import { CancellationToken } from "../../../base/common/cancellation.js";
import { TextModelEditSource } from "../../common/textModelEditSource.js";
export declare class ResourceEdit {
    readonly metadata?: WorkspaceEditMetadata | undefined;
    protected constructor(metadata?: WorkspaceEditMetadata | undefined);
    static convert(edit: WorkspaceEdit): ResourceEdit[];
}
export declare class ResourceTextEdit extends ResourceEdit implements IWorkspaceTextEdit {
    readonly resource: URI;
    readonly textEdit: TextEdit & {
        insertAsSnippet?: boolean;
        keepWhitespace?: boolean;
    };
    readonly versionId: number | undefined;
    static is(candidate: any): candidate is IWorkspaceTextEdit;
    static lift(edit: IWorkspaceTextEdit): ResourceTextEdit;
    constructor(resource: URI, textEdit: TextEdit & {
        insertAsSnippet?: boolean;
        keepWhitespace?: boolean;
    }, versionId?: number | undefined, metadata?: WorkspaceEditMetadata);
}
export declare class ResourceFileEdit extends ResourceEdit implements IWorkspaceFileEdit {
    readonly oldResource: URI | undefined;
    readonly newResource: URI | undefined;
    readonly options: WorkspaceFileEditOptions;
    static is(candidate: any): candidate is IWorkspaceFileEdit;
    static lift(edit: IWorkspaceFileEdit): ResourceFileEdit;
    constructor(oldResource: URI | undefined, newResource: URI | undefined, options?: WorkspaceFileEditOptions, metadata?: WorkspaceEditMetadata);
}
export interface IBulkEditOptions {
    editor?: ICodeEditor;
    progress?: IProgress<IProgressStep>;
    token?: CancellationToken;
    showPreview?: boolean;
    label?: string;
    code?: string;
    quotableLabel?: string;
    undoRedoSource?: UndoRedoSource;
    undoRedoGroupId?: number;
    confirmBeforeUndo?: boolean;
    respectAutoSaveConfig?: boolean;
    reason?: TextModelEditSource;
}
export interface IBulkEditResult {
    ariaSummary: string;
    isApplied: boolean;
}
export type IBulkEditPreviewHandler = (edits: ResourceEdit[], options?: IBulkEditOptions) => Promise<ResourceEdit[]>;
