#pragma once
#include <systemd/sd-bus.h>
#include <systemd/sd-event.h>

#ifdef __cplusplus
extern "C" {
#endif
typedef enum mapper_operation
{
    MAPPER_OP_REMOVE = 1
} mapper_operation;
typedef struct mapper_async_wait mapper_async_wait;
typedef struct mapper_async_subtree mapper_async_subtree;
void mapper_wait_async_free(mapper_async_wait*);
void mapper_subtree_async_free(mapper_async_subtree*);

int mapper_wait_async(sd_bus*, sd_event*, char*[], void (*)(int, void*), void*,
                      mapper_async_wait**);
int mapper_subtree_async(sd_bus*, sd_event*, char*, char*, void (*)(int, void*),
                         void*, mapper_async_subtree**, int);
int mapper_get_service(sd_bus* conn, const char* obj, char** service);
int mapper_get_object(sd_bus* conn, const char* obj, sd_bus_message** reply);
#ifdef __cplusplus
}
#endif
