/*
 * 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 __GRD_DBUS_MUTTER_SCREEN_CAST_H__
#define __GRD_DBUS_MUTTER_SCREEN_CAST_H__

#include <gio/gio.h>

G_BEGIN_DECLS


/* ------------------------------------------------------------------------ */
/* Declarations for org.gnome.Mutter.ScreenCast */

#define GRD_DBUS_MUTTER_TYPE_SCREEN_CAST (grd_dbus_mutter_screen_cast_get_type ())
#define GRD_DBUS_MUTTER_SCREEN_CAST(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST, GrdDBusMutterScreenCast))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST))
#define GRD_DBUS_MUTTER_SCREEN_CAST_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST, GrdDBusMutterScreenCastIface))

struct _GrdDBusMutterScreenCast;
typedef struct _GrdDBusMutterScreenCast GrdDBusMutterScreenCast;
typedef struct _GrdDBusMutterScreenCastIface GrdDBusMutterScreenCastIface;

struct _GrdDBusMutterScreenCastIface
{
  GTypeInterface parent_iface;


  gboolean (*handle_create_session) (
    GrdDBusMutterScreenCast *object,
    GDBusMethodInvocation *invocation,
    GVariant *arg_properties);

  gint  (*get_version) (GrdDBusMutterScreenCast *object);

};

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

GType grd_dbus_mutter_screen_cast_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *grd_dbus_mutter_screen_cast_interface_info (void);
guint grd_dbus_mutter_screen_cast_override_properties (GObjectClass *klass, guint property_id_begin);


/* D-Bus method call completion functions: */
void grd_dbus_mutter_screen_cast_complete_create_session (
    GrdDBusMutterScreenCast *object,
    GDBusMethodInvocation *invocation,
    const gchar *session_path);



/* D-Bus method calls: */
void grd_dbus_mutter_screen_cast_call_create_session (
    GrdDBusMutterScreenCast *proxy,
    GVariant *arg_properties,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean grd_dbus_mutter_screen_cast_call_create_session_finish (
    GrdDBusMutterScreenCast *proxy,
    gchar ** out_session_path,
    GAsyncResult *res,
    GError **error);

gboolean grd_dbus_mutter_screen_cast_call_create_session_sync (
    GrdDBusMutterScreenCast *proxy,
    GVariant *arg_properties,
    gchar ** out_session_path,
    GCancellable *cancellable,
    GError **error);



/* D-Bus property accessors: */
gint grd_dbus_mutter_screen_cast_get_version (GrdDBusMutterScreenCast *object);
void grd_dbus_mutter_screen_cast_set_version (GrdDBusMutterScreenCast *object, gint value);


/* ---- */

#define GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_PROXY (grd_dbus_mutter_screen_cast_proxy_get_type ())
#define GRD_DBUS_MUTTER_SCREEN_CAST_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_PROXY, GrdDBusMutterScreenCastProxy))
#define GRD_DBUS_MUTTER_SCREEN_CAST_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_PROXY, GrdDBusMutterScreenCastProxyClass))
#define GRD_DBUS_MUTTER_SCREEN_CAST_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_PROXY, GrdDBusMutterScreenCastProxyClass))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_PROXY))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_PROXY))

typedef struct _GrdDBusMutterScreenCastProxy GrdDBusMutterScreenCastProxy;
typedef struct _GrdDBusMutterScreenCastProxyClass GrdDBusMutterScreenCastProxyClass;
typedef struct _GrdDBusMutterScreenCastProxyPrivate GrdDBusMutterScreenCastProxyPrivate;

struct _GrdDBusMutterScreenCastProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  GrdDBusMutterScreenCastProxyPrivate *priv;
};

struct _GrdDBusMutterScreenCastProxyClass
{
  GDBusProxyClass parent_class;
};

GType grd_dbus_mutter_screen_cast_proxy_get_type (void) G_GNUC_CONST;

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

