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

#include <gio/gio.h>

G_BEGIN_DECLS


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

#define MDK_DBUS_TYPE_SCREEN_CAST (mdk_dbus_screen_cast_get_type ())
#define MDK_DBUS_SCREEN_CAST(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MDK_DBUS_TYPE_SCREEN_CAST, MdkDBusScreenCast))
#define MDK_DBUS_IS_SCREEN_CAST(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MDK_DBUS_TYPE_SCREEN_CAST))
#define MDK_DBUS_SCREEN_CAST_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), MDK_DBUS_TYPE_SCREEN_CAST, MdkDBusScreenCastIface))

struct _MdkDBusScreenCast;
typedef struct _MdkDBusScreenCast MdkDBusScreenCast;
typedef struct _MdkDBusScreenCastIface MdkDBusScreenCastIface;

struct _MdkDBusScreenCastIface
{
  GTypeInterface parent_iface;


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

  gint  (*get_version) (MdkDBusScreenCast *object);

};

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

GType mdk_dbus_screen_cast_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *mdk_dbus_screen_cast_interface_info (void);
guint mdk_dbus_screen_cast_override_properties (GObjectClass *klass, guint property_id_begin);


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



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

gboolean mdk_dbus_screen_cast_call_create_session_finish (
    MdkDBusScreenCast *proxy,
    gchar ** out_session_path,
    GAsyncResult *res,
    GError **error);

gboolean mdk_dbus_screen_cast_call_create_session_sync (
    MdkDBusScreenCast *proxy,
    GVariant *arg_properties,
    gchar ** out_session_path,
    GCancellable *cancellable,
    GError **error);



/* D-Bus property accessors: */
gint mdk_dbus_screen_cast_get_version (MdkDBusScreenCast *object);
void mdk_dbus_screen_cast_set_version (MdkDBusScreenCast *object, gint value);


/* ---- */

#define MDK_DBUS_TYPE_SCREEN_CAST_PROXY (mdk_dbus_screen_cast_proxy_get_type ())
#define MDK_DBUS_SCREEN_CAST_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MDK_DBUS_TYPE_SCREEN_CAST_PROXY, MdkDBusScreenCastProxy))
#define MDK_DBUS_SCREEN_CAST_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), MDK_DBUS_TYPE_SCREEN_CAST_PROXY, MdkDBusScreenCastProxyClass))
#define MDK_DBUS_SCREEN_CAST_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MDK_DBUS_TYPE_SCREEN_CAST_PROXY, MdkDBusScreenCastProxyClass))
#define MDK_DBUS_IS_SCREEN_CAST_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MDK_DBUS_TYPE_SCREEN_CAST_PROXY))
#define MDK_DBUS_IS_SCREEN_CAST_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MDK_DBUS_TYPE_SCREEN_CAST_PROXY))

typedef struct _MdkDBusScreenCastProxy MdkDBusScreenCastProxy;
typedef struct _MdkDBusScreenCastProxyClass MdkDBusScreenCastProxyClass;
typedef struct _MdkDBusScreenCastProxyPrivate MdkDBusScreenCastProxyPrivate;

struct _MdkDBusScreenCastProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  MdkDBusScreenCastProxyPrivate *priv;
};

struct _MdkDBusScreenCastProxyClass
{
  GDBusProxyClass parent_class;
};

GType mdk_dbus_screen_cast_proxy_get_type (void) G_GNUC_CONST;

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

void mdk_dbus_screen_cast_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
MdkDBusScreenCast *mdk_dbus_screen_cast_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
MdkDBusScreenCast *mdk_dbus_screen_cast_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void mdk_dbus_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);
MdkDBusScreenCast *mdk_dbus_screen_cast_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
MdkDBusScreenCast *mdk_dbus_screen_cast_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define MDK_DBUS_TYPE_SCREEN_CAST_SKELETON (mdk_dbus_screen_cast_skeleton_get_type ())
#define MDK_DBUS_SCREEN_CAST_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MDK_DBUS_TYPE_SCREEN_CAST_SKELETON, MdkDBusScreenCastSkeleton))
#define MDK_DBUS_SCREEN_CAST_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), MDK_DBUS_TYPE_SCREEN_CAST_SKELETON, MdkDBusScreenCastSkeletonClass))
#define MDK_DBUS_SCREEN_CAST_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MDK_DBUS_TYPE_SCREEN_CAST_SKELETON, MdkDBusScreenCastSkeletonClass))
#define MDK_DBUS_IS_SCREEN_CAST_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MDK_DBUS_TYPE_SCREEN_CAST_SKELETON))
#define MDK_DBUS_IS_SCREEN_CAST_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MDK_DBUS_TYPE_SCREEN_CAST_SKELETON))

