using System.Text.Json.Serialization;
namespace StellaOps.Signals.Models;
///
/// Represents a discovered entrypoint into the call graph.
///
public sealed class CallgraphEntrypoint
{
///
/// Reference to the node that is an entrypoint.
///
[JsonPropertyName("nodeId")]
public string NodeId { get; set; } = string.Empty;
///
/// Type of entrypoint.
///
[JsonPropertyName("kind")]
public EntrypointKind Kind { get; set; } = EntrypointKind.Unknown;
///
/// HTTP route pattern (for http/grpc kinds).
/// Example: "/api/orders/{id}"
///
[JsonPropertyName("route")]
public string? Route { get; set; }
///
/// HTTP method (GET, POST, etc.) if applicable.
///
[JsonPropertyName("httpMethod")]
public string? HttpMethod { get; set; }
///
/// Framework that exposes this entrypoint.
///
[JsonPropertyName("framework")]
public EntrypointFramework Framework { get; set; } = EntrypointFramework.Unknown;
///
/// Discovery source (attribute, convention, config).
///
[JsonPropertyName("source")]
public string? Source { get; set; }
///
/// Execution phase when this entrypoint is invoked.
///
[JsonPropertyName("phase")]
public EntrypointPhase Phase { get; set; } = EntrypointPhase.Runtime;
///
/// Deterministic ordering for stable serialization.
///
[JsonPropertyName("order")]
public int Order { get; set; }
}