package model

import (
	"context"
	"encoding/json"
)

type Client interface {
	Generate(ctx context.Context, input GenerateInput) (GenerateResult, error)
}

type GenerateInput struct {
	Model           string
	Instructions    string
	Input           string
	Metadata        map[string]string
	MaxOutputTokens int
	Temperature     *float64
	TopP            *float64
}

type GenerateResult struct {
	ID    string
	Model string
	Text  string
	Usage Usage
	Raw   json.RawMessage
}

type Usage struct {
	InputTokens  int
	OutputTokens int
	TotalTokens  int
}
