import { IObject3D } from '../../core';
export type ClipboardMode = 'copy' | 'cut';
export interface ClipboardState {
    objects: IObject3D[];
    mode: ClipboardMode;
    sourceParents: Map<IObject3D, IObject3D | null>;
}
/**
 * Internal object clipboard for copy/cut/paste.
 * - copy/cut: store references (no scene mutation)
 * - paste: clone or move objects directly to the destination parent (one step, no reparenting)
 * - Returns {objects, undo, redo} from paste — caller records undo and handles selection.
 */
export declare class ObjectClipboard {
    private _state;
    get state(): ClipboardState | null;
    get isEmpty(): boolean;
    copy(objects: IObject3D[]): void;
    cut(objects: IObject3D[]): void;
    /**
     * Paste from clipboard. Clones (copy) or moves (cut) objects directly to destination.
     * @param destination - target parent, or null to use source parents
     * @returns pasted objects + undo/redo, or null if clipboard is empty
     */
    paste(destination?: IObject3D | null): {
        objects: IObject3D[];
        undo: () => void;
        redo: () => void;
    } | null;
    clear(): void;
    private _pasteFromCopy;
    private _pasteFromCut;
    private _parentMap;
}
//# sourceMappingURL=../../src/plugins/interaction/ObjectClipboard.d.ts.map