/*
 * This file is generated by gdbus-codegen, do not modify it.
 *
 * The license of this code is the same as for the D-Bus interface description
 * it was derived from. Note that it links to GLib, so must comply with the
 * LGPL linking clauses.
 */

#ifndef __FPRINTD_DBUS_H__
#define __FPRINTD_DBUS_H__

#include <gio/gio.h>

G_BEGIN_DECLS


/* ------------------------------------------------------------------------ */
/* Declarations for net.reactivated.Fprint.Device */

#define FPRINT_DBUS_TYPE_DEVICE (fprint_dbus_device_get_type ())
#define FPRINT_DBUS_DEVICE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), FPRINT_DBUS_TYPE_DEVICE, FprintDBusDevice))
#define FPRINT_DBUS_IS_DEVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), FPRINT_DBUS_TYPE_DEVICE))
#define FPRINT_DBUS_DEVICE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), FPRINT_DBUS_TYPE_DEVICE, FprintDBusDeviceIface))

struct _FprintDBusDevice;
typedef struct _FprintDBusDevice FprintDBusDevice;
typedef struct _FprintDBusDeviceIface FprintDBusDeviceIface;

struct _FprintDBusDeviceIface
{
  GTypeInterface parent_iface;



  gboolean (*handle_claim) (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation,
    const gchar *arg_username);

  gboolean (*handle_delete_enrolled_finger) (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation,
    const gchar *arg_finger_name);

  gboolean (*handle_delete_enrolled_fingers) (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation,
    const gchar *arg_username);

