/* frida-payload.h generated by valac 0.58.0-frida, the Vala compiler, do not modify */

#ifndef __SUBPROJECTS_FRIDA_CORE_LIB_PAYLOAD_FRIDA_PAYLOAD_H__
#define __SUBPROJECTS_FRIDA_CORE_LIB_PAYLOAD_FRIDA_PAYLOAD_H__

#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <gum/gum.h>
#include <glib-object.h>
#include "frida-base.h"
#include <gumjs/gumscriptbackend.h>
#include <gio/gio.h>
#include <gumjs/gumscript.h>

G_BEGIN_DECLS

#if !defined(VALA_EXTERN)
#if defined(_WIN32) || defined(__CYGWIN__)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define FRIDA_TYPE_PROCESS_INVADER (frida_process_invader_get_type ())
#define FRIDA_PROCESS_INVADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_PROCESS_INVADER, FridaProcessInvader))
#define FRIDA_IS_PROCESS_INVADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_PROCESS_INVADER))
#define FRIDA_PROCESS_INVADER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FRIDA_TYPE_PROCESS_INVADER, FridaProcessInvaderIface))

typedef struct _FridaProcessInvader FridaProcessInvader;
typedef struct _FridaProcessInvaderIface FridaProcessInvaderIface;
typedef enum  {
	FRIDA_TERMINATION_REASON_UNLOAD,
	FRIDA_TERMINATION_REASON_EXIT,
	FRIDA_TERMINATION_REASON_EXEC
} FridaTerminationReason;

#define FRIDA_TYPE_TERMINATION_REASON (frida_termination_reason_get_type ())

#define FRIDA_TYPE_BASE_AGENT_SESSION (frida_base_agent_session_get_type ())
#define FRIDA_BASE_AGENT_SESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_BASE_AGENT_SESSION, FridaBaseAgentSession))
#define FRIDA_BASE_AGENT_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_BASE_AGENT_SESSION, FridaBaseAgentSessionClass))
#define FRIDA_IS_BASE_AGENT_SESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_BASE_AGENT_SESSION))
#define FRIDA_IS_BASE_AGENT_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_BASE_AGENT_SESSION))
#define FRIDA_BASE_AGENT_SESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_BASE_AGENT_SESSION, FridaBaseAgentSessionClass))

typedef struct _FridaBaseAgentSession FridaBaseAgentSession;
typedef struct _FridaBaseAgentSessionClass FridaBaseAgentSessionClass;
typedef struct _FridaBaseAgentSessionPrivate FridaBaseAgentSessionPrivate;

#define FRIDA_TYPE_SCRIPT_ENGINE (frida_script_engine_get_type ())
#define FRIDA_SCRIPT_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_SCRIPT_ENGINE, FridaScriptEngine))
#define FRIDA_SCRIPT_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_SCRIPT_ENGINE, FridaScriptEngineClass))
#define FRIDA_IS_SCRIPT_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_SCRIPT_ENGINE))
#define FRIDA_IS_SCRIPT_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_SCRIPT_ENGINE))
#define FRIDA_SCRIPT_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_SCRIPT_ENGINE, FridaScriptEngineClass))

typedef struct _FridaScriptEngine FridaScriptEngine;
typedef struct _FridaScriptEngineClass FridaScriptEngineClass;

#define FRIDA_SCRIPT_ENGINE_TYPE_SCRIPT_INSTANCE (frida_script_engine_script_instance_get_type ())
#define FRIDA_SCRIPT_ENGINE_SCRIPT_INSTANCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_SCRIPT_ENGINE_TYPE_SCRIPT_INSTANCE, FridaScriptEngineScriptInstance))
#define FRIDA_SCRIPT_ENGINE_SCRIPT_INSTANCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_SCRIPT_ENGINE_TYPE_SCRIPT_INSTANCE, FridaScriptEngineScriptInstanceClass))
#define FRIDA_SCRIPT_ENGINE_IS_SCRIPT_INSTANCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_SCRIPT_ENGINE_TYPE_SCRIPT_INSTANCE))
#define FRIDA_SCRIPT_ENGINE_IS_SCRIPT_INSTANCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_SCRIPT_ENGINE_TYPE_SCRIPT_INSTANCE))
#define FRIDA_SCRIPT_ENGINE_SCRIPT_INSTANCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_SCRIPT_ENGINE_TYPE_SCRIPT_INSTANCE, FridaScriptEngineScriptInstanceClass))

typedef struct _FridaScriptEngineScriptInstance FridaScriptEngineScriptInstance;
typedef struct _FridaScriptEngineScriptInstanceClass FridaScriptEngineScriptInstanceClass;

#define FRIDA_TYPE_PORTAL_CLIENT (frida_portal_client_get_type ())
#define FRIDA_PORTAL_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_PORTAL_CLIENT, FridaPortalClient))
#define FRIDA_PORTAL_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_PORTAL_CLIENT, FridaPortalClientClass))
#define FRIDA_IS_PORTAL_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_PORTAL_CLIENT))
#define FRIDA_IS_PORTAL_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_PORTAL_CLIENT))
#define FRIDA_PORTAL_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_PORTAL_CLIENT, FridaPortalClientClass))

typedef struct _FridaPortalClient FridaPortalClient;
typedef struct _FridaPortalClientClass FridaPortalClientClass;

#define FRIDA_TYPE_FORK_MONITOR (frida_fork_monitor_get_type ())
#define FRIDA_FORK_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_FORK_MONITOR, FridaForkMonitor))
#define FRIDA_FORK_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_FORK_MONITOR, FridaForkMonitorClass))
#define FRIDA_IS_FORK_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_FORK_MONITOR))
#define FRIDA_IS_FORK_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_FORK_MONITOR))
#define FRIDA_FORK_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_FORK_MONITOR, FridaForkMonitorClass))

typedef struct _FridaForkMonitor FridaForkMonitor;
typedef struct _FridaForkMonitorClass FridaForkMonitorClass;

