namespace Kompas.Mcp.Core.Query;

/// <summary>Детальные сведения о ребре (drill-down по индексу из list_edges).</summary>
public sealed record EdgeDetail
{
    public required int Index { get; init; }

    /// <summary>Тип кривой: line, circle, arc, ellipse, ellipse_arc, nurbs, other.</summary>
    public required string Type { get; init; }

    /// <summary>Длина ребра, мм.</summary>
    public required double Length { get; init; }

    /// <summary>Тип одной смежной грани (по «плюс»-ориентации), либо null.</summary>
    public string? AdjacentFace1 { get; init; }

    /// <summary>Тип другой смежной грани (по «минус»-ориентации), либо null.</summary>
    public string? AdjacentFace2 { get; init; }

    /// <summary>Координаты начальной вершины (мм), либо null.</summary>
    public (double X, double Y, double Z)? Start { get; init; }

    /// <summary>Координаты конечной вершины (мм), либо null.</summary>
    public (double X, double Y, double Z)? End { get; init; }
}
