/* ice.h generated by valac 0.56.19, the Vala compiler, do not modify */

#ifndef __PLUGINS_ICE_ICE_H__
#define __PLUGINS_ICE_ICE_H__

#include <glib-object.h>
#include <glib.h>
#include <gnutls/x509.h>
#include "crypto-vala.h"
#include <gio/gio.h>
#include "xmpp-vala.h"
#include <stdlib.h>
#include <string.h>
#include "libdino.h"
#include <nice.h>
#include <gmodule.h>

G_BEGIN_DECLS

#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 DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_CREDENTIALS_CAPSULE (dino_plugins_ice_dtls_srtp_credentials_capsule_get_type ())
#define DINO_PLUGINS_ICE_DTLS_SRTP_CREDENTIALS_CAPSULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_CREDENTIALS_CAPSULE, DinoPluginsIceDtlsSrtpCredentialsCapsule))
#define DINO_PLUGINS_ICE_DTLS_SRTP_CREDENTIALS_CAPSULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_CREDENTIALS_CAPSULE, DinoPluginsIceDtlsSrtpCredentialsCapsuleClass))
#define DINO_PLUGINS_ICE_DTLS_SRTP_IS_CREDENTIALS_CAPSULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_CREDENTIALS_CAPSULE))
#define DINO_PLUGINS_ICE_DTLS_SRTP_IS_CREDENTIALS_CAPSULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_CREDENTIALS_CAPSULE))
#define DINO_PLUGINS_ICE_DTLS_SRTP_CREDENTIALS_CAPSULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_CREDENTIALS_CAPSULE, DinoPluginsIceDtlsSrtpCredentialsCapsuleClass))

typedef struct _DinoPluginsIceDtlsSrtpCredentialsCapsule DinoPluginsIceDtlsSrtpCredentialsCapsule;
typedef struct _DinoPluginsIceDtlsSrtpCredentialsCapsuleClass DinoPluginsIceDtlsSrtpCredentialsCapsuleClass;
typedef struct _DinoPluginsIceDtlsSrtpCredentialsCapsulePrivate DinoPluginsIceDtlsSrtpCredentialsCapsulePrivate;

#define DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_HANDLER (dino_plugins_ice_dtls_srtp_handler_get_type ())
#define DINO_PLUGINS_ICE_DTLS_SRTP_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_HANDLER, DinoPluginsIceDtlsSrtpHandler))
#define DINO_PLUGINS_ICE_DTLS_SRTP_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_HANDLER, DinoPluginsIceDtlsSrtpHandlerClass))
#define DINO_PLUGINS_ICE_DTLS_SRTP_IS_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_HANDLER))
#define DINO_PLUGINS_ICE_DTLS_SRTP_IS_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_HANDLER))
#define DINO_PLUGINS_ICE_DTLS_SRTP_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_HANDLER, DinoPluginsIceDtlsSrtpHandlerClass))

typedef struct _DinoPluginsIceDtlsSrtpHandler DinoPluginsIceDtlsSrtpHandler;
typedef struct _DinoPluginsIceDtlsSrtpHandlerClass DinoPluginsIceDtlsSrtpHandlerClass;
typedef struct _DinoPluginsIceDtlsSrtpHandlerPrivate DinoPluginsIceDtlsSrtpHandlerPrivate;
typedef enum  {
	DINO_PLUGINS_ICE_DTLS_SRTP_MODE_CLIENT,
	DINO_PLUGINS_ICE_DTLS_SRTP_MODE_SERVER
} DinoPluginsIceDtlsSrtpMode;

#define DINO_PLUGINS_ICE_DTLS_SRTP_TYPE_MODE (dino_plugins_ice_dtls_srtp_mode_get_type ())

#define DINO_PLUGINS_ICE_TYPE_MODULE (dino_plugins_ice_module_get_type ())
#define DINO_PLUGINS_ICE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_PLUGINS_ICE_TYPE_MODULE, DinoPluginsIceModule))
#define DINO_PLUGINS_ICE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_PLUGINS_ICE_TYPE_MODULE, DinoPluginsIceModuleClass))
#define DINO_PLUGINS_ICE_IS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_PLUGINS_ICE_TYPE_MODULE))
#define DINO_PLUGINS_ICE_IS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_PLUGINS_ICE_TYPE_MODULE))
#define DINO_PLUGINS_ICE_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_PLUGINS_ICE_TYPE_MODULE, DinoPluginsIceModuleClass))

