/* astal-river.h generated by valac 0.56.19, the Vala compiler, do not modify */

#ifndef __ASTAL_RIVER_H__
#define __ASTAL_RIVER_H__

#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <glib-object.h>
#include <wayland-client.h>
#include <astal-wl.h>
#include <gio/gio.h>

G_BEGIN_DECLS

#define ASTAL_RIVER_MAJOR_VERSION 0
#define ASTAL_RIVER_MINOR_VERSION 1
#define ASTAL_RIVER_MICRO_VERSION 0
#define ASTAL_RIVER_VERSION "0.1.0"
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define ASTAL_RIVER_TYPE_RIVER (astal_river_river_get_type ())
#define ASTAL_RIVER_RIVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ASTAL_RIVER_TYPE_RIVER, AstalRiverRiver))
#define ASTAL_RIVER_RIVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ASTAL_RIVER_TYPE_RIVER, AstalRiverRiverClass))
#define ASTAL_RIVER_IS_RIVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ASTAL_RIVER_TYPE_RIVER))
#define ASTAL_RIVER_IS_RIVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ASTAL_RIVER_TYPE_RIVER))
#define ASTAL_RIVER_RIVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ASTAL_RIVER_TYPE_RIVER, AstalRiverRiverClass))

typedef struct _AstalRiverRiver AstalRiverRiver;
typedef struct _AstalRiverRiverClass AstalRiverRiverClass;
typedef struct _AstalRiverRiverPrivate AstalRiverRiverPrivate;

#define ASTAL_RIVER_TYPE_OUTPUT (astal_river_output_get_type ())
#define ASTAL_RIVER_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ASTAL_RIVER_TYPE_OUTPUT, AstalRiverOutput))
#define ASTAL_RIVER_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ASTAL_RIVER_TYPE_OUTPUT, AstalRiverOutputClass))
#define ASTAL_RIVER_IS_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ASTAL_RIVER_TYPE_OUTPUT))
#define ASTAL_RIVER_IS_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ASTAL_RIVER_TYPE_OUTPUT))
#define ASTAL_RIVER_OUTPUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ASTAL_RIVER_TYPE_OUTPUT, AstalRiverOutputClass))

typedef struct _AstalRiverOutput AstalRiverOutput;
typedef struct _AstalRiverOutputClass AstalRiverOutputClass;

#define ASTAL_RIVER_TYPE_LAYOUT (astal_river_layout_get_type ())
#define ASTAL_RIVER_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ASTAL_RIVER_TYPE_LAYOUT, AstalRiverLayout))
#define ASTAL_RIVER_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ASTAL_RIVER_TYPE_LAYOUT, AstalRiverLayoutClass))
#define ASTAL_RIVER_IS_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ASTAL_RIVER_TYPE_LAYOUT))
#define ASTAL_RIVER_IS_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ASTAL_RIVER_TYPE_LAYOUT))
#define ASTAL_RIVER_LAYOUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ASTAL_RIVER_TYPE_LAYOUT, AstalRiverLayoutClass))

typedef struct _AstalRiverLayout AstalRiverLayout;
typedef struct _AstalRiverLayoutClass AstalRiverLayoutClass;
typedef struct _AstalRiverOutputPrivate AstalRiverOutputPrivate;

#define ASTAL_RIVER_TYPE_LAYOUT_DEMAND_RESULT (astal_river_layout_demand_result_get_type ())
#define ASTAL_RIVER_LAYOUT_DEMAND_RESULT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ASTAL_RIVER_TYPE_LAYOUT_DEMAND_RESULT, AstalRiverLayoutDemandResult))
#define ASTAL_RIVER_LAYOUT_DEMAND_RESULT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ASTAL_RIVER_TYPE_LAYOUT_DEMAND_RESULT, AstalRiverLayoutDemandResultClass))
#define ASTAL_RIVER_IS_LAYOUT_DEMAND_RESULT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ASTAL_RIVER_TYPE_LAYOUT_DEMAND_RESULT))
#define ASTAL_RIVER_IS_LAYOUT_DEMAND_RESULT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ASTAL_RIVER_TYPE_LAYOUT_DEMAND_RESULT))
#define ASTAL_RIVER_LAYOUT_DEMAND_RESULT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ASTAL_RIVER_TYPE_LAYOUT_DEMAND_RESULT, AstalRiverLayoutDemandResultClass))

typedef struct _AstalRiverLayoutDemandResult AstalRiverLayoutDemandResult;
typedef struct _AstalRiverLayoutDemandResultClass AstalRiverLayoutDemandResultClass;
typedef AstalRiverLayoutDemandResult* (*AstalRiverLayoutDemandCallback) (AstalRiverLayout* layout, const gchar* namespace, AstalRiverOutput* output, guint view_count, guint usable_width, guint usable_height, gpointer user_data);
typedef struct _AstalRiverLayoutDemandResultPrivate AstalRiverLayoutDemandResultPrivate;
typedef struct _AstalRiverLayoutPrivate AstalRiverLayoutPrivate;

