using RobotNet10.MapEditor.Shared.DTOs.LayoutData;
using RobotNet10.MapEditor.Shared.DTOs.Requests;
using RobotNet10.MapEditor.Shared.DTOs.Responses;
namespace RobotNet10.MapManager.Services;
///
/// Service for retrieving complete layout data (nodes, edges, stations)
///
public interface ILayoutDataService
{
///
/// Get complete layout data for a layout level
/// Includes all nodes, edges, and stations with full nested properties
///
Task GetLayoutDataAsync(Guid layoutLevelId);
///
/// Merge multiple nodes into one node at center position
///
Task MergeNodesAsync(MergeNodesRequest request);
///
/// Split a node into multiple nodes (one for each connected edge)
///
Task SplitNodeAsync(SplitNodeRequest request);
///
/// Save all layout changes (nodes and edges) in a batch operation
/// Uses transaction to ensure atomicity
///
Task SaveLayoutDataAsync(SaveLayoutDataRequest request);
///
/// Copy selected nodes and edges with an offset
/// Creates new nodes and edges at offset positions
///
Task CopyNodesAsync(CopyNodesRequest request);
}