#ifndef PREFS_H
#define PREFS_H
#include <stdbool.h>
#include <stdint.h>
typedef struct {
bool found;
char **values;
uintptr_t len;
} PrefsStringArray;
char *prefs_copy_string(const char *domain, const char *key);
typedef struct {
bool found;
bool value;
} PrefsBoolResult;
typedef struct {
bool found;
int64_t value;
} PrefsInt64Result;
typedef struct {
bool found;
double value;
} PrefsDoubleResult;
PrefsBoolResult prefs_get_bool_optional(const char *domain, const char *key);
PrefsInt64Result prefs_get_i64_optional(const char *domain, const char *key);
PrefsDoubleResult prefs_get_f64_optional(const char *domain, const char *key);
PrefsStringArray prefs_copy_string_array(const char *domain, const char *key);
bool prefs_set_bool(const char *domain, const char *key, bool value);
bool prefs_set_i64(const char *domain, const char *key, int64_t value);
bool prefs_set_f64(const char *domain, const char *key, double value);
bool prefs_set_string(const char *domain, const char *key, const char *value);
bool prefs_set_string_array(const char *domain, const char *key, const char **values, uintptr_t len);
bool prefs_remove(const char *domain, const char *key);
bool prefs_contains(const char *domain, const char *key);
void prefs_free_string(char *value);
void prefs_free_string_array(PrefsStringArray *array);
#endif