struct _AstalRiverRiver {
	GObject parent_instance;
	AstalRiverRiverPrivate * priv;
};

struct _AstalRiverRiverClass {
	GObjectClass parent_class;
};

struct _AstalRiverOutput {
	GObject parent_instance;
	AstalRiverOutputPrivate * priv;
};

struct _AstalRiverOutputClass {
	GObjectClass parent_class;
};

struct _AstalRiverLayoutDemandResult {
	GObject parent_instance;
	AstalRiverLayoutDemandResultPrivate * priv;
	gchar* layout_name;
	GList* rectangles;
};

struct _AstalRiverLayoutDemandResultClass {
	GObjectClass parent_class;
};

struct _AstalRiverLayout {
	GObject parent_instance;
	AstalRiverLayoutPrivate * priv;
	GClosure* layout_demand_closure;
};

struct _AstalRiverLayoutClass {
	GObjectClass parent_class;
};

VALA_EXTERN gboolean astal_river_is_supported (void);
VALA_EXTERN GType astal_river_river_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AstalRiverRiver, g_object_unref)
VALA_EXTERN AstalRiverRiver* astal_river_get_default (void);
VALA_EXTERN AstalRiverRiver* astal_river_river_get_default (void);
VALA_EXTERN GType astal_river_output_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AstalRiverOutput, g_object_unref)
VALA_EXTERN AstalRiverOutput* astal_river_river_find_output_by_wl_output (AstalRiverRiver* self,
                                                              struct wl_output* wl_output);
VALA_EXTERN AstalRiverOutput* astal_river_river_find_output_by_astal_wl_output (AstalRiverRiver* self,
                                                                    AstalWlOutput* wl_output);
VALA_EXTERN AstalRiverOutput* astal_river_river_find_output_by_name (AstalRiverRiver* self,
                                                         const gchar* name);
VALA_EXTERN AstalRiverOutput* astal_river_river_find_output_by_id (AstalRiverRiver* self,
                                                       guint32 id);
VALA_EXTERN gboolean astal_river_river_run_command (AstalRiverRiver* self,
                                        gchar** cmd,
                                        gint cmd_length1,
                                        gchar** output);
VALA_EXTERN void astal_river_river_run_command_async (AstalRiverRiver* self,
                                          gchar** cmd,
                                          gint cmd_length1,
                                          GAsyncReadyCallback _callback_,
                                          gpointer _user_data_);
VALA_EXTERN gboolean astal_river_river_run_command_finish (AstalRiverRiver* self,
                                               GAsyncResult* _res_,
                                               gchar** output);
VALA_EXTERN GType astal_river_layout_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AstalRiverLayout, g_object_unref)
VALA_EXTERN AstalRiverLayout* astal_river_river_new_layout (AstalRiverRiver* self,
                                                const gchar* namespace);
VALA_EXTERN AstalRiverRiver* astal_river_river_new (void);
VALA_EXTERN AstalRiverRiver* astal_river_river_construct (GType object_type);
VALA_EXTERN GList* astal_river_river_get_outputs (AstalRiverRiver* self);
VALA_EXTERN AstalRiverOutput* astal_river_river_get_focused_output (AstalRiverRiver* self);
VALA_EXTERN const gchar* astal_river_river_get_focused_output_name (AstalRiverRiver* self);
VALA_EXTERN const gchar* astal_river_river_get_focused_view (AstalRiverRiver* self);
VALA_EXTERN const gchar* astal_river_river_get_mode (AstalRiverRiver* self);
VALA_EXTERN AstalWlOutput* astal_river_output_get_output (AstalRiverOutput* self);
VALA_EXTERN guint astal_river_output_get_focused_tags (AstalRiverOutput* self);
VALA_EXTERN void astal_river_output_set_focused_tags (AstalRiverOutput* self,
                                          guint value);
VALA_EXTERN guint astal_river_output_get_occupied_tags (AstalRiverOutput* self);
VALA_EXTERN guint astal_river_output_get_urgent_tags (AstalRiverOutput* self);
VALA_EXTERN const gchar* astal_river_output_get_focused_view (AstalRiverOutput* self);
VALA_EXTERN const gchar* astal_river_output_get_layout_name (AstalRiverOutput* self);
VALA_EXTERN GType astal_river_layout_demand_result_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AstalRiverLayoutDemandResult, g_object_unref)
VALA_EXTERN AstalRiverLayoutDemandResult* astal_river_layout_demand_result_new (const gchar* layout_name,
                                                                    GList* rectangles);
VALA_EXTERN AstalRiverLayoutDemandResult* astal_river_layout_demand_result_construct (GType object_type,
                                                                          const gchar* layout_name,
                                                                          GList* rectangles);
void astal_river_layout_set_layout_demand_closure (AstalRiverLayout* self,
                                                   GClosure* closure);
VALA_EXTERN const gchar* astal_river_layout_get_namespace (AstalRiverLayout* self);

G_END_DECLS

#endif
