package com.correx.infrastructure.inference.llama.cpp

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class EmbeddingRequest(
    val content: String,
    val model: String? = null,
)

@Serializable
data class EmbeddingResponse(
    val embedding: List<Float>? = null,
)

@Serializable
data class EmbeddingArrayResponse(
    val embedding: List<Float>,
)

// llama.cpp /embedding with --pooling mean returns a list-of-one-vector per item:
// [{"index":0,"embedding":[[floats...]]}]. embedding is nested, not flat.
@Serializable
data class EmbeddingNestedArrayResponse(
    val embedding: List<List<Float>>,
)

@Serializable
data class OpenAiEmbeddingData(
    val embedding: List<Float>,
    val index: Int,
)

@Serializable
data class OpenAiEmbeddingResponse(
    val data: List<OpenAiEmbeddingData>,
)
