/*
 * Generated by gdbus-codegen 2.39.92. DO NOT EDIT.
 *
 * The license of this code is the same as for the source it was derived from.
 */

#ifndef __ORG_GNOME_SETTINGSDAEMON_SMARTCARD_H__
#define __ORG_GNOME_SETTINGSDAEMON_SMARTCARD_H__

#include <gio/gio.h>

G_BEGIN_DECLS


/* ------------------------------------------------------------------------ */
/* Declarations for org.gnome.SettingsDaemon.Smartcard.Manager */

#define GSD_SMARTCARD_SERVICE_TYPE_MANAGER (gsd_smartcard_service_manager_get_type ())
#define GSD_SMARTCARD_SERVICE_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_MANAGER, GsdSmartcardServiceManager))
#define GSD_SMARTCARD_SERVICE_IS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_MANAGER))
#define GSD_SMARTCARD_SERVICE_MANAGER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GSD_SMARTCARD_SERVICE_TYPE_MANAGER, GsdSmartcardServiceManagerIface))

struct _GsdSmartcardServiceManager;
typedef struct _GsdSmartcardServiceManager GsdSmartcardServiceManager;
typedef struct _GsdSmartcardServiceManagerIface GsdSmartcardServiceManagerIface;

struct _GsdSmartcardServiceManagerIface
{
  GTypeInterface parent_iface;

  gboolean (*handle_get_inserted_tokens) (
    GsdSmartcardServiceManager *object,
    GDBusMethodInvocation *invocation);

  gboolean (*handle_get_login_token) (
    GsdSmartcardServiceManager *object,
    GDBusMethodInvocation *invocation);

};

GType gsd_smartcard_service_manager_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *gsd_smartcard_service_manager_interface_info (void);
guint gsd_smartcard_service_manager_override_properties (GObjectClass *klass, guint property_id_begin);


/* D-Bus method call completion functions: */
void gsd_smartcard_service_manager_complete_get_login_token (
    GsdSmartcardServiceManager *object,
    GDBusMethodInvocation *invocation,
    const gchar *token);

void gsd_smartcard_service_manager_complete_get_inserted_tokens (
    GsdSmartcardServiceManager *object,
    GDBusMethodInvocation *invocation,
    const gchar *const *tokens);



