package claude

// ChatBody is the request body for anthropic claude

type Message struct {
	Role    string      `json:"role"`
	Content interface{} `json:"content"`
}

type MessageImage struct {
	Type      string      `json:"type"`
	MediaType interface{} `json:"media_type"`
	Data      interface{} `json:"data"`
}

type MessageContent struct {
	Type   string        `json:"type"`
	Text   *string       `json:"text,omitempty"`
	Source *MessageImage `json:"source,omitempty"`
}

type ChatBody struct {
	Messages    []Message `json:"messages"`
	MaxTokens   int       `json:"max_tokens"`
	Model       string    `json:"model"`
	Stream      bool      `json:"stream"`
	Temperature *float32  `json:"temperature,omitempty"`
	TopP        *float32  `json:"top_p,omitempty"`
	TopK        *int      `json:"top_k,omitempty"`
}

type ChatStreamResponse struct {
	Type  string `json:"type"`
	Index int    `json:"index"`
	Delta struct {
		Type string `json:"type"`
		Text string `json:"text"`
	} `json:"delta"`
}

type ChatErrorResponse struct {
	Error struct {
		Type    string `json:"type" binding:"required"`
		Message string `json:"message"`
	} `json:"error"`
}
