use rasn::prelude::*;
use crate::types::{Imsi, IsdnAddressString};
pub type Category = OctetString;
pub type BearerServiceList = Vec<OctetString>;
pub type TeleserviceList = Vec<OctetString>;
#[derive(Debug, Clone, Copy, PartialEq, Eq, AsnType, Decode, Encode)]
#[rasn(enumerated)]
pub enum SubscriberStatus {
ServiceGranted = 0,
OperatorDeterminedBarring = 1,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, AsnType, Decode, Encode)]
#[rasn(enumerated)]
pub enum NetworkAccessMode {
PacketAndCircuit = 0,
OnlyCircuit = 1,
OnlyPacket = 2,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct InsertSubscriberDataArg {
#[rasn(tag(context, 0))]
pub imsi: Option<Imsi>,
#[rasn(tag(context, 1))]
pub msisdn: Option<IsdnAddressString>,
#[rasn(tag(context, 2))]
pub category: Option<Category>,
#[rasn(tag(context, 3))]
pub subscriber_status: Option<SubscriberStatus>,
#[rasn(tag(context, 4))]
pub bearer_service_list: Option<BearerServiceList>,
#[rasn(tag(context, 6))]
pub teleservice_list: Option<TeleserviceList>,
#[rasn(tag(context, 8))]
pub odb_data: Option<OctetString>,
#[rasn(tag(context, 10))]
pub roaming_restricted_in_sgsn_due_to_unsupported_feature: Option<()>,
#[rasn(tag(context, 14))]
pub network_access_mode: Option<NetworkAccessMode>,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct InsertSubscriberDataRes {
#[rasn(tag(context, 1))]
pub teleservice_list: Option<TeleserviceList>,
#[rasn(tag(context, 2))]
pub bearer_service_list: Option<BearerServiceList>,
#[rasn(tag(context, 4))]
pub odb_general_data: Option<OctetString>,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct DeleteSubscriberDataArg {
#[rasn(tag(context, 0))]
pub imsi: Imsi,
#[rasn(tag(context, 1))]
pub basic_service_list: Option<Vec<OctetString>>,
#[rasn(tag(context, 2))]
pub ss_list: Option<Vec<OctetString>>,
#[rasn(tag(context, 4))]
pub roaming_restricted_in_sgsn_due_to_unsupported_feature: Option<()>,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct DeleteSubscriberDataRes {}
pub mod op_codes {
pub const INSERT_SUBSCRIBER_DATA: i64 = 7;
pub const DELETE_SUBSCRIBER_DATA: i64 = 8;
}