/* D-Bus method calls: */
void gsd_smartcard_service_manager_call_get_login_token (
    GsdSmartcardServiceManager *proxy,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean gsd_smartcard_service_manager_call_get_login_token_finish (
    GsdSmartcardServiceManager *proxy,
    gchar **out_token,
    GAsyncResult *res,
    GError **error);

gboolean gsd_smartcard_service_manager_call_get_login_token_sync (
    GsdSmartcardServiceManager *proxy,
    gchar **out_token,
    GCancellable *cancellable,
    GError **error);

void gsd_smartcard_service_manager_call_get_inserted_tokens (
    GsdSmartcardServiceManager *proxy,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean gsd_smartcard_service_manager_call_get_inserted_tokens_finish (
    GsdSmartcardServiceManager *proxy,
    gchar ***out_tokens,
    GAsyncResult *res,
    GError **error);

gboolean gsd_smartcard_service_manager_call_get_inserted_tokens_sync (
    GsdSmartcardServiceManager *proxy,
    gchar ***out_tokens,
    GCancellable *cancellable,
    GError **error);



/* ---- */

#define GSD_SMARTCARD_SERVICE_TYPE_MANAGER_PROXY (gsd_smartcard_service_manager_proxy_get_type ())
#define GSD_SMARTCARD_SERVICE_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_MANAGER_PROXY, GsdSmartcardServiceManagerProxy))
#define GSD_SMARTCARD_SERVICE_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSD_SMARTCARD_SERVICE_TYPE_MANAGER_PROXY, GsdSmartcardServiceManagerProxyClass))
#define GSD_SMARTCARD_SERVICE_MANAGER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_SMARTCARD_SERVICE_TYPE_MANAGER_PROXY, GsdSmartcardServiceManagerProxyClass))
#define GSD_SMARTCARD_SERVICE_IS_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_MANAGER_PROXY))
#define GSD_SMARTCARD_SERVICE_IS_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_SMARTCARD_SERVICE_TYPE_MANAGER_PROXY))

typedef struct _GsdSmartcardServiceManagerProxy GsdSmartcardServiceManagerProxy;
typedef struct _GsdSmartcardServiceManagerProxyClass GsdSmartcardServiceManagerProxyClass;
typedef struct _GsdSmartcardServiceManagerProxyPrivate GsdSmartcardServiceManagerProxyPrivate;

struct _GsdSmartcardServiceManagerProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  GsdSmartcardServiceManagerProxyPrivate *priv;
};

struct _GsdSmartcardServiceManagerProxyClass
{
  GDBusProxyClass parent_class;
};

GType gsd_smartcard_service_manager_proxy_get_type (void) G_GNUC_CONST;

void gsd_smartcard_service_manager_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GsdSmartcardServiceManager *gsd_smartcard_service_manager_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
GsdSmartcardServiceManager *gsd_smartcard_service_manager_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void gsd_smartcard_service_manager_proxy_new_for_bus (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GsdSmartcardServiceManager *gsd_smartcard_service_manager_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
GsdSmartcardServiceManager *gsd_smartcard_service_manager_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define GSD_SMARTCARD_SERVICE_TYPE_MANAGER_SKELETON (gsd_smartcard_service_manager_skeleton_get_type ())
#define GSD_SMARTCARD_SERVICE_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_MANAGER_SKELETON, GsdSmartcardServiceManagerSkeleton))
#define GSD_SMARTCARD_SERVICE_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSD_SMARTCARD_SERVICE_TYPE_MANAGER_SKELETON, GsdSmartcardServiceManagerSkeletonClass))
#define GSD_SMARTCARD_SERVICE_MANAGER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_SMARTCARD_SERVICE_TYPE_MANAGER_SKELETON, GsdSmartcardServiceManagerSkeletonClass))
#define GSD_SMARTCARD_SERVICE_IS_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_MANAGER_SKELETON))
#define GSD_SMARTCARD_SERVICE_IS_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_SMARTCARD_SERVICE_TYPE_MANAGER_SKELETON))

typedef struct _GsdSmartcardServiceManagerSkeleton GsdSmartcardServiceManagerSkeleton;
typedef struct _GsdSmartcardServiceManagerSkeletonClass GsdSmartcardServiceManagerSkeletonClass;
typedef struct _GsdSmartcardServiceManagerSkeletonPrivate GsdSmartcardServiceManagerSkeletonPrivate;

struct _GsdSmartcardServiceManagerSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  GsdSmartcardServiceManagerSkeletonPrivate *priv;
};

struct _GsdSmartcardServiceManagerSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType gsd_smartcard_service_manager_skeleton_get_type (void) G_GNUC_CONST;

GsdSmartcardServiceManager *gsd_smartcard_service_manager_skeleton_new (void);


/* ------------------------------------------------------------------------ */
/* Declarations for org.gnome.SettingsDaemon.Smartcard.Driver */

#define GSD_SMARTCARD_SERVICE_TYPE_DRIVER (gsd_smartcard_service_driver_get_type ())
#define GSD_SMARTCARD_SERVICE_DRIVER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_DRIVER, GsdSmartcardServiceDriver))
#define GSD_SMARTCARD_SERVICE_IS_DRIVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_DRIVER))
#define GSD_SMARTCARD_SERVICE_DRIVER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GSD_SMARTCARD_SERVICE_TYPE_DRIVER, GsdSmartcardServiceDriverIface))

struct _GsdSmartcardServiceDriver;
typedef struct _GsdSmartcardServiceDriver GsdSmartcardServiceDriver;
typedef struct _GsdSmartcardServiceDriverIface GsdSmartcardServiceDriverIface;

struct _GsdSmartcardServiceDriverIface
{
  GTypeInterface parent_iface;

  const gchar * (*get_description) (GsdSmartcardServiceDriver *object);

  const gchar * (*get_library) (GsdSmartcardServiceDriver *object);

};

GType gsd_smartcard_service_driver_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *gsd_smartcard_service_driver_interface_info (void);
guint gsd_smartcard_service_driver_override_properties (GObjectClass *klass, guint property_id_begin);


/* D-Bus property accessors: */
const gchar *gsd_smartcard_service_driver_get_library (GsdSmartcardServiceDriver *object);
gchar *gsd_smartcard_service_driver_dup_library (GsdSmartcardServiceDriver *object);
void gsd_smartcard_service_driver_set_library (GsdSmartcardServiceDriver *object, const gchar *value);

const gchar *gsd_smartcard_service_driver_get_description (GsdSmartcardServiceDriver *object);
gchar *gsd_smartcard_service_driver_dup_description (GsdSmartcardServiceDriver *object);
void gsd_smartcard_service_driver_set_description (GsdSmartcardServiceDriver *object, const gchar *value);


/* ---- */

#define GSD_SMARTCARD_SERVICE_TYPE_DRIVER_PROXY (gsd_smartcard_service_driver_proxy_get_type ())
#define GSD_SMARTCARD_SERVICE_DRIVER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_DRIVER_PROXY, GsdSmartcardServiceDriverProxy))
#define GSD_SMARTCARD_SERVICE_DRIVER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSD_SMARTCARD_SERVICE_TYPE_DRIVER_PROXY, GsdSmartcardServiceDriverProxyClass))
#define GSD_SMARTCARD_SERVICE_DRIVER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_SMARTCARD_SERVICE_TYPE_DRIVER_PROXY, GsdSmartcardServiceDriverProxyClass))
#define GSD_SMARTCARD_SERVICE_IS_DRIVER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_DRIVER_PROXY))
#define GSD_SMARTCARD_SERVICE_IS_DRIVER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_SMARTCARD_SERVICE_TYPE_DRIVER_PROXY))

typedef struct _GsdSmartcardServiceDriverProxy GsdSmartcardServiceDriverProxy;
typedef struct _GsdSmartcardServiceDriverProxyClass GsdSmartcardServiceDriverProxyClass;
typedef struct _GsdSmartcardServiceDriverProxyPrivate GsdSmartcardServiceDriverProxyPrivate;

struct _GsdSmartcardServiceDriverProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  GsdSmartcardServiceDriverProxyPrivate *priv;
};

