package ml

import "encoding/json"

// GenconfigMarshal serializa un GenerationConfig a JSON canonico con indent de 2 espacios.
// El formato es identico al de Python json.dumps(indent=2, sort_keys=False):
// keys en el orden de declaracion del struct, snake_case, campos omitempty ausentes si zero.
func GenconfigMarshal(cfg GenerationConfig) ([]byte, error) {
	return json.MarshalIndent(cfg, "", "  ")
}

// GenconfigUnmarshal deserializa JSON (compacto o con indent) a GenerationConfig.
// Los campos JSON deben usar snake_case: negative_prompt, cfg_scale, model_type, etc.
func GenconfigUnmarshal(data []byte) (GenerationConfig, error) {
	var cfg GenerationConfig
	if err := json.Unmarshal(data, &cfg); err != nil {
		return GenerationConfig{}, err
	}
	return cfg, nil
}
