typedef struct guestconv_h guestconv_h;

typedef struct {
    char *root;
    char *desc;
} guestconv_root;

typedef struct {
    int code;
    char *message;
} guestconv_err;

guestconv_h *guestconv_create(guestconv_err **err);
guestconv_h *guestconv_create_uid(uid_t uid, gid_t gid, guestconv_err **err);

int guestconv_close(guestconv_h *h);

int guestconv_add_drive(guestconv_h *h, char *path, char *hint,
                        guestconv_err **err);

guestconv_root **guestconv_inspect(guestconv_h *h, char *target,
                                   guestconv_err **err);

int guestconv_convert(guestconv_h *h, guestconv_root *root,
                      guestconv_err **err);

void guestconv_err_free(guestconv_err *err);
