/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "E2SM-gNB-X2-IEs"
 * 	found in "Spec/e2ap-v031ex.asn"
 * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -gen-PER`
 */

#ifndef	_E2SM_gNB_X2_eventTriggerDefinition_H_
#define	_E2SM_gNB_X2_eventTriggerDefinition_H_


#include <asn_application.h>

/* Including external dependencies */
#include "Interface-ID.h"
#include "InterfaceDirection.h"
#include "InterfaceMessageType.h"
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct InterfaceProtocolIE_Item;

/* E2SM-gNB-X2-eventTriggerDefinition */
typedef struct E2SM_gNB_X2_eventTriggerDefinition {
	Interface_ID_t	 interface_ID;
	InterfaceDirection_t	 interfaceDirection;
	InterfaceMessageType_t	 interfaceMessageType;
	struct E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List {
		A_SEQUENCE_OF(struct InterfaceProtocolIE_Item) list;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} *interfaceProtocolIE_List;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E2SM_gNB_X2_eventTriggerDefinition_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_eventTriggerDefinition;

#ifdef __cplusplus
}
#endif

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