#ifndef VMETTE_H
#define VMETTE_H
#pragma once
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
enum VmetteStatus {
Ok = 0,
InvalidConfig = 1,
StartFailed = 2,
RestoreFailed = 3,
SaveFailed = 4,
SnapshotUnsupported = 5,
Timeout = 6,
Vsock = 7,
Io = 8,
NullArg = 9,
InvalidUtf8 = 10,
};
typedef int32_t VmetteStatus;
typedef struct vmette_config_t {
uint8_t _private[0];
} vmette_config_t;
typedef struct vmette_run_output_t {
uint8_t _private[0];
} vmette_run_output_t;
struct vmette_config_t *vmette_config_new(const char *kernel, const char *initramfs);
void vmette_config_free(struct vmette_config_t *cfg);
void vmette_config_set_cmdline(struct vmette_config_t *cfg, const char *cmdline);
void vmette_config_set_rootfs_share(struct vmette_config_t *cfg, const char *path, bool read_only);
void vmette_config_add_share(struct vmette_config_t *cfg, const char *tag, const char *path);
void vmette_config_add_disk(struct vmette_config_t *cfg, const char *path);
void vmette_config_set_exec(struct vmette_config_t *cfg, const char *cmd);
void vmette_config_set_net(struct vmette_config_t *cfg, bool enable);
void vmette_config_set_switch_root(struct vmette_config_t *cfg, bool enable);
void vmette_config_set_vsock_port(struct vmette_config_t *cfg, int32_t port);
void vmette_config_set_guest_vsock_port(struct vmette_config_t *cfg, uint32_t port);
void vmette_config_set_timeout(struct vmette_config_t *cfg, uint32_t seconds);
void vmette_config_set_vcpus(struct vmette_config_t *cfg, uint8_t n);
void vmette_config_set_mem_mib(struct vmette_config_t *cfg, uint64_t n);
void vmette_config_set_build_snapshot(struct vmette_config_t *cfg, const char *path);
void vmette_config_set_resume_snapshot(struct vmette_config_t *cfg, const char *path);
VmetteStatus vmette_run(const struct vmette_config_t *cfg, struct vmette_run_output_t **out);
int32_t vmette_run_output_exit_code(const struct vmette_run_output_t *out);
void vmette_run_output_free(struct vmette_run_output_t *out);
const char *vmette_version(void);
#endif