typedef struct _MdkDBusScreenCastSkeleton MdkDBusScreenCastSkeleton;
typedef struct _MdkDBusScreenCastSkeletonClass MdkDBusScreenCastSkeletonClass;
typedef struct _MdkDBusScreenCastSkeletonPrivate MdkDBusScreenCastSkeletonPrivate;

struct _MdkDBusScreenCastSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  MdkDBusScreenCastSkeletonPrivate *priv;
};

struct _MdkDBusScreenCastSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType mdk_dbus_screen_cast_skeleton_get_type (void) G_GNUC_CONST;

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

MdkDBusScreenCast *mdk_dbus_screen_cast_skeleton_new (void);


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

#define MDK_DBUS_TYPE_SCREEN_CAST_SESSION (mdk_dbus_screen_cast_session_get_type ())
#define MDK_DBUS_SCREEN_CAST_SESSION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MDK_DBUS_TYPE_SCREEN_CAST_SESSION, MdkDBusScreenCastSession))
#define MDK_DBUS_IS_SCREEN_CAST_SESSION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MDK_DBUS_TYPE_SCREEN_CAST_SESSION))
#define MDK_DBUS_SCREEN_CAST_SESSION_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), MDK_DBUS_TYPE_SCREEN_CAST_SESSION, MdkDBusScreenCastSessionIface))

struct _MdkDBusScreenCastSession;
typedef struct _MdkDBusScreenCastSession MdkDBusScreenCastSession;
typedef struct _MdkDBusScreenCastSessionIface MdkDBusScreenCastSessionIface;

struct _MdkDBusScreenCastSessionIface
{
  GTypeInterface parent_iface;


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

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

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

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

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

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

  void (*closed) (
    MdkDBusScreenCastSession *object);

};

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

GType mdk_dbus_screen_cast_session_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *mdk_dbus_screen_cast_session_interface_info (void);
guint mdk_dbus_screen_cast_session_override_properties (GObjectClass *klass, guint property_id_begin);


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

void mdk_dbus_screen_cast_session_complete_stop (
    MdkDBusScreenCastSession *object,
    GDBusMethodInvocation *invocation);

void mdk_dbus_screen_cast_session_complete_record_monitor (
    MdkDBusScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    const gchar *stream_path);

void mdk_dbus_screen_cast_session_complete_record_window (
    MdkDBusScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    const gchar *stream_path);

void mdk_dbus_screen_cast_session_complete_record_area (
    MdkDBusScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    const gchar *stream_path);

void mdk_dbus_screen_cast_session_complete_record_virtual (
    MdkDBusScreenCastSession *object,
    GDBusMethodInvocation *invocation,
    const gchar *stream_path);



/* D-Bus signal emissions functions: */
void mdk_dbus_screen_cast_session_emit_closed (
    MdkDBusScreenCastSession *object);



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

gboolean mdk_dbus_screen_cast_session_call_start_finish (
    MdkDBusScreenCastSession *proxy,
    GAsyncResult *res,
    GError **error);

gboolean mdk_dbus_screen_cast_session_call_start_sync (
    MdkDBusScreenCastSession *proxy,
    GCancellable *cancellable,
    GError **error);