typedef struct _DinoPluginsIceModule DinoPluginsIceModule;
typedef struct _DinoPluginsIceModuleClass DinoPluginsIceModuleClass;
typedef struct _DinoPluginsIceModulePrivate DinoPluginsIceModulePrivate;

#define DINO_PLUGINS_ICE_TYPE_PLUGIN (dino_plugins_ice_plugin_get_type ())
#define DINO_PLUGINS_ICE_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_PLUGINS_ICE_TYPE_PLUGIN, DinoPluginsIcePlugin))
#define DINO_PLUGINS_ICE_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_PLUGINS_ICE_TYPE_PLUGIN, DinoPluginsIcePluginClass))
#define DINO_PLUGINS_ICE_IS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_PLUGINS_ICE_TYPE_PLUGIN))
#define DINO_PLUGINS_ICE_IS_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_PLUGINS_ICE_TYPE_PLUGIN))
#define DINO_PLUGINS_ICE_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_PLUGINS_ICE_TYPE_PLUGIN, DinoPluginsIcePluginClass))

typedef struct _DinoPluginsIcePlugin DinoPluginsIcePlugin;
typedef struct _DinoPluginsIcePluginClass DinoPluginsIcePluginClass;
typedef struct _DinoPluginsIcePluginPrivate DinoPluginsIcePluginPrivate;

#define DINO_PLUGINS_ICE_TYPE_TRANSPORT_PARAMETERS (dino_plugins_ice_transport_parameters_get_type ())
#define DINO_PLUGINS_ICE_TRANSPORT_PARAMETERS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_PLUGINS_ICE_TYPE_TRANSPORT_PARAMETERS, DinoPluginsIceTransportParameters))
#define DINO_PLUGINS_ICE_TRANSPORT_PARAMETERS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_PLUGINS_ICE_TYPE_TRANSPORT_PARAMETERS, DinoPluginsIceTransportParametersClass))
#define DINO_PLUGINS_ICE_IS_TRANSPORT_PARAMETERS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_PLUGINS_ICE_TYPE_TRANSPORT_PARAMETERS))
#define DINO_PLUGINS_ICE_IS_TRANSPORT_PARAMETERS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_PLUGINS_ICE_TYPE_TRANSPORT_PARAMETERS))
#define DINO_PLUGINS_ICE_TRANSPORT_PARAMETERS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_PLUGINS_ICE_TYPE_TRANSPORT_PARAMETERS, DinoPluginsIceTransportParametersClass))

typedef struct _DinoPluginsIceTransportParameters DinoPluginsIceTransportParameters;
typedef struct _DinoPluginsIceTransportParametersClass DinoPluginsIceTransportParametersClass;
typedef struct _DinoPluginsIceTransportParametersPrivate DinoPluginsIceTransportParametersPrivate;

struct _DinoPluginsIceDtlsSrtpCredentialsCapsule {
	GTypeInstance parent_instance;
	volatile int ref_count;
	DinoPluginsIceDtlsSrtpCredentialsCapsulePrivate * priv;
	guint8* own_fingerprint;
	gint own_fingerprint_length1;
	struct gnutls_x509_crt_int** own_cert;
	gint own_cert_length1;
	struct gnutls_x509_privkey_int* private_key;
};

struct _DinoPluginsIceDtlsSrtpCredentialsCapsuleClass {
	GTypeClass parent_class;
	void (*finalize) (DinoPluginsIceDtlsSrtpCredentialsCapsule *self);
};

struct _DinoPluginsIceDtlsSrtpHandler {
	GTypeInstance parent_instance;
	volatile int ref_count;
	DinoPluginsIceDtlsSrtpHandlerPrivate * priv;
};

struct _DinoPluginsIceDtlsSrtpHandlerClass {
	GTypeClass parent_class;
	void (*finalize) (DinoPluginsIceDtlsSrtpHandler *self);
};

struct _DinoPluginsIceModule {
	XmppXepJingleIceUdpModule parent_instance;
	DinoPluginsIceModulePrivate * priv;
	gchar* stun_ip;
	guint stun_port;
	gchar* turn_ip;
	XmppXepExternalServiceDiscoveryService* turn_service;
};

