/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "E2SM-RC-IEs"
 * 	found in "e2sm_rc.asn"
 * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example`
 */

#ifndef	_EventTrigger_UE_Info_H_
#define	_EventTrigger_UE_Info_H_


#include <asn_application.h>

/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct EventTrigger_UE_Info_Item;

/* EventTrigger-UE-Info */
typedef struct EventTrigger_UE_Info {
	struct EventTrigger_UE_Info__ueInfo_List {
		A_SEQUENCE_OF(struct EventTrigger_UE_Info_Item) list;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} ueInfo_List;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} EventTrigger_UE_Info_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_EventTrigger_UE_Info;
extern asn_SEQUENCE_specifics_t asn_SPC_EventTrigger_UE_Info_specs_1;
extern asn_TYPE_member_t asn_MBR_EventTrigger_UE_Info_1[1];

#ifdef __cplusplus
}
#endif

#endif	/* _EventTrigger_UE_Info_H_ */
#include <asn_internal.h>