#define FRIDA_TYPE_FORK_HANDLER (frida_fork_handler_get_type ())
#define FRIDA_FORK_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_FORK_HANDLER, FridaForkHandler))
#define FRIDA_IS_FORK_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_FORK_HANDLER))
#define FRIDA_FORK_HANDLER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FRIDA_TYPE_FORK_HANDLER, FridaForkHandlerIface))

typedef struct _FridaForkHandler FridaForkHandler;
typedef struct _FridaForkHandlerIface FridaForkHandlerIface;

#define FRIDA_TYPE_SPAWN_MONITOR (frida_spawn_monitor_get_type ())
#define FRIDA_SPAWN_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_SPAWN_MONITOR, FridaSpawnMonitor))
#define FRIDA_SPAWN_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_SPAWN_MONITOR, FridaSpawnMonitorClass))
#define FRIDA_IS_SPAWN_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_SPAWN_MONITOR))
#define FRIDA_IS_SPAWN_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_SPAWN_MONITOR))
#define FRIDA_SPAWN_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_SPAWN_MONITOR, FridaSpawnMonitorClass))

typedef struct _FridaSpawnMonitor FridaSpawnMonitor;
typedef struct _FridaSpawnMonitorClass FridaSpawnMonitorClass;
typedef enum  {
	FRIDA_SPAWN_MONITOR_OPERATION_STATUS_QUEUED,
	FRIDA_SPAWN_MONITOR_OPERATION_STATUS_COMPLETED
} FridaSpawnMonitorOperationStatus;

#define FRIDA_SPAWN_MONITOR_TYPE_OPERATION_STATUS (frida_spawn_monitor_operation_status_get_type ())

#define FRIDA_TYPE_SPAWN_HANDLER (frida_spawn_handler_get_type ())
#define FRIDA_SPAWN_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_SPAWN_HANDLER, FridaSpawnHandler))
#define FRIDA_IS_SPAWN_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_SPAWN_HANDLER))
#define FRIDA_SPAWN_HANDLER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FRIDA_TYPE_SPAWN_HANDLER, FridaSpawnHandlerIface))

typedef struct _FridaSpawnHandler FridaSpawnHandler;
typedef struct _FridaSpawnHandlerIface FridaSpawnHandlerIface;

#define FRIDA_TYPE_THREAD_SUSPEND_MONITOR (frida_thread_suspend_monitor_get_type ())
#define FRIDA_THREAD_SUSPEND_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_THREAD_SUSPEND_MONITOR, FridaThreadSuspendMonitor))
#define FRIDA_THREAD_SUSPEND_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_THREAD_SUSPEND_MONITOR, FridaThreadSuspendMonitorClass))
#define FRIDA_IS_THREAD_SUSPEND_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_THREAD_SUSPEND_MONITOR))
#define FRIDA_IS_THREAD_SUSPEND_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_THREAD_SUSPEND_MONITOR))
#define FRIDA_THREAD_SUSPEND_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_THREAD_SUSPEND_MONITOR, FridaThreadSuspendMonitorClass))

typedef struct _FridaThreadSuspendMonitor FridaThreadSuspendMonitor;
typedef struct _FridaThreadSuspendMonitorClass FridaThreadSuspendMonitorClass;

#define FRIDA_TYPE_UNWIND_SITTER (frida_unwind_sitter_get_type ())
#define FRIDA_UNWIND_SITTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_UNWIND_SITTER, FridaUnwindSitter))
#define FRIDA_UNWIND_SITTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_UNWIND_SITTER, FridaUnwindSitterClass))
#define FRIDA_IS_UNWIND_SITTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_UNWIND_SITTER))
#define FRIDA_IS_UNWIND_SITTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_UNWIND_SITTER))
#define FRIDA_UNWIND_SITTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_UNWIND_SITTER, FridaUnwindSitterClass))

typedef struct _FridaUnwindSitter FridaUnwindSitter;
typedef struct _FridaUnwindSitterClass FridaUnwindSitterClass;

#define FRIDA_TYPE_EXIT_MONITOR (frida_exit_monitor_get_type ())
#define FRIDA_EXIT_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_EXIT_MONITOR, FridaExitMonitor))
#define FRIDA_EXIT_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_EXIT_MONITOR, FridaExitMonitorClass))
#define FRIDA_IS_EXIT_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_EXIT_MONITOR))
#define FRIDA_IS_EXIT_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_EXIT_MONITOR))
#define FRIDA_EXIT_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_EXIT_MONITOR, FridaExitMonitorClass))

typedef struct _FridaExitMonitor FridaExitMonitor;
typedef struct _FridaExitMonitorClass FridaExitMonitorClass;

#define FRIDA_TYPE_EXIT_HANDLER (frida_exit_handler_get_type ())
#define FRIDA_EXIT_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_EXIT_HANDLER, FridaExitHandler))
#define FRIDA_IS_EXIT_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_EXIT_HANDLER))
#define FRIDA_EXIT_HANDLER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FRIDA_TYPE_EXIT_HANDLER, FridaExitHandlerIface))

typedef struct _FridaExitHandler FridaExitHandler;
typedef struct _FridaExitHandlerIface FridaExitHandlerIface;

#define FRIDA_TYPE_THREAD_IGNORE_SCOPE (frida_thread_ignore_scope_get_type ())
#define FRIDA_THREAD_IGNORE_SCOPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_THREAD_IGNORE_SCOPE, FridaThreadIgnoreScope))
#define FRIDA_THREAD_IGNORE_SCOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_THREAD_IGNORE_SCOPE, FridaThreadIgnoreScopeClass))
#define FRIDA_IS_THREAD_IGNORE_SCOPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_THREAD_IGNORE_SCOPE))
#define FRIDA_IS_THREAD_IGNORE_SCOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_THREAD_IGNORE_SCOPE))
#define FRIDA_THREAD_IGNORE_SCOPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_THREAD_IGNORE_SCOPE, FridaThreadIgnoreScopeClass))