void mdk_dbus_screen_cast_session_call_stop (
    MdkDBusScreenCastSession *proxy,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean mdk_dbus_screen_cast_session_call_stop_finish (
    MdkDBusScreenCastSession *proxy,
    GAsyncResult *res,
    GError **error);

gboolean mdk_dbus_screen_cast_session_call_stop_sync (
    MdkDBusScreenCastSession *proxy,
    GCancellable *cancellable,
    GError **error);

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

gboolean mdk_dbus_screen_cast_session_call_record_monitor_finish (
    MdkDBusScreenCastSession *proxy,
    gchar ** out_stream_path,
    GAsyncResult *res,
    GError **error);

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

void mdk_dbus_screen_cast_session_call_record_window (
    MdkDBusScreenCastSession *proxy,
    GVariant *arg_properties,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean mdk_dbus_screen_cast_session_call_record_window_finish (
    MdkDBusScreenCastSession *proxy,
    gchar ** out_stream_path,
    GAsyncResult *res,
    GError **error);

gboolean mdk_dbus_screen_cast_session_call_record_window_sync (
    MdkDBusScreenCastSession *proxy,
    GVariant *arg_properties,
    gchar ** out_stream_path,
    GCancellable *cancellable,
    GError **error);

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

gboolean mdk_dbus_screen_cast_session_call_record_area_finish (
    MdkDBusScreenCastSession *proxy,
    gchar ** out_stream_path,
    GAsyncResult *res,
    GError **error);

gboolean mdk_dbus_screen_cast_session_call_record_area_sync (
    MdkDBusScreenCastSession *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 mdk_dbus_screen_cast_session_call_record_virtual (
    MdkDBusScreenCastSession *proxy,
    GVariant *arg_properties,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean mdk_dbus_screen_cast_session_call_record_virtual_finish (
    MdkDBusScreenCastSession *proxy,
    gchar ** out_stream_path,
    GAsyncResult *res,
    GError **error);

gboolean mdk_dbus_screen_cast_session_call_record_virtual_sync (
    MdkDBusScreenCastSession *proxy,
    GVariant *arg_properties,
    gchar ** out_stream_path,
    GCancellable *cancellable,
    GError **error);



/* ---- */

#define MDK_DBUS_TYPE_SCREEN_CAST_SESSION_PROXY (mdk_dbus_screen_cast_session_proxy_get_type ())
#define MDK_DBUS_SCREEN_CAST_SESSION_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MDK_DBUS_TYPE_SCREEN_CAST_SESSION_PROXY, MdkDBusScreenCastSessionProxy))
#define MDK_DBUS_SCREEN_CAST_SESSION_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), MDK_DBUS_TYPE_SCREEN_CAST_SESSION_PROXY, MdkDBusScreenCastSessionProxyClass))
#define MDK_DBUS_SCREEN_CAST_SESSION_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MDK_DBUS_TYPE_SCREEN_CAST_SESSION_PROXY, MdkDBusScreenCastSessionProxyClass))
#define MDK_DBUS_IS_SCREEN_CAST_SESSION_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MDK_DBUS_TYPE_SCREEN_CAST_SESSION_PROXY))
#define MDK_DBUS_IS_SCREEN_CAST_SESSION_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MDK_DBUS_TYPE_SCREEN_CAST_SESSION_PROXY))

typedef struct _MdkDBusScreenCastSessionProxy MdkDBusScreenCastSessionProxy;
typedef struct _MdkDBusScreenCastSessionProxyClass MdkDBusScreenCastSessionProxyClass;
typedef struct _MdkDBusScreenCastSessionProxyPrivate MdkDBusScreenCastSessionProxyPrivate;

struct _MdkDBusScreenCastSessionProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  MdkDBusScreenCastSessionProxyPrivate *priv;
};

struct _MdkDBusScreenCastSessionProxyClass
{
  GDBusProxyClass parent_class;
};

GType mdk_dbus_screen_cast_session_proxy_get_type (void) G_GNUC_CONST;

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

void mdk_dbus_screen_cast_session_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
MdkDBusScreenCastSession *mdk_dbus_screen_cast_session_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
MdkDBusScreenCastSession *mdk_dbus_screen_cast_session_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void mdk_dbus_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);
MdkDBusScreenCastSession *mdk_dbus_screen_cast_session_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
MdkDBusScreenCastSession *mdk_dbus_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 MDK_DBUS_TYPE_SCREEN_CAST_SESSION_SKELETON (mdk_dbus_screen_cast_session_skeleton_get_type ())
#define MDK_DBUS_SCREEN_CAST_SESSION_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MDK_DBUS_TYPE_SCREEN_CAST_SESSION_SKELETON, MdkDBusScreenCastSessionSkeleton))
#define MDK_DBUS_SCREEN_CAST_SESSION_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), MDK_DBUS_TYPE_SCREEN_CAST_SESSION_SKELETON, MdkDBusScreenCastSessionSkeletonClass))
#define MDK_DBUS_SCREEN_CAST_SESSION_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MDK_DBUS_TYPE_SCREEN_CAST_SESSION_SKELETON, MdkDBusScreenCastSessionSkeletonClass))
#define MDK_DBUS_IS_SCREEN_CAST_SESSION_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MDK_DBUS_TYPE_SCREEN_CAST_SESSION_SKELETON))
#define MDK_DBUS_IS_SCREEN_CAST_SESSION_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MDK_DBUS_TYPE_SCREEN_CAST_SESSION_SKELETON))

typedef struct _MdkDBusScreenCastSessionSkeleton MdkDBusScreenCastSessionSkeleton;
typedef struct _MdkDBusScreenCastSessionSkeletonClass MdkDBusScreenCastSessionSkeletonClass;
typedef struct _MdkDBusScreenCastSessionSkeletonPrivate MdkDBusScreenCastSessionSkeletonPrivate;

struct _MdkDBusScreenCastSessionSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  MdkDBusScreenCastSessionSkeletonPrivate *priv;
};

struct _MdkDBusScreenCastSessionSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType mdk_dbus_screen_cast_session_skeleton_get_type (void) G_GNUC_CONST;

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

MdkDBusScreenCastSession *mdk_dbus_screen_cast_session_skeleton_new (void);


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

#define MDK_DBUS_TYPE_SCREEN_CAST_STREAM (mdk_dbus_screen_cast_stream_get_type ())
#define MDK_DBUS_SCREEN_CAST_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MDK_DBUS_TYPE_SCREEN_CAST_STREAM, MdkDBusScreenCastStream))
#define MDK_DBUS_IS_SCREEN_CAST_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MDK_DBUS_TYPE_SCREEN_CAST_STREAM))
#define MDK_DBUS_SCREEN_CAST_STREAM_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), MDK_DBUS_TYPE_SCREEN_CAST_STREAM, MdkDBusScreenCastStreamIface))

struct _MdkDBusScreenCastStream;
typedef struct _MdkDBusScreenCastStream MdkDBusScreenCastStream;
typedef struct _MdkDBusScreenCastStreamIface MdkDBusScreenCastStreamIface;

struct _MdkDBusScreenCastStreamIface
{
  GTypeInterface parent_iface;



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

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

  GVariant * (*get_parameters) (MdkDBusScreenCastStream *object);

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

};

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

GType mdk_dbus_screen_cast_stream_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *mdk_dbus_screen_cast_stream_interface_info (void);
guint mdk_dbus_screen_cast_stream_override_properties (GObjectClass *klass, guint property_id_begin);


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

void mdk_dbus_screen_cast_stream_complete_stop (
    MdkDBusScreenCastStream *object,
    GDBusMethodInvocation *invocation);



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



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

gboolean mdk_dbus_screen_cast_stream_call_start_finish (
    MdkDBusScreenCastStream *proxy,
    GAsyncResult *res,
    GError **error);

gboolean mdk_dbus_screen_cast_stream_call_start_sync (
    MdkDBusScreenCastStream *proxy,
    GCancellable *cancellable,
    GError **error);

void mdk_dbus_screen_cast_stream_call_stop (
    MdkDBusScreenCastStream *proxy,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean mdk_dbus_screen_cast_stream_call_stop_finish (
    MdkDBusScreenCastStream *proxy,
    GAsyncResult *res,
    GError **error);

gboolean mdk_dbus_screen_cast_stream_call_stop_sync (
    MdkDBusScreenCastStream *proxy,
    GCancellable *cancellable,
    GError **error);



/* D-Bus property accessors: */
GVariant *mdk_dbus_screen_cast_stream_get_parameters (MdkDBusScreenCastStream *object);
GVariant *mdk_dbus_screen_cast_stream_dup_parameters (MdkDBusScreenCastStream *object);
void mdk_dbus_screen_cast_stream_set_parameters (MdkDBusScreenCastStream *object, GVariant *value);


/* ---- */

#define MDK_DBUS_TYPE_SCREEN_CAST_STREAM_PROXY (mdk_dbus_screen_cast_stream_proxy_get_type ())
#define MDK_DBUS_SCREEN_CAST_STREAM_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MDK_DBUS_TYPE_SCREEN_CAST_STREAM_PROXY, MdkDBusScreenCastStreamProxy))
#define MDK_DBUS_SCREEN_CAST_STREAM_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), MDK_DBUS_TYPE_SCREEN_CAST_STREAM_PROXY, MdkDBusScreenCastStreamProxyClass))
#define MDK_DBUS_SCREEN_CAST_STREAM_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MDK_DBUS_TYPE_SCREEN_CAST_STREAM_PROXY, MdkDBusScreenCastStreamProxyClass))
#define MDK_DBUS_IS_SCREEN_CAST_STREAM_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MDK_DBUS_TYPE_SCREEN_CAST_STREAM_PROXY))
#define MDK_DBUS_IS_SCREEN_CAST_STREAM_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MDK_DBUS_TYPE_SCREEN_CAST_STREAM_PROXY))

typedef struct _MdkDBusScreenCastStreamProxy MdkDBusScreenCastStreamProxy;
typedef struct _MdkDBusScreenCastStreamProxyClass MdkDBusScreenCastStreamProxyClass;
typedef struct _MdkDBusScreenCastStreamProxyPrivate MdkDBusScreenCastStreamProxyPrivate;

struct _MdkDBusScreenCastStreamProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  MdkDBusScreenCastStreamProxyPrivate *priv;
};

struct _MdkDBusScreenCastStreamProxyClass
{
  GDBusProxyClass parent_class;
};

GType mdk_dbus_screen_cast_stream_proxy_get_type (void) G_GNUC_CONST;

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

void mdk_dbus_screen_cast_stream_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
MdkDBusScreenCastStream *mdk_dbus_screen_cast_stream_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
MdkDBusScreenCastStream *mdk_dbus_screen_cast_stream_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void mdk_dbus_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);
MdkDBusScreenCastStream *mdk_dbus_screen_cast_stream_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
MdkDBusScreenCastStream *mdk_dbus_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 MDK_DBUS_TYPE_SCREEN_CAST_STREAM_SKELETON (mdk_dbus_screen_cast_stream_skeleton_get_type ())
#define MDK_DBUS_SCREEN_CAST_STREAM_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MDK_DBUS_TYPE_SCREEN_CAST_STREAM_SKELETON, MdkDBusScreenCastStreamSkeleton))
#define MDK_DBUS_SCREEN_CAST_STREAM_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), MDK_DBUS_TYPE_SCREEN_CAST_STREAM_SKELETON, MdkDBusScreenCastStreamSkeletonClass))
#define MDK_DBUS_SCREEN_CAST_STREAM_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MDK_DBUS_TYPE_SCREEN_CAST_STREAM_SKELETON, MdkDBusScreenCastStreamSkeletonClass))
#define MDK_DBUS_IS_SCREEN_CAST_STREAM_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MDK_DBUS_TYPE_SCREEN_CAST_STREAM_SKELETON))
#define MDK_DBUS_IS_SCREEN_CAST_STREAM_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MDK_DBUS_TYPE_SCREEN_CAST_STREAM_SKELETON))

typedef struct _MdkDBusScreenCastStreamSkeleton MdkDBusScreenCastStreamSkeleton;
typedef struct _MdkDBusScreenCastStreamSkeletonClass MdkDBusScreenCastStreamSkeletonClass;
typedef struct _MdkDBusScreenCastStreamSkeletonPrivate MdkDBusScreenCastStreamSkeletonPrivate;

struct _MdkDBusScreenCastStreamSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  MdkDBusScreenCastStreamSkeletonPrivate *priv;
};

struct _MdkDBusScreenCastStreamSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType mdk_dbus_screen_cast_stream_skeleton_get_type (void) G_GNUC_CONST;

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

MdkDBusScreenCastStream *mdk_dbus_screen_cast_stream_skeleton_new (void);


G_END_DECLS

#endif /* __MDK_DBUS_SCREEN_CAST_H__ */
