use rasn::prelude::*;
use crate::types::{Imsi, IsdnAddressString, Lmsi};
#[derive(Debug, Clone, Copy, PartialEq, Eq, AsnType, Decode, Encode)]
#[rasn(enumerated)]
pub enum InterrogationType {
BasicCall = 0,
Forwarding = 1,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct SendRoutingInfoArg {
pub msisdn: IsdnAddressString,
#[rasn(tag(context, 0))]
pub cug_check_info: Option<OctetString>,
#[rasn(tag(context, 1))]
pub number_of_forwarding: Option<Integer>,
#[rasn(tag(context, 3))]
pub interrogation_type: Option<InterrogationType>,
#[rasn(tag(context, 6))]
pub gmsc_or_gmscs_address: Option<IsdnAddressString>,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct SendRoutingInfoRes {
pub imsi: Imsi,
#[rasn(tag(context, 0))]
pub roaming_number: Option<IsdnAddressString>,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct ProvideRoamingNumberArg {
pub imsi: Imsi,
pub msc_number: IsdnAddressString,
#[rasn(tag(context, 0))]
pub msisdn: Option<IsdnAddressString>,
#[rasn(tag(context, 1))]
pub lmsi: Option<Lmsi>,
#[rasn(tag(context, 2))]
pub gsm_bearer_capability: Option<OctetString>,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct ProvideRoamingNumberRes {
pub roaming_number: IsdnAddressString,
}
pub mod op_codes {
pub const SEND_ROUTING_INFO: i64 = 22;
pub const PROVIDE_ROAMING_NUMBER: i64 = 4;
}