  gboolean (*handle_delete_enrolled_fingers2) (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

  gboolean (*handle_enroll_start) (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation,
    const gchar *arg_finger_name);

  gboolean (*handle_enroll_stop) (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

  gboolean (*handle_list_enrolled_fingers) (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation,
    const gchar *arg_username);

  gboolean (*handle_release) (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

  gboolean (*handle_verify_start) (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation,
    const gchar *arg_finger_name);

  gboolean (*handle_verify_stop) (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

  gboolean  (*get_finger_needed) (FprintDBusDevice *object);

  gboolean  (*get_finger_present) (FprintDBusDevice *object);

  const gchar * (*get_name) (FprintDBusDevice *object);

  gint  (*get_num_enroll_stages) (FprintDBusDevice *object);

  const gchar * (*get_scan_type) (FprintDBusDevice *object);

  void (*enroll_status) (
    FprintDBusDevice *object,
    const gchar *arg_result,
    gboolean arg_done);

  void (*verify_finger_selected) (
    FprintDBusDevice *object,
    const gchar *arg_finger_name);

  void (*verify_status) (
    FprintDBusDevice *object,
    const gchar *arg_result,
    gboolean arg_done);

};

#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FprintDBusDevice, g_object_unref)
#endif

GType fprint_dbus_device_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *fprint_dbus_device_interface_info (void);
guint fprint_dbus_device_override_properties (GObjectClass *klass, guint property_id_begin);


/* D-Bus method call completion functions: */
void fprint_dbus_device_complete_list_enrolled_fingers (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation,
    const gchar *const *enrolled_fingers);

void fprint_dbus_device_complete_delete_enrolled_fingers (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

void fprint_dbus_device_complete_delete_enrolled_fingers2 (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

void fprint_dbus_device_complete_delete_enrolled_finger (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

void fprint_dbus_device_complete_claim (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

void fprint_dbus_device_complete_release (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

void fprint_dbus_device_complete_verify_start (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

void fprint_dbus_device_complete_verify_stop (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

void fprint_dbus_device_complete_enroll_start (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);

void fprint_dbus_device_complete_enroll_stop (
    FprintDBusDevice *object,
    GDBusMethodInvocation *invocation);



/* D-Bus signal emissions functions: */
void fprint_dbus_device_emit_verify_finger_selected (
    FprintDBusDevice *object,
    const gchar *arg_finger_name);

void fprint_dbus_device_emit_verify_status (
    FprintDBusDevice *object,
    const gchar *arg_result,
    gboolean arg_done);

void fprint_dbus_device_emit_enroll_status (
    FprintDBusDevice *object,
    const gchar *arg_result,
    gboolean arg_done);



/* D-Bus method calls: */
void fprint_dbus_device_call_list_enrolled_fingers (
    FprintDBusDevice *proxy,
    const gchar *arg_username,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_device_call_list_enrolled_fingers_finish (
    FprintDBusDevice *proxy,
    gchar ***out_enrolled_fingers,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_device_call_list_enrolled_fingers_sync (
    FprintDBusDevice *proxy,
    const gchar *arg_username,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    gchar ***out_enrolled_fingers,
    GCancellable *cancellable,
    GError **error);

void fprint_dbus_device_call_delete_enrolled_fingers (
    FprintDBusDevice *proxy,
    const gchar *arg_username,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_device_call_delete_enrolled_fingers_finish (
    FprintDBusDevice *proxy,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_device_call_delete_enrolled_fingers_sync (
    FprintDBusDevice *proxy,
    const gchar *arg_username,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GError **error);

void fprint_dbus_device_call_delete_enrolled_fingers2 (
    FprintDBusDevice *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_device_call_delete_enrolled_fingers2_finish (
    FprintDBusDevice *proxy,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_device_call_delete_enrolled_fingers2_sync (
    FprintDBusDevice *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GError **error);

void fprint_dbus_device_call_delete_enrolled_finger (
    FprintDBusDevice *proxy,
    const gchar *arg_finger_name,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_device_call_delete_enrolled_finger_finish (
    FprintDBusDevice *proxy,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_device_call_delete_enrolled_finger_sync (
    FprintDBusDevice *proxy,
    const gchar *arg_finger_name,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GError **error);

void fprint_dbus_device_call_claim (
    FprintDBusDevice *proxy,
    const gchar *arg_username,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_device_call_claim_finish (
    FprintDBusDevice *proxy,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_device_call_claim_sync (
    FprintDBusDevice *proxy,
    const gchar *arg_username,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GError **error);

void fprint_dbus_device_call_release (
    FprintDBusDevice *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_device_call_release_finish (
    FprintDBusDevice *proxy,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_device_call_release_sync (
    FprintDBusDevice *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GError **error);

void fprint_dbus_device_call_verify_start (
    FprintDBusDevice *proxy,
    const gchar *arg_finger_name,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_device_call_verify_start_finish (
    FprintDBusDevice *proxy,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_device_call_verify_start_sync (
    FprintDBusDevice *proxy,
    const gchar *arg_finger_name,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GError **error);

void fprint_dbus_device_call_verify_stop (
    FprintDBusDevice *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_device_call_verify_stop_finish (
    FprintDBusDevice *proxy,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_device_call_verify_stop_sync (
    FprintDBusDevice *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GError **error);

void fprint_dbus_device_call_enroll_start (
    FprintDBusDevice *proxy,
    const gchar *arg_finger_name,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_device_call_enroll_start_finish (
    FprintDBusDevice *proxy,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_device_call_enroll_start_sync (
    FprintDBusDevice *proxy,
    const gchar *arg_finger_name,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GError **error);

void fprint_dbus_device_call_enroll_stop (
    FprintDBusDevice *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_device_call_enroll_stop_finish (
    FprintDBusDevice *proxy,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_device_call_enroll_stop_sync (
    FprintDBusDevice *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GError **error);



/* D-Bus property accessors: */
const gchar *fprint_dbus_device_get_name (FprintDBusDevice *object);
gchar *fprint_dbus_device_dup_name (FprintDBusDevice *object);
void fprint_dbus_device_set_name (FprintDBusDevice *object, const gchar *value);

gint fprint_dbus_device_get_num_enroll_stages (FprintDBusDevice *object);
void fprint_dbus_device_set_num_enroll_stages (FprintDBusDevice *object, gint value);

const gchar *fprint_dbus_device_get_scan_type (FprintDBusDevice *object);
gchar *fprint_dbus_device_dup_scan_type (FprintDBusDevice *object);
void fprint_dbus_device_set_scan_type (FprintDBusDevice *object, const gchar *value);

gboolean fprint_dbus_device_get_finger_present (FprintDBusDevice *object);
void fprint_dbus_device_set_finger_present (FprintDBusDevice *object, gboolean value);

gboolean fprint_dbus_device_get_finger_needed (FprintDBusDevice *object);
void fprint_dbus_device_set_finger_needed (FprintDBusDevice *object, gboolean value);


/* ---- */

#define FPRINT_DBUS_TYPE_DEVICE_PROXY (fprint_dbus_device_proxy_get_type ())
#define FPRINT_DBUS_DEVICE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), FPRINT_DBUS_TYPE_DEVICE_PROXY, FprintDBusDeviceProxy))
#define FPRINT_DBUS_DEVICE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), FPRINT_DBUS_TYPE_DEVICE_PROXY, FprintDBusDeviceProxyClass))
#define FPRINT_DBUS_DEVICE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), FPRINT_DBUS_TYPE_DEVICE_PROXY, FprintDBusDeviceProxyClass))
#define FPRINT_DBUS_IS_DEVICE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), FPRINT_DBUS_TYPE_DEVICE_PROXY))
#define FPRINT_DBUS_IS_DEVICE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), FPRINT_DBUS_TYPE_DEVICE_PROXY))

typedef struct _FprintDBusDeviceProxy FprintDBusDeviceProxy;
typedef struct _FprintDBusDeviceProxyClass FprintDBusDeviceProxyClass;
typedef struct _FprintDBusDeviceProxyPrivate FprintDBusDeviceProxyPrivate;

struct _FprintDBusDeviceProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  FprintDBusDeviceProxyPrivate *priv;
};

struct _FprintDBusDeviceProxyClass
{
  GDBusProxyClass parent_class;
};

GType fprint_dbus_device_proxy_get_type (void) G_GNUC_CONST;

#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FprintDBusDeviceProxy, g_object_unref)
#endif

void fprint_dbus_device_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
FprintDBusDevice *fprint_dbus_device_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
FprintDBusDevice *fprint_dbus_device_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void fprint_dbus_device_proxy_new_for_bus (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
FprintDBusDevice *fprint_dbus_device_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
FprintDBusDevice *fprint_dbus_device_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define FPRINT_DBUS_TYPE_DEVICE_SKELETON (fprint_dbus_device_skeleton_get_type ())
#define FPRINT_DBUS_DEVICE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), FPRINT_DBUS_TYPE_DEVICE_SKELETON, FprintDBusDeviceSkeleton))
#define FPRINT_DBUS_DEVICE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), FPRINT_DBUS_TYPE_DEVICE_SKELETON, FprintDBusDeviceSkeletonClass))
#define FPRINT_DBUS_DEVICE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), FPRINT_DBUS_TYPE_DEVICE_SKELETON, FprintDBusDeviceSkeletonClass))
#define FPRINT_DBUS_IS_DEVICE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), FPRINT_DBUS_TYPE_DEVICE_SKELETON))
#define FPRINT_DBUS_IS_DEVICE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), FPRINT_DBUS_TYPE_DEVICE_SKELETON))

typedef struct _FprintDBusDeviceSkeleton FprintDBusDeviceSkeleton;
typedef struct _FprintDBusDeviceSkeletonClass FprintDBusDeviceSkeletonClass;
typedef struct _FprintDBusDeviceSkeletonPrivate FprintDBusDeviceSkeletonPrivate;

struct _FprintDBusDeviceSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  FprintDBusDeviceSkeletonPrivate *priv;
};

struct _FprintDBusDeviceSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType fprint_dbus_device_skeleton_get_type (void) G_GNUC_CONST;

#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FprintDBusDeviceSkeleton, g_object_unref)
#endif

FprintDBusDevice *fprint_dbus_device_skeleton_new (void);


/* ------------------------------------------------------------------------ */
/* Declarations for net.reactivated.Fprint.Manager */

#define FPRINT_DBUS_TYPE_MANAGER (fprint_dbus_manager_get_type ())
#define FPRINT_DBUS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), FPRINT_DBUS_TYPE_MANAGER, FprintDBusManager))
#define FPRINT_DBUS_IS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), FPRINT_DBUS_TYPE_MANAGER))
#define FPRINT_DBUS_MANAGER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), FPRINT_DBUS_TYPE_MANAGER, FprintDBusManagerIface))

struct _FprintDBusManager;
typedef struct _FprintDBusManager FprintDBusManager;
typedef struct _FprintDBusManagerIface FprintDBusManagerIface;

struct _FprintDBusManagerIface
{
  GTypeInterface parent_iface;

  gboolean (*handle_get_default_device) (
    FprintDBusManager *object,
    GDBusMethodInvocation *invocation);

  gboolean (*handle_get_devices) (
    FprintDBusManager *object,
    GDBusMethodInvocation *invocation);

};

#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FprintDBusManager, g_object_unref)
#endif

GType fprint_dbus_manager_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *fprint_dbus_manager_interface_info (void);
guint fprint_dbus_manager_override_properties (GObjectClass *klass, guint property_id_begin);


/* D-Bus method call completion functions: */
void fprint_dbus_manager_complete_get_devices (
    FprintDBusManager *object,
    GDBusMethodInvocation *invocation,
    const gchar *const *devices);

void fprint_dbus_manager_complete_get_default_device (
    FprintDBusManager *object,
    GDBusMethodInvocation *invocation,
    const gchar *device);



/* D-Bus method calls: */
void fprint_dbus_manager_call_get_devices (
    FprintDBusManager *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_manager_call_get_devices_finish (
    FprintDBusManager *proxy,
    gchar ***out_devices,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_manager_call_get_devices_sync (
    FprintDBusManager *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    gchar ***out_devices,
    GCancellable *cancellable,
    GError **error);

void fprint_dbus_manager_call_get_default_device (
    FprintDBusManager *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean fprint_dbus_manager_call_get_default_device_finish (
    FprintDBusManager *proxy,
    gchar **out_device,
    GAsyncResult *res,
    GError **error);

gboolean fprint_dbus_manager_call_get_default_device_sync (
    FprintDBusManager *proxy,
    GDBusCallFlags call_flags,
    gint timeout_msec,
    gchar **out_device,
    GCancellable *cancellable,
    GError **error);



/* ---- */

#define FPRINT_DBUS_TYPE_MANAGER_PROXY (fprint_dbus_manager_proxy_get_type ())
#define FPRINT_DBUS_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), FPRINT_DBUS_TYPE_MANAGER_PROXY, FprintDBusManagerProxy))
#define FPRINT_DBUS_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), FPRINT_DBUS_TYPE_MANAGER_PROXY, FprintDBusManagerProxyClass))
#define FPRINT_DBUS_MANAGER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), FPRINT_DBUS_TYPE_MANAGER_PROXY, FprintDBusManagerProxyClass))
#define FPRINT_DBUS_IS_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), FPRINT_DBUS_TYPE_MANAGER_PROXY))
#define FPRINT_DBUS_IS_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), FPRINT_DBUS_TYPE_MANAGER_PROXY))

typedef struct _FprintDBusManagerProxy FprintDBusManagerProxy;
typedef struct _FprintDBusManagerProxyClass FprintDBusManagerProxyClass;
typedef struct _FprintDBusManagerProxyPrivate FprintDBusManagerProxyPrivate;

struct _FprintDBusManagerProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  FprintDBusManagerProxyPrivate *priv;
};

struct _FprintDBusManagerProxyClass
{
  GDBusProxyClass parent_class;
};

GType fprint_dbus_manager_proxy_get_type (void) G_GNUC_CONST;

#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FprintDBusManagerProxy, g_object_unref)
#endif

void fprint_dbus_manager_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
FprintDBusManager *fprint_dbus_manager_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
FprintDBusManager *fprint_dbus_manager_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void fprint_dbus_manager_proxy_new_for_bus (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
FprintDBusManager *fprint_dbus_manager_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
FprintDBusManager *fprint_dbus_manager_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define FPRINT_DBUS_TYPE_MANAGER_SKELETON (fprint_dbus_manager_skeleton_get_type ())
#define FPRINT_DBUS_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), FPRINT_DBUS_TYPE_MANAGER_SKELETON, FprintDBusManagerSkeleton))
#define FPRINT_DBUS_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), FPRINT_DBUS_TYPE_MANAGER_SKELETON, FprintDBusManagerSkeletonClass))
#define FPRINT_DBUS_MANAGER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), FPRINT_DBUS_TYPE_MANAGER_SKELETON, FprintDBusManagerSkeletonClass))
#define FPRINT_DBUS_IS_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), FPRINT_DBUS_TYPE_MANAGER_SKELETON))
#define FPRINT_DBUS_IS_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), FPRINT_DBUS_TYPE_MANAGER_SKELETON))

typedef struct _FprintDBusManagerSkeleton FprintDBusManagerSkeleton;
typedef struct _FprintDBusManagerSkeletonClass FprintDBusManagerSkeletonClass;
typedef struct _FprintDBusManagerSkeletonPrivate FprintDBusManagerSkeletonPrivate;

struct _FprintDBusManagerSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  FprintDBusManagerSkeletonPrivate *priv;
};

struct _FprintDBusManagerSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType fprint_dbus_manager_skeleton_get_type (void) G_GNUC_CONST;

#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FprintDBusManagerSkeleton, g_object_unref)
#endif

FprintDBusManager *fprint_dbus_manager_skeleton_new (void);


/* ---- */

#define FPRINT_DBUS_TYPE_OBJECT (fprint_dbus_object_get_type ())
#define FPRINT_DBUS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), FPRINT_DBUS_TYPE_OBJECT, FprintDBusObject))
#define FPRINT_DBUS_IS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), FPRINT_DBUS_TYPE_OBJECT))
#define FPRINT_DBUS_OBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), FPRINT_DBUS_TYPE_OBJECT, FprintDBusObject))

struct _FprintDBusObject;
typedef struct _FprintDBusObject FprintDBusObject;
typedef struct _FprintDBusObjectIface FprintDBusObjectIface;

struct _FprintDBusObjectIface
{
  GTypeInterface parent_iface;
};

GType fprint_dbus_object_get_type (void) G_GNUC_CONST;

#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FprintDBusObject, g_object_unref)
#endif

FprintDBusDevice *fprint_dbus_object_get_device (FprintDBusObject *object);
FprintDBusManager *fprint_dbus_object_get_manager (FprintDBusObject *object);
FprintDBusDevice *fprint_dbus_object_peek_device (FprintDBusObject *object);
FprintDBusManager *fprint_dbus_object_peek_manager (FprintDBusObject *object);

#define FPRINT_DBUS_TYPE_OBJECT_PROXY (fprint_dbus_object_proxy_get_type ())
#define FPRINT_DBUS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), FPRINT_DBUS_TYPE_OBJECT_PROXY, FprintDBusObjectProxy))
#define FPRINT_DBUS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), FPRINT_DBUS_TYPE_OBJECT_PROXY, FprintDBusObjectProxyClass))
#define FPRINT_DBUS_OBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), FPRINT_DBUS_TYPE_OBJECT_PROXY, FprintDBusObjectProxyClass))
#define FPRINT_DBUS_IS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), FPRINT_DBUS_TYPE_OBJECT_PROXY))
#define FPRINT_DBUS_IS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), FPRINT_DBUS_TYPE_OBJECT_PROXY))

typedef struct _FprintDBusObjectProxy FprintDBusObjectProxy;
typedef struct _FprintDBusObjectProxyClass FprintDBusObjectProxyClass;
typedef struct _FprintDBusObjectProxyPrivate FprintDBusObjectProxyPrivate;

struct _FprintDBusObjectProxy
{
  /*< private >*/
  GDBusObjectProxy parent_instance;
  FprintDBusObjectProxyPrivate *priv;
};

struct _FprintDBusObjectProxyClass
{
  GDBusObjectProxyClass parent_class;
};

GType fprint_dbus_object_proxy_get_type (void) G_GNUC_CONST;

#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FprintDBusObjectProxy, g_object_unref)
#endif

FprintDBusObjectProxy *fprint_dbus_object_proxy_new (GDBusConnection *connection, const gchar *object_path);

#define FPRINT_DBUS_TYPE_OBJECT_SKELETON (fprint_dbus_object_skeleton_get_type ())
#define FPRINT_DBUS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), FPRINT_DBUS_TYPE_OBJECT_SKELETON, FprintDBusObjectSkeleton))
#define FPRINT_DBUS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), FPRINT_DBUS_TYPE_OBJECT_SKELETON, FprintDBusObjectSkeletonClass))
#define FPRINT_DBUS_OBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), FPRINT_DBUS_TYPE_OBJECT_SKELETON, FprintDBusObjectSkeletonClass))
#define FPRINT_DBUS_IS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), FPRINT_DBUS_TYPE_OBJECT_SKELETON))
#define FPRINT_DBUS_IS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), FPRINT_DBUS_TYPE_OBJECT_SKELETON))

typedef struct _FprintDBusObjectSkeleton FprintDBusObjectSkeleton;
typedef struct _FprintDBusObjectSkeletonClass FprintDBusObjectSkeletonClass;
typedef struct _FprintDBusObjectSkeletonPrivate FprintDBusObjectSkeletonPrivate;

struct _FprintDBusObjectSkeleton
{
  /*< private >*/
  GDBusObjectSkeleton parent_instance;
  FprintDBusObjectSkeletonPrivate *priv;
};

struct _FprintDBusObjectSkeletonClass
{
  GDBusObjectSkeletonClass parent_class;
};

GType fprint_dbus_object_skeleton_get_type (void) G_GNUC_CONST;

#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FprintDBusObjectSkeleton, g_object_unref)
#endif

FprintDBusObjectSkeleton *fprint_dbus_object_skeleton_new (const gchar *object_path);
void fprint_dbus_object_skeleton_set_device (FprintDBusObjectSkeleton *object, FprintDBusDevice *interface_);
void fprint_dbus_object_skeleton_set_manager (FprintDBusObjectSkeleton *object, FprintDBusManager *interface_);

/* ---- */

#define FPRINT_DBUS_TYPE_OBJECT_MANAGER_CLIENT (fprint_dbus_object_manager_client_get_type ())
#define FPRINT_DBUS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), FPRINT_DBUS_TYPE_OBJECT_MANAGER_CLIENT, FprintDBusObjectManagerClient))
#define FPRINT_DBUS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), FPRINT_DBUS_TYPE_OBJECT_MANAGER_CLIENT, FprintDBusObjectManagerClientClass))
#define FPRINT_DBUS_OBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), FPRINT_DBUS_TYPE_OBJECT_MANAGER_CLIENT, FprintDBusObjectManagerClientClass))
#define FPRINT_DBUS_IS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), FPRINT_DBUS_TYPE_OBJECT_MANAGER_CLIENT))
#define FPRINT_DBUS_IS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), FPRINT_DBUS_TYPE_OBJECT_MANAGER_CLIENT))

typedef struct _FprintDBusObjectManagerClient FprintDBusObjectManagerClient;
typedef struct _FprintDBusObjectManagerClientClass FprintDBusObjectManagerClientClass;
typedef struct _FprintDBusObjectManagerClientPrivate FprintDBusObjectManagerClientPrivate;

struct _FprintDBusObjectManagerClient
{
  /*< private >*/
  GDBusObjectManagerClient parent_instance;
  FprintDBusObjectManagerClientPrivate *priv;
};

struct _FprintDBusObjectManagerClientClass
{
  GDBusObjectManagerClientClass parent_class;
};

#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FprintDBusObjectManagerClient, g_object_unref)
#endif

GType fprint_dbus_object_manager_client_get_type (void) G_GNUC_CONST;

GType fprint_dbus_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager, const gchar *object_path, const gchar *interface_name, gpointer user_data);

void fprint_dbus_object_manager_client_new (
    GDBusConnection        *connection,
    GDBusObjectManagerClientFlags  flags,
    const gchar            *name,
    const gchar            *object_path,
    GCancellable           *cancellable,
    GAsyncReadyCallback     callback,
    gpointer                user_data);
GDBusObjectManager *fprint_dbus_object_manager_client_new_finish (
    GAsyncResult        *res,
    GError             **error);
GDBusObjectManager *fprint_dbus_object_manager_client_new_sync (
    GDBusConnection        *connection,
    GDBusObjectManagerClientFlags  flags,
    const gchar            *name,
    const gchar            *object_path,
    GCancellable           *cancellable,
    GError                **error);

void fprint_dbus_object_manager_client_new_for_bus (
    GBusType                bus_type,
    GDBusObjectManagerClientFlags  flags,
    const gchar            *name,
    const gchar            *object_path,
    GCancellable           *cancellable,
    GAsyncReadyCallback     callback,
    gpointer                user_data);
GDBusObjectManager *fprint_dbus_object_manager_client_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
GDBusObjectManager *fprint_dbus_object_manager_client_new_for_bus_sync (
    GBusType                bus_type,
    GDBusObjectManagerClientFlags  flags,
    const gchar            *name,
    const gchar            *object_path,
    GCancellable           *cancellable,
    GError                **error);


G_END_DECLS

#endif /* __FPRINTD_DBUS_H__ */
