/**
 * Internal clipboard for workflow canvas copy/paste operations.
 *
 * Pure TypeScript — no React dependency. The clipboard buffer itself
 * lives as a `useRef` in the hook layer; this module provides the
 * serialization and paste logic that operates on {@link WorkflowGraphModel}.
 *
 * Cross-workflow clipboard is intentionally not supported. Pasted nodes
 * receive new unique names and remapped edge references, keeping the
 * graph model self-consistent.
 *
 * @since T11 (Context Menus and Keyboard Shortcuts)
 */
import type { WorkflowGraphModel, WorkflowGraphNode, WorkflowGraphEdge } from "./workflow-graph-model";
import type { GraphCommand } from "./graph-commands";
/** Snapshot of selected nodes and their internal edges. */
export interface ClipboardEntry {
    readonly nodes: readonly WorkflowGraphNode[];
    readonly edges: readonly WorkflowGraphEdge[];
}
/** Result of a paste operation, ready to dispatch. */
export interface PasteResult {
    readonly command: GraphCommand;
    readonly newNodeIds: readonly string[];
}
/**
 * Deep-clone selected nodes and their internal edges into a clipboard entry.
 *
 * - Sentinel nodes (`__start__`, `__end__`) are excluded.
 * - Only edges where **both** endpoints are in the selection are included.
 * - Nodes are deep-cloned so subsequent model mutations don't affect the buffer.
 */
export declare function serializeSelection(model: WorkflowGraphModel, selectedNodeIds: ReadonlySet<string>): ClipboardEntry | null;
/**
 * Produce graph commands that paste a clipboard entry into the model.
 *
 * - Each pasted node gets a new unique name via {@link generateTaskName}.
 * - Positions are offset from the original by {@link PASTE_OFFSET}.
 * - Edge source/target references are remapped to the new node IDs.
 * - Returns a single {@link CompoundCommand} for atomic undo.
 */
export declare function pasteClipboard(entry: ClipboardEntry, model: WorkflowGraphModel, positionOffset?: {
    x: number;
    y: number;
}): PasteResult | null;
//# sourceMappingURL=clipboard.d.ts.map