typedef struct _FridaThreadIgnoreScope FridaThreadIgnoreScope;
typedef struct _FridaThreadIgnoreScopeClass FridaThreadIgnoreScopeClass;
typedef enum  {
	FRIDA_THREAD_IGNORE_SCOPE_KIND_APPLICATION_THREAD,
	FRIDA_THREAD_IGNORE_SCOPE_KIND_FRIDA_THREAD
} FridaThreadIgnoreScopeKind;

#define FRIDA_THREAD_IGNORE_SCOPE_TYPE_KIND (frida_thread_ignore_scope_kind_get_type ())

#define FRIDA_TYPE_THREAD_COUNT_CLOAKER (frida_thread_count_cloaker_get_type ())
#define FRIDA_THREAD_COUNT_CLOAKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_THREAD_COUNT_CLOAKER, FridaThreadCountCloaker))
#define FRIDA_THREAD_COUNT_CLOAKER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_THREAD_COUNT_CLOAKER, FridaThreadCountCloakerClass))
#define FRIDA_IS_THREAD_COUNT_CLOAKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_THREAD_COUNT_CLOAKER))
#define FRIDA_IS_THREAD_COUNT_CLOAKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_THREAD_COUNT_CLOAKER))
#define FRIDA_THREAD_COUNT_CLOAKER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_THREAD_COUNT_CLOAKER, FridaThreadCountCloakerClass))

typedef struct _FridaThreadCountCloaker FridaThreadCountCloaker;
typedef struct _FridaThreadCountCloakerClass FridaThreadCountCloakerClass;

#define FRIDA_TYPE_THREAD_LIST_CLOAKER (frida_thread_list_cloaker_get_type ())
#define FRIDA_THREAD_LIST_CLOAKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_THREAD_LIST_CLOAKER, FridaThreadListCloaker))
#define FRIDA_THREAD_LIST_CLOAKER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_THREAD_LIST_CLOAKER, FridaThreadListCloakerClass))
#define FRIDA_IS_THREAD_LIST_CLOAKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_THREAD_LIST_CLOAKER))
#define FRIDA_IS_THREAD_LIST_CLOAKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_THREAD_LIST_CLOAKER))
#define FRIDA_THREAD_LIST_CLOAKER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_THREAD_LIST_CLOAKER, FridaThreadListCloakerClass))

typedef struct _FridaThreadListCloaker FridaThreadListCloaker;
typedef struct _FridaThreadListCloakerClass FridaThreadListCloakerClass;

#define FRIDA_TYPE_FD_LIST_CLOAKER (frida_fd_list_cloaker_get_type ())
#define FRIDA_FD_LIST_CLOAKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_FD_LIST_CLOAKER, FridaFDListCloaker))
#define FRIDA_FD_LIST_CLOAKER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_FD_LIST_CLOAKER, FridaFDListCloakerClass))
#define FRIDA_IS_FD_LIST_CLOAKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_FD_LIST_CLOAKER))
#define FRIDA_IS_FD_LIST_CLOAKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_FD_LIST_CLOAKER))
#define FRIDA_FD_LIST_CLOAKER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_FD_LIST_CLOAKER, FridaFDListCloakerClass))

typedef struct _FridaFDListCloaker FridaFDListCloaker;
typedef struct _FridaFDListCloakerClass FridaFDListCloakerClass;

#define FRIDA_TYPE_DIR_LIST_CLOAKER (frida_dir_list_cloaker_get_type ())
#define FRIDA_DIR_LIST_CLOAKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_DIR_LIST_CLOAKER, FridaDirListCloaker))
#define FRIDA_DIR_LIST_CLOAKER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_DIR_LIST_CLOAKER, FridaDirListCloakerClass))
#define FRIDA_IS_DIR_LIST_CLOAKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_DIR_LIST_CLOAKER))
#define FRIDA_IS_DIR_LIST_CLOAKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_DIR_LIST_CLOAKER))
#define FRIDA_DIR_LIST_CLOAKER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_DIR_LIST_CLOAKER, FridaDirListCloakerClass))

typedef struct _FridaDirListCloaker FridaDirListCloaker;
typedef struct _FridaDirListCloakerClass FridaDirListCloakerClass;
typedef struct _FridaDirEnt64 FridaDirEnt64;

#define FRIDA_TYPE_DIR_LIST_FILTER (frida_dir_list_filter_get_type ())
#define FRIDA_DIR_LIST_FILTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_DIR_LIST_FILTER, FridaDirListFilter))
#define FRIDA_IS_DIR_LIST_FILTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_DIR_LIST_FILTER))
#define FRIDA_DIR_LIST_FILTER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FRIDA_TYPE_DIR_LIST_FILTER, FridaDirListFilterIface))

typedef struct _FridaDirListFilter FridaDirListFilter;
typedef struct _FridaDirListFilterIface FridaDirListFilterIface;

#define FRIDA_TYPE_FILE_DESCRIPTOR_GUARD (frida_file_descriptor_guard_get_type ())
#define FRIDA_FILE_DESCRIPTOR_GUARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_FILE_DESCRIPTOR_GUARD, FridaFileDescriptorGuard))
#define FRIDA_FILE_DESCRIPTOR_GUARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_FILE_DESCRIPTOR_GUARD, FridaFileDescriptorGuardClass))
#define FRIDA_IS_FILE_DESCRIPTOR_GUARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_FILE_DESCRIPTOR_GUARD))
#define FRIDA_IS_FILE_DESCRIPTOR_GUARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_FILE_DESCRIPTOR_GUARD))
#define FRIDA_FILE_DESCRIPTOR_GUARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_FILE_DESCRIPTOR_GUARD, FridaFileDescriptorGuardClass))

typedef struct _FridaFileDescriptorGuard FridaFileDescriptorGuard;
typedef struct _FridaFileDescriptorGuardClass FridaFileDescriptorGuardClass;