struct _GsdSmartcardServiceDriverProxyClass
{
  GDBusProxyClass parent_class;
};

GType gsd_smartcard_service_driver_proxy_get_type (void) G_GNUC_CONST;

void gsd_smartcard_service_driver_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GsdSmartcardServiceDriver *gsd_smartcard_service_driver_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
GsdSmartcardServiceDriver *gsd_smartcard_service_driver_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void gsd_smartcard_service_driver_proxy_new_for_bus (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GsdSmartcardServiceDriver *gsd_smartcard_service_driver_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
GsdSmartcardServiceDriver *gsd_smartcard_service_driver_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define GSD_SMARTCARD_SERVICE_TYPE_DRIVER_SKELETON (gsd_smartcard_service_driver_skeleton_get_type ())
#define GSD_SMARTCARD_SERVICE_DRIVER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_DRIVER_SKELETON, GsdSmartcardServiceDriverSkeleton))
#define GSD_SMARTCARD_SERVICE_DRIVER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSD_SMARTCARD_SERVICE_TYPE_DRIVER_SKELETON, GsdSmartcardServiceDriverSkeletonClass))
#define GSD_SMARTCARD_SERVICE_DRIVER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_SMARTCARD_SERVICE_TYPE_DRIVER_SKELETON, GsdSmartcardServiceDriverSkeletonClass))
#define GSD_SMARTCARD_SERVICE_IS_DRIVER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_DRIVER_SKELETON))
#define GSD_SMARTCARD_SERVICE_IS_DRIVER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_SMARTCARD_SERVICE_TYPE_DRIVER_SKELETON))

typedef struct _GsdSmartcardServiceDriverSkeleton GsdSmartcardServiceDriverSkeleton;
typedef struct _GsdSmartcardServiceDriverSkeletonClass GsdSmartcardServiceDriverSkeletonClass;
typedef struct _GsdSmartcardServiceDriverSkeletonPrivate GsdSmartcardServiceDriverSkeletonPrivate;

struct _GsdSmartcardServiceDriverSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  GsdSmartcardServiceDriverSkeletonPrivate *priv;
};

struct _GsdSmartcardServiceDriverSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType gsd_smartcard_service_driver_skeleton_get_type (void) G_GNUC_CONST;

GsdSmartcardServiceDriver *gsd_smartcard_service_driver_skeleton_new (void);


/* ------------------------------------------------------------------------ */
/* Declarations for org.gnome.SettingsDaemon.Smartcard.Token */