void grd_dbus_mutter_screen_cast_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GrdDBusMutterScreenCast *grd_dbus_mutter_screen_cast_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
GrdDBusMutterScreenCast *grd_dbus_mutter_screen_cast_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void grd_dbus_mutter_screen_cast_proxy_new_for_bus (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GrdDBusMutterScreenCast *grd_dbus_mutter_screen_cast_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
GrdDBusMutterScreenCast *grd_dbus_mutter_screen_cast_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SKELETON (grd_dbus_mutter_screen_cast_skeleton_get_type ())
#define GRD_DBUS_MUTTER_SCREEN_CAST_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SKELETON, GrdDBusMutterScreenCastSkeleton))
#define GRD_DBUS_MUTTER_SCREEN_CAST_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SKELETON, GrdDBusMutterScreenCastSkeletonClass))
#define GRD_DBUS_MUTTER_SCREEN_CAST_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SKELETON, GrdDBusMutterScreenCastSkeletonClass))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SKELETON))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SKELETON))

typedef struct _GrdDBusMutterScreenCastSkeleton GrdDBusMutterScreenCastSkeleton;
typedef struct _GrdDBusMutterScreenCastSkeletonClass GrdDBusMutterScreenCastSkeletonClass;
typedef struct _GrdDBusMutterScreenCastSkeletonPrivate GrdDBusMutterScreenCastSkeletonPrivate;

struct _GrdDBusMutterScreenCastSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  GrdDBusMutterScreenCastSkeletonPrivate *priv;
};

struct _GrdDBusMutterScreenCastSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType grd_dbus_mutter_screen_cast_skeleton_get_type (void) G_GNUC_CONST;

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

GrdDBusMutterScreenCast *grd_dbus_mutter_screen_cast_skeleton_new (void);


/* ------------------------------------------------------------------------ */
/* Declarations for org.gnome.Mutter.ScreenCast.Session */

#define GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION (grd_dbus_mutter_screen_cast_session_get_type ())
#define GRD_DBUS_MUTTER_SCREEN_CAST_SESSION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION, GrdDBusMutterScreenCastSession))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_SESSION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION))
#define GRD_DBUS_MUTTER_SCREEN_CAST_SESSION_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION, GrdDBusMutterScreenCastSessionIface))

struct _GrdDBusMutterScreenCastSession;
typedef struct _GrdDBusMutterScreenCastSession GrdDBusMutterScreenCastSession;
typedef struct _GrdDBusMutterScreenCastSessionIface GrdDBusMutterScreenCastSessionIface;

struct _GrdDBusMutterScreenCastSessionIface
{
  GTypeInterface parent_iface;


  gboolean (*handle_record_area) (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    gint arg_x,
    gint arg_y,
    gint arg_width,
    gint arg_height,
    GVariant *arg_properties);

  gboolean (*handle_record_monitor) (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    const gchar *arg_connector,
    GVariant *arg_properties);

  gboolean (*handle_record_virtual) (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    GVariant *arg_properties);

  gboolean (*handle_record_window) (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    GVariant *arg_properties);

  gboolean (*handle_start) (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation);

  gboolean (*handle_stop) (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation);

  void (*closed) (
    GrdDBusMutterScreenCastSession *object);

};

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

GType grd_dbus_mutter_screen_cast_session_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *grd_dbus_mutter_screen_cast_session_interface_info (void);
guint grd_dbus_mutter_screen_cast_session_override_properties (GObjectClass *klass, guint property_id_begin);


/* D-Bus method call completion functions: */
void grd_dbus_mutter_screen_cast_session_complete_start (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation);

void grd_dbus_mutter_screen_cast_session_complete_stop (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation);

void grd_dbus_mutter_screen_cast_session_complete_record_monitor (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    const gchar *stream_path);

void grd_dbus_mutter_screen_cast_session_complete_record_window (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    const gchar *stream_path);

void grd_dbus_mutter_screen_cast_session_complete_record_area (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    const gchar *stream_path);

void grd_dbus_mutter_screen_cast_session_complete_record_virtual (
    GrdDBusMutterScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    const gchar *stream_path);



/* D-Bus signal emissions functions: */
void grd_dbus_mutter_screen_cast_session_emit_closed (
    GrdDBusMutterScreenCastSession *object);



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

gboolean grd_dbus_mutter_screen_cast_session_call_start_finish (
    GrdDBusMutterScreenCastSession *proxy,
    GAsyncResult *res,
    GError **error);

gboolean grd_dbus_mutter_screen_cast_session_call_start_sync (
    GrdDBusMutterScreenCastSession *proxy,
    GCancellable *cancellable,
    GError **error);

