package provider

import (
	"context"
	"encoding/json"
)

type ModelInfo struct {
	ID          string `json:"id"`
	DisplayName string `json:"display_name,omitempty"`
}

type ChatRequest struct {
	Model    string          `json:"model"`
	Messages json.RawMessage `json:"messages"`
	Stream   bool            `json:"stream"`
	Raw      json.RawMessage `json:"-"`
}

type ChatResponse struct {
	StatusCode int
	Body       []byte
	Headers    map[string]string
	TokensIn   int
	TokensOut  int
}

type Client interface {
	Type() string
	ListModels(ctx context.Context, apiKey, baseURL string) ([]ModelInfo, error)
	ChatCompletion(ctx context.Context, apiKey, baseURL string, req *ChatRequest) (*ChatResponse, error)
	HealthCheck(ctx context.Context, apiKey, baseURL string) error
}
