import type { Class_DrawingArea } from './DrawingArea'; /** * Duplique les nœuds `node_ids` (et les liens internes à la sélection) avec un offset de 50 px, * puis sélectionne les copies. Tout se fait sous `withBypassRedraws` (un seul rendu final). * * Annulable : l'undo supprime les copies créées. Le redo rejoue la duplication — les ids * `_copy` étant libérés par l'undo, il recrée exactement les mêmes. On retient les éléments * du DERNIER passage, sinon l'undo d'après viserait des instances périmées. */ export declare function copyNodes(da: Class_DrawingArea, node_ids: string[]): void; /** * os#1340 (Ctrl+D) — duplique la SÉLECTION courante : nœuds (+ liens internes) et zones de * texte, en une seule transition d'historique. Les copies deviennent la nouvelle sélection. */ export declare function duplicateSelection(da: Class_DrawingArea): void; /** * os#1340 (alt-glisser = cloner) — comme duplicateSelection mais SANS décalage : les copies * naissent exactement sous les originaux, puis le geste de drag les emporte. */ export declare function cloneSelectionInPlace(da: Class_DrawingArea): void; /** * Duplication unifiée nœuds + zones de texte (cf. copyNodes pour le contrat undo/redo). * `container_ids` : zones de texte à dupliquer avec le même offset que les nœuds. */ export declare function copyElements(da: Class_DrawingArea, node_ids: string[], container_ids: string[], offset?: number): void;