#define GSD_SMARTCARD_SERVICE_TYPE_TOKEN (gsd_smartcard_service_token_get_type ())
#define GSD_SMARTCARD_SERVICE_TOKEN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_TOKEN, GsdSmartcardServiceToken))
#define GSD_SMARTCARD_SERVICE_IS_TOKEN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_TOKEN))
#define GSD_SMARTCARD_SERVICE_TOKEN_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GSD_SMARTCARD_SERVICE_TYPE_TOKEN, GsdSmartcardServiceTokenIface))

struct _GsdSmartcardServiceToken;
typedef struct _GsdSmartcardServiceToken GsdSmartcardServiceToken;
typedef struct _GsdSmartcardServiceTokenIface GsdSmartcardServiceTokenIface;

struct _GsdSmartcardServiceTokenIface
{
  GTypeInterface parent_iface;

  const gchar * (*get_driver) (GsdSmartcardServiceToken *object);

  gboolean  (*get_is_inserted) (GsdSmartcardServiceToken *object);

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

  gboolean  (*get_used_to_login) (GsdSmartcardServiceToken *object);

};

GType gsd_smartcard_service_token_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *gsd_smartcard_service_token_interface_info (void);
guint gsd_smartcard_service_token_override_properties (GObjectClass *klass, guint property_id_begin);


/* D-Bus property accessors: */
const gchar *gsd_smartcard_service_token_get_name (GsdSmartcardServiceToken *object);
gchar *gsd_smartcard_service_token_dup_name (GsdSmartcardServiceToken *object);
void gsd_smartcard_service_token_set_name (GsdSmartcardServiceToken *object, const gchar *value);

const gchar *gsd_smartcard_service_token_get_driver (GsdSmartcardServiceToken *object);
gchar *gsd_smartcard_service_token_dup_driver (GsdSmartcardServiceToken *object);
void gsd_smartcard_service_token_set_driver (GsdSmartcardServiceToken *object, const gchar *value);

gboolean gsd_smartcard_service_token_get_is_inserted (GsdSmartcardServiceToken *object);
void gsd_smartcard_service_token_set_is_inserted (GsdSmartcardServiceToken *object, gboolean value);

gboolean gsd_smartcard_service_token_get_used_to_login (GsdSmartcardServiceToken *object);
void gsd_smartcard_service_token_set_used_to_login (GsdSmartcardServiceToken *object, gboolean value);


/* ---- */

#define GSD_SMARTCARD_SERVICE_TYPE_TOKEN_PROXY (gsd_smartcard_service_token_proxy_get_type ())
#define GSD_SMARTCARD_SERVICE_TOKEN_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_TOKEN_PROXY, GsdSmartcardServiceTokenProxy))
#define GSD_SMARTCARD_SERVICE_TOKEN_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSD_SMARTCARD_SERVICE_TYPE_TOKEN_PROXY, GsdSmartcardServiceTokenProxyClass))
#define GSD_SMARTCARD_SERVICE_TOKEN_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_SMARTCARD_SERVICE_TYPE_TOKEN_PROXY, GsdSmartcardServiceTokenProxyClass))
#define GSD_SMARTCARD_SERVICE_IS_TOKEN_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_TOKEN_PROXY))
#define GSD_SMARTCARD_SERVICE_IS_TOKEN_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_SMARTCARD_SERVICE_TYPE_TOKEN_PROXY))

typedef struct _GsdSmartcardServiceTokenProxy GsdSmartcardServiceTokenProxy;
typedef struct _GsdSmartcardServiceTokenProxyClass GsdSmartcardServiceTokenProxyClass;
typedef struct _GsdSmartcardServiceTokenProxyPrivate GsdSmartcardServiceTokenProxyPrivate;

struct _GsdSmartcardServiceTokenProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  GsdSmartcardServiceTokenProxyPrivate *priv;
};

struct _GsdSmartcardServiceTokenProxyClass
{
  GDBusProxyClass parent_class;
};

GType gsd_smartcard_service_token_proxy_get_type (void) G_GNUC_CONST;

