/******************************************************************************
* Copyright (c) 2000-2019  Ericsson AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
*   Gabor Szalai - initial implementation and initial documentation
******************************************************************************/
//
//  File:               TS29518_Namf_MT.ttcn
//  Description:	      Type definitions for 3GPP TS29518
/////////////////////////////////////////////// 
module TS29518_Namf_MT {

  import from TS29518_Namf_EventExposure all
  import from TS29571_CommonData all

  external function f_enc_UeContextInfo(in UeContextInfo pdu) return octetstring 
  with { extension "prototype(convert) encode(JSON)" }

  external function f_dec_UeContextInfo(in octetstring stream, out UeContextInfo pdu) return integer 
  with { extension "prototype(backtrack) decode(JSON)" }

  external function f_enc_EnableUeReachabilityReqData(in EnableUeReachabilityReqData pdu) return octetstring 
  with { extension "prototype(convert) encode(JSON)" }

  external function f_dec_EnableUeReachabilityReqData(in octetstring stream, out EnableUeReachabilityReqData pdu) return integer 
  with { extension "prototype(backtrack) decode(JSON)" }

  external function f_enc_EnableUeReachabilityRspData(in EnableUeReachabilityRspData pdu) return octetstring 
  with { extension "prototype(convert) encode(JSON)" }

  external function f_dec_EnableUeReachabilityRspData(in octetstring stream, out EnableUeReachabilityRspData pdu) return integer 
  with { extension "prototype(backtrack) decode(JSON)" }


  type set EnableUeReachabilityReqData {
    TS29518_Namf_EventExposure.UeReachability    reachability,
    TS29571_CommonData.SupportedFeatures    supportedFeatures optional
  }

  type set EnableUeReachabilityRspData {
    TS29518_Namf_EventExposure.UeReachability    reachability,
    TS29571_CommonData.SupportedFeatures    supportedFeatures optional
  }

  type set UeContextInfo {
    boolean supportVoPS optional,
    TS29571_CommonData.DateTime    lastActTime optional,
    TS29571_CommonData.RatType    ratType optional,
    TS29571_CommonData.SupportedFeatures    supportedFeatures optional
  }

  type enumerated UeContextInfoClass_enum { TADS}

  type union UeContextInfoClass {
    UeContextInfoClass_enum  enum_val,
    charstring           other_val
  } with {
    variant "JSON: as value"
  }






} with {
  encode "JSON"
}
