#ifndef LIP_OPCUA_SERVER_TREE_REFTYPES_H
#define LIP_OPCUA_SERVER_TREE_REFTYPES_H

#include "lip/app/opcua/server/tree/lip_opcua_tree_item.h"
#include "lip/app/opcua/types/lip_opcua_nodeid.h"

struct st_lip_opcua_session_ctx;

extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_base;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_non_hierarchical;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_hierarchical;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_child;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_aggregates;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_organizes;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_component;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_ordered_component;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_property;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_subtype;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_modelling_rule;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_type_definition;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_encoding;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_event_source;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_notifier;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_generates_event;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_always_generates_event;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_arg_descr;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_opt_in_arg_descr;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_interface;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_addin;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_is_deprecated;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_struct_component;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_associated_with;
extern const t_lip_opcua_tree_item g_lip_opcua_tree_std_item_reftype_has_key_value_descr;

t_lip_opcua_err lip_opcua_server_tree_get_reftype(struct st_lip_opcua_session_ctx *session, const t_lip_opcua_nodeid *nodeid, const t_lip_opcua_tree_item **item);

#endif // LIP_OPCUA_SERVER_TREE_REFTYPES_H