void gsd_smartcard_service_token_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GsdSmartcardServiceToken *gsd_smartcard_service_token_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
GsdSmartcardServiceToken *gsd_smartcard_service_token_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void gsd_smartcard_service_token_proxy_new_for_bus (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GsdSmartcardServiceToken *gsd_smartcard_service_token_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
GsdSmartcardServiceToken *gsd_smartcard_service_token_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define GSD_SMARTCARD_SERVICE_TYPE_TOKEN_SKELETON (gsd_smartcard_service_token_skeleton_get_type ())
#define GSD_SMARTCARD_SERVICE_TOKEN_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_TOKEN_SKELETON, GsdSmartcardServiceTokenSkeleton))
#define GSD_SMARTCARD_SERVICE_TOKEN_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSD_SMARTCARD_SERVICE_TYPE_TOKEN_SKELETON, GsdSmartcardServiceTokenSkeletonClass))
#define GSD_SMARTCARD_SERVICE_TOKEN_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_SMARTCARD_SERVICE_TYPE_TOKEN_SKELETON, GsdSmartcardServiceTokenSkeletonClass))
#define GSD_SMARTCARD_SERVICE_IS_TOKEN_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_TOKEN_SKELETON))
#define GSD_SMARTCARD_SERVICE_IS_TOKEN_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_SMARTCARD_SERVICE_TYPE_TOKEN_SKELETON))

typedef struct _GsdSmartcardServiceTokenSkeleton GsdSmartcardServiceTokenSkeleton;
typedef struct _GsdSmartcardServiceTokenSkeletonClass GsdSmartcardServiceTokenSkeletonClass;
typedef struct _GsdSmartcardServiceTokenSkeletonPrivate GsdSmartcardServiceTokenSkeletonPrivate;

struct _GsdSmartcardServiceTokenSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  GsdSmartcardServiceTokenSkeletonPrivate *priv;
};

struct _GsdSmartcardServiceTokenSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType gsd_smartcard_service_token_skeleton_get_type (void) G_GNUC_CONST;

GsdSmartcardServiceToken *gsd_smartcard_service_token_skeleton_new (void);


/* ---- */

#define GSD_SMARTCARD_SERVICE_TYPE_OBJECT (gsd_smartcard_service_object_get_type ())
#define GSD_SMARTCARD_SERVICE_OBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT, GsdSmartcardServiceObject))
#define GSD_SMARTCARD_SERVICE_IS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT))
#define GSD_SMARTCARD_SERVICE_OBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT, GsdSmartcardServiceObject))

struct _GsdSmartcardServiceObject;
typedef struct _GsdSmartcardServiceObject GsdSmartcardServiceObject;
typedef struct _GsdSmartcardServiceObjectIface GsdSmartcardServiceObjectIface;

struct _GsdSmartcardServiceObjectIface
{
  GTypeInterface parent_iface;
};

GType gsd_smartcard_service_object_get_type (void) G_GNUC_CONST;

GsdSmartcardServiceManager *gsd_smartcard_service_object_get_manager (GsdSmartcardServiceObject *object);
GsdSmartcardServiceDriver *gsd_smartcard_service_object_get_driver (GsdSmartcardServiceObject *object);
GsdSmartcardServiceToken *gsd_smartcard_service_object_get_token (GsdSmartcardServiceObject *object);
GsdSmartcardServiceManager *gsd_smartcard_service_object_peek_manager (GsdSmartcardServiceObject *object);
GsdSmartcardServiceDriver *gsd_smartcard_service_object_peek_driver (GsdSmartcardServiceObject *object);
GsdSmartcardServiceToken *gsd_smartcard_service_object_peek_token (GsdSmartcardServiceObject *object);

#define GSD_SMARTCARD_SERVICE_TYPE_OBJECT_PROXY (gsd_smartcard_service_object_proxy_get_type ())
#define GSD_SMARTCARD_SERVICE_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_PROXY, GsdSmartcardServiceObjectProxy))
#define GSD_SMARTCARD_SERVICE_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_PROXY, GsdSmartcardServiceObjectProxyClass))
#define GSD_SMARTCARD_SERVICE_OBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_PROXY, GsdSmartcardServiceObjectProxyClass))
#define GSD_SMARTCARD_SERVICE_IS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_PROXY))
#define GSD_SMARTCARD_SERVICE_IS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_PROXY))

typedef struct _GsdSmartcardServiceObjectProxy GsdSmartcardServiceObjectProxy;
typedef struct _GsdSmartcardServiceObjectProxyClass GsdSmartcardServiceObjectProxyClass;
typedef struct _GsdSmartcardServiceObjectProxyPrivate GsdSmartcardServiceObjectProxyPrivate;

struct _GsdSmartcardServiceObjectProxy
{
  /*< private >*/
  GDBusObjectProxy parent_instance;
  GsdSmartcardServiceObjectProxyPrivate *priv;
};

