package openai

type strictOutputPolicy struct {
	Strict              bool
	StreamBuffer        bool
	XMLCompletionTool   string
	XMLResultTag        string
	ContractInstruction bool
}

type openAIUsage struct {
	PromptTokens     int `json:"prompt_tokens"`
	CompletionTokens int `json:"completion_tokens"`
	TotalTokens      int `json:"total_tokens"`
	// ReasoningTokens and CachedInputTokens are internal metric observation
	// fields kept off the OpenAI-compatible response body: they carry
	// provider-reported detail to the usage metric emitter only. A zero value
	// means the provider did not report that token type.
	ReasoningTokens   int `json:"-"`
	CachedInputTokens int `json:"-"`
}

type openAIModel struct {
	ID      string `json:"id"`
	Object  string `json:"object"`
	Created int64  `json:"created"`
	OwnedBy string `json:"owned_by"`
}

type openAIModelsResponse struct {
	Object string        `json:"object"`
	Data   []openAIModel `json:"data"`
}

type errorResponse struct {
	Error errorBody `json:"error"`
}

type errorBody struct {
	Type    string `json:"type"`
	Message string `json:"message"`
}

type anthropicErrorResponse struct {
	Type  string    `json:"type"`
	Error errorBody `json:"error"`
}

type anthropicModel struct {
	ID          string `json:"id"`
	CreatedAt   string `json:"created_at"`
	DisplayName string `json:"display_name"`
	Type        string `json:"type"`
}

type anthropicModelsResponse struct {
	Data    []anthropicModel `json:"data"`
	HasMore bool             `json:"has_more"`
	FirstID *string          `json:"first_id"`
	LastID  *string          `json:"last_id"`
}

type anthropicCountTokensResponse struct {
	InputTokens int `json:"input_tokens"`
}