#define FRIDA_TYPE_FILE_DESCRIPTOR_TABLE_PADDER (frida_file_descriptor_table_padder_get_type ())
#define FRIDA_FILE_DESCRIPTOR_TABLE_PADDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FRIDA_TYPE_FILE_DESCRIPTOR_TABLE_PADDER, FridaFileDescriptorTablePadder))
#define FRIDA_FILE_DESCRIPTOR_TABLE_PADDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FRIDA_TYPE_FILE_DESCRIPTOR_TABLE_PADDER, FridaFileDescriptorTablePadderClass))
#define FRIDA_IS_FILE_DESCRIPTOR_TABLE_PADDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FRIDA_TYPE_FILE_DESCRIPTOR_TABLE_PADDER))
#define FRIDA_IS_FILE_DESCRIPTOR_TABLE_PADDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FRIDA_TYPE_FILE_DESCRIPTOR_TABLE_PADDER))
#define FRIDA_FILE_DESCRIPTOR_TABLE_PADDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FRIDA_TYPE_FILE_DESCRIPTOR_TABLE_PADDER, FridaFileDescriptorTablePadderClass))

typedef struct _FridaFileDescriptorTablePadder FridaFileDescriptorTablePadder;
typedef struct _FridaFileDescriptorTablePadderClass FridaFileDescriptorTablePadderClass;

struct _FridaProcessInvaderIface {
	GTypeInterface parent_iface;
	FridaSpawnStartState (*query_current_spawn_state) (FridaProcessInvader* self);
	void (*get_memory_range) (FridaProcessInvader* self, GumMemoryRange* result);
	GumScriptBackend* (*get_script_backend) (FridaProcessInvader* self, FridaScriptRuntime runtime, GError** error);
	GumScriptBackend* (*get_active_script_backend) (FridaProcessInvader* self);
	void (*acquire_child_gating) (FridaProcessInvader* self, GError** error);
	void (*release_child_gating) (FridaProcessInvader* self);
	void (*join_portal) (FridaProcessInvader* self, const gchar* address, FridaPortalOptions* options, GCancellable* cancellable, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*join_portal_finish) (FridaProcessInvader* self, GAsyncResult* _res_, FridaPortalMembershipId* result, GError** error);
	void (*leave_portal) (FridaProcessInvader* self, FridaPortalMembershipId* membership_id, GCancellable* cancellable, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*leave_portal_finish) (FridaProcessInvader* self, GAsyncResult* _res_, GError** error);
};

struct _FridaBaseAgentSession {
	GObject parent_instance;
	FridaBaseAgentSessionPrivate * priv;
};

struct _FridaBaseAgentSessionClass {
	GObjectClass parent_class;
};

struct _FridaForkHandlerIface {
	GTypeInterface parent_iface;
	void (*prepare_to_fork) (FridaForkHandler* self);
	void (*recover_from_fork_in_parent) (FridaForkHandler* self);
	void (*recover_from_fork_in_child) (FridaForkHandler* self, const gchar* identifier);
	void (*prepare_to_specialize) (FridaForkHandler* self, const gchar* identifier);
	void (*recover_from_specialization) (FridaForkHandler* self, const gchar* identifier);
};

struct _FridaSpawnHandlerIface {
	GTypeInterface parent_iface;
	void (*prepare_to_exec) (FridaSpawnHandler* self, FridaHostChildInfo* info, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*prepare_to_exec_finish) (FridaSpawnHandler* self, GAsyncResult* _res_);
	void (*cancel_exec) (FridaSpawnHandler* self, guint pid, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*cancel_exec_finish) (FridaSpawnHandler* self, GAsyncResult* _res_);
	void (*acknowledge_spawn) (FridaSpawnHandler* self, FridaHostChildInfo* info, FridaSpawnStartState start_state, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*acknowledge_spawn_finish) (FridaSpawnHandler* self, GAsyncResult* _res_);
};

struct _FridaExitHandlerIface {
	GTypeInterface parent_iface;
	gboolean (*supports_async_exit) (FridaExitHandler* self);
	void (*prepare_to_exit) (FridaExitHandler* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*prepare_to_exit_finish) (FridaExitHandler* self, GAsyncResult* _res_);
	void (*prepare_to_exit_sync) (FridaExitHandler* self);
};

struct _FridaDirEnt64 {
	guint64 d_ino;
	gint64 d_off;
	guint16 d_reclen;
	guint8 d_type;
	gchar d_name[256];
};

struct _FridaDirListFilterIface {
	GTypeInterface parent_iface;
	gboolean (*matches_directory) (FridaDirListFilter* self, const gchar* path);
	gboolean (*matches_file) (FridaDirListFilter* self, const gchar* name);
};

void frida_run_atexit_handlers (void);
guint frida_get_process_id (void);
void* frida_get_current_pthread (void);
void frida_join_pthread (void* thread);
void frida_kill_process (guint pid);
VALA_EXTERN gchar* frida_get_executable_path (void);
VALA_EXTERN void frida_detect_own_range_and_path (GumMemoryRange* mapped_range,
                                      gchar** path,
                                      GumMemoryRange* result);
VALA_EXTERN GType frida_process_invader_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaProcessInvader, g_object_unref)
VALA_EXTERN FridaSpawnStartState frida_process_invader_query_current_spawn_state (FridaProcessInvader* self);
VALA_EXTERN void frida_process_invader_get_memory_range (FridaProcessInvader* self,
                                             GumMemoryRange* result);
VALA_EXTERN GumScriptBackend* frida_process_invader_get_script_backend (FridaProcessInvader* self,
                                                            FridaScriptRuntime runtime,
                                                            GError** error);
VALA_EXTERN GumScriptBackend* frida_process_invader_get_active_script_backend (FridaProcessInvader* self);
VALA_EXTERN void frida_process_invader_acquire_child_gating (FridaProcessInvader* self,
                                                 GError** error);
VALA_EXTERN void frida_process_invader_release_child_gating (FridaProcessInvader* self);
VALA_EXTERN void frida_process_invader_join_portal (FridaProcessInvader* self,
                                        const gchar* address,
                                        FridaPortalOptions* options,
                                        GCancellable* cancellable,
                                        GAsyncReadyCallback _callback_,
                                        gpointer _user_data_);