struct _DinoPluginsIceModuleClass {
	XmppXepJingleIceUdpModuleClass parent_class;
};

struct _DinoPluginsIcePlugin {
	GObject parent_instance;
	DinoPluginsIcePluginPrivate * priv;
	DinoApplication* app;
};

struct _DinoPluginsIcePluginClass {
	GObjectClass parent_class;
};

struct _DinoPluginsIceTransportParameters {
	XmppXepJingleIceUdpIceUdpTransportParameters parent_instance;
	DinoPluginsIceTransportParametersPrivate * priv;
};

struct _DinoPluginsIceTransportParametersClass {
	XmppXepJingleIceUdpIceUdpTransportParametersClass parent_class;
};

VALA_EXTERN gpointer dino_plugins_ice_dtls_srtp_credentials_capsule_ref (gpointer instance);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_credentials_capsule_unref (gpointer instance);
VALA_EXTERN GParamSpec* dino_plugins_ice_dtls_srtp_param_spec_credentials_capsule (const gchar* name,
                                                                       const gchar* nick,
                                                                       const gchar* blurb,
                                                                       GType object_type,
                                                                       GParamFlags flags);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_value_set_credentials_capsule (GValue* value,
                                                               gpointer v_object);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_value_take_credentials_capsule (GValue* value,
                                                                gpointer v_object);
VALA_EXTERN gpointer dino_plugins_ice_dtls_srtp_value_get_credentials_capsule (const GValue* value);
VALA_EXTERN GType dino_plugins_ice_dtls_srtp_credentials_capsule_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoPluginsIceDtlsSrtpCredentialsCapsule, dino_plugins_ice_dtls_srtp_credentials_capsule_unref)
VALA_EXTERN DinoPluginsIceDtlsSrtpCredentialsCapsule* dino_plugins_ice_dtls_srtp_credentials_capsule_new (void);
VALA_EXTERN DinoPluginsIceDtlsSrtpCredentialsCapsule* dino_plugins_ice_dtls_srtp_credentials_capsule_construct (GType object_type);
VALA_EXTERN gpointer dino_plugins_ice_dtls_srtp_handler_ref (gpointer instance);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_handler_unref (gpointer instance);
VALA_EXTERN GParamSpec* dino_plugins_ice_dtls_srtp_param_spec_handler (const gchar* name,
                                                           const gchar* nick,
                                                           const gchar* blurb,
                                                           GType object_type,
                                                           GParamFlags flags);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_value_set_handler (GValue* value,
                                                   gpointer v_object);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_value_take_handler (GValue* value,
                                                    gpointer v_object);
VALA_EXTERN gpointer dino_plugins_ice_dtls_srtp_value_get_handler (const GValue* value);
VALA_EXTERN GType dino_plugins_ice_dtls_srtp_handler_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoPluginsIceDtlsSrtpHandler, dino_plugins_ice_dtls_srtp_handler_unref)
VALA_EXTERN DinoPluginsIceDtlsSrtpHandler* dino_plugins_ice_dtls_srtp_handler_new_with_cert (DinoPluginsIceDtlsSrtpCredentialsCapsule* creds);
VALA_EXTERN DinoPluginsIceDtlsSrtpHandler* dino_plugins_ice_dtls_srtp_handler_construct_with_cert (GType object_type,
                                                                                       DinoPluginsIceDtlsSrtpCredentialsCapsule* creds);
VALA_EXTERN guint8* dino_plugins_ice_dtls_srtp_handler_process_incoming_data (DinoPluginsIceDtlsSrtpHandler* self,
                                                                  guint component_id,
                                                                  guint8* data,
                                                                  gint data_length1,
                                                                  gint* result_length1,
                                                                  GError** error);
VALA_EXTERN guint8* dino_plugins_ice_dtls_srtp_handler_process_outgoing_data (DinoPluginsIceDtlsSrtpHandler* self,
                                                                  guint component_id,
                                                                  guint8* data,
                                                                  gint data_length1,
                                                                  gint* result_length1,
                                                                  GError** error);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_handler_on_data_rec (DinoPluginsIceDtlsSrtpHandler* self,
                                                     guint8* data,
                                                     gint data_length1);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_handler_stop_dtls_connection (DinoPluginsIceDtlsSrtpHandler* self);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_handler_setup_dtls_connection (DinoPluginsIceDtlsSrtpHandler* self,
                                                               GAsyncReadyCallback _callback_,
                                                               gpointer _user_data_);