void grd_dbus_mutter_screen_cast_session_call_stop (
    GrdDBusMutterScreenCastSession *proxy,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean grd_dbus_mutter_screen_cast_session_call_stop_finish (
    GrdDBusMutterScreenCastSession *proxy,
    GAsyncResult *res,
    GError **error);

gboolean grd_dbus_mutter_screen_cast_session_call_stop_sync (
    GrdDBusMutterScreenCastSession *proxy,
    GCancellable *cancellable,
    GError **error);

void grd_dbus_mutter_screen_cast_session_call_record_monitor (
    GrdDBusMutterScreenCastSession *proxy,
    const gchar *arg_connector,
    GVariant *arg_properties,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean grd_dbus_mutter_screen_cast_session_call_record_monitor_finish (
    GrdDBusMutterScreenCastSession *proxy,
    gchar ** out_stream_path,
    GAsyncResult *res,
    GError **error);

gboolean grd_dbus_mutter_screen_cast_session_call_record_monitor_sync (
    GrdDBusMutterScreenCastSession *proxy,
    const gchar *arg_connector,
    GVariant *arg_properties,
    gchar ** out_stream_path,
    GCancellable *cancellable,
    GError **error);

void grd_dbus_mutter_screen_cast_session_call_record_window (
    GrdDBusMutterScreenCastSession *proxy,
    GVariant *arg_properties,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean grd_dbus_mutter_screen_cast_session_call_record_window_finish (
    GrdDBusMutterScreenCastSession *proxy,
    gchar ** out_stream_path,
    GAsyncResult *res,
    GError **error);

gboolean grd_dbus_mutter_screen_cast_session_call_record_window_sync (
    GrdDBusMutterScreenCastSession *proxy,
    GVariant *arg_properties,
    gchar ** out_stream_path,
    GCancellable *cancellable,
    GError **error);

void grd_dbus_mutter_screen_cast_session_call_record_area (
    GrdDBusMutterScreenCastSession *proxy,
    gint arg_x,
    gint arg_y,
    gint arg_width,
    gint arg_height,
    GVariant *arg_properties,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean grd_dbus_mutter_screen_cast_session_call_record_area_finish (
    GrdDBusMutterScreenCastSession *proxy,
    gchar ** out_stream_path,
    GAsyncResult *res,
    GError **error);

gboolean grd_dbus_mutter_screen_cast_session_call_record_area_sync (
    GrdDBusMutterScreenCastSession *proxy,
    gint arg_x,
    gint arg_y,
    gint arg_width,
    gint arg_height,
    GVariant *arg_properties,
    gchar ** out_stream_path,
    GCancellable *cancellable,
    GError **error);

void grd_dbus_mutter_screen_cast_session_call_record_virtual (
    GrdDBusMutterScreenCastSession *proxy,
    GVariant *arg_properties,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean grd_dbus_mutter_screen_cast_session_call_record_virtual_finish (
    GrdDBusMutterScreenCastSession *proxy,
    gchar ** out_stream_path,
    GAsyncResult *res,
    GError **error);

gboolean grd_dbus_mutter_screen_cast_session_call_record_virtual_sync (
    GrdDBusMutterScreenCastSession *proxy,
    GVariant *arg_properties,
    gchar ** out_stream_path,
    GCancellable *cancellable,
    GError **error);



/* ---- */

#define GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_PROXY (grd_dbus_mutter_screen_cast_session_proxy_get_type ())
#define GRD_DBUS_MUTTER_SCREEN_CAST_SESSION_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_PROXY, GrdDBusMutterScreenCastSessionProxy))
#define GRD_DBUS_MUTTER_SCREEN_CAST_SESSION_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_PROXY, GrdDBusMutterScreenCastSessionProxyClass))
#define GRD_DBUS_MUTTER_SCREEN_CAST_SESSION_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_PROXY, GrdDBusMutterScreenCastSessionProxyClass))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_SESSION_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_PROXY))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_SESSION_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_PROXY))

typedef struct _GrdDBusMutterScreenCastSessionProxy GrdDBusMutterScreenCastSessionProxy;
typedef struct _GrdDBusMutterScreenCastSessionProxyClass GrdDBusMutterScreenCastSessionProxyClass;
typedef struct _GrdDBusMutterScreenCastSessionProxyPrivate GrdDBusMutterScreenCastSessionProxyPrivate;

struct _GrdDBusMutterScreenCastSessionProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  GrdDBusMutterScreenCastSessionProxyPrivate *priv;
};

struct _GrdDBusMutterScreenCastSessionProxyClass
{
  GDBusProxyClass parent_class;
};

GType grd_dbus_mutter_screen_cast_session_proxy_get_type (void) G_GNUC_CONST;

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

void grd_dbus_mutter_screen_cast_session_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GrdDBusMutterScreenCastSession *grd_dbus_mutter_screen_cast_session_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
GrdDBusMutterScreenCastSession *grd_dbus_mutter_screen_cast_session_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void grd_dbus_mutter_screen_cast_session_proxy_new_for_bus (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GrdDBusMutterScreenCastSession *grd_dbus_mutter_screen_cast_session_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
GrdDBusMutterScreenCastSession *grd_dbus_mutter_screen_cast_session_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_SKELETON (grd_dbus_mutter_screen_cast_session_skeleton_get_type ())
#define GRD_DBUS_MUTTER_SCREEN_CAST_SESSION_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_SKELETON, GrdDBusMutterScreenCastSessionSkeleton))
#define GRD_DBUS_MUTTER_SCREEN_CAST_SESSION_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_SKELETON, GrdDBusMutterScreenCastSessionSkeletonClass))
#define GRD_DBUS_MUTTER_SCREEN_CAST_SESSION_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_SKELETON, GrdDBusMutterScreenCastSessionSkeletonClass))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_SESSION_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_SKELETON))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_SESSION_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_SESSION_SKELETON))

typedef struct _GrdDBusMutterScreenCastSessionSkeleton GrdDBusMutterScreenCastSessionSkeleton;
typedef struct _GrdDBusMutterScreenCastSessionSkeletonClass GrdDBusMutterScreenCastSessionSkeletonClass;
typedef struct _GrdDBusMutterScreenCastSessionSkeletonPrivate GrdDBusMutterScreenCastSessionSkeletonPrivate;

struct _GrdDBusMutterScreenCastSessionSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  GrdDBusMutterScreenCastSessionSkeletonPrivate *priv;
};

struct _GrdDBusMutterScreenCastSessionSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType grd_dbus_mutter_screen_cast_session_skeleton_get_type (void) G_GNUC_CONST;

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

GrdDBusMutterScreenCastSession *grd_dbus_mutter_screen_cast_session_skeleton_new (void);


/* ------------------------------------------------------------------------ */
/* Declarations for org.gnome.Mutter.ScreenCast.Stream */

#define GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM (grd_dbus_mutter_screen_cast_stream_get_type ())
#define GRD_DBUS_MUTTER_SCREEN_CAST_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM, GrdDBusMutterScreenCastStream))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM))
#define GRD_DBUS_MUTTER_SCREEN_CAST_STREAM_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM, GrdDBusMutterScreenCastStreamIface))

struct _GrdDBusMutterScreenCastStream;
typedef struct _GrdDBusMutterScreenCastStream GrdDBusMutterScreenCastStream;
typedef struct _GrdDBusMutterScreenCastStreamIface GrdDBusMutterScreenCastStreamIface;

struct _GrdDBusMutterScreenCastStreamIface
{
  GTypeInterface parent_iface;



  gboolean (*handle_start) (
    GrdDBusMutterScreenCastStream *object,
    GDBusMethodInvocation *invocation);

  gboolean (*handle_stop) (
    GrdDBusMutterScreenCastStream *object,
    GDBusMethodInvocation *invocation);

  GVariant * (*get_parameters) (GrdDBusMutterScreenCastStream *object);

  void (*pipewire_stream_added) (
    GrdDBusMutterScreenCastStream *object,
    guint arg_node_id);

};

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

GType grd_dbus_mutter_screen_cast_stream_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *grd_dbus_mutter_screen_cast_stream_interface_info (void);
guint grd_dbus_mutter_screen_cast_stream_override_properties (GObjectClass *klass, guint property_id_begin);


/* D-Bus method call completion functions: */
void grd_dbus_mutter_screen_cast_stream_complete_start (
    GrdDBusMutterScreenCastStream *object,
    GDBusMethodInvocation *invocation);

void grd_dbus_mutter_screen_cast_stream_complete_stop (
    GrdDBusMutterScreenCastStream *object,
    GDBusMethodInvocation *invocation);



/* D-Bus signal emissions functions: */
void grd_dbus_mutter_screen_cast_stream_emit_pipewire_stream_added (
    GrdDBusMutterScreenCastStream *object,
    guint arg_node_id);



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

gboolean grd_dbus_mutter_screen_cast_stream_call_start_finish (
    GrdDBusMutterScreenCastStream *proxy,
    GAsyncResult *res,
    GError **error);

gboolean grd_dbus_mutter_screen_cast_stream_call_start_sync (
    GrdDBusMutterScreenCastStream *proxy,
    GCancellable *cancellable,
    GError **error);

void grd_dbus_mutter_screen_cast_stream_call_stop (
    GrdDBusMutterScreenCastStream *proxy,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean grd_dbus_mutter_screen_cast_stream_call_stop_finish (
    GrdDBusMutterScreenCastStream *proxy,
    GAsyncResult *res,
    GError **error);

gboolean grd_dbus_mutter_screen_cast_stream_call_stop_sync (
    GrdDBusMutterScreenCastStream *proxy,
    GCancellable *cancellable,
    GError **error);



/* D-Bus property accessors: */
GVariant *grd_dbus_mutter_screen_cast_stream_get_parameters (GrdDBusMutterScreenCastStream *object);
GVariant *grd_dbus_mutter_screen_cast_stream_dup_parameters (GrdDBusMutterScreenCastStream *object);
void grd_dbus_mutter_screen_cast_stream_set_parameters (GrdDBusMutterScreenCastStream *object, GVariant *value);


/* ---- */

#define GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_PROXY (grd_dbus_mutter_screen_cast_stream_proxy_get_type ())
#define GRD_DBUS_MUTTER_SCREEN_CAST_STREAM_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_PROXY, GrdDBusMutterScreenCastStreamProxy))
#define GRD_DBUS_MUTTER_SCREEN_CAST_STREAM_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_PROXY, GrdDBusMutterScreenCastStreamProxyClass))
#define GRD_DBUS_MUTTER_SCREEN_CAST_STREAM_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_PROXY, GrdDBusMutterScreenCastStreamProxyClass))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_STREAM_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_PROXY))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_STREAM_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_PROXY))

typedef struct _GrdDBusMutterScreenCastStreamProxy GrdDBusMutterScreenCastStreamProxy;
typedef struct _GrdDBusMutterScreenCastStreamProxyClass GrdDBusMutterScreenCastStreamProxyClass;
typedef struct _GrdDBusMutterScreenCastStreamProxyPrivate GrdDBusMutterScreenCastStreamProxyPrivate;

struct _GrdDBusMutterScreenCastStreamProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  GrdDBusMutterScreenCastStreamProxyPrivate *priv;
};

struct _GrdDBusMutterScreenCastStreamProxyClass
{
  GDBusProxyClass parent_class;
};

GType grd_dbus_mutter_screen_cast_stream_proxy_get_type (void) G_GNUC_CONST;

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

void grd_dbus_mutter_screen_cast_stream_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GrdDBusMutterScreenCastStream *grd_dbus_mutter_screen_cast_stream_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
GrdDBusMutterScreenCastStream *grd_dbus_mutter_screen_cast_stream_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void grd_dbus_mutter_screen_cast_stream_proxy_new_for_bus (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
GrdDBusMutterScreenCastStream *grd_dbus_mutter_screen_cast_stream_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
GrdDBusMutterScreenCastStream *grd_dbus_mutter_screen_cast_stream_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_SKELETON (grd_dbus_mutter_screen_cast_stream_skeleton_get_type ())
#define GRD_DBUS_MUTTER_SCREEN_CAST_STREAM_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_SKELETON, GrdDBusMutterScreenCastStreamSkeleton))
#define GRD_DBUS_MUTTER_SCREEN_CAST_STREAM_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_SKELETON, GrdDBusMutterScreenCastStreamSkeletonClass))
#define GRD_DBUS_MUTTER_SCREEN_CAST_STREAM_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_SKELETON, GrdDBusMutterScreenCastStreamSkeletonClass))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_STREAM_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_SKELETON))
#define GRD_DBUS_MUTTER_IS_SCREEN_CAST_STREAM_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GRD_DBUS_MUTTER_TYPE_SCREEN_CAST_STREAM_SKELETON))

typedef struct _GrdDBusMutterScreenCastStreamSkeleton GrdDBusMutterScreenCastStreamSkeleton;
typedef struct _GrdDBusMutterScreenCastStreamSkeletonClass GrdDBusMutterScreenCastStreamSkeletonClass;
typedef struct _GrdDBusMutterScreenCastStreamSkeletonPrivate GrdDBusMutterScreenCastStreamSkeletonPrivate;

struct _GrdDBusMutterScreenCastStreamSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  GrdDBusMutterScreenCastStreamSkeletonPrivate *priv;
};

struct _GrdDBusMutterScreenCastStreamSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType grd_dbus_mutter_screen_cast_stream_skeleton_get_type (void) G_GNUC_CONST;

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

GrdDBusMutterScreenCastStream *grd_dbus_mutter_screen_cast_stream_skeleton_new (void);


G_END_DECLS

#endif /* __GRD_DBUS_MUTTER_SCREEN_CAST_H__ */