VALA_EXTERN void frida_process_invader_join_portal_finish (FridaProcessInvader* self,
                                               GAsyncResult* _res_,
                                               FridaPortalMembershipId* result,
                                               GError** error);
VALA_EXTERN void frida_process_invader_leave_portal (FridaProcessInvader* self,
                                         FridaPortalMembershipId* membership_id,
                                         GCancellable* cancellable,
                                         GAsyncReadyCallback _callback_,
                                         gpointer _user_data_);
VALA_EXTERN void frida_process_invader_leave_portal_finish (FridaProcessInvader* self,
                                                GAsyncResult* _res_,
                                                GError** error);
VALA_EXTERN GType frida_termination_reason_get_type (void) G_GNUC_CONST ;
VALA_EXTERN gchar* frida_termination_reason_to_nick (FridaTerminationReason self);
VALA_EXTERN GType frida_base_agent_session_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaBaseAgentSession, g_object_unref)
VALA_EXTERN void frida_base_agent_session_flush (FridaBaseAgentSession* self,
                                     GAsyncReadyCallback _callback_,
                                     gpointer _user_data_);
VALA_EXTERN void frida_base_agent_session_flush_finish (FridaBaseAgentSession* self,
                                            GAsyncResult* _res_);
VALA_EXTERN void frida_base_agent_session_prepare_for_termination (FridaBaseAgentSession* self,
                                                       FridaTerminationReason reason,
                                                       GAsyncReadyCallback _callback_,
                                                       gpointer _user_data_);
VALA_EXTERN void frida_base_agent_session_prepare_for_termination_finish (FridaBaseAgentSession* self,
                                                              GAsyncResult* _res_);
VALA_EXTERN void frida_base_agent_session_unprepare_for_termination (FridaBaseAgentSession* self);
VALA_EXTERN FridaBaseAgentSession* frida_base_agent_session_construct (GType object_type);
VALA_EXTERN FridaProcessInvader* frida_base_agent_session_get_invader (FridaBaseAgentSession* self);
VALA_EXTERN void frida_base_agent_session_get_id (FridaBaseAgentSession* self,
                                      FridaAgentSessionId * result);
VALA_EXTERN guint frida_base_agent_session_get_persist_timeout (FridaBaseAgentSession* self);
VALA_EXTERN FridaAgentMessageSink* frida_base_agent_session_get_message_sink (FridaBaseAgentSession* self);
VALA_EXTERN void frida_base_agent_session_set_message_sink (FridaBaseAgentSession* self,
                                                FridaAgentMessageSink* value);
VALA_EXTERN GMainContext* frida_base_agent_session_get_frida_context (FridaBaseAgentSession* self);
VALA_EXTERN GMainContext* frida_base_agent_session_get_dbus_context (FridaBaseAgentSession* self);
VALA_EXTERN GType frida_script_engine_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaScriptEngine, g_object_unref)
VALA_EXTERN FridaScriptEngine* frida_script_engine_new (FridaProcessInvader* invader);
VALA_EXTERN FridaScriptEngine* frida_script_engine_construct (GType object_type,
                                                  FridaProcessInvader* invader);
VALA_EXTERN void frida_script_engine_close (FridaScriptEngine* self,
                                GAsyncReadyCallback _callback_,
                                gpointer _user_data_);
VALA_EXTERN void frida_script_engine_close_finish (FridaScriptEngine* self,
                                       GAsyncResult* _res_);
VALA_EXTERN void frida_script_engine_flush (FridaScriptEngine* self,
                                GAsyncReadyCallback _callback_,
                                gpointer _user_data_);
VALA_EXTERN void frida_script_engine_flush_finish (FridaScriptEngine* self,
                                       GAsyncResult* _res_);
VALA_EXTERN void frida_script_engine_prepare_for_termination (FridaScriptEngine* self,
                                                  FridaTerminationReason reason,
                                                  GAsyncReadyCallback _callback_,
                                                  gpointer _user_data_);
VALA_EXTERN void frida_script_engine_prepare_for_termination_finish (FridaScriptEngine* self,
                                                         GAsyncResult* _res_);
VALA_EXTERN void frida_script_engine_unprepare_for_termination (FridaScriptEngine* self);
VALA_EXTERN void frida_script_engine_create_script (FridaScriptEngine* self,
                                        const gchar* source,
                                        GBytes* bytes,
                                        FridaScriptOptions* options,
                                        GAsyncReadyCallback _callback_,
                                        gpointer _user_data_);
VALA_EXTERN GType frida_script_engine_script_instance_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaScriptEngineScriptInstance, g_object_unref)
VALA_EXTERN FridaScriptEngineScriptInstance* frida_script_engine_create_script_finish (FridaScriptEngine* self,
                                                                           GAsyncResult* _res_,
                                                                           GError** error);
VALA_EXTERN void frida_script_engine_compile_script (FridaScriptEngine* self,
                                         const gchar* source,
                                         FridaScriptOptions* options,
                                         GAsyncReadyCallback _callback_,
                                         gpointer _user_data_);
VALA_EXTERN GBytes* frida_script_engine_compile_script_finish (FridaScriptEngine* self,
                                                   GAsyncResult* _res_,
                                                   GError** error);
VALA_EXTERN void frida_script_engine_snapshot_script (FridaScriptEngine* self,
                                          const gchar* embed_script,
                                          FridaSnapshotOptions* options,
                                          GAsyncReadyCallback _callback_,
                                          gpointer _user_data_);
VALA_EXTERN GBytes* frida_script_engine_snapshot_script_finish (FridaScriptEngine* self,
                                                    GAsyncResult* _res_,
                                                    GError** error);
VALA_EXTERN void frida_script_engine_destroy_script (FridaScriptEngine* self,
                                         FridaAgentScriptId* script_id,
                                         GAsyncReadyCallback _callback_,
                                         gpointer _user_data_);
VALA_EXTERN void frida_script_engine_destroy_script_finish (FridaScriptEngine* self,
                                                GAsyncResult* _res_,
                                                GError** error);
