#ifndef OXINFER_H
#define OXINFER_H
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct OxiEngine OxiEngine;
typedef int (*oxi_token_fn)(void *user, const char *text, size_t len, int thinking);
typedef int (*oxi_progress_fn)(void *user, const char *file, uint64_t done, uint64_t total, int index, int count);
const char *oxi_version(void);
const char *oxi_last_error(void);
void oxi_string_free(char *s);
char *oxi_devices(void);
char *oxi_download(const char *spec, const char *cache_dir, oxi_progress_fn progress, void *user);
OxiEngine *oxi_engine_load(const char *model, const char *options, oxi_progress_fn progress, void *user);
void oxi_engine_free(OxiEngine *engine);
int oxi_engine_set(OxiEngine *engine, const char *key, const char *value);
int oxi_engine_send(OxiEngine *engine, const char *text, oxi_token_fn cb, void *user);
int oxi_engine_complete(OxiEngine *engine, const char *text, oxi_token_fn cb, void *user);
int oxi_engine_reset(OxiEngine *engine);
void oxi_engine_cancel(const OxiEngine *engine);
char *oxi_engine_info_json(OxiEngine *engine);
char *oxi_engine_stats_json(OxiEngine *engine);
#ifdef __cplusplus
}
#endif
#endif