VALA_EXTERN XmppXepJingleContentEncryption* dino_plugins_ice_dtls_srtp_handler_setup_dtls_connection_finish (DinoPluginsIceDtlsSrtpHandler* self,
                                                                                                 GAsyncResult* _res_);
VALA_EXTERN DinoPluginsIceDtlsSrtpHandler* dino_plugins_ice_dtls_srtp_handler_new (void);
VALA_EXTERN DinoPluginsIceDtlsSrtpHandler* dino_plugins_ice_dtls_srtp_handler_construct (GType object_type);
VALA_EXTERN gboolean dino_plugins_ice_dtls_srtp_handler_get_ready (DinoPluginsIceDtlsSrtpHandler* self);
VALA_EXTERN GType dino_plugins_ice_dtls_srtp_mode_get_type (void) G_GNUC_CONST ;
VALA_EXTERN DinoPluginsIceDtlsSrtpMode dino_plugins_ice_dtls_srtp_handler_get_mode (DinoPluginsIceDtlsSrtpHandler* self);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_handler_set_mode (DinoPluginsIceDtlsSrtpHandler* self,
                                                  DinoPluginsIceDtlsSrtpMode value);
VALA_EXTERN guint8* dino_plugins_ice_dtls_srtp_handler_get_own_fingerprint (DinoPluginsIceDtlsSrtpHandler* self,
                                                                gint* result_length1);
VALA_EXTERN guint8* dino_plugins_ice_dtls_srtp_handler_get_peer_fingerprint (DinoPluginsIceDtlsSrtpHandler* self,
                                                                 gint* result_length1);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_handler_set_peer_fingerprint (DinoPluginsIceDtlsSrtpHandler* self,
                                                              guint8* value,
                                                              gint value_length1);
VALA_EXTERN const gchar* dino_plugins_ice_dtls_srtp_handler_get_peer_fp_algo (DinoPluginsIceDtlsSrtpHandler* self);
VALA_EXTERN void dino_plugins_ice_dtls_srtp_handler_set_peer_fp_algo (DinoPluginsIceDtlsSrtpHandler* self,
                                                          const gchar* value);
VALA_EXTERN GType dino_plugins_ice_module_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoPluginsIceModule, g_object_unref)
VALA_EXTERN DinoPluginsIceModule* dino_plugins_ice_module_new (void);
VALA_EXTERN DinoPluginsIceModule* dino_plugins_ice_module_construct (GType object_type);
VALA_EXTERN GType dino_plugins_ice_plugin_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoPluginsIcePlugin, g_object_unref)
VALA_EXTERN DinoPluginsIcePlugin* dino_plugins_ice_plugin_new (void);
VALA_EXTERN DinoPluginsIcePlugin* dino_plugins_ice_plugin_construct (GType object_type);
VALA_EXTERN GType dino_plugins_ice_transport_parameters_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoPluginsIceTransportParameters, g_object_unref)
VALA_EXTERN DinoPluginsIceTransportParameters* dino_plugins_ice_transport_parameters_new (NiceAgent* agent,
                                                                              DinoPluginsIceDtlsSrtpCredentialsCapsule* credentials,
                                                                              XmppXepExternalServiceDiscoveryService* turn_service,
                                                                              const gchar* turn_ip,
                                                                              guint8 components,
                                                                              XmppJid* local_full_jid,
                                                                              XmppJid* peer_full_jid,
                                                                              XmppStanzaNode* node);
VALA_EXTERN DinoPluginsIceTransportParameters* dino_plugins_ice_transport_parameters_construct (GType object_type,
                                                                                    NiceAgent* agent,
                                                                                    DinoPluginsIceDtlsSrtpCredentialsCapsule* credentials,
                                                                                    XmppXepExternalServiceDiscoveryService* turn_service,
                                                                                    const gchar* turn_ip,
                                                                                    guint8 components,
                                                                                    XmppJid* local_full_jid,
                                                                                    XmppJid* peer_full_jid,
                                                                                    XmppStanzaNode* node);
VALA_EXTERN GType register_plugin (GModule* module);

G_END_DECLS

#endif