struct _GsdSmartcardServiceObjectProxyClass
{
  GDBusObjectProxyClass parent_class;
};

GType gsd_smartcard_service_object_proxy_get_type (void) G_GNUC_CONST;
GsdSmartcardServiceObjectProxy *gsd_smartcard_service_object_proxy_new (GDBusConnection *connection, const gchar *object_path);

#define GSD_SMARTCARD_SERVICE_TYPE_OBJECT_SKELETON (gsd_smartcard_service_object_skeleton_get_type ())
#define GSD_SMARTCARD_SERVICE_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_SKELETON, GsdSmartcardServiceObjectSkeleton))
#define GSD_SMARTCARD_SERVICE_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_SKELETON, GsdSmartcardServiceObjectSkeletonClass))
#define GSD_SMARTCARD_SERVICE_OBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_SKELETON, GsdSmartcardServiceObjectSkeletonClass))
#define GSD_SMARTCARD_SERVICE_IS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_SKELETON))
#define GSD_SMARTCARD_SERVICE_IS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_SKELETON))

typedef struct _GsdSmartcardServiceObjectSkeleton GsdSmartcardServiceObjectSkeleton;
typedef struct _GsdSmartcardServiceObjectSkeletonClass GsdSmartcardServiceObjectSkeletonClass;
typedef struct _GsdSmartcardServiceObjectSkeletonPrivate GsdSmartcardServiceObjectSkeletonPrivate;

struct _GsdSmartcardServiceObjectSkeleton
{
  /*< private >*/
  GDBusObjectSkeleton parent_instance;
  GsdSmartcardServiceObjectSkeletonPrivate *priv;
};

struct _GsdSmartcardServiceObjectSkeletonClass
{
  GDBusObjectSkeletonClass parent_class;
};

GType gsd_smartcard_service_object_skeleton_get_type (void) G_GNUC_CONST;
GsdSmartcardServiceObjectSkeleton *gsd_smartcard_service_object_skeleton_new (const gchar *object_path);
void gsd_smartcard_service_object_skeleton_set_manager (GsdSmartcardServiceObjectSkeleton *object, GsdSmartcardServiceManager *interface_);
void gsd_smartcard_service_object_skeleton_set_driver (GsdSmartcardServiceObjectSkeleton *object, GsdSmartcardServiceDriver *interface_);
void gsd_smartcard_service_object_skeleton_set_token (GsdSmartcardServiceObjectSkeleton *object, GsdSmartcardServiceToken *interface_);

/* ---- */

#define GSD_SMARTCARD_SERVICE_TYPE_OBJECT_MANAGER_CLIENT (gsd_smartcard_service_object_manager_client_get_type ())
#define GSD_SMARTCARD_SERVICE_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_MANAGER_CLIENT, GsdSmartcardServiceObjectManagerClient))
#define GSD_SMARTCARD_SERVICE_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_MANAGER_CLIENT, GsdSmartcardServiceObjectManagerClientClass))
#define GSD_SMARTCARD_SERVICE_OBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_MANAGER_CLIENT, GsdSmartcardServiceObjectManagerClientClass))
#define GSD_SMARTCARD_SERVICE_IS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_MANAGER_CLIENT))
#define GSD_SMARTCARD_SERVICE_IS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_SMARTCARD_SERVICE_TYPE_OBJECT_MANAGER_CLIENT))

typedef struct _GsdSmartcardServiceObjectManagerClient GsdSmartcardServiceObjectManagerClient;
typedef struct _GsdSmartcardServiceObjectManagerClientClass GsdSmartcardServiceObjectManagerClientClass;
typedef struct _GsdSmartcardServiceObjectManagerClientPrivate GsdSmartcardServiceObjectManagerClientPrivate;

struct _GsdSmartcardServiceObjectManagerClient
{
  /*< private >*/
  GDBusObjectManagerClient parent_instance;
  GsdSmartcardServiceObjectManagerClientPrivate *priv;
};

struct _GsdSmartcardServiceObjectManagerClientClass
{
  GDBusObjectManagerClientClass parent_class;
};

GType gsd_smartcard_service_object_manager_client_get_type (void) G_GNUC_CONST;

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

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

void gsd_smartcard_service_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 *gsd_smartcard_service_object_manager_client_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
GDBusObjectManager *gsd_smartcard_service_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 /* __ORG_GNOME_SETTINGSDAEMON_SMARTCARD_H__ */