VALA_EXTERN void frida_script_engine_load_script (FridaScriptEngine* self,
                                      FridaAgentScriptId* script_id,
                                      GAsyncReadyCallback _callback_,
                                      gpointer _user_data_);
VALA_EXTERN void frida_script_engine_load_script_finish (FridaScriptEngine* self,
                                             GAsyncResult* _res_,
                                             GError** error);
VALA_EXTERN GumScript* frida_script_engine_eternalize_script (FridaScriptEngine* self,
                                                  FridaAgentScriptId* script_id,
                                                  GError** error);
VALA_EXTERN void frida_script_engine_post_to_script (FridaScriptEngine* self,
                                         FridaAgentScriptId* script_id,
                                         const gchar* json,
                                         GBytes* data,
                                         GError** error);
VALA_EXTERN void frida_script_engine_enable_debugger (FridaScriptEngine* self,
                                          FridaAgentScriptId* script_id,
                                          GError** error);
VALA_EXTERN void frida_script_engine_disable_debugger (FridaScriptEngine* self,
                                           FridaAgentScriptId* script_id,
                                           GError** error);
VALA_EXTERN void frida_script_engine_post_to_debugger (FridaScriptEngine* self,
                                           FridaAgentScriptId* script_id,
                                           const gchar* message,
                                           GError** error);
VALA_EXTERN FridaProcessInvader* frida_script_engine_get_invader (FridaScriptEngine* self);
VALA_EXTERN FridaScriptEngineScriptInstance* frida_script_engine_script_instance_new (FridaAgentScriptId* script_id,
                                                                          GumScript* script);
VALA_EXTERN FridaScriptEngineScriptInstance* frida_script_engine_script_instance_construct (GType object_type,
                                                                                FridaAgentScriptId* script_id,
                                                                                GumScript* script);
VALA_EXTERN void frida_script_engine_script_instance_close (FridaScriptEngineScriptInstance* self,
                                                GAsyncReadyCallback _callback_,
                                                gpointer _user_data_);
VALA_EXTERN void frida_script_engine_script_instance_close_finish (FridaScriptEngineScriptInstance* self,
                                                       GAsyncResult* _res_);
VALA_EXTERN void frida_script_engine_script_instance_flush (FridaScriptEngineScriptInstance* self,
                                                GAsyncReadyCallback _callback_,
                                                gpointer _user_data_);
VALA_EXTERN void frida_script_engine_script_instance_flush_finish (FridaScriptEngineScriptInstance* self,
                                                       GAsyncResult* _res_);
VALA_EXTERN void frida_script_engine_script_instance_load (FridaScriptEngineScriptInstance* self,
                                               GAsyncReadyCallback _callback_,
                                               gpointer _user_data_);
VALA_EXTERN void frida_script_engine_script_instance_load_finish (FridaScriptEngineScriptInstance* self,
                                                      GAsyncResult* _res_,
                                                      GError** error);
VALA_EXTERN GumScript* frida_script_engine_script_instance_eternalize (FridaScriptEngineScriptInstance* self,
                                                           GError** error);
VALA_EXTERN void frida_script_engine_script_instance_prepare_for_termination (FridaScriptEngineScriptInstance* self,
                                                                  FridaTerminationReason reason,
                                                                  GAsyncReadyCallback _callback_,
                                                                  gpointer _user_data_);
VALA_EXTERN void frida_script_engine_script_instance_prepare_for_termination_finish (FridaScriptEngineScriptInstance* self,
                                                                         GAsyncResult* _res_);
VALA_EXTERN void frida_script_engine_script_instance_unprepare_for_termination (FridaScriptEngineScriptInstance* self);
VALA_EXTERN void frida_script_engine_script_instance_post (FridaScriptEngineScriptInstance* self,
                                               const gchar* json,
                                               GBytes* data,
                                               GError** error);
VALA_EXTERN void frida_script_engine_script_instance_enable_debugger (FridaScriptEngineScriptInstance* self,
                                                          GError** error);
VALA_EXTERN void frida_script_engine_script_instance_disable_debugger (FridaScriptEngineScriptInstance* self);
VALA_EXTERN void frida_script_engine_script_instance_post_debug_message (FridaScriptEngineScriptInstance* self,
                                                             const gchar* message);
VALA_EXTERN void frida_script_engine_script_instance_get_script_id (FridaScriptEngineScriptInstance* self,
                                                        FridaAgentScriptId * result);
VALA_EXTERN GumScript* frida_script_engine_script_instance_get_script (FridaScriptEngineScriptInstance* self);
VALA_EXTERN void frida_script_engine_script_instance_set_script (FridaScriptEngineScriptInstance* self,
                                                     GumScript* value);
VALA_EXTERN GType frida_portal_client_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaPortalClient, g_object_unref)
VALA_EXTERN FridaPortalClient* frida_portal_client_new (FridaProcessInvader* invader,
                                            GSocketConnectable* connectable,
                                            const gchar* host,
                                            GTlsCertificate* certificate,
                                            const gchar* token,
                                            gchar** acl,
                                            gint acl_length1,
                                            FridaHostApplicationInfo* app_info);
VALA_EXTERN FridaPortalClient* frida_portal_client_construct (GType object_type,
                                                  FridaProcessInvader* invader,
                                                  GSocketConnectable* connectable,
                                                  const gchar* host,
                                                  GTlsCertificate* certificate,
                                                  const gchar* token,
                                                  gchar** acl,
                                                  gint acl_length1,
                                                  FridaHostApplicationInfo* app_info);
VALA_EXTERN void frida_portal_client_start (FridaPortalClient* self,
                                GCancellable* cancellable,
                                GAsyncReadyCallback _callback_,
                                gpointer _user_data_);
VALA_EXTERN void frida_portal_client_start_finish (FridaPortalClient* self,
                                       GAsyncResult* _res_,
                                       GError** error);
VALA_EXTERN void frida_portal_client_stop (FridaPortalClient* self,
                               GCancellable* cancellable,
                               GAsyncReadyCallback _callback_,
                               gpointer _user_data_);
