#pragma once
#include "transcribe.h"
#include <cstdint>
#include <string>
#include <vector>
struct gguf_context;
struct transcribe_model;
namespace transcribe {
enum class KvResult {
Absent, Ok, BadType, };
KvResult read_string_kv(const gguf_context * ctx, const char * key,
std::string & out);
KvResult read_bool_kv (const gguf_context * ctx, const char * key,
bool & out);
KvResult read_uint32_kv(const gguf_context * ctx, const char * key,
uint32_t & out);
KvResult read_int32_kv (const gguf_context * ctx, const char * key,
int32_t & out);
KvResult read_float32_kv(const gguf_context * ctx, const char * key,
float & out);
KvResult read_token_id_kv(const gguf_context * ctx, const char * key,
int & out);
KvResult read_string_array_kv(const gguf_context * ctx, const char * key,
std::vector<std::string> & out);
KvResult read_int32_array_kv(const gguf_context * ctx, const char * key,
std::vector<int32_t> & out);
transcribe_status read_required_u32_kv(const gguf_context * gguf,
const char * key,
const char * error_tag,
int32_t & out);
transcribe_status read_required_f32_kv(const gguf_context * gguf,
const char * key,
const char * error_tag,
float & out);
transcribe_status read_required_string_kv(const gguf_context * gguf,
const char * key,
const char * error_tag,
std::string & out);
transcribe_status read_optional_bool_kv(const gguf_context * gguf,
const char * key,
const char * error_tag,
bool default_value,
bool & out);
transcribe_status read_optional_string_kv(const gguf_context * gguf,
const char * key,
const char * error_tag,
const char * default_value,
std::string & out);
transcribe_status read_optional_int32_kv(const gguf_context * gguf,
const char * key,
const char * error_tag,
int32_t default_value,
int32_t & out);
transcribe_status read_capability_kv(const gguf_context * gguf,
transcribe_capabilities & caps);
transcribe_status read_languages_kv(const gguf_context * gguf,
transcribe_model & model);
}