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

#include <gio/gio.h>

G_BEGIN_DECLS


/* ------------------------------------------------------------------------ */
/* Declarations for org.gnome.Ptyxis.Agent */

#define PTYXIS_IPC_TYPE_AGENT (ptyxis_ipc_agent_get_type ())
#define PTYXIS_IPC_AGENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PTYXIS_IPC_TYPE_AGENT, PtyxisIpcAgent))
#define PTYXIS_IPC_IS_AGENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PTYXIS_IPC_TYPE_AGENT))
#define PTYXIS_IPC_AGENT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), PTYXIS_IPC_TYPE_AGENT, PtyxisIpcAgentIface))

struct _PtyxisIpcAgent;
typedef struct _PtyxisIpcAgent PtyxisIpcAgent;
typedef struct _PtyxisIpcAgentIface PtyxisIpcAgentIface;

struct _PtyxisIpcAgentIface
{
  GTypeInterface parent_iface;



  gboolean (*handle_create_pty) (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list);

  gboolean (*handle_create_pty_producer) (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list,
    GVariant *arg_pty_fd);

  gboolean (*handle_discover_current_container) (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list,
    GVariant *arg_pty_fd);

  gboolean (*handle_discover_proxy_environment) (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation);

  gboolean (*handle_get_preferred_shell) (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation);

  gboolean (*handle_list_containers) (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation);

  const gchar * (*get_os_name) (PtyxisIpcAgent *object);

  const gchar * (*get_user_data_dir) (PtyxisIpcAgent *object);

  void (*containers_changed) (
    PtyxisIpcAgent *object,
    guint arg_position,
    guint arg_removed,
    const gchar *const *arg_added);

  void (*process_exited) (
    PtyxisIpcAgent *object,
    const gchar *arg_process,
    gint arg_exit_code);

};

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

GType ptyxis_ipc_agent_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *ptyxis_ipc_agent_interface_info (void);
guint ptyxis_ipc_agent_override_properties (GObjectClass *klass, guint property_id_begin);


/* D-Bus method call completion functions: */
void ptyxis_ipc_agent_complete_get_preferred_shell (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation,
    const gchar *shell);

void ptyxis_ipc_agent_complete_list_containers (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation,
    const gchar *const *containers);

void ptyxis_ipc_agent_complete_create_pty (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list,
    GVariant *fd);

void ptyxis_ipc_agent_complete_create_pty_producer (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list,
    GVariant *fd);

void ptyxis_ipc_agent_complete_discover_current_container (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list,
    const gchar *container);

void ptyxis_ipc_agent_complete_discover_proxy_environment (
    PtyxisIpcAgent *object,
    GDBusMethodInvocation *invocation,
    const gchar *const *proxy_environment);



/* D-Bus signal emissions functions: */
void ptyxis_ipc_agent_emit_containers_changed (
    PtyxisIpcAgent *object,
    guint arg_position,
    guint arg_removed,
    const gchar *const *arg_added);

void ptyxis_ipc_agent_emit_process_exited (
    PtyxisIpcAgent *object,
    const gchar *arg_process,
    gint arg_exit_code);



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

gboolean ptyxis_ipc_agent_call_get_preferred_shell_finish (
    PtyxisIpcAgent *proxy,
    gchar ** out_shell,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_agent_call_get_preferred_shell_sync (
    PtyxisIpcAgent *proxy,
    gchar ** out_shell,
    GCancellable *cancellable,
    GError **error);

void ptyxis_ipc_agent_call_list_containers (
    PtyxisIpcAgent *proxy,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean ptyxis_ipc_agent_call_list_containers_finish (
    PtyxisIpcAgent *proxy,
    gchar *** out_containers,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_agent_call_list_containers_sync (
    PtyxisIpcAgent *proxy,
    gchar *** out_containers,
    GCancellable *cancellable,
    GError **error);

void ptyxis_ipc_agent_call_create_pty (
    PtyxisIpcAgent *proxy,
    GUnixFDList *fd_list,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean ptyxis_ipc_agent_call_create_pty_finish (
    PtyxisIpcAgent *proxy,
    GVariant ** out_fd,
    GUnixFDList **out_fd_list,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_agent_call_create_pty_sync (
    PtyxisIpcAgent *proxy,
    GUnixFDList  *fd_list,
    GVariant ** out_fd,
    GUnixFDList **out_fd_list,
    GCancellable *cancellable,
    GError **error);

void ptyxis_ipc_agent_call_create_pty_producer (
    PtyxisIpcAgent *proxy,
    GVariant *arg_pty_fd,
    GUnixFDList *fd_list,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean ptyxis_ipc_agent_call_create_pty_producer_finish (
    PtyxisIpcAgent *proxy,
    GVariant ** out_fd,
    GUnixFDList **out_fd_list,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_agent_call_create_pty_producer_sync (
    PtyxisIpcAgent *proxy,
    GVariant *arg_pty_fd,
    GUnixFDList  *fd_list,
    GVariant ** out_fd,
    GUnixFDList **out_fd_list,
    GCancellable *cancellable,
    GError **error);

void ptyxis_ipc_agent_call_discover_current_container (
    PtyxisIpcAgent *proxy,
    GVariant *arg_pty_fd,
    GUnixFDList *fd_list,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean ptyxis_ipc_agent_call_discover_current_container_finish (
    PtyxisIpcAgent *proxy,
    gchar ** out_container,
    GUnixFDList **out_fd_list,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_agent_call_discover_current_container_sync (
    PtyxisIpcAgent *proxy,
    GVariant *arg_pty_fd,
    GUnixFDList  *fd_list,
    gchar ** out_container,
    GUnixFDList **out_fd_list,
    GCancellable *cancellable,
    GError **error);

void ptyxis_ipc_agent_call_discover_proxy_environment (
    PtyxisIpcAgent *proxy,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean ptyxis_ipc_agent_call_discover_proxy_environment_finish (
    PtyxisIpcAgent *proxy,
    gchar *** out_proxy_environment,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_agent_call_discover_proxy_environment_sync (
    PtyxisIpcAgent *proxy,
    gchar *** out_proxy_environment,
    GCancellable *cancellable,
    GError **error);



/* D-Bus property accessors: */
const gchar *ptyxis_ipc_agent_get_os_name (PtyxisIpcAgent *object);
gchar *ptyxis_ipc_agent_dup_os_name (PtyxisIpcAgent *object);
void ptyxis_ipc_agent_set_os_name (PtyxisIpcAgent *object, const gchar *value);

const gchar *ptyxis_ipc_agent_get_user_data_dir (PtyxisIpcAgent *object);
gchar *ptyxis_ipc_agent_dup_user_data_dir (PtyxisIpcAgent *object);
void ptyxis_ipc_agent_set_user_data_dir (PtyxisIpcAgent *object, const gchar *value);


/* ---- */

#define PTYXIS_IPC_TYPE_AGENT_PROXY (ptyxis_ipc_agent_proxy_get_type ())
#define PTYXIS_IPC_AGENT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PTYXIS_IPC_TYPE_AGENT_PROXY, PtyxisIpcAgentProxy))
#define PTYXIS_IPC_AGENT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), PTYXIS_IPC_TYPE_AGENT_PROXY, PtyxisIpcAgentProxyClass))
#define PTYXIS_IPC_AGENT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PTYXIS_IPC_TYPE_AGENT_PROXY, PtyxisIpcAgentProxyClass))
#define PTYXIS_IPC_IS_AGENT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PTYXIS_IPC_TYPE_AGENT_PROXY))
#define PTYXIS_IPC_IS_AGENT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), PTYXIS_IPC_TYPE_AGENT_PROXY))

typedef struct _PtyxisIpcAgentProxy PtyxisIpcAgentProxy;
typedef struct _PtyxisIpcAgentProxyClass PtyxisIpcAgentProxyClass;
typedef struct _PtyxisIpcAgentProxyPrivate PtyxisIpcAgentProxyPrivate;

struct _PtyxisIpcAgentProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  PtyxisIpcAgentProxyPrivate *priv;
};

struct _PtyxisIpcAgentProxyClass
{
  GDBusProxyClass parent_class;
};

GType ptyxis_ipc_agent_proxy_get_type (void) G_GNUC_CONST;

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

void ptyxis_ipc_agent_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
PtyxisIpcAgent *ptyxis_ipc_agent_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
PtyxisIpcAgent *ptyxis_ipc_agent_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void ptyxis_ipc_agent_proxy_new_for_bus (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
PtyxisIpcAgent *ptyxis_ipc_agent_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
PtyxisIpcAgent *ptyxis_ipc_agent_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define PTYXIS_IPC_TYPE_AGENT_SKELETON (ptyxis_ipc_agent_skeleton_get_type ())
#define PTYXIS_IPC_AGENT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PTYXIS_IPC_TYPE_AGENT_SKELETON, PtyxisIpcAgentSkeleton))
#define PTYXIS_IPC_AGENT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), PTYXIS_IPC_TYPE_AGENT_SKELETON, PtyxisIpcAgentSkeletonClass))
#define PTYXIS_IPC_AGENT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PTYXIS_IPC_TYPE_AGENT_SKELETON, PtyxisIpcAgentSkeletonClass))
#define PTYXIS_IPC_IS_AGENT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PTYXIS_IPC_TYPE_AGENT_SKELETON))
#define PTYXIS_IPC_IS_AGENT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), PTYXIS_IPC_TYPE_AGENT_SKELETON))

typedef struct _PtyxisIpcAgentSkeleton PtyxisIpcAgentSkeleton;
typedef struct _PtyxisIpcAgentSkeletonClass PtyxisIpcAgentSkeletonClass;
typedef struct _PtyxisIpcAgentSkeletonPrivate PtyxisIpcAgentSkeletonPrivate;

struct _PtyxisIpcAgentSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  PtyxisIpcAgentSkeletonPrivate *priv;
};

struct _PtyxisIpcAgentSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType ptyxis_ipc_agent_skeleton_get_type (void) G_GNUC_CONST;

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

PtyxisIpcAgent *ptyxis_ipc_agent_skeleton_new (void);


/* ------------------------------------------------------------------------ */
/* Declarations for org.gnome.Ptyxis.Container */

#define PTYXIS_IPC_TYPE_CONTAINER (ptyxis_ipc_container_get_type ())
#define PTYXIS_IPC_CONTAINER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PTYXIS_IPC_TYPE_CONTAINER, PtyxisIpcContainer))
#define PTYXIS_IPC_IS_CONTAINER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PTYXIS_IPC_TYPE_CONTAINER))
#define PTYXIS_IPC_CONTAINER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), PTYXIS_IPC_TYPE_CONTAINER, PtyxisIpcContainerIface))

struct _PtyxisIpcContainer;
typedef struct _PtyxisIpcContainer PtyxisIpcContainer;
typedef struct _PtyxisIpcContainerIface PtyxisIpcContainerIface;

struct _PtyxisIpcContainerIface
{
  GTypeInterface parent_iface;


  gboolean (*handle_find_program_in_path) (
    PtyxisIpcContainer *object,
    GDBusMethodInvocation *invocation,
    const gchar *arg_program);

  gboolean (*handle_spawn) (
    PtyxisIpcContainer *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list,
    const gchar *arg_cwd,
    const gchar *const *arg_argv,
    GVariant *arg_fds,
    GVariant *arg_env);

  gboolean (*handle_translate_uri) (
    PtyxisIpcContainer *object,
    GDBusMethodInvocation *invocation,
    const gchar *arg_uri);

  const gchar * (*get_display_name) (PtyxisIpcContainer *object);

  const gchar * (*get_icon_name) (PtyxisIpcContainer *object);

  const gchar * (*get_id) (PtyxisIpcContainer *object);

  const gchar * (*get_provider) (PtyxisIpcContainer *object);

};

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

GType ptyxis_ipc_container_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *ptyxis_ipc_container_interface_info (void);
guint ptyxis_ipc_container_override_properties (GObjectClass *klass, guint property_id_begin);


/* D-Bus method call completion functions: */
void ptyxis_ipc_container_complete_spawn (
    PtyxisIpcContainer *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list,
    const gchar *process);

void ptyxis_ipc_container_complete_find_program_in_path (
    PtyxisIpcContainer *object,
    GDBusMethodInvocation *invocation,
    const gchar *path);

void ptyxis_ipc_container_complete_translate_uri (
    PtyxisIpcContainer *object,
    GDBusMethodInvocation *invocation,
    const gchar *translated);



/* D-Bus method calls: */
void ptyxis_ipc_container_call_spawn (
    PtyxisIpcContainer *proxy,
    const gchar *arg_cwd,
    const gchar *const *arg_argv,
    GVariant *arg_fds,
    GVariant *arg_env,
    GUnixFDList *fd_list,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean ptyxis_ipc_container_call_spawn_finish (
    PtyxisIpcContainer *proxy,
    gchar ** out_process,
    GUnixFDList **out_fd_list,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_container_call_spawn_sync (
    PtyxisIpcContainer *proxy,
    const gchar *arg_cwd,
    const gchar *const *arg_argv,
    GVariant *arg_fds,
    GVariant *arg_env,
    GUnixFDList  *fd_list,
    gchar ** out_process,
    GUnixFDList **out_fd_list,
    GCancellable *cancellable,
    GError **error);

void ptyxis_ipc_container_call_find_program_in_path (
    PtyxisIpcContainer *proxy,
    const gchar *arg_program,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean ptyxis_ipc_container_call_find_program_in_path_finish (
    PtyxisIpcContainer *proxy,
    gchar ** out_path,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_container_call_find_program_in_path_sync (
    PtyxisIpcContainer *proxy,
    const gchar *arg_program,
    gchar ** out_path,
    GCancellable *cancellable,
    GError **error);

void ptyxis_ipc_container_call_translate_uri (
    PtyxisIpcContainer *proxy,
    const gchar *arg_uri,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean ptyxis_ipc_container_call_translate_uri_finish (
    PtyxisIpcContainer *proxy,
    gchar ** out_translated,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_container_call_translate_uri_sync (
    PtyxisIpcContainer *proxy,
    const gchar *arg_uri,
    gchar ** out_translated,
    GCancellable *cancellable,
    GError **error);



/* D-Bus property accessors: */
const gchar *ptyxis_ipc_container_get_provider (PtyxisIpcContainer *object);
gchar *ptyxis_ipc_container_dup_provider (PtyxisIpcContainer *object);
void ptyxis_ipc_container_set_provider (PtyxisIpcContainer *object, const gchar *value);

const gchar *ptyxis_ipc_container_get_id (PtyxisIpcContainer *object);
gchar *ptyxis_ipc_container_dup_id (PtyxisIpcContainer *object);
void ptyxis_ipc_container_set_id (PtyxisIpcContainer *object, const gchar *value);

const gchar *ptyxis_ipc_container_get_icon_name (PtyxisIpcContainer *object);
gchar *ptyxis_ipc_container_dup_icon_name (PtyxisIpcContainer *object);
void ptyxis_ipc_container_set_icon_name (PtyxisIpcContainer *object, const gchar *value);

const gchar *ptyxis_ipc_container_get_display_name (PtyxisIpcContainer *object);
gchar *ptyxis_ipc_container_dup_display_name (PtyxisIpcContainer *object);
void ptyxis_ipc_container_set_display_name (PtyxisIpcContainer *object, const gchar *value);


/* ---- */

#define PTYXIS_IPC_TYPE_CONTAINER_PROXY (ptyxis_ipc_container_proxy_get_type ())
#define PTYXIS_IPC_CONTAINER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PTYXIS_IPC_TYPE_CONTAINER_PROXY, PtyxisIpcContainerProxy))
#define PTYXIS_IPC_CONTAINER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), PTYXIS_IPC_TYPE_CONTAINER_PROXY, PtyxisIpcContainerProxyClass))
#define PTYXIS_IPC_CONTAINER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PTYXIS_IPC_TYPE_CONTAINER_PROXY, PtyxisIpcContainerProxyClass))
#define PTYXIS_IPC_IS_CONTAINER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PTYXIS_IPC_TYPE_CONTAINER_PROXY))
#define PTYXIS_IPC_IS_CONTAINER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), PTYXIS_IPC_TYPE_CONTAINER_PROXY))

typedef struct _PtyxisIpcContainerProxy PtyxisIpcContainerProxy;
typedef struct _PtyxisIpcContainerProxyClass PtyxisIpcContainerProxyClass;
typedef struct _PtyxisIpcContainerProxyPrivate PtyxisIpcContainerProxyPrivate;

struct _PtyxisIpcContainerProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  PtyxisIpcContainerProxyPrivate *priv;
};

struct _PtyxisIpcContainerProxyClass
{
  GDBusProxyClass parent_class;
};

GType ptyxis_ipc_container_proxy_get_type (void) G_GNUC_CONST;

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

void ptyxis_ipc_container_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
PtyxisIpcContainer *ptyxis_ipc_container_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
PtyxisIpcContainer *ptyxis_ipc_container_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void ptyxis_ipc_container_proxy_new_for_bus (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
PtyxisIpcContainer *ptyxis_ipc_container_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
PtyxisIpcContainer *ptyxis_ipc_container_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define PTYXIS_IPC_TYPE_CONTAINER_SKELETON (ptyxis_ipc_container_skeleton_get_type ())
#define PTYXIS_IPC_CONTAINER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PTYXIS_IPC_TYPE_CONTAINER_SKELETON, PtyxisIpcContainerSkeleton))
#define PTYXIS_IPC_CONTAINER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), PTYXIS_IPC_TYPE_CONTAINER_SKELETON, PtyxisIpcContainerSkeletonClass))
#define PTYXIS_IPC_CONTAINER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PTYXIS_IPC_TYPE_CONTAINER_SKELETON, PtyxisIpcContainerSkeletonClass))
#define PTYXIS_IPC_IS_CONTAINER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PTYXIS_IPC_TYPE_CONTAINER_SKELETON))
#define PTYXIS_IPC_IS_CONTAINER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), PTYXIS_IPC_TYPE_CONTAINER_SKELETON))

typedef struct _PtyxisIpcContainerSkeleton PtyxisIpcContainerSkeleton;
typedef struct _PtyxisIpcContainerSkeletonClass PtyxisIpcContainerSkeletonClass;
typedef struct _PtyxisIpcContainerSkeletonPrivate PtyxisIpcContainerSkeletonPrivate;

struct _PtyxisIpcContainerSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  PtyxisIpcContainerSkeletonPrivate *priv;
};

struct _PtyxisIpcContainerSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType ptyxis_ipc_container_skeleton_get_type (void) G_GNUC_CONST;

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

PtyxisIpcContainer *ptyxis_ipc_container_skeleton_new (void);


/* ------------------------------------------------------------------------ */
/* Declarations for org.gnome.Ptyxis.Process */

#define PTYXIS_IPC_TYPE_PROCESS (ptyxis_ipc_process_get_type ())
#define PTYXIS_IPC_PROCESS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PTYXIS_IPC_TYPE_PROCESS, PtyxisIpcProcess))
#define PTYXIS_IPC_IS_PROCESS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PTYXIS_IPC_TYPE_PROCESS))
#define PTYXIS_IPC_PROCESS_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), PTYXIS_IPC_TYPE_PROCESS, PtyxisIpcProcessIface))

struct _PtyxisIpcProcess;
typedef struct _PtyxisIpcProcess PtyxisIpcProcess;
typedef struct _PtyxisIpcProcessIface PtyxisIpcProcessIface;

struct _PtyxisIpcProcessIface
{
  GTypeInterface parent_iface;


  gboolean (*handle_get_working_directory) (
    PtyxisIpcProcess *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list,
    GVariant *arg_pty_fd);

  gboolean (*handle_has_foreground_process) (
    PtyxisIpcProcess *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list,
    GVariant *arg_pty_fd);

  gboolean (*handle_send_signal) (
    PtyxisIpcProcess *object,
    GDBusMethodInvocation *invocation,
    gint arg_signum);

  void (*exited) (
    PtyxisIpcProcess *object,
    gint arg_exit_status);

  void (*signaled) (
    PtyxisIpcProcess *object,
    gint arg_term_sig);

};

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

GType ptyxis_ipc_process_get_type (void) G_GNUC_CONST;

GDBusInterfaceInfo *ptyxis_ipc_process_interface_info (void);
guint ptyxis_ipc_process_override_properties (GObjectClass *klass, guint property_id_begin);


/* D-Bus method call completion functions: */
void ptyxis_ipc_process_complete_has_foreground_process (
    PtyxisIpcProcess *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list,
    gboolean has_foreground_process,
    gint pid,
    const gchar *cmdline,
    const gchar *leader_kind);

void ptyxis_ipc_process_complete_send_signal (
    PtyxisIpcProcess *object,
    GDBusMethodInvocation *invocation);

void ptyxis_ipc_process_complete_get_working_directory (
    PtyxisIpcProcess *object,
    GDBusMethodInvocation *invocation,
    GUnixFDList *fd_list,
    const gchar *path);



/* D-Bus signal emissions functions: */
void ptyxis_ipc_process_emit_exited (
    PtyxisIpcProcess *object,
    gint arg_exit_status);

void ptyxis_ipc_process_emit_signaled (
    PtyxisIpcProcess *object,
    gint arg_term_sig);



/* D-Bus method calls: */
void ptyxis_ipc_process_call_has_foreground_process (
    PtyxisIpcProcess *proxy,
    GVariant *arg_pty_fd,
    GUnixFDList *fd_list,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean ptyxis_ipc_process_call_has_foreground_process_finish (
    PtyxisIpcProcess *proxy,
    gboolean* out_has_foreground_process,
    gint* out_pid,
    gchar ** out_cmdline,
    gchar ** out_leader_kind,
    GUnixFDList **out_fd_list,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_process_call_has_foreground_process_sync (
    PtyxisIpcProcess *proxy,
    GVariant *arg_pty_fd,
    GUnixFDList  *fd_list,
    gboolean* out_has_foreground_process,
    gint* out_pid,
    gchar ** out_cmdline,
    gchar ** out_leader_kind,
    GUnixFDList **out_fd_list,
    GCancellable *cancellable,
    GError **error);

void ptyxis_ipc_process_call_send_signal (
    PtyxisIpcProcess *proxy,
    gint arg_signum,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean ptyxis_ipc_process_call_send_signal_finish (
    PtyxisIpcProcess *proxy,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_process_call_send_signal_sync (
    PtyxisIpcProcess *proxy,
    gint arg_signum,
    GCancellable *cancellable,
    GError **error);

void ptyxis_ipc_process_call_get_working_directory (
    PtyxisIpcProcess *proxy,
    GVariant *arg_pty_fd,
    GUnixFDList *fd_list,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean ptyxis_ipc_process_call_get_working_directory_finish (
    PtyxisIpcProcess *proxy,
    gchar ** out_path,
    GUnixFDList **out_fd_list,
    GAsyncResult *res,
    GError **error);

gboolean ptyxis_ipc_process_call_get_working_directory_sync (
    PtyxisIpcProcess *proxy,
    GVariant *arg_pty_fd,
    GUnixFDList  *fd_list,
    gchar ** out_path,
    GUnixFDList **out_fd_list,
    GCancellable *cancellable,
    GError **error);



/* ---- */

#define PTYXIS_IPC_TYPE_PROCESS_PROXY (ptyxis_ipc_process_proxy_get_type ())
#define PTYXIS_IPC_PROCESS_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PTYXIS_IPC_TYPE_PROCESS_PROXY, PtyxisIpcProcessProxy))
#define PTYXIS_IPC_PROCESS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), PTYXIS_IPC_TYPE_PROCESS_PROXY, PtyxisIpcProcessProxyClass))
#define PTYXIS_IPC_PROCESS_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PTYXIS_IPC_TYPE_PROCESS_PROXY, PtyxisIpcProcessProxyClass))
#define PTYXIS_IPC_IS_PROCESS_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PTYXIS_IPC_TYPE_PROCESS_PROXY))
#define PTYXIS_IPC_IS_PROCESS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), PTYXIS_IPC_TYPE_PROCESS_PROXY))

typedef struct _PtyxisIpcProcessProxy PtyxisIpcProcessProxy;
typedef struct _PtyxisIpcProcessProxyClass PtyxisIpcProcessProxyClass;
typedef struct _PtyxisIpcProcessProxyPrivate PtyxisIpcProcessProxyPrivate;

struct _PtyxisIpcProcessProxy
{
  /*< private >*/
  GDBusProxy parent_instance;
  PtyxisIpcProcessProxyPrivate *priv;
};

struct _PtyxisIpcProcessProxyClass
{
  GDBusProxyClass parent_class;
};

GType ptyxis_ipc_process_proxy_get_type (void) G_GNUC_CONST;

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

void ptyxis_ipc_process_proxy_new (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
PtyxisIpcProcess *ptyxis_ipc_process_proxy_new_finish (
    GAsyncResult        *res,
    GError             **error);
PtyxisIpcProcess *ptyxis_ipc_process_proxy_new_sync (
    GDBusConnection     *connection,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);

void ptyxis_ipc_process_proxy_new_for_bus (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GAsyncReadyCallback  callback,
    gpointer             user_data);
PtyxisIpcProcess *ptyxis_ipc_process_proxy_new_for_bus_finish (
    GAsyncResult        *res,
    GError             **error);
PtyxisIpcProcess *ptyxis_ipc_process_proxy_new_for_bus_sync (
    GBusType             bus_type,
    GDBusProxyFlags      flags,
    const gchar         *name,
    const gchar         *object_path,
    GCancellable        *cancellable,
    GError             **error);


/* ---- */

#define PTYXIS_IPC_TYPE_PROCESS_SKELETON (ptyxis_ipc_process_skeleton_get_type ())
#define PTYXIS_IPC_PROCESS_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PTYXIS_IPC_TYPE_PROCESS_SKELETON, PtyxisIpcProcessSkeleton))
#define PTYXIS_IPC_PROCESS_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), PTYXIS_IPC_TYPE_PROCESS_SKELETON, PtyxisIpcProcessSkeletonClass))
#define PTYXIS_IPC_PROCESS_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PTYXIS_IPC_TYPE_PROCESS_SKELETON, PtyxisIpcProcessSkeletonClass))
#define PTYXIS_IPC_IS_PROCESS_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PTYXIS_IPC_TYPE_PROCESS_SKELETON))
#define PTYXIS_IPC_IS_PROCESS_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), PTYXIS_IPC_TYPE_PROCESS_SKELETON))

typedef struct _PtyxisIpcProcessSkeleton PtyxisIpcProcessSkeleton;
typedef struct _PtyxisIpcProcessSkeletonClass PtyxisIpcProcessSkeletonClass;
typedef struct _PtyxisIpcProcessSkeletonPrivate PtyxisIpcProcessSkeletonPrivate;

struct _PtyxisIpcProcessSkeleton
{
  /*< private >*/
  GDBusInterfaceSkeleton parent_instance;
  PtyxisIpcProcessSkeletonPrivate *priv;
};

struct _PtyxisIpcProcessSkeletonClass
{
  GDBusInterfaceSkeletonClass parent_class;
};

GType ptyxis_ipc_process_skeleton_get_type (void) G_GNUC_CONST;

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

PtyxisIpcProcess *ptyxis_ipc_process_skeleton_new (void);


G_END_DECLS

#endif /* __PTYXIS_AGENT_IPC_H__ */