VALA_EXTERN void frida_portal_client_stop_finish (FridaPortalClient* self,
                                      GAsyncResult* _res_,
                                      GError** error);
VALA_EXTERN FridaProcessInvader* frida_portal_client_get_invader (FridaPortalClient* self);
VALA_EXTERN GSocketConnectable* frida_portal_client_get_connectable (FridaPortalClient* self);
VALA_EXTERN const gchar* frida_portal_client_get_host (FridaPortalClient* self);
VALA_EXTERN GTlsCertificate* frida_portal_client_get_certificate (FridaPortalClient* self);
VALA_EXTERN const gchar* frida_portal_client_get_token (FridaPortalClient* self);
VALA_EXTERN gchar** frida_portal_client_get_acl (FridaPortalClient* self,
                                     gint* result_length1);
VALA_EXTERN void frida_portal_client_get_app_info (FridaPortalClient* self,
                                       FridaHostApplicationInfo * result);
VALA_EXTERN GType frida_fork_monitor_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaForkMonitor, g_object_unref)
VALA_EXTERN GType frida_fork_handler_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaForkHandler, g_object_unref)
VALA_EXTERN FridaForkMonitor* frida_fork_monitor_new (FridaForkHandler* handler);
VALA_EXTERN FridaForkMonitor* frida_fork_monitor_construct (GType object_type,
                                                FridaForkHandler* handler);
VALA_EXTERN void frida_fork_monitor_on_fork_enter (FridaForkMonitor* self,
                                       GumInvocationContext* context);
VALA_EXTERN void frida_fork_monitor_on_fork_leave (FridaForkMonitor* self,
                                       GumInvocationContext* context);
VALA_EXTERN void frida_fork_monitor_on_set_argv0_enter (FridaForkMonitor* self,
                                            GumInvocationContext* context);
VALA_EXTERN void frida_fork_monitor_on_set_argv0_leave (FridaForkMonitor* self,
                                            GumInvocationContext* context);
VALA_EXTERN void frida_fork_monitor_on_set_ctx_enter (FridaForkMonitor* self,
                                          GumInvocationContext* context);
VALA_EXTERN void frida_fork_monitor_on_set_ctx_leave (FridaForkMonitor* self,
                                          GumInvocationContext* context);
VALA_EXTERN FridaForkHandler* frida_fork_monitor_get_handler (FridaForkMonitor* self);
VALA_EXTERN void frida_fork_handler_prepare_to_fork (FridaForkHandler* self);
VALA_EXTERN void frida_fork_handler_recover_from_fork_in_parent (FridaForkHandler* self);
VALA_EXTERN void frida_fork_handler_recover_from_fork_in_child (FridaForkHandler* self,
                                                    const gchar* identifier);
VALA_EXTERN void frida_fork_handler_prepare_to_specialize (FridaForkHandler* self,
                                               const gchar* identifier);
VALA_EXTERN void frida_fork_handler_recover_from_specialization (FridaForkHandler* self,
                                                     const gchar* identifier);
VALA_EXTERN GType frida_spawn_monitor_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaSpawnMonitor, g_object_unref)
VALA_EXTERN GType frida_spawn_monitor_operation_status_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType frida_spawn_handler_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaSpawnHandler, g_object_unref)
VALA_EXTERN FridaSpawnMonitor* frida_spawn_monitor_new (FridaSpawnHandler* handler,
                                            GMainContext* main_context);
VALA_EXTERN FridaSpawnMonitor* frida_spawn_monitor_construct (GType object_type,
                                                  FridaSpawnHandler* handler,
                                                  GMainContext* main_context);
VALA_EXTERN FridaSpawnHandler* frida_spawn_monitor_get_handler (FridaSpawnMonitor* self);
VALA_EXTERN GMainContext* frida_spawn_monitor_get_main_context (FridaSpawnMonitor* self);
VALA_EXTERN void frida_spawn_handler_prepare_to_exec (FridaSpawnHandler* self,
                                          FridaHostChildInfo* info,
                                          GAsyncReadyCallback _callback_,
                                          gpointer _user_data_);
VALA_EXTERN void frida_spawn_handler_prepare_to_exec_finish (FridaSpawnHandler* self,
                                                 GAsyncResult* _res_);
VALA_EXTERN void frida_spawn_handler_cancel_exec (FridaSpawnHandler* self,
                                      guint pid,
                                      GAsyncReadyCallback _callback_,
                                      gpointer _user_data_);
VALA_EXTERN void frida_spawn_handler_cancel_exec_finish (FridaSpawnHandler* self,
                                             GAsyncResult* _res_);
VALA_EXTERN void frida_spawn_handler_acknowledge_spawn (FridaSpawnHandler* self,
                                            FridaHostChildInfo* info,
                                            FridaSpawnStartState start_state,
                                            GAsyncReadyCallback _callback_,
                                            gpointer _user_data_);
VALA_EXTERN void frida_spawn_handler_acknowledge_spawn_finish (FridaSpawnHandler* self,
                                                   GAsyncResult* _res_);
VALA_EXTERN GType frida_thread_suspend_monitor_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaThreadSuspendMonitor, g_object_unref)
VALA_EXTERN FridaThreadSuspendMonitor* frida_thread_suspend_monitor_new (FridaProcessInvader* invader);
VALA_EXTERN FridaThreadSuspendMonitor* frida_thread_suspend_monitor_construct (GType object_type,
                                                                   FridaProcessInvader* invader);
VALA_EXTERN FridaProcessInvader* frida_thread_suspend_monitor_get_invader (FridaThreadSuspendMonitor* self);
VALA_EXTERN GType frida_unwind_sitter_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaUnwindSitter, g_object_unref)
VALA_EXTERN FridaUnwindSitter* frida_unwind_sitter_new (FridaProcessInvader* invader);
VALA_EXTERN FridaUnwindSitter* frida_unwind_sitter_construct (GType object_type,
                                                  FridaProcessInvader* invader);
