package ai.decompile.ai.model.dto;

public sealed interface StreamEvent
    permits StreamEvent.Chunk,
        StreamEvent.Thinking,
        StreamEvent.ToolCallStart,
        StreamEvent.ToolCallEnd,
        StreamEvent.Done,
        StreamEvent.Error {

  record Chunk(String content) implements StreamEvent {}

  record Thinking(String message) implements StreamEvent {}

  record ToolCallStart(String tool) implements StreamEvent {}

  record ToolCallEnd(String tool, long durationMs, String resultSummary) implements StreamEvent {}

  record Done(String sessionId) implements StreamEvent {}

  record Error(String message) implements StreamEvent {}
}