VALA_EXTERN FridaProcessInvader* frida_unwind_sitter_get_invader (FridaUnwindSitter* self);
VALA_EXTERN GType frida_exit_monitor_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaExitMonitor, g_object_unref)
VALA_EXTERN GType frida_exit_handler_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaExitHandler, g_object_unref)
VALA_EXTERN FridaExitMonitor* frida_exit_monitor_new (FridaExitHandler* handler,
                                          GMainContext* main_context);
VALA_EXTERN FridaExitMonitor* frida_exit_monitor_construct (GType object_type,
                                                FridaExitHandler* handler,
                                                GMainContext* main_context);
VALA_EXTERN FridaExitHandler* frida_exit_monitor_get_handler (FridaExitMonitor* self);
VALA_EXTERN GMainContext* frida_exit_monitor_get_main_context (FridaExitMonitor* self);
VALA_EXTERN gboolean frida_exit_handler_supports_async_exit (FridaExitHandler* self);
VALA_EXTERN void frida_exit_handler_prepare_to_exit (FridaExitHandler* self,
                                         GAsyncReadyCallback _callback_,
                                         gpointer _user_data_);
VALA_EXTERN void frida_exit_handler_prepare_to_exit_finish (FridaExitHandler* self,
                                                GAsyncResult* _res_);
VALA_EXTERN void frida_exit_handler_prepare_to_exit_sync (FridaExitHandler* self);
VALA_EXTERN gpointer frida_thread_ignore_scope_ref (gpointer instance);
VALA_EXTERN void frida_thread_ignore_scope_unref (gpointer instance);
VALA_EXTERN GParamSpec* frida_param_spec_thread_ignore_scope (const gchar* name,
                                                  const gchar* nick,
                                                  const gchar* blurb,
                                                  GType object_type,
                                                  GParamFlags flags);
VALA_EXTERN void frida_value_set_thread_ignore_scope (GValue* value,
                                          gpointer v_object);
VALA_EXTERN void frida_value_take_thread_ignore_scope (GValue* value,
                                           gpointer v_object);
VALA_EXTERN gpointer frida_value_get_thread_ignore_scope (const GValue* value);
VALA_EXTERN GType frida_thread_ignore_scope_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaThreadIgnoreScope, frida_thread_ignore_scope_unref)
VALA_EXTERN GType frida_thread_ignore_scope_kind_get_type (void) G_GNUC_CONST ;
VALA_EXTERN FridaThreadIgnoreScope* frida_thread_ignore_scope_new (FridaThreadIgnoreScopeKind kind);
VALA_EXTERN FridaThreadIgnoreScope* frida_thread_ignore_scope_construct (GType object_type,
                                                             FridaThreadIgnoreScopeKind kind);
VALA_EXTERN GType frida_thread_count_cloaker_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaThreadCountCloaker, g_object_unref)
VALA_EXTERN FridaThreadCountCloaker* frida_thread_count_cloaker_new (void);
VALA_EXTERN FridaThreadCountCloaker* frida_thread_count_cloaker_construct (GType object_type);
VALA_EXTERN GType frida_thread_list_cloaker_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaThreadListCloaker, g_object_unref)
VALA_EXTERN FridaThreadListCloaker* frida_thread_list_cloaker_new (void);
VALA_EXTERN FridaThreadListCloaker* frida_thread_list_cloaker_construct (GType object_type);
VALA_EXTERN GType frida_fd_list_cloaker_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaFDListCloaker, g_object_unref)
VALA_EXTERN FridaFDListCloaker* frida_fd_list_cloaker_new (void);
VALA_EXTERN FridaFDListCloaker* frida_fd_list_cloaker_construct (GType object_type);
VALA_EXTERN GType frida_dir_list_cloaker_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaDirListCloaker, g_object_unref)
VALA_EXTERN void frida_dir_ent64_free (FridaDirEnt64 * self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaDirEnt64, frida_dir_ent64_free)
VALA_EXTERN FridaDirEnt64* frida_dir_ent64_new (void);
VALA_EXTERN GType frida_dir_list_filter_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaDirListFilter, g_object_unref)
VALA_EXTERN gboolean frida_dir_list_filter_matches_directory (FridaDirListFilter* self,
                                                  const gchar* path);
VALA_EXTERN gboolean frida_dir_list_filter_matches_file (FridaDirListFilter* self,
                                             const gchar* name);
VALA_EXTERN GType frida_file_descriptor_guard_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaFileDescriptorGuard, g_object_unref)
VALA_EXTERN FridaFileDescriptorGuard* frida_file_descriptor_guard_new (GumMemoryRange* agent_range);
VALA_EXTERN FridaFileDescriptorGuard* frida_file_descriptor_guard_construct (GType object_type,
                                                                 GumMemoryRange* agent_range);
VALA_EXTERN void frida_file_descriptor_guard_get_agent_range (FridaFileDescriptorGuard* self,
                                                  GumMemoryRange * result);
VALA_EXTERN gpointer frida_file_descriptor_table_padder_ref (gpointer instance);
VALA_EXTERN void frida_file_descriptor_table_padder_unref (gpointer instance);
VALA_EXTERN GParamSpec* frida_param_spec_file_descriptor_table_padder (const gchar* name,
                                                           const gchar* nick,
                                                           const gchar* blurb,
                                                           GType object_type,
                                                           GParamFlags flags);
VALA_EXTERN void frida_value_set_file_descriptor_table_padder (GValue* value,
                                                   gpointer v_object);
VALA_EXTERN void frida_value_take_file_descriptor_table_padder (GValue* value,
                                                    gpointer v_object);
VALA_EXTERN gpointer frida_value_get_file_descriptor_table_padder (const GValue* value);
VALA_EXTERN GType frida_file_descriptor_table_padder_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FridaFileDescriptorTablePadder, frida_file_descriptor_table_padder_unref)
VALA_EXTERN FridaFileDescriptorTablePadder* frida_file_descriptor_table_padder_obtain (void);
VALA_EXTERN void frida_file_descriptor_table_padder_move_descriptor_if_needed (FridaFileDescriptorTablePadder* self,
                                                                   gint* fd);

G_END_DECLS

#endif
