// This file is generated by rust-protobuf 3.3.0. Do not edit
// .proto file is parsed by protoc 3.19.6
// @generated

// https://github.com/rust-lang/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]

#![allow(unused_attributes)]
#![cfg_attr(rustfmt, rustfmt::skip)]

#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unused_results)]
#![allow(unused_mut)]

//! Generated file from `messages-stellar.proto`

/// Generated files are compatible only with the same version
/// of protobuf runtime.
const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_3_0;

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarAsset)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarAsset {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarAsset.type)
    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<StellarAssetType>>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarAsset.code)
    pub code: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarAsset.issuer)
    pub issuer: ::std::option::Option<::std::string::String>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarAsset.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarAsset {
    fn default() -> &'a StellarAsset {
        <StellarAsset as ::protobuf::Message>::default_instance()
    }
}

impl StellarAsset {
    pub fn new() -> StellarAsset {
        ::std::default::Default::default()
    }

    // required .hw.trezor.messages.stellar.StellarAssetType type = 1;

    pub fn type_(&self) -> StellarAssetType {
        match self.type_ {
            Some(e) => e.enum_value_or(StellarAssetType::NATIVE),
            None => StellarAssetType::NATIVE,
        }
    }

    pub fn clear_type_(&mut self) {
        self.type_ = ::std::option::Option::None;
    }

    pub fn has_type(&self) -> bool {
        self.type_.is_some()
    }

    // Param is passed by value, moved
    pub fn set_type(&mut self, v: StellarAssetType) {
        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
    }

    // optional string code = 2;

    pub fn code(&self) -> &str {
        match self.code.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_code(&mut self) {
        self.code = ::std::option::Option::None;
    }

    pub fn has_code(&self) -> bool {
        self.code.is_some()
    }

    // Param is passed by value, moved
    pub fn set_code(&mut self, v: ::std::string::String) {
        self.code = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_code(&mut self) -> &mut ::std::string::String {
        if self.code.is_none() {
            self.code = ::std::option::Option::Some(::std::string::String::new());
        }
        self.code.as_mut().unwrap()
    }

    // Take field
    pub fn take_code(&mut self) -> ::std::string::String {
        self.code.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional string issuer = 3;

    pub fn issuer(&self) -> &str {
        match self.issuer.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_issuer(&mut self) {
        self.issuer = ::std::option::Option::None;
    }

    pub fn has_issuer(&self) -> bool {
        self.issuer.is_some()
    }

    // Param is passed by value, moved
    pub fn set_issuer(&mut self, v: ::std::string::String) {
        self.issuer = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_issuer(&mut self) -> &mut ::std::string::String {
        if self.issuer.is_none() {
            self.issuer = ::std::option::Option::Some(::std::string::String::new());
        }
        self.issuer.as_mut().unwrap()
    }

    // Take field
    pub fn take_issuer(&mut self) -> ::std::string::String {
        self.issuer.take().unwrap_or_else(|| ::std::string::String::new())
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(3);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "type",
            |m: &StellarAsset| { &m.type_ },
            |m: &mut StellarAsset| { &mut m.type_ },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "code",
            |m: &StellarAsset| { &m.code },
            |m: &mut StellarAsset| { &mut m.code },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "issuer",
            |m: &StellarAsset| { &m.issuer },
            |m: &mut StellarAsset| { &mut m.issuer },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarAsset>(
            "StellarAsset",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarAsset {
    const NAME: &'static str = "StellarAsset";

    fn is_initialized(&self) -> bool {
        if self.type_.is_none() {
            return false;
        }
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                8 => {
                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
                },
                18 => {
                    self.code = ::std::option::Option::Some(is.read_string()?);
                },
                26 => {
                    self.issuer = ::std::option::Option::Some(is.read_string()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.type_ {
            my_size += ::protobuf::rt::int32_size(1, v.value());
        }
        if let Some(v) = self.code.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        if let Some(v) = self.issuer.as_ref() {
            my_size += ::protobuf::rt::string_size(3, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.type_ {
            os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
        }
        if let Some(v) = self.code.as_ref() {
            os.write_string(2, v)?;
        }
        if let Some(v) = self.issuer.as_ref() {
            os.write_string(3, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarAsset {
        StellarAsset::new()
    }

    fn clear(&mut self) {
        self.type_ = ::std::option::Option::None;
        self.code = ::std::option::Option::None;
        self.issuer = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarAsset {
        static instance: StellarAsset = StellarAsset {
            type_: ::std::option::Option::None,
            code: ::std::option::Option::None,
            issuer: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarAsset {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarAsset").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarAsset {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarAsset {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarGetAddress)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarGetAddress {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarGetAddress.address_n)
    pub address_n: ::std::vec::Vec<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarGetAddress.show_display)
    pub show_display: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarGetAddress.chunkify)
    pub chunkify: ::std::option::Option<bool>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarGetAddress.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarGetAddress {
    fn default() -> &'a StellarGetAddress {
        <StellarGetAddress as ::protobuf::Message>::default_instance()
    }
}

impl StellarGetAddress {
    pub fn new() -> StellarGetAddress {
        ::std::default::Default::default()
    }

    // optional bool show_display = 2;

    pub fn show_display(&self) -> bool {
        self.show_display.unwrap_or(false)
    }

    pub fn clear_show_display(&mut self) {
        self.show_display = ::std::option::Option::None;
    }

    pub fn has_show_display(&self) -> bool {
        self.show_display.is_some()
    }

    // Param is passed by value, moved
    pub fn set_show_display(&mut self, v: bool) {
        self.show_display = ::std::option::Option::Some(v);
    }

    // optional bool chunkify = 3;

    pub fn chunkify(&self) -> bool {
        self.chunkify.unwrap_or(false)
    }

    pub fn clear_chunkify(&mut self) {
        self.chunkify = ::std::option::Option::None;
    }

    pub fn has_chunkify(&self) -> bool {
        self.chunkify.is_some()
    }

    // Param is passed by value, moved
    pub fn set_chunkify(&mut self, v: bool) {
        self.chunkify = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(3);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "address_n",
            |m: &StellarGetAddress| { &m.address_n },
            |m: &mut StellarGetAddress| { &mut m.address_n },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "show_display",
            |m: &StellarGetAddress| { &m.show_display },
            |m: &mut StellarGetAddress| { &mut m.show_display },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "chunkify",
            |m: &StellarGetAddress| { &m.chunkify },
            |m: &mut StellarGetAddress| { &mut m.chunkify },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarGetAddress>(
            "StellarGetAddress",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarGetAddress {
    const NAME: &'static str = "StellarGetAddress";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    is.read_repeated_packed_uint32_into(&mut self.address_n)?;
                },
                8 => {
                    self.address_n.push(is.read_uint32()?);
                },
                16 => {
                    self.show_display = ::std::option::Option::Some(is.read_bool()?);
                },
                24 => {
                    self.chunkify = ::std::option::Option::Some(is.read_bool()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        for value in &self.address_n {
            my_size += ::protobuf::rt::uint32_size(1, *value);
        };
        if let Some(v) = self.show_display {
            my_size += 1 + 1;
        }
        if let Some(v) = self.chunkify {
            my_size += 1 + 1;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        for v in &self.address_n {
            os.write_uint32(1, *v)?;
        };
        if let Some(v) = self.show_display {
            os.write_bool(2, v)?;
        }
        if let Some(v) = self.chunkify {
            os.write_bool(3, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarGetAddress {
        StellarGetAddress::new()
    }

    fn clear(&mut self) {
        self.address_n.clear();
        self.show_display = ::std::option::Option::None;
        self.chunkify = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarGetAddress {
        static instance: StellarGetAddress = StellarGetAddress {
            address_n: ::std::vec::Vec::new(),
            show_display: ::std::option::Option::None,
            chunkify: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarGetAddress {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarGetAddress").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarGetAddress {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarGetAddress {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarAddress)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarAddress {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarAddress.address)
    pub address: ::std::option::Option<::std::string::String>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarAddress.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarAddress {
    fn default() -> &'a StellarAddress {
        <StellarAddress as ::protobuf::Message>::default_instance()
    }
}

impl StellarAddress {
    pub fn new() -> StellarAddress {
        ::std::default::Default::default()
    }

    // required string address = 1;

    pub fn address(&self) -> &str {
        match self.address.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_address(&mut self) {
        self.address = ::std::option::Option::None;
    }

    pub fn has_address(&self) -> bool {
        self.address.is_some()
    }

    // Param is passed by value, moved
    pub fn set_address(&mut self, v: ::std::string::String) {
        self.address = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_address(&mut self) -> &mut ::std::string::String {
        if self.address.is_none() {
            self.address = ::std::option::Option::Some(::std::string::String::new());
        }
        self.address.as_mut().unwrap()
    }

    // Take field
    pub fn take_address(&mut self) -> ::std::string::String {
        self.address.take().unwrap_or_else(|| ::std::string::String::new())
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(1);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "address",
            |m: &StellarAddress| { &m.address },
            |m: &mut StellarAddress| { &mut m.address },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarAddress>(
            "StellarAddress",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarAddress {
    const NAME: &'static str = "StellarAddress";

    fn is_initialized(&self) -> bool {
        if self.address.is_none() {
            return false;
        }
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.address = ::std::option::Option::Some(is.read_string()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.address.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.address.as_ref() {
            os.write_string(1, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarAddress {
        StellarAddress::new()
    }

    fn clear(&mut self) {
        self.address = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarAddress {
        static instance: StellarAddress = StellarAddress {
            address: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarAddress {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarAddress").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarAddress {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarAddress {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarSignTx)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarSignTx {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.address_n)
    pub address_n: ::std::vec::Vec<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.network_passphrase)
    pub network_passphrase: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.fee)
    pub fee: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.sequence_number)
    pub sequence_number: ::std::option::Option<u64>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.timebounds_start)
    pub timebounds_start: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.timebounds_end)
    pub timebounds_end: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.memo_type)
    pub memo_type: ::std::option::Option<::protobuf::EnumOrUnknown<stellar_sign_tx::StellarMemoType>>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.memo_text)
    pub memo_text: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.memo_id)
    pub memo_id: ::std::option::Option<u64>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.memo_hash)
    pub memo_hash: ::std::option::Option<::std::vec::Vec<u8>>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignTx.num_operations)
    pub num_operations: ::std::option::Option<u32>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarSignTx.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarSignTx {
    fn default() -> &'a StellarSignTx {
        <StellarSignTx as ::protobuf::Message>::default_instance()
    }
}

impl StellarSignTx {
    pub fn new() -> StellarSignTx {
        ::std::default::Default::default()
    }

    // required string network_passphrase = 3;

    pub fn network_passphrase(&self) -> &str {
        match self.network_passphrase.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_network_passphrase(&mut self) {
        self.network_passphrase = ::std::option::Option::None;
    }

    pub fn has_network_passphrase(&self) -> bool {
        self.network_passphrase.is_some()
    }

    // Param is passed by value, moved
    pub fn set_network_passphrase(&mut self, v: ::std::string::String) {
        self.network_passphrase = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_network_passphrase(&mut self) -> &mut ::std::string::String {
        if self.network_passphrase.is_none() {
            self.network_passphrase = ::std::option::Option::Some(::std::string::String::new());
        }
        self.network_passphrase.as_mut().unwrap()
    }

    // Take field
    pub fn take_network_passphrase(&mut self) -> ::std::string::String {
        self.network_passphrase.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required string source_account = 4;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required uint32 fee = 5;

    pub fn fee(&self) -> u32 {
        self.fee.unwrap_or(0)
    }

    pub fn clear_fee(&mut self) {
        self.fee = ::std::option::Option::None;
    }

    pub fn has_fee(&self) -> bool {
        self.fee.is_some()
    }

    // Param is passed by value, moved
    pub fn set_fee(&mut self, v: u32) {
        self.fee = ::std::option::Option::Some(v);
    }

    // required uint64 sequence_number = 6;

    pub fn sequence_number(&self) -> u64 {
        self.sequence_number.unwrap_or(0)
    }

    pub fn clear_sequence_number(&mut self) {
        self.sequence_number = ::std::option::Option::None;
    }

    pub fn has_sequence_number(&self) -> bool {
        self.sequence_number.is_some()
    }

    // Param is passed by value, moved
    pub fn set_sequence_number(&mut self, v: u64) {
        self.sequence_number = ::std::option::Option::Some(v);
    }

    // required uint32 timebounds_start = 8;

    pub fn timebounds_start(&self) -> u32 {
        self.timebounds_start.unwrap_or(0)
    }

    pub fn clear_timebounds_start(&mut self) {
        self.timebounds_start = ::std::option::Option::None;
    }

    pub fn has_timebounds_start(&self) -> bool {
        self.timebounds_start.is_some()
    }

    // Param is passed by value, moved
    pub fn set_timebounds_start(&mut self, v: u32) {
        self.timebounds_start = ::std::option::Option::Some(v);
    }

    // required uint32 timebounds_end = 9;

    pub fn timebounds_end(&self) -> u32 {
        self.timebounds_end.unwrap_or(0)
    }

    pub fn clear_timebounds_end(&mut self) {
        self.timebounds_end = ::std::option::Option::None;
    }

    pub fn has_timebounds_end(&self) -> bool {
        self.timebounds_end.is_some()
    }

    // Param is passed by value, moved
    pub fn set_timebounds_end(&mut self, v: u32) {
        self.timebounds_end = ::std::option::Option::Some(v);
    }

    // required .hw.trezor.messages.stellar.StellarSignTx.StellarMemoType memo_type = 10;

    pub fn memo_type(&self) -> stellar_sign_tx::StellarMemoType {
        match self.memo_type {
            Some(e) => e.enum_value_or(stellar_sign_tx::StellarMemoType::NONE),
            None => stellar_sign_tx::StellarMemoType::NONE,
        }
    }

    pub fn clear_memo_type(&mut self) {
        self.memo_type = ::std::option::Option::None;
    }

    pub fn has_memo_type(&self) -> bool {
        self.memo_type.is_some()
    }

    // Param is passed by value, moved
    pub fn set_memo_type(&mut self, v: stellar_sign_tx::StellarMemoType) {
        self.memo_type = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
    }

    // optional string memo_text = 11;

    pub fn memo_text(&self) -> &str {
        match self.memo_text.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_memo_text(&mut self) {
        self.memo_text = ::std::option::Option::None;
    }

    pub fn has_memo_text(&self) -> bool {
        self.memo_text.is_some()
    }

    // Param is passed by value, moved
    pub fn set_memo_text(&mut self, v: ::std::string::String) {
        self.memo_text = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_memo_text(&mut self) -> &mut ::std::string::String {
        if self.memo_text.is_none() {
            self.memo_text = ::std::option::Option::Some(::std::string::String::new());
        }
        self.memo_text.as_mut().unwrap()
    }

    // Take field
    pub fn take_memo_text(&mut self) -> ::std::string::String {
        self.memo_text.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional uint64 memo_id = 12;

    pub fn memo_id(&self) -> u64 {
        self.memo_id.unwrap_or(0)
    }

    pub fn clear_memo_id(&mut self) {
        self.memo_id = ::std::option::Option::None;
    }

    pub fn has_memo_id(&self) -> bool {
        self.memo_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_memo_id(&mut self, v: u64) {
        self.memo_id = ::std::option::Option::Some(v);
    }

    // optional bytes memo_hash = 13;

    pub fn memo_hash(&self) -> &[u8] {
        match self.memo_hash.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_memo_hash(&mut self) {
        self.memo_hash = ::std::option::Option::None;
    }

    pub fn has_memo_hash(&self) -> bool {
        self.memo_hash.is_some()
    }

    // Param is passed by value, moved
    pub fn set_memo_hash(&mut self, v: ::std::vec::Vec<u8>) {
        self.memo_hash = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_memo_hash(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.memo_hash.is_none() {
            self.memo_hash = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.memo_hash.as_mut().unwrap()
    }

    // Take field
    pub fn take_memo_hash(&mut self) -> ::std::vec::Vec<u8> {
        self.memo_hash.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    // required uint32 num_operations = 14;

    pub fn num_operations(&self) -> u32 {
        self.num_operations.unwrap_or(0)
    }

    pub fn clear_num_operations(&mut self) {
        self.num_operations = ::std::option::Option::None;
    }

    pub fn has_num_operations(&self) -> bool {
        self.num_operations.is_some()
    }

    // Param is passed by value, moved
    pub fn set_num_operations(&mut self, v: u32) {
        self.num_operations = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(12);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "address_n",
            |m: &StellarSignTx| { &m.address_n },
            |m: &mut StellarSignTx| { &mut m.address_n },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "network_passphrase",
            |m: &StellarSignTx| { &m.network_passphrase },
            |m: &mut StellarSignTx| { &mut m.network_passphrase },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarSignTx| { &m.source_account },
            |m: &mut StellarSignTx| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "fee",
            |m: &StellarSignTx| { &m.fee },
            |m: &mut StellarSignTx| { &mut m.fee },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "sequence_number",
            |m: &StellarSignTx| { &m.sequence_number },
            |m: &mut StellarSignTx| { &mut m.sequence_number },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "timebounds_start",
            |m: &StellarSignTx| { &m.timebounds_start },
            |m: &mut StellarSignTx| { &mut m.timebounds_start },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "timebounds_end",
            |m: &StellarSignTx| { &m.timebounds_end },
            |m: &mut StellarSignTx| { &mut m.timebounds_end },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "memo_type",
            |m: &StellarSignTx| { &m.memo_type },
            |m: &mut StellarSignTx| { &mut m.memo_type },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "memo_text",
            |m: &StellarSignTx| { &m.memo_text },
            |m: &mut StellarSignTx| { &mut m.memo_text },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "memo_id",
            |m: &StellarSignTx| { &m.memo_id },
            |m: &mut StellarSignTx| { &mut m.memo_id },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "memo_hash",
            |m: &StellarSignTx| { &m.memo_hash },
            |m: &mut StellarSignTx| { &mut m.memo_hash },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "num_operations",
            |m: &StellarSignTx| { &m.num_operations },
            |m: &mut StellarSignTx| { &mut m.num_operations },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarSignTx>(
            "StellarSignTx",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarSignTx {
    const NAME: &'static str = "StellarSignTx";

    fn is_initialized(&self) -> bool {
        if self.network_passphrase.is_none() {
            return false;
        }
        if self.source_account.is_none() {
            return false;
        }
        if self.fee.is_none() {
            return false;
        }
        if self.sequence_number.is_none() {
            return false;
        }
        if self.timebounds_start.is_none() {
            return false;
        }
        if self.timebounds_end.is_none() {
            return false;
        }
        if self.memo_type.is_none() {
            return false;
        }
        if self.num_operations.is_none() {
            return false;
        }
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                18 => {
                    is.read_repeated_packed_uint32_into(&mut self.address_n)?;
                },
                16 => {
                    self.address_n.push(is.read_uint32()?);
                },
                26 => {
                    self.network_passphrase = ::std::option::Option::Some(is.read_string()?);
                },
                34 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                40 => {
                    self.fee = ::std::option::Option::Some(is.read_uint32()?);
                },
                48 => {
                    self.sequence_number = ::std::option::Option::Some(is.read_uint64()?);
                },
                64 => {
                    self.timebounds_start = ::std::option::Option::Some(is.read_uint32()?);
                },
                72 => {
                    self.timebounds_end = ::std::option::Option::Some(is.read_uint32()?);
                },
                80 => {
                    self.memo_type = ::std::option::Option::Some(is.read_enum_or_unknown()?);
                },
                90 => {
                    self.memo_text = ::std::option::Option::Some(is.read_string()?);
                },
                96 => {
                    self.memo_id = ::std::option::Option::Some(is.read_uint64()?);
                },
                106 => {
                    self.memo_hash = ::std::option::Option::Some(is.read_bytes()?);
                },
                112 => {
                    self.num_operations = ::std::option::Option::Some(is.read_uint32()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        for value in &self.address_n {
            my_size += ::protobuf::rt::uint32_size(2, *value);
        };
        if let Some(v) = self.network_passphrase.as_ref() {
            my_size += ::protobuf::rt::string_size(3, &v);
        }
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(4, &v);
        }
        if let Some(v) = self.fee {
            my_size += ::protobuf::rt::uint32_size(5, v);
        }
        if let Some(v) = self.sequence_number {
            my_size += ::protobuf::rt::uint64_size(6, v);
        }
        if let Some(v) = self.timebounds_start {
            my_size += ::protobuf::rt::uint32_size(8, v);
        }
        if let Some(v) = self.timebounds_end {
            my_size += ::protobuf::rt::uint32_size(9, v);
        }
        if let Some(v) = self.memo_type {
            my_size += ::protobuf::rt::int32_size(10, v.value());
        }
        if let Some(v) = self.memo_text.as_ref() {
            my_size += ::protobuf::rt::string_size(11, &v);
        }
        if let Some(v) = self.memo_id {
            my_size += ::protobuf::rt::uint64_size(12, v);
        }
        if let Some(v) = self.memo_hash.as_ref() {
            my_size += ::protobuf::rt::bytes_size(13, &v);
        }
        if let Some(v) = self.num_operations {
            my_size += ::protobuf::rt::uint32_size(14, v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        for v in &self.address_n {
            os.write_uint32(2, *v)?;
        };
        if let Some(v) = self.network_passphrase.as_ref() {
            os.write_string(3, v)?;
        }
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(4, v)?;
        }
        if let Some(v) = self.fee {
            os.write_uint32(5, v)?;
        }
        if let Some(v) = self.sequence_number {
            os.write_uint64(6, v)?;
        }
        if let Some(v) = self.timebounds_start {
            os.write_uint32(8, v)?;
        }
        if let Some(v) = self.timebounds_end {
            os.write_uint32(9, v)?;
        }
        if let Some(v) = self.memo_type {
            os.write_enum(10, ::protobuf::EnumOrUnknown::value(&v))?;
        }
        if let Some(v) = self.memo_text.as_ref() {
            os.write_string(11, v)?;
        }
        if let Some(v) = self.memo_id {
            os.write_uint64(12, v)?;
        }
        if let Some(v) = self.memo_hash.as_ref() {
            os.write_bytes(13, v)?;
        }
        if let Some(v) = self.num_operations {
            os.write_uint32(14, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarSignTx {
        StellarSignTx::new()
    }

    fn clear(&mut self) {
        self.address_n.clear();
        self.network_passphrase = ::std::option::Option::None;
        self.source_account = ::std::option::Option::None;
        self.fee = ::std::option::Option::None;
        self.sequence_number = ::std::option::Option::None;
        self.timebounds_start = ::std::option::Option::None;
        self.timebounds_end = ::std::option::Option::None;
        self.memo_type = ::std::option::Option::None;
        self.memo_text = ::std::option::Option::None;
        self.memo_id = ::std::option::Option::None;
        self.memo_hash = ::std::option::Option::None;
        self.num_operations = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarSignTx {
        static instance: StellarSignTx = StellarSignTx {
            address_n: ::std::vec::Vec::new(),
            network_passphrase: ::std::option::Option::None,
            source_account: ::std::option::Option::None,
            fee: ::std::option::Option::None,
            sequence_number: ::std::option::Option::None,
            timebounds_start: ::std::option::Option::None,
            timebounds_end: ::std::option::Option::None,
            memo_type: ::std::option::Option::None,
            memo_text: ::std::option::Option::None,
            memo_id: ::std::option::Option::None,
            memo_hash: ::std::option::Option::None,
            num_operations: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarSignTx {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarSignTx").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarSignTx {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarSignTx {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

/// Nested message and enums of message `StellarSignTx`
pub mod stellar_sign_tx {
    #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
    // @@protoc_insertion_point(enum:hw.trezor.messages.stellar.StellarSignTx.StellarMemoType)
    pub enum StellarMemoType {
        // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarSignTx.StellarMemoType.NONE)
        NONE = 0,
        // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarSignTx.StellarMemoType.TEXT)
        TEXT = 1,
        // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarSignTx.StellarMemoType.ID)
        ID = 2,
        // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarSignTx.StellarMemoType.HASH)
        HASH = 3,
        // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarSignTx.StellarMemoType.RETURN)
        RETURN = 4,
    }

    impl ::protobuf::Enum for StellarMemoType {
        const NAME: &'static str = "StellarMemoType";

        fn value(&self) -> i32 {
            *self as i32
        }

        fn from_i32(value: i32) -> ::std::option::Option<StellarMemoType> {
            match value {
                0 => ::std::option::Option::Some(StellarMemoType::NONE),
                1 => ::std::option::Option::Some(StellarMemoType::TEXT),
                2 => ::std::option::Option::Some(StellarMemoType::ID),
                3 => ::std::option::Option::Some(StellarMemoType::HASH),
                4 => ::std::option::Option::Some(StellarMemoType::RETURN),
                _ => ::std::option::Option::None
            }
        }

        fn from_str(str: &str) -> ::std::option::Option<StellarMemoType> {
            match str {
                "NONE" => ::std::option::Option::Some(StellarMemoType::NONE),
                "TEXT" => ::std::option::Option::Some(StellarMemoType::TEXT),
                "ID" => ::std::option::Option::Some(StellarMemoType::ID),
                "HASH" => ::std::option::Option::Some(StellarMemoType::HASH),
                "RETURN" => ::std::option::Option::Some(StellarMemoType::RETURN),
                _ => ::std::option::Option::None
            }
        }

        const VALUES: &'static [StellarMemoType] = &[
            StellarMemoType::NONE,
            StellarMemoType::TEXT,
            StellarMemoType::ID,
            StellarMemoType::HASH,
            StellarMemoType::RETURN,
        ];
    }

    impl ::protobuf::EnumFull for StellarMemoType {
        fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
            static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
            descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("StellarSignTx.StellarMemoType").unwrap()).clone()
        }

        fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
            let index = *self as usize;
            Self::enum_descriptor().value_by_index(index)
        }
    }

    impl ::std::default::Default for StellarMemoType {
        fn default() -> Self {
            StellarMemoType::NONE
        }
    }

    impl StellarMemoType {
        pub(in super) fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
            ::protobuf::reflect::GeneratedEnumDescriptorData::new::<StellarMemoType>("StellarSignTx.StellarMemoType")
        }
    }
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarTxOpRequest)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarTxOpRequest {
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarTxOpRequest.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarTxOpRequest {
    fn default() -> &'a StellarTxOpRequest {
        <StellarTxOpRequest as ::protobuf::Message>::default_instance()
    }
}

impl StellarTxOpRequest {
    pub fn new() -> StellarTxOpRequest {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(0);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarTxOpRequest>(
            "StellarTxOpRequest",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarTxOpRequest {
    const NAME: &'static str = "StellarTxOpRequest";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarTxOpRequest {
        StellarTxOpRequest::new()
    }

    fn clear(&mut self) {
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarTxOpRequest {
        static instance: StellarTxOpRequest = StellarTxOpRequest {
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarTxOpRequest {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarTxOpRequest").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarTxOpRequest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarTxOpRequest {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarPaymentOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarPaymentOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPaymentOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPaymentOp.destination_account)
    pub destination_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPaymentOp.asset)
    pub asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPaymentOp.amount)
    pub amount: ::std::option::Option<i64>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarPaymentOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarPaymentOp {
    fn default() -> &'a StellarPaymentOp {
        <StellarPaymentOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarPaymentOp {
    pub fn new() -> StellarPaymentOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required string destination_account = 2;

    pub fn destination_account(&self) -> &str {
        match self.destination_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_destination_account(&mut self) {
        self.destination_account = ::std::option::Option::None;
    }

    pub fn has_destination_account(&self) -> bool {
        self.destination_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_destination_account(&mut self, v: ::std::string::String) {
        self.destination_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_destination_account(&mut self) -> &mut ::std::string::String {
        if self.destination_account.is_none() {
            self.destination_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.destination_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_destination_account(&mut self) -> ::std::string::String {
        self.destination_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required sint64 amount = 4;

    pub fn amount(&self) -> i64 {
        self.amount.unwrap_or(0)
    }

    pub fn clear_amount(&mut self) {
        self.amount = ::std::option::Option::None;
    }

    pub fn has_amount(&self) -> bool {
        self.amount.is_some()
    }

    // Param is passed by value, moved
    pub fn set_amount(&mut self, v: i64) {
        self.amount = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(4);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarPaymentOp| { &m.source_account },
            |m: &mut StellarPaymentOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "destination_account",
            |m: &StellarPaymentOp| { &m.destination_account },
            |m: &mut StellarPaymentOp| { &mut m.destination_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "asset",
            |m: &StellarPaymentOp| { &m.asset },
            |m: &mut StellarPaymentOp| { &mut m.asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "amount",
            |m: &StellarPaymentOp| { &m.amount },
            |m: &mut StellarPaymentOp| { &mut m.amount },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarPaymentOp>(
            "StellarPaymentOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarPaymentOp {
    const NAME: &'static str = "StellarPaymentOp";

    fn is_initialized(&self) -> bool {
        if self.destination_account.is_none() {
            return false;
        }
        if self.asset.is_none() {
            return false;
        }
        if self.amount.is_none() {
            return false;
        }
        for v in &self.asset {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    self.destination_account = ::std::option::Option::Some(is.read_string()?);
                },
                26 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.asset)?;
                },
                32 => {
                    self.amount = ::std::option::Option::Some(is.read_sint64()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.destination_account.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        if let Some(v) = self.asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.amount {
            my_size += ::protobuf::rt::sint64_size(4, v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.destination_account.as_ref() {
            os.write_string(2, v)?;
        }
        if let Some(v) = self.asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
        }
        if let Some(v) = self.amount {
            os.write_sint64(4, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarPaymentOp {
        StellarPaymentOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.destination_account = ::std::option::Option::None;
        self.asset.clear();
        self.amount = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarPaymentOp {
        static instance: StellarPaymentOp = StellarPaymentOp {
            source_account: ::std::option::Option::None,
            destination_account: ::std::option::Option::None,
            asset: ::protobuf::MessageField::none(),
            amount: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarPaymentOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarPaymentOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarPaymentOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarPaymentOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarCreateAccountOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarCreateAccountOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarCreateAccountOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarCreateAccountOp.new_account)
    pub new_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarCreateAccountOp.starting_balance)
    pub starting_balance: ::std::option::Option<i64>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarCreateAccountOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarCreateAccountOp {
    fn default() -> &'a StellarCreateAccountOp {
        <StellarCreateAccountOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarCreateAccountOp {
    pub fn new() -> StellarCreateAccountOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required string new_account = 2;

    pub fn new_account(&self) -> &str {
        match self.new_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_new_account(&mut self) {
        self.new_account = ::std::option::Option::None;
    }

    pub fn has_new_account(&self) -> bool {
        self.new_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_new_account(&mut self, v: ::std::string::String) {
        self.new_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_new_account(&mut self) -> &mut ::std::string::String {
        if self.new_account.is_none() {
            self.new_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.new_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_new_account(&mut self) -> ::std::string::String {
        self.new_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required sint64 starting_balance = 3;

    pub fn starting_balance(&self) -> i64 {
        self.starting_balance.unwrap_or(0)
    }

    pub fn clear_starting_balance(&mut self) {
        self.starting_balance = ::std::option::Option::None;
    }

    pub fn has_starting_balance(&self) -> bool {
        self.starting_balance.is_some()
    }

    // Param is passed by value, moved
    pub fn set_starting_balance(&mut self, v: i64) {
        self.starting_balance = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(3);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarCreateAccountOp| { &m.source_account },
            |m: &mut StellarCreateAccountOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "new_account",
            |m: &StellarCreateAccountOp| { &m.new_account },
            |m: &mut StellarCreateAccountOp| { &mut m.new_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "starting_balance",
            |m: &StellarCreateAccountOp| { &m.starting_balance },
            |m: &mut StellarCreateAccountOp| { &mut m.starting_balance },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarCreateAccountOp>(
            "StellarCreateAccountOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarCreateAccountOp {
    const NAME: &'static str = "StellarCreateAccountOp";

    fn is_initialized(&self) -> bool {
        if self.new_account.is_none() {
            return false;
        }
        if self.starting_balance.is_none() {
            return false;
        }
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    self.new_account = ::std::option::Option::Some(is.read_string()?);
                },
                24 => {
                    self.starting_balance = ::std::option::Option::Some(is.read_sint64()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.new_account.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        if let Some(v) = self.starting_balance {
            my_size += ::protobuf::rt::sint64_size(3, v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.new_account.as_ref() {
            os.write_string(2, v)?;
        }
        if let Some(v) = self.starting_balance {
            os.write_sint64(3, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarCreateAccountOp {
        StellarCreateAccountOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.new_account = ::std::option::Option::None;
        self.starting_balance = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarCreateAccountOp {
        static instance: StellarCreateAccountOp = StellarCreateAccountOp {
            source_account: ::std::option::Option::None,
            new_account: ::std::option::Option::None,
            starting_balance: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarCreateAccountOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarCreateAccountOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarCreateAccountOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarCreateAccountOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarPathPaymentStrictReceiveOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarPathPaymentStrictReceiveOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictReceiveOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictReceiveOp.send_asset)
    pub send_asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictReceiveOp.send_max)
    pub send_max: ::std::option::Option<i64>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictReceiveOp.destination_account)
    pub destination_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictReceiveOp.destination_asset)
    pub destination_asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictReceiveOp.destination_amount)
    pub destination_amount: ::std::option::Option<i64>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictReceiveOp.paths)
    pub paths: ::std::vec::Vec<StellarAsset>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarPathPaymentStrictReceiveOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarPathPaymentStrictReceiveOp {
    fn default() -> &'a StellarPathPaymentStrictReceiveOp {
        <StellarPathPaymentStrictReceiveOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarPathPaymentStrictReceiveOp {
    pub fn new() -> StellarPathPaymentStrictReceiveOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required sint64 send_max = 3;

    pub fn send_max(&self) -> i64 {
        self.send_max.unwrap_or(0)
    }

    pub fn clear_send_max(&mut self) {
        self.send_max = ::std::option::Option::None;
    }

    pub fn has_send_max(&self) -> bool {
        self.send_max.is_some()
    }

    // Param is passed by value, moved
    pub fn set_send_max(&mut self, v: i64) {
        self.send_max = ::std::option::Option::Some(v);
    }

    // required string destination_account = 4;

    pub fn destination_account(&self) -> &str {
        match self.destination_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_destination_account(&mut self) {
        self.destination_account = ::std::option::Option::None;
    }

    pub fn has_destination_account(&self) -> bool {
        self.destination_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_destination_account(&mut self, v: ::std::string::String) {
        self.destination_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_destination_account(&mut self) -> &mut ::std::string::String {
        if self.destination_account.is_none() {
            self.destination_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.destination_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_destination_account(&mut self) -> ::std::string::String {
        self.destination_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required sint64 destination_amount = 6;

    pub fn destination_amount(&self) -> i64 {
        self.destination_amount.unwrap_or(0)
    }

    pub fn clear_destination_amount(&mut self) {
        self.destination_amount = ::std::option::Option::None;
    }

    pub fn has_destination_amount(&self) -> bool {
        self.destination_amount.is_some()
    }

    // Param is passed by value, moved
    pub fn set_destination_amount(&mut self, v: i64) {
        self.destination_amount = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(7);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarPathPaymentStrictReceiveOp| { &m.source_account },
            |m: &mut StellarPathPaymentStrictReceiveOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "send_asset",
            |m: &StellarPathPaymentStrictReceiveOp| { &m.send_asset },
            |m: &mut StellarPathPaymentStrictReceiveOp| { &mut m.send_asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "send_max",
            |m: &StellarPathPaymentStrictReceiveOp| { &m.send_max },
            |m: &mut StellarPathPaymentStrictReceiveOp| { &mut m.send_max },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "destination_account",
            |m: &StellarPathPaymentStrictReceiveOp| { &m.destination_account },
            |m: &mut StellarPathPaymentStrictReceiveOp| { &mut m.destination_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "destination_asset",
            |m: &StellarPathPaymentStrictReceiveOp| { &m.destination_asset },
            |m: &mut StellarPathPaymentStrictReceiveOp| { &mut m.destination_asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "destination_amount",
            |m: &StellarPathPaymentStrictReceiveOp| { &m.destination_amount },
            |m: &mut StellarPathPaymentStrictReceiveOp| { &mut m.destination_amount },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "paths",
            |m: &StellarPathPaymentStrictReceiveOp| { &m.paths },
            |m: &mut StellarPathPaymentStrictReceiveOp| { &mut m.paths },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarPathPaymentStrictReceiveOp>(
            "StellarPathPaymentStrictReceiveOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarPathPaymentStrictReceiveOp {
    const NAME: &'static str = "StellarPathPaymentStrictReceiveOp";

    fn is_initialized(&self) -> bool {
        if self.send_asset.is_none() {
            return false;
        }
        if self.send_max.is_none() {
            return false;
        }
        if self.destination_account.is_none() {
            return false;
        }
        if self.destination_asset.is_none() {
            return false;
        }
        if self.destination_amount.is_none() {
            return false;
        }
        for v in &self.send_asset {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.destination_asset {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.paths {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.send_asset)?;
                },
                24 => {
                    self.send_max = ::std::option::Option::Some(is.read_sint64()?);
                },
                34 => {
                    self.destination_account = ::std::option::Option::Some(is.read_string()?);
                },
                42 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.destination_asset)?;
                },
                48 => {
                    self.destination_amount = ::std::option::Option::Some(is.read_sint64()?);
                },
                58 => {
                    self.paths.push(is.read_message()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.send_asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.send_max {
            my_size += ::protobuf::rt::sint64_size(3, v);
        }
        if let Some(v) = self.destination_account.as_ref() {
            my_size += ::protobuf::rt::string_size(4, &v);
        }
        if let Some(v) = self.destination_asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.destination_amount {
            my_size += ::protobuf::rt::sint64_size(6, v);
        }
        for value in &self.paths {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.send_asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
        }
        if let Some(v) = self.send_max {
            os.write_sint64(3, v)?;
        }
        if let Some(v) = self.destination_account.as_ref() {
            os.write_string(4, v)?;
        }
        if let Some(v) = self.destination_asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
        }
        if let Some(v) = self.destination_amount {
            os.write_sint64(6, v)?;
        }
        for v in &self.paths {
            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
        };
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarPathPaymentStrictReceiveOp {
        StellarPathPaymentStrictReceiveOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.send_asset.clear();
        self.send_max = ::std::option::Option::None;
        self.destination_account = ::std::option::Option::None;
        self.destination_asset.clear();
        self.destination_amount = ::std::option::Option::None;
        self.paths.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarPathPaymentStrictReceiveOp {
        static instance: StellarPathPaymentStrictReceiveOp = StellarPathPaymentStrictReceiveOp {
            source_account: ::std::option::Option::None,
            send_asset: ::protobuf::MessageField::none(),
            send_max: ::std::option::Option::None,
            destination_account: ::std::option::Option::None,
            destination_asset: ::protobuf::MessageField::none(),
            destination_amount: ::std::option::Option::None,
            paths: ::std::vec::Vec::new(),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarPathPaymentStrictReceiveOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarPathPaymentStrictReceiveOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarPathPaymentStrictReceiveOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarPathPaymentStrictReceiveOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarPathPaymentStrictSendOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarPathPaymentStrictSendOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictSendOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictSendOp.send_asset)
    pub send_asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictSendOp.send_amount)
    pub send_amount: ::std::option::Option<i64>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictSendOp.destination_account)
    pub destination_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictSendOp.destination_asset)
    pub destination_asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictSendOp.destination_min)
    pub destination_min: ::std::option::Option<i64>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarPathPaymentStrictSendOp.paths)
    pub paths: ::std::vec::Vec<StellarAsset>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarPathPaymentStrictSendOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarPathPaymentStrictSendOp {
    fn default() -> &'a StellarPathPaymentStrictSendOp {
        <StellarPathPaymentStrictSendOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarPathPaymentStrictSendOp {
    pub fn new() -> StellarPathPaymentStrictSendOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required sint64 send_amount = 3;

    pub fn send_amount(&self) -> i64 {
        self.send_amount.unwrap_or(0)
    }

    pub fn clear_send_amount(&mut self) {
        self.send_amount = ::std::option::Option::None;
    }

    pub fn has_send_amount(&self) -> bool {
        self.send_amount.is_some()
    }

    // Param is passed by value, moved
    pub fn set_send_amount(&mut self, v: i64) {
        self.send_amount = ::std::option::Option::Some(v);
    }

    // required string destination_account = 4;

    pub fn destination_account(&self) -> &str {
        match self.destination_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_destination_account(&mut self) {
        self.destination_account = ::std::option::Option::None;
    }

    pub fn has_destination_account(&self) -> bool {
        self.destination_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_destination_account(&mut self, v: ::std::string::String) {
        self.destination_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_destination_account(&mut self) -> &mut ::std::string::String {
        if self.destination_account.is_none() {
            self.destination_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.destination_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_destination_account(&mut self) -> ::std::string::String {
        self.destination_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required sint64 destination_min = 6;

    pub fn destination_min(&self) -> i64 {
        self.destination_min.unwrap_or(0)
    }

    pub fn clear_destination_min(&mut self) {
        self.destination_min = ::std::option::Option::None;
    }

    pub fn has_destination_min(&self) -> bool {
        self.destination_min.is_some()
    }

    // Param is passed by value, moved
    pub fn set_destination_min(&mut self, v: i64) {
        self.destination_min = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(7);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarPathPaymentStrictSendOp| { &m.source_account },
            |m: &mut StellarPathPaymentStrictSendOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "send_asset",
            |m: &StellarPathPaymentStrictSendOp| { &m.send_asset },
            |m: &mut StellarPathPaymentStrictSendOp| { &mut m.send_asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "send_amount",
            |m: &StellarPathPaymentStrictSendOp| { &m.send_amount },
            |m: &mut StellarPathPaymentStrictSendOp| { &mut m.send_amount },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "destination_account",
            |m: &StellarPathPaymentStrictSendOp| { &m.destination_account },
            |m: &mut StellarPathPaymentStrictSendOp| { &mut m.destination_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "destination_asset",
            |m: &StellarPathPaymentStrictSendOp| { &m.destination_asset },
            |m: &mut StellarPathPaymentStrictSendOp| { &mut m.destination_asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "destination_min",
            |m: &StellarPathPaymentStrictSendOp| { &m.destination_min },
            |m: &mut StellarPathPaymentStrictSendOp| { &mut m.destination_min },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "paths",
            |m: &StellarPathPaymentStrictSendOp| { &m.paths },
            |m: &mut StellarPathPaymentStrictSendOp| { &mut m.paths },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarPathPaymentStrictSendOp>(
            "StellarPathPaymentStrictSendOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarPathPaymentStrictSendOp {
    const NAME: &'static str = "StellarPathPaymentStrictSendOp";

    fn is_initialized(&self) -> bool {
        if self.send_asset.is_none() {
            return false;
        }
        if self.send_amount.is_none() {
            return false;
        }
        if self.destination_account.is_none() {
            return false;
        }
        if self.destination_asset.is_none() {
            return false;
        }
        if self.destination_min.is_none() {
            return false;
        }
        for v in &self.send_asset {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.destination_asset {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.paths {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.send_asset)?;
                },
                24 => {
                    self.send_amount = ::std::option::Option::Some(is.read_sint64()?);
                },
                34 => {
                    self.destination_account = ::std::option::Option::Some(is.read_string()?);
                },
                42 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.destination_asset)?;
                },
                48 => {
                    self.destination_min = ::std::option::Option::Some(is.read_sint64()?);
                },
                58 => {
                    self.paths.push(is.read_message()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.send_asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.send_amount {
            my_size += ::protobuf::rt::sint64_size(3, v);
        }
        if let Some(v) = self.destination_account.as_ref() {
            my_size += ::protobuf::rt::string_size(4, &v);
        }
        if let Some(v) = self.destination_asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.destination_min {
            my_size += ::protobuf::rt::sint64_size(6, v);
        }
        for value in &self.paths {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.send_asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
        }
        if let Some(v) = self.send_amount {
            os.write_sint64(3, v)?;
        }
        if let Some(v) = self.destination_account.as_ref() {
            os.write_string(4, v)?;
        }
        if let Some(v) = self.destination_asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
        }
        if let Some(v) = self.destination_min {
            os.write_sint64(6, v)?;
        }
        for v in &self.paths {
            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
        };
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarPathPaymentStrictSendOp {
        StellarPathPaymentStrictSendOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.send_asset.clear();
        self.send_amount = ::std::option::Option::None;
        self.destination_account = ::std::option::Option::None;
        self.destination_asset.clear();
        self.destination_min = ::std::option::Option::None;
        self.paths.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarPathPaymentStrictSendOp {
        static instance: StellarPathPaymentStrictSendOp = StellarPathPaymentStrictSendOp {
            source_account: ::std::option::Option::None,
            send_asset: ::protobuf::MessageField::none(),
            send_amount: ::std::option::Option::None,
            destination_account: ::std::option::Option::None,
            destination_asset: ::protobuf::MessageField::none(),
            destination_min: ::std::option::Option::None,
            paths: ::std::vec::Vec::new(),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarPathPaymentStrictSendOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarPathPaymentStrictSendOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarPathPaymentStrictSendOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarPathPaymentStrictSendOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarManageSellOfferOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarManageSellOfferOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageSellOfferOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageSellOfferOp.selling_asset)
    pub selling_asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageSellOfferOp.buying_asset)
    pub buying_asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageSellOfferOp.amount)
    pub amount: ::std::option::Option<i64>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageSellOfferOp.price_n)
    pub price_n: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageSellOfferOp.price_d)
    pub price_d: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageSellOfferOp.offer_id)
    pub offer_id: ::std::option::Option<u64>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarManageSellOfferOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarManageSellOfferOp {
    fn default() -> &'a StellarManageSellOfferOp {
        <StellarManageSellOfferOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarManageSellOfferOp {
    pub fn new() -> StellarManageSellOfferOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required sint64 amount = 4;

    pub fn amount(&self) -> i64 {
        self.amount.unwrap_or(0)
    }

    pub fn clear_amount(&mut self) {
        self.amount = ::std::option::Option::None;
    }

    pub fn has_amount(&self) -> bool {
        self.amount.is_some()
    }

    // Param is passed by value, moved
    pub fn set_amount(&mut self, v: i64) {
        self.amount = ::std::option::Option::Some(v);
    }

    // required uint32 price_n = 5;

    pub fn price_n(&self) -> u32 {
        self.price_n.unwrap_or(0)
    }

    pub fn clear_price_n(&mut self) {
        self.price_n = ::std::option::Option::None;
    }

    pub fn has_price_n(&self) -> bool {
        self.price_n.is_some()
    }

    // Param is passed by value, moved
    pub fn set_price_n(&mut self, v: u32) {
        self.price_n = ::std::option::Option::Some(v);
    }

    // required uint32 price_d = 6;

    pub fn price_d(&self) -> u32 {
        self.price_d.unwrap_or(0)
    }

    pub fn clear_price_d(&mut self) {
        self.price_d = ::std::option::Option::None;
    }

    pub fn has_price_d(&self) -> bool {
        self.price_d.is_some()
    }

    // Param is passed by value, moved
    pub fn set_price_d(&mut self, v: u32) {
        self.price_d = ::std::option::Option::Some(v);
    }

    // required uint64 offer_id = 7;

    pub fn offer_id(&self) -> u64 {
        self.offer_id.unwrap_or(0)
    }

    pub fn clear_offer_id(&mut self) {
        self.offer_id = ::std::option::Option::None;
    }

    pub fn has_offer_id(&self) -> bool {
        self.offer_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_offer_id(&mut self, v: u64) {
        self.offer_id = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(7);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarManageSellOfferOp| { &m.source_account },
            |m: &mut StellarManageSellOfferOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "selling_asset",
            |m: &StellarManageSellOfferOp| { &m.selling_asset },
            |m: &mut StellarManageSellOfferOp| { &mut m.selling_asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "buying_asset",
            |m: &StellarManageSellOfferOp| { &m.buying_asset },
            |m: &mut StellarManageSellOfferOp| { &mut m.buying_asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "amount",
            |m: &StellarManageSellOfferOp| { &m.amount },
            |m: &mut StellarManageSellOfferOp| { &mut m.amount },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "price_n",
            |m: &StellarManageSellOfferOp| { &m.price_n },
            |m: &mut StellarManageSellOfferOp| { &mut m.price_n },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "price_d",
            |m: &StellarManageSellOfferOp| { &m.price_d },
            |m: &mut StellarManageSellOfferOp| { &mut m.price_d },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "offer_id",
            |m: &StellarManageSellOfferOp| { &m.offer_id },
            |m: &mut StellarManageSellOfferOp| { &mut m.offer_id },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarManageSellOfferOp>(
            "StellarManageSellOfferOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarManageSellOfferOp {
    const NAME: &'static str = "StellarManageSellOfferOp";

    fn is_initialized(&self) -> bool {
        if self.selling_asset.is_none() {
            return false;
        }
        if self.buying_asset.is_none() {
            return false;
        }
        if self.amount.is_none() {
            return false;
        }
        if self.price_n.is_none() {
            return false;
        }
        if self.price_d.is_none() {
            return false;
        }
        if self.offer_id.is_none() {
            return false;
        }
        for v in &self.selling_asset {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.buying_asset {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.selling_asset)?;
                },
                26 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.buying_asset)?;
                },
                32 => {
                    self.amount = ::std::option::Option::Some(is.read_sint64()?);
                },
                40 => {
                    self.price_n = ::std::option::Option::Some(is.read_uint32()?);
                },
                48 => {
                    self.price_d = ::std::option::Option::Some(is.read_uint32()?);
                },
                56 => {
                    self.offer_id = ::std::option::Option::Some(is.read_uint64()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.selling_asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.buying_asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.amount {
            my_size += ::protobuf::rt::sint64_size(4, v);
        }
        if let Some(v) = self.price_n {
            my_size += ::protobuf::rt::uint32_size(5, v);
        }
        if let Some(v) = self.price_d {
            my_size += ::protobuf::rt::uint32_size(6, v);
        }
        if let Some(v) = self.offer_id {
            my_size += ::protobuf::rt::uint64_size(7, v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.selling_asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
        }
        if let Some(v) = self.buying_asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
        }
        if let Some(v) = self.amount {
            os.write_sint64(4, v)?;
        }
        if let Some(v) = self.price_n {
            os.write_uint32(5, v)?;
        }
        if let Some(v) = self.price_d {
            os.write_uint32(6, v)?;
        }
        if let Some(v) = self.offer_id {
            os.write_uint64(7, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarManageSellOfferOp {
        StellarManageSellOfferOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.selling_asset.clear();
        self.buying_asset.clear();
        self.amount = ::std::option::Option::None;
        self.price_n = ::std::option::Option::None;
        self.price_d = ::std::option::Option::None;
        self.offer_id = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarManageSellOfferOp {
        static instance: StellarManageSellOfferOp = StellarManageSellOfferOp {
            source_account: ::std::option::Option::None,
            selling_asset: ::protobuf::MessageField::none(),
            buying_asset: ::protobuf::MessageField::none(),
            amount: ::std::option::Option::None,
            price_n: ::std::option::Option::None,
            price_d: ::std::option::Option::None,
            offer_id: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarManageSellOfferOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarManageSellOfferOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarManageSellOfferOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarManageSellOfferOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarManageBuyOfferOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarManageBuyOfferOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageBuyOfferOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageBuyOfferOp.selling_asset)
    pub selling_asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageBuyOfferOp.buying_asset)
    pub buying_asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageBuyOfferOp.amount)
    pub amount: ::std::option::Option<i64>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageBuyOfferOp.price_n)
    pub price_n: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageBuyOfferOp.price_d)
    pub price_d: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageBuyOfferOp.offer_id)
    pub offer_id: ::std::option::Option<u64>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarManageBuyOfferOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarManageBuyOfferOp {
    fn default() -> &'a StellarManageBuyOfferOp {
        <StellarManageBuyOfferOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarManageBuyOfferOp {
    pub fn new() -> StellarManageBuyOfferOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required sint64 amount = 4;

    pub fn amount(&self) -> i64 {
        self.amount.unwrap_or(0)
    }

    pub fn clear_amount(&mut self) {
        self.amount = ::std::option::Option::None;
    }

    pub fn has_amount(&self) -> bool {
        self.amount.is_some()
    }

    // Param is passed by value, moved
    pub fn set_amount(&mut self, v: i64) {
        self.amount = ::std::option::Option::Some(v);
    }

    // required uint32 price_n = 5;

    pub fn price_n(&self) -> u32 {
        self.price_n.unwrap_or(0)
    }

    pub fn clear_price_n(&mut self) {
        self.price_n = ::std::option::Option::None;
    }

    pub fn has_price_n(&self) -> bool {
        self.price_n.is_some()
    }

    // Param is passed by value, moved
    pub fn set_price_n(&mut self, v: u32) {
        self.price_n = ::std::option::Option::Some(v);
    }

    // required uint32 price_d = 6;

    pub fn price_d(&self) -> u32 {
        self.price_d.unwrap_or(0)
    }

    pub fn clear_price_d(&mut self) {
        self.price_d = ::std::option::Option::None;
    }

    pub fn has_price_d(&self) -> bool {
        self.price_d.is_some()
    }

    // Param is passed by value, moved
    pub fn set_price_d(&mut self, v: u32) {
        self.price_d = ::std::option::Option::Some(v);
    }

    // required uint64 offer_id = 7;

    pub fn offer_id(&self) -> u64 {
        self.offer_id.unwrap_or(0)
    }

    pub fn clear_offer_id(&mut self) {
        self.offer_id = ::std::option::Option::None;
    }

    pub fn has_offer_id(&self) -> bool {
        self.offer_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_offer_id(&mut self, v: u64) {
        self.offer_id = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(7);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarManageBuyOfferOp| { &m.source_account },
            |m: &mut StellarManageBuyOfferOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "selling_asset",
            |m: &StellarManageBuyOfferOp| { &m.selling_asset },
            |m: &mut StellarManageBuyOfferOp| { &mut m.selling_asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "buying_asset",
            |m: &StellarManageBuyOfferOp| { &m.buying_asset },
            |m: &mut StellarManageBuyOfferOp| { &mut m.buying_asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "amount",
            |m: &StellarManageBuyOfferOp| { &m.amount },
            |m: &mut StellarManageBuyOfferOp| { &mut m.amount },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "price_n",
            |m: &StellarManageBuyOfferOp| { &m.price_n },
            |m: &mut StellarManageBuyOfferOp| { &mut m.price_n },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "price_d",
            |m: &StellarManageBuyOfferOp| { &m.price_d },
            |m: &mut StellarManageBuyOfferOp| { &mut m.price_d },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "offer_id",
            |m: &StellarManageBuyOfferOp| { &m.offer_id },
            |m: &mut StellarManageBuyOfferOp| { &mut m.offer_id },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarManageBuyOfferOp>(
            "StellarManageBuyOfferOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarManageBuyOfferOp {
    const NAME: &'static str = "StellarManageBuyOfferOp";

    fn is_initialized(&self) -> bool {
        if self.selling_asset.is_none() {
            return false;
        }
        if self.buying_asset.is_none() {
            return false;
        }
        if self.amount.is_none() {
            return false;
        }
        if self.price_n.is_none() {
            return false;
        }
        if self.price_d.is_none() {
            return false;
        }
        if self.offer_id.is_none() {
            return false;
        }
        for v in &self.selling_asset {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.buying_asset {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.selling_asset)?;
                },
                26 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.buying_asset)?;
                },
                32 => {
                    self.amount = ::std::option::Option::Some(is.read_sint64()?);
                },
                40 => {
                    self.price_n = ::std::option::Option::Some(is.read_uint32()?);
                },
                48 => {
                    self.price_d = ::std::option::Option::Some(is.read_uint32()?);
                },
                56 => {
                    self.offer_id = ::std::option::Option::Some(is.read_uint64()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.selling_asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.buying_asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.amount {
            my_size += ::protobuf::rt::sint64_size(4, v);
        }
        if let Some(v) = self.price_n {
            my_size += ::protobuf::rt::uint32_size(5, v);
        }
        if let Some(v) = self.price_d {
            my_size += ::protobuf::rt::uint32_size(6, v);
        }
        if let Some(v) = self.offer_id {
            my_size += ::protobuf::rt::uint64_size(7, v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.selling_asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
        }
        if let Some(v) = self.buying_asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
        }
        if let Some(v) = self.amount {
            os.write_sint64(4, v)?;
        }
        if let Some(v) = self.price_n {
            os.write_uint32(5, v)?;
        }
        if let Some(v) = self.price_d {
            os.write_uint32(6, v)?;
        }
        if let Some(v) = self.offer_id {
            os.write_uint64(7, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarManageBuyOfferOp {
        StellarManageBuyOfferOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.selling_asset.clear();
        self.buying_asset.clear();
        self.amount = ::std::option::Option::None;
        self.price_n = ::std::option::Option::None;
        self.price_d = ::std::option::Option::None;
        self.offer_id = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarManageBuyOfferOp {
        static instance: StellarManageBuyOfferOp = StellarManageBuyOfferOp {
            source_account: ::std::option::Option::None,
            selling_asset: ::protobuf::MessageField::none(),
            buying_asset: ::protobuf::MessageField::none(),
            amount: ::std::option::Option::None,
            price_n: ::std::option::Option::None,
            price_d: ::std::option::Option::None,
            offer_id: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarManageBuyOfferOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarManageBuyOfferOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarManageBuyOfferOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarManageBuyOfferOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarCreatePassiveSellOfferOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarCreatePassiveSellOfferOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarCreatePassiveSellOfferOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarCreatePassiveSellOfferOp.selling_asset)
    pub selling_asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarCreatePassiveSellOfferOp.buying_asset)
    pub buying_asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarCreatePassiveSellOfferOp.amount)
    pub amount: ::std::option::Option<i64>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarCreatePassiveSellOfferOp.price_n)
    pub price_n: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarCreatePassiveSellOfferOp.price_d)
    pub price_d: ::std::option::Option<u32>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarCreatePassiveSellOfferOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarCreatePassiveSellOfferOp {
    fn default() -> &'a StellarCreatePassiveSellOfferOp {
        <StellarCreatePassiveSellOfferOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarCreatePassiveSellOfferOp {
    pub fn new() -> StellarCreatePassiveSellOfferOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required sint64 amount = 4;

    pub fn amount(&self) -> i64 {
        self.amount.unwrap_or(0)
    }

    pub fn clear_amount(&mut self) {
        self.amount = ::std::option::Option::None;
    }

    pub fn has_amount(&self) -> bool {
        self.amount.is_some()
    }

    // Param is passed by value, moved
    pub fn set_amount(&mut self, v: i64) {
        self.amount = ::std::option::Option::Some(v);
    }

    // required uint32 price_n = 5;

    pub fn price_n(&self) -> u32 {
        self.price_n.unwrap_or(0)
    }

    pub fn clear_price_n(&mut self) {
        self.price_n = ::std::option::Option::None;
    }

    pub fn has_price_n(&self) -> bool {
        self.price_n.is_some()
    }

    // Param is passed by value, moved
    pub fn set_price_n(&mut self, v: u32) {
        self.price_n = ::std::option::Option::Some(v);
    }

    // required uint32 price_d = 6;

    pub fn price_d(&self) -> u32 {
        self.price_d.unwrap_or(0)
    }

    pub fn clear_price_d(&mut self) {
        self.price_d = ::std::option::Option::None;
    }

    pub fn has_price_d(&self) -> bool {
        self.price_d.is_some()
    }

    // Param is passed by value, moved
    pub fn set_price_d(&mut self, v: u32) {
        self.price_d = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(6);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarCreatePassiveSellOfferOp| { &m.source_account },
            |m: &mut StellarCreatePassiveSellOfferOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "selling_asset",
            |m: &StellarCreatePassiveSellOfferOp| { &m.selling_asset },
            |m: &mut StellarCreatePassiveSellOfferOp| { &mut m.selling_asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "buying_asset",
            |m: &StellarCreatePassiveSellOfferOp| { &m.buying_asset },
            |m: &mut StellarCreatePassiveSellOfferOp| { &mut m.buying_asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "amount",
            |m: &StellarCreatePassiveSellOfferOp| { &m.amount },
            |m: &mut StellarCreatePassiveSellOfferOp| { &mut m.amount },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "price_n",
            |m: &StellarCreatePassiveSellOfferOp| { &m.price_n },
            |m: &mut StellarCreatePassiveSellOfferOp| { &mut m.price_n },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "price_d",
            |m: &StellarCreatePassiveSellOfferOp| { &m.price_d },
            |m: &mut StellarCreatePassiveSellOfferOp| { &mut m.price_d },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarCreatePassiveSellOfferOp>(
            "StellarCreatePassiveSellOfferOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarCreatePassiveSellOfferOp {
    const NAME: &'static str = "StellarCreatePassiveSellOfferOp";

    fn is_initialized(&self) -> bool {
        if self.selling_asset.is_none() {
            return false;
        }
        if self.buying_asset.is_none() {
            return false;
        }
        if self.amount.is_none() {
            return false;
        }
        if self.price_n.is_none() {
            return false;
        }
        if self.price_d.is_none() {
            return false;
        }
        for v in &self.selling_asset {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.buying_asset {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.selling_asset)?;
                },
                26 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.buying_asset)?;
                },
                32 => {
                    self.amount = ::std::option::Option::Some(is.read_sint64()?);
                },
                40 => {
                    self.price_n = ::std::option::Option::Some(is.read_uint32()?);
                },
                48 => {
                    self.price_d = ::std::option::Option::Some(is.read_uint32()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.selling_asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.buying_asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.amount {
            my_size += ::protobuf::rt::sint64_size(4, v);
        }
        if let Some(v) = self.price_n {
            my_size += ::protobuf::rt::uint32_size(5, v);
        }
        if let Some(v) = self.price_d {
            my_size += ::protobuf::rt::uint32_size(6, v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.selling_asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
        }
        if let Some(v) = self.buying_asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
        }
        if let Some(v) = self.amount {
            os.write_sint64(4, v)?;
        }
        if let Some(v) = self.price_n {
            os.write_uint32(5, v)?;
        }
        if let Some(v) = self.price_d {
            os.write_uint32(6, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarCreatePassiveSellOfferOp {
        StellarCreatePassiveSellOfferOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.selling_asset.clear();
        self.buying_asset.clear();
        self.amount = ::std::option::Option::None;
        self.price_n = ::std::option::Option::None;
        self.price_d = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarCreatePassiveSellOfferOp {
        static instance: StellarCreatePassiveSellOfferOp = StellarCreatePassiveSellOfferOp {
            source_account: ::std::option::Option::None,
            selling_asset: ::protobuf::MessageField::none(),
            buying_asset: ::protobuf::MessageField::none(),
            amount: ::std::option::Option::None,
            price_n: ::std::option::Option::None,
            price_d: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarCreatePassiveSellOfferOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarCreatePassiveSellOfferOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarCreatePassiveSellOfferOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarCreatePassiveSellOfferOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarSetOptionsOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarSetOptionsOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.inflation_destination_account)
    pub inflation_destination_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.clear_flags)
    pub clear_flags: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.set_flags)
    pub set_flags: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.master_weight)
    pub master_weight: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.low_threshold)
    pub low_threshold: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.medium_threshold)
    pub medium_threshold: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.high_threshold)
    pub high_threshold: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.home_domain)
    pub home_domain: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.signer_type)
    pub signer_type: ::std::option::Option<::protobuf::EnumOrUnknown<stellar_set_options_op::StellarSignerType>>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.signer_key)
    pub signer_key: ::std::option::Option<::std::vec::Vec<u8>>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSetOptionsOp.signer_weight)
    pub signer_weight: ::std::option::Option<u32>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarSetOptionsOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarSetOptionsOp {
    fn default() -> &'a StellarSetOptionsOp {
        <StellarSetOptionsOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarSetOptionsOp {
    pub fn new() -> StellarSetOptionsOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional string inflation_destination_account = 2;

    pub fn inflation_destination_account(&self) -> &str {
        match self.inflation_destination_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_inflation_destination_account(&mut self) {
        self.inflation_destination_account = ::std::option::Option::None;
    }

    pub fn has_inflation_destination_account(&self) -> bool {
        self.inflation_destination_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_inflation_destination_account(&mut self, v: ::std::string::String) {
        self.inflation_destination_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_inflation_destination_account(&mut self) -> &mut ::std::string::String {
        if self.inflation_destination_account.is_none() {
            self.inflation_destination_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.inflation_destination_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_inflation_destination_account(&mut self) -> ::std::string::String {
        self.inflation_destination_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional uint32 clear_flags = 3;

    pub fn clear_flags(&self) -> u32 {
        self.clear_flags.unwrap_or(0)
    }

    pub fn clear_clear_flags(&mut self) {
        self.clear_flags = ::std::option::Option::None;
    }

    pub fn has_clear_flags(&self) -> bool {
        self.clear_flags.is_some()
    }

    // Param is passed by value, moved
    pub fn set_clear_flags(&mut self, v: u32) {
        self.clear_flags = ::std::option::Option::Some(v);
    }

    // optional uint32 set_flags = 4;

    pub fn set_flags(&self) -> u32 {
        self.set_flags.unwrap_or(0)
    }

    pub fn clear_set_flags(&mut self) {
        self.set_flags = ::std::option::Option::None;
    }

    pub fn has_set_flags(&self) -> bool {
        self.set_flags.is_some()
    }

    // Param is passed by value, moved
    pub fn set_set_flags(&mut self, v: u32) {
        self.set_flags = ::std::option::Option::Some(v);
    }

    // optional uint32 master_weight = 5;

    pub fn master_weight(&self) -> u32 {
        self.master_weight.unwrap_or(0)
    }

    pub fn clear_master_weight(&mut self) {
        self.master_weight = ::std::option::Option::None;
    }

    pub fn has_master_weight(&self) -> bool {
        self.master_weight.is_some()
    }

    // Param is passed by value, moved
    pub fn set_master_weight(&mut self, v: u32) {
        self.master_weight = ::std::option::Option::Some(v);
    }

    // optional uint32 low_threshold = 6;

    pub fn low_threshold(&self) -> u32 {
        self.low_threshold.unwrap_or(0)
    }

    pub fn clear_low_threshold(&mut self) {
        self.low_threshold = ::std::option::Option::None;
    }

    pub fn has_low_threshold(&self) -> bool {
        self.low_threshold.is_some()
    }

    // Param is passed by value, moved
    pub fn set_low_threshold(&mut self, v: u32) {
        self.low_threshold = ::std::option::Option::Some(v);
    }

    // optional uint32 medium_threshold = 7;

    pub fn medium_threshold(&self) -> u32 {
        self.medium_threshold.unwrap_or(0)
    }

    pub fn clear_medium_threshold(&mut self) {
        self.medium_threshold = ::std::option::Option::None;
    }

    pub fn has_medium_threshold(&self) -> bool {
        self.medium_threshold.is_some()
    }

    // Param is passed by value, moved
    pub fn set_medium_threshold(&mut self, v: u32) {
        self.medium_threshold = ::std::option::Option::Some(v);
    }

    // optional uint32 high_threshold = 8;

    pub fn high_threshold(&self) -> u32 {
        self.high_threshold.unwrap_or(0)
    }

    pub fn clear_high_threshold(&mut self) {
        self.high_threshold = ::std::option::Option::None;
    }

    pub fn has_high_threshold(&self) -> bool {
        self.high_threshold.is_some()
    }

    // Param is passed by value, moved
    pub fn set_high_threshold(&mut self, v: u32) {
        self.high_threshold = ::std::option::Option::Some(v);
    }

    // optional string home_domain = 9;

    pub fn home_domain(&self) -> &str {
        match self.home_domain.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_home_domain(&mut self) {
        self.home_domain = ::std::option::Option::None;
    }

    pub fn has_home_domain(&self) -> bool {
        self.home_domain.is_some()
    }

    // Param is passed by value, moved
    pub fn set_home_domain(&mut self, v: ::std::string::String) {
        self.home_domain = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_home_domain(&mut self) -> &mut ::std::string::String {
        if self.home_domain.is_none() {
            self.home_domain = ::std::option::Option::Some(::std::string::String::new());
        }
        self.home_domain.as_mut().unwrap()
    }

    // Take field
    pub fn take_home_domain(&mut self) -> ::std::string::String {
        self.home_domain.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional .hw.trezor.messages.stellar.StellarSetOptionsOp.StellarSignerType signer_type = 10;

    pub fn signer_type(&self) -> stellar_set_options_op::StellarSignerType {
        match self.signer_type {
            Some(e) => e.enum_value_or(stellar_set_options_op::StellarSignerType::ACCOUNT),
            None => stellar_set_options_op::StellarSignerType::ACCOUNT,
        }
    }

    pub fn clear_signer_type(&mut self) {
        self.signer_type = ::std::option::Option::None;
    }

    pub fn has_signer_type(&self) -> bool {
        self.signer_type.is_some()
    }

    // Param is passed by value, moved
    pub fn set_signer_type(&mut self, v: stellar_set_options_op::StellarSignerType) {
        self.signer_type = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
    }

    // optional bytes signer_key = 11;

    pub fn signer_key(&self) -> &[u8] {
        match self.signer_key.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_signer_key(&mut self) {
        self.signer_key = ::std::option::Option::None;
    }

    pub fn has_signer_key(&self) -> bool {
        self.signer_key.is_some()
    }

    // Param is passed by value, moved
    pub fn set_signer_key(&mut self, v: ::std::vec::Vec<u8>) {
        self.signer_key = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_signer_key(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.signer_key.is_none() {
            self.signer_key = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.signer_key.as_mut().unwrap()
    }

    // Take field
    pub fn take_signer_key(&mut self) -> ::std::vec::Vec<u8> {
        self.signer_key.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    // optional uint32 signer_weight = 12;

    pub fn signer_weight(&self) -> u32 {
        self.signer_weight.unwrap_or(0)
    }

    pub fn clear_signer_weight(&mut self) {
        self.signer_weight = ::std::option::Option::None;
    }

    pub fn has_signer_weight(&self) -> bool {
        self.signer_weight.is_some()
    }

    // Param is passed by value, moved
    pub fn set_signer_weight(&mut self, v: u32) {
        self.signer_weight = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(12);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarSetOptionsOp| { &m.source_account },
            |m: &mut StellarSetOptionsOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "inflation_destination_account",
            |m: &StellarSetOptionsOp| { &m.inflation_destination_account },
            |m: &mut StellarSetOptionsOp| { &mut m.inflation_destination_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "clear_flags",
            |m: &StellarSetOptionsOp| { &m.clear_flags },
            |m: &mut StellarSetOptionsOp| { &mut m.clear_flags },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "set_flags",
            |m: &StellarSetOptionsOp| { &m.set_flags },
            |m: &mut StellarSetOptionsOp| { &mut m.set_flags },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "master_weight",
            |m: &StellarSetOptionsOp| { &m.master_weight },
            |m: &mut StellarSetOptionsOp| { &mut m.master_weight },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "low_threshold",
            |m: &StellarSetOptionsOp| { &m.low_threshold },
            |m: &mut StellarSetOptionsOp| { &mut m.low_threshold },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "medium_threshold",
            |m: &StellarSetOptionsOp| { &m.medium_threshold },
            |m: &mut StellarSetOptionsOp| { &mut m.medium_threshold },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "high_threshold",
            |m: &StellarSetOptionsOp| { &m.high_threshold },
            |m: &mut StellarSetOptionsOp| { &mut m.high_threshold },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "home_domain",
            |m: &StellarSetOptionsOp| { &m.home_domain },
            |m: &mut StellarSetOptionsOp| { &mut m.home_domain },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "signer_type",
            |m: &StellarSetOptionsOp| { &m.signer_type },
            |m: &mut StellarSetOptionsOp| { &mut m.signer_type },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "signer_key",
            |m: &StellarSetOptionsOp| { &m.signer_key },
            |m: &mut StellarSetOptionsOp| { &mut m.signer_key },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "signer_weight",
            |m: &StellarSetOptionsOp| { &m.signer_weight },
            |m: &mut StellarSetOptionsOp| { &mut m.signer_weight },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarSetOptionsOp>(
            "StellarSetOptionsOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarSetOptionsOp {
    const NAME: &'static str = "StellarSetOptionsOp";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    self.inflation_destination_account = ::std::option::Option::Some(is.read_string()?);
                },
                24 => {
                    self.clear_flags = ::std::option::Option::Some(is.read_uint32()?);
                },
                32 => {
                    self.set_flags = ::std::option::Option::Some(is.read_uint32()?);
                },
                40 => {
                    self.master_weight = ::std::option::Option::Some(is.read_uint32()?);
                },
                48 => {
                    self.low_threshold = ::std::option::Option::Some(is.read_uint32()?);
                },
                56 => {
                    self.medium_threshold = ::std::option::Option::Some(is.read_uint32()?);
                },
                64 => {
                    self.high_threshold = ::std::option::Option::Some(is.read_uint32()?);
                },
                74 => {
                    self.home_domain = ::std::option::Option::Some(is.read_string()?);
                },
                80 => {
                    self.signer_type = ::std::option::Option::Some(is.read_enum_or_unknown()?);
                },
                90 => {
                    self.signer_key = ::std::option::Option::Some(is.read_bytes()?);
                },
                96 => {
                    self.signer_weight = ::std::option::Option::Some(is.read_uint32()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.inflation_destination_account.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        if let Some(v) = self.clear_flags {
            my_size += ::protobuf::rt::uint32_size(3, v);
        }
        if let Some(v) = self.set_flags {
            my_size += ::protobuf::rt::uint32_size(4, v);
        }
        if let Some(v) = self.master_weight {
            my_size += ::protobuf::rt::uint32_size(5, v);
        }
        if let Some(v) = self.low_threshold {
            my_size += ::protobuf::rt::uint32_size(6, v);
        }
        if let Some(v) = self.medium_threshold {
            my_size += ::protobuf::rt::uint32_size(7, v);
        }
        if let Some(v) = self.high_threshold {
            my_size += ::protobuf::rt::uint32_size(8, v);
        }
        if let Some(v) = self.home_domain.as_ref() {
            my_size += ::protobuf::rt::string_size(9, &v);
        }
        if let Some(v) = self.signer_type {
            my_size += ::protobuf::rt::int32_size(10, v.value());
        }
        if let Some(v) = self.signer_key.as_ref() {
            my_size += ::protobuf::rt::bytes_size(11, &v);
        }
        if let Some(v) = self.signer_weight {
            my_size += ::protobuf::rt::uint32_size(12, v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.inflation_destination_account.as_ref() {
            os.write_string(2, v)?;
        }
        if let Some(v) = self.clear_flags {
            os.write_uint32(3, v)?;
        }
        if let Some(v) = self.set_flags {
            os.write_uint32(4, v)?;
        }
        if let Some(v) = self.master_weight {
            os.write_uint32(5, v)?;
        }
        if let Some(v) = self.low_threshold {
            os.write_uint32(6, v)?;
        }
        if let Some(v) = self.medium_threshold {
            os.write_uint32(7, v)?;
        }
        if let Some(v) = self.high_threshold {
            os.write_uint32(8, v)?;
        }
        if let Some(v) = self.home_domain.as_ref() {
            os.write_string(9, v)?;
        }
        if let Some(v) = self.signer_type {
            os.write_enum(10, ::protobuf::EnumOrUnknown::value(&v))?;
        }
        if let Some(v) = self.signer_key.as_ref() {
            os.write_bytes(11, v)?;
        }
        if let Some(v) = self.signer_weight {
            os.write_uint32(12, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarSetOptionsOp {
        StellarSetOptionsOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.inflation_destination_account = ::std::option::Option::None;
        self.clear_flags = ::std::option::Option::None;
        self.set_flags = ::std::option::Option::None;
        self.master_weight = ::std::option::Option::None;
        self.low_threshold = ::std::option::Option::None;
        self.medium_threshold = ::std::option::Option::None;
        self.high_threshold = ::std::option::Option::None;
        self.home_domain = ::std::option::Option::None;
        self.signer_type = ::std::option::Option::None;
        self.signer_key = ::std::option::Option::None;
        self.signer_weight = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarSetOptionsOp {
        static instance: StellarSetOptionsOp = StellarSetOptionsOp {
            source_account: ::std::option::Option::None,
            inflation_destination_account: ::std::option::Option::None,
            clear_flags: ::std::option::Option::None,
            set_flags: ::std::option::Option::None,
            master_weight: ::std::option::Option::None,
            low_threshold: ::std::option::Option::None,
            medium_threshold: ::std::option::Option::None,
            high_threshold: ::std::option::Option::None,
            home_domain: ::std::option::Option::None,
            signer_type: ::std::option::Option::None,
            signer_key: ::std::option::Option::None,
            signer_weight: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarSetOptionsOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarSetOptionsOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarSetOptionsOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarSetOptionsOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

/// Nested message and enums of message `StellarSetOptionsOp`
pub mod stellar_set_options_op {
    #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
    // @@protoc_insertion_point(enum:hw.trezor.messages.stellar.StellarSetOptionsOp.StellarSignerType)
    pub enum StellarSignerType {
        // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarSetOptionsOp.StellarSignerType.ACCOUNT)
        ACCOUNT = 0,
        // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarSetOptionsOp.StellarSignerType.PRE_AUTH)
        PRE_AUTH = 1,
        // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarSetOptionsOp.StellarSignerType.HASH)
        HASH = 2,
    }

    impl ::protobuf::Enum for StellarSignerType {
        const NAME: &'static str = "StellarSignerType";

        fn value(&self) -> i32 {
            *self as i32
        }

        fn from_i32(value: i32) -> ::std::option::Option<StellarSignerType> {
            match value {
                0 => ::std::option::Option::Some(StellarSignerType::ACCOUNT),
                1 => ::std::option::Option::Some(StellarSignerType::PRE_AUTH),
                2 => ::std::option::Option::Some(StellarSignerType::HASH),
                _ => ::std::option::Option::None
            }
        }

        fn from_str(str: &str) -> ::std::option::Option<StellarSignerType> {
            match str {
                "ACCOUNT" => ::std::option::Option::Some(StellarSignerType::ACCOUNT),
                "PRE_AUTH" => ::std::option::Option::Some(StellarSignerType::PRE_AUTH),
                "HASH" => ::std::option::Option::Some(StellarSignerType::HASH),
                _ => ::std::option::Option::None
            }
        }

        const VALUES: &'static [StellarSignerType] = &[
            StellarSignerType::ACCOUNT,
            StellarSignerType::PRE_AUTH,
            StellarSignerType::HASH,
        ];
    }

    impl ::protobuf::EnumFull for StellarSignerType {
        fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
            static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
            descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("StellarSetOptionsOp.StellarSignerType").unwrap()).clone()
        }

        fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
            let index = *self as usize;
            Self::enum_descriptor().value_by_index(index)
        }
    }

    impl ::std::default::Default for StellarSignerType {
        fn default() -> Self {
            StellarSignerType::ACCOUNT
        }
    }

    impl StellarSignerType {
        pub(in super) fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
            ::protobuf::reflect::GeneratedEnumDescriptorData::new::<StellarSignerType>("StellarSetOptionsOp.StellarSignerType")
        }
    }
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarChangeTrustOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarChangeTrustOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarChangeTrustOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarChangeTrustOp.asset)
    pub asset: ::protobuf::MessageField<StellarAsset>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarChangeTrustOp.limit)
    pub limit: ::std::option::Option<u64>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarChangeTrustOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarChangeTrustOp {
    fn default() -> &'a StellarChangeTrustOp {
        <StellarChangeTrustOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarChangeTrustOp {
    pub fn new() -> StellarChangeTrustOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required uint64 limit = 3;

    pub fn limit(&self) -> u64 {
        self.limit.unwrap_or(0)
    }

    pub fn clear_limit(&mut self) {
        self.limit = ::std::option::Option::None;
    }

    pub fn has_limit(&self) -> bool {
        self.limit.is_some()
    }

    // Param is passed by value, moved
    pub fn set_limit(&mut self, v: u64) {
        self.limit = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(3);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarChangeTrustOp| { &m.source_account },
            |m: &mut StellarChangeTrustOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, StellarAsset>(
            "asset",
            |m: &StellarChangeTrustOp| { &m.asset },
            |m: &mut StellarChangeTrustOp| { &mut m.asset },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "limit",
            |m: &StellarChangeTrustOp| { &m.limit },
            |m: &mut StellarChangeTrustOp| { &mut m.limit },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarChangeTrustOp>(
            "StellarChangeTrustOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarChangeTrustOp {
    const NAME: &'static str = "StellarChangeTrustOp";

    fn is_initialized(&self) -> bool {
        if self.asset.is_none() {
            return false;
        }
        if self.limit.is_none() {
            return false;
        }
        for v in &self.asset {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.asset)?;
                },
                24 => {
                    self.limit = ::std::option::Option::Some(is.read_uint64()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.asset.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.limit {
            my_size += ::protobuf::rt::uint64_size(3, v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.asset.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
        }
        if let Some(v) = self.limit {
            os.write_uint64(3, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarChangeTrustOp {
        StellarChangeTrustOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.asset.clear();
        self.limit = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarChangeTrustOp {
        static instance: StellarChangeTrustOp = StellarChangeTrustOp {
            source_account: ::std::option::Option::None,
            asset: ::protobuf::MessageField::none(),
            limit: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarChangeTrustOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarChangeTrustOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarChangeTrustOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarChangeTrustOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarAllowTrustOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarAllowTrustOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarAllowTrustOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarAllowTrustOp.trusted_account)
    pub trusted_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarAllowTrustOp.asset_type)
    pub asset_type: ::std::option::Option<::protobuf::EnumOrUnknown<StellarAssetType>>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarAllowTrustOp.asset_code)
    pub asset_code: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarAllowTrustOp.is_authorized)
    pub is_authorized: ::std::option::Option<bool>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarAllowTrustOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarAllowTrustOp {
    fn default() -> &'a StellarAllowTrustOp {
        <StellarAllowTrustOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarAllowTrustOp {
    pub fn new() -> StellarAllowTrustOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required string trusted_account = 2;

    pub fn trusted_account(&self) -> &str {
        match self.trusted_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_trusted_account(&mut self) {
        self.trusted_account = ::std::option::Option::None;
    }

    pub fn has_trusted_account(&self) -> bool {
        self.trusted_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_trusted_account(&mut self, v: ::std::string::String) {
        self.trusted_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_trusted_account(&mut self) -> &mut ::std::string::String {
        if self.trusted_account.is_none() {
            self.trusted_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.trusted_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_trusted_account(&mut self) -> ::std::string::String {
        self.trusted_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required .hw.trezor.messages.stellar.StellarAssetType asset_type = 3;

    pub fn asset_type(&self) -> StellarAssetType {
        match self.asset_type {
            Some(e) => e.enum_value_or(StellarAssetType::NATIVE),
            None => StellarAssetType::NATIVE,
        }
    }

    pub fn clear_asset_type(&mut self) {
        self.asset_type = ::std::option::Option::None;
    }

    pub fn has_asset_type(&self) -> bool {
        self.asset_type.is_some()
    }

    // Param is passed by value, moved
    pub fn set_asset_type(&mut self, v: StellarAssetType) {
        self.asset_type = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
    }

    // optional string asset_code = 4;

    pub fn asset_code(&self) -> &str {
        match self.asset_code.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_asset_code(&mut self) {
        self.asset_code = ::std::option::Option::None;
    }

    pub fn has_asset_code(&self) -> bool {
        self.asset_code.is_some()
    }

    // Param is passed by value, moved
    pub fn set_asset_code(&mut self, v: ::std::string::String) {
        self.asset_code = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_asset_code(&mut self) -> &mut ::std::string::String {
        if self.asset_code.is_none() {
            self.asset_code = ::std::option::Option::Some(::std::string::String::new());
        }
        self.asset_code.as_mut().unwrap()
    }

    // Take field
    pub fn take_asset_code(&mut self) -> ::std::string::String {
        self.asset_code.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required bool is_authorized = 5;

    pub fn is_authorized(&self) -> bool {
        self.is_authorized.unwrap_or(false)
    }

    pub fn clear_is_authorized(&mut self) {
        self.is_authorized = ::std::option::Option::None;
    }

    pub fn has_is_authorized(&self) -> bool {
        self.is_authorized.is_some()
    }

    // Param is passed by value, moved
    pub fn set_is_authorized(&mut self, v: bool) {
        self.is_authorized = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(5);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarAllowTrustOp| { &m.source_account },
            |m: &mut StellarAllowTrustOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "trusted_account",
            |m: &StellarAllowTrustOp| { &m.trusted_account },
            |m: &mut StellarAllowTrustOp| { &mut m.trusted_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "asset_type",
            |m: &StellarAllowTrustOp| { &m.asset_type },
            |m: &mut StellarAllowTrustOp| { &mut m.asset_type },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "asset_code",
            |m: &StellarAllowTrustOp| { &m.asset_code },
            |m: &mut StellarAllowTrustOp| { &mut m.asset_code },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "is_authorized",
            |m: &StellarAllowTrustOp| { &m.is_authorized },
            |m: &mut StellarAllowTrustOp| { &mut m.is_authorized },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarAllowTrustOp>(
            "StellarAllowTrustOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarAllowTrustOp {
    const NAME: &'static str = "StellarAllowTrustOp";

    fn is_initialized(&self) -> bool {
        if self.trusted_account.is_none() {
            return false;
        }
        if self.asset_type.is_none() {
            return false;
        }
        if self.is_authorized.is_none() {
            return false;
        }
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    self.trusted_account = ::std::option::Option::Some(is.read_string()?);
                },
                24 => {
                    self.asset_type = ::std::option::Option::Some(is.read_enum_or_unknown()?);
                },
                34 => {
                    self.asset_code = ::std::option::Option::Some(is.read_string()?);
                },
                40 => {
                    self.is_authorized = ::std::option::Option::Some(is.read_bool()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.trusted_account.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        if let Some(v) = self.asset_type {
            my_size += ::protobuf::rt::int32_size(3, v.value());
        }
        if let Some(v) = self.asset_code.as_ref() {
            my_size += ::protobuf::rt::string_size(4, &v);
        }
        if let Some(v) = self.is_authorized {
            my_size += 1 + 1;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.trusted_account.as_ref() {
            os.write_string(2, v)?;
        }
        if let Some(v) = self.asset_type {
            os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?;
        }
        if let Some(v) = self.asset_code.as_ref() {
            os.write_string(4, v)?;
        }
        if let Some(v) = self.is_authorized {
            os.write_bool(5, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarAllowTrustOp {
        StellarAllowTrustOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.trusted_account = ::std::option::Option::None;
        self.asset_type = ::std::option::Option::None;
        self.asset_code = ::std::option::Option::None;
        self.is_authorized = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarAllowTrustOp {
        static instance: StellarAllowTrustOp = StellarAllowTrustOp {
            source_account: ::std::option::Option::None,
            trusted_account: ::std::option::Option::None,
            asset_type: ::std::option::Option::None,
            asset_code: ::std::option::Option::None,
            is_authorized: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarAllowTrustOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarAllowTrustOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarAllowTrustOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarAllowTrustOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarAccountMergeOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarAccountMergeOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarAccountMergeOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarAccountMergeOp.destination_account)
    pub destination_account: ::std::option::Option<::std::string::String>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarAccountMergeOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarAccountMergeOp {
    fn default() -> &'a StellarAccountMergeOp {
        <StellarAccountMergeOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarAccountMergeOp {
    pub fn new() -> StellarAccountMergeOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required string destination_account = 2;

    pub fn destination_account(&self) -> &str {
        match self.destination_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_destination_account(&mut self) {
        self.destination_account = ::std::option::Option::None;
    }

    pub fn has_destination_account(&self) -> bool {
        self.destination_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_destination_account(&mut self, v: ::std::string::String) {
        self.destination_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_destination_account(&mut self) -> &mut ::std::string::String {
        if self.destination_account.is_none() {
            self.destination_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.destination_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_destination_account(&mut self) -> ::std::string::String {
        self.destination_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(2);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarAccountMergeOp| { &m.source_account },
            |m: &mut StellarAccountMergeOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "destination_account",
            |m: &StellarAccountMergeOp| { &m.destination_account },
            |m: &mut StellarAccountMergeOp| { &mut m.destination_account },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarAccountMergeOp>(
            "StellarAccountMergeOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarAccountMergeOp {
    const NAME: &'static str = "StellarAccountMergeOp";

    fn is_initialized(&self) -> bool {
        if self.destination_account.is_none() {
            return false;
        }
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    self.destination_account = ::std::option::Option::Some(is.read_string()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.destination_account.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.destination_account.as_ref() {
            os.write_string(2, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarAccountMergeOp {
        StellarAccountMergeOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.destination_account = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarAccountMergeOp {
        static instance: StellarAccountMergeOp = StellarAccountMergeOp {
            source_account: ::std::option::Option::None,
            destination_account: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarAccountMergeOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarAccountMergeOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarAccountMergeOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarAccountMergeOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarManageDataOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarManageDataOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageDataOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageDataOp.key)
    pub key: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarManageDataOp.value)
    pub value: ::std::option::Option<::std::vec::Vec<u8>>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarManageDataOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarManageDataOp {
    fn default() -> &'a StellarManageDataOp {
        <StellarManageDataOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarManageDataOp {
    pub fn new() -> StellarManageDataOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required string key = 2;

    pub fn key(&self) -> &str {
        match self.key.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_key(&mut self) {
        self.key = ::std::option::Option::None;
    }

    pub fn has_key(&self) -> bool {
        self.key.is_some()
    }

    // Param is passed by value, moved
    pub fn set_key(&mut self, v: ::std::string::String) {
        self.key = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_key(&mut self) -> &mut ::std::string::String {
        if self.key.is_none() {
            self.key = ::std::option::Option::Some(::std::string::String::new());
        }
        self.key.as_mut().unwrap()
    }

    // Take field
    pub fn take_key(&mut self) -> ::std::string::String {
        self.key.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional bytes value = 3;

    pub fn value(&self) -> &[u8] {
        match self.value.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_value(&mut self) {
        self.value = ::std::option::Option::None;
    }

    pub fn has_value(&self) -> bool {
        self.value.is_some()
    }

    // Param is passed by value, moved
    pub fn set_value(&mut self, v: ::std::vec::Vec<u8>) {
        self.value = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_value(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.value.is_none() {
            self.value = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.value.as_mut().unwrap()
    }

    // Take field
    pub fn take_value(&mut self) -> ::std::vec::Vec<u8> {
        self.value.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(3);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarManageDataOp| { &m.source_account },
            |m: &mut StellarManageDataOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "key",
            |m: &StellarManageDataOp| { &m.key },
            |m: &mut StellarManageDataOp| { &mut m.key },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "value",
            |m: &StellarManageDataOp| { &m.value },
            |m: &mut StellarManageDataOp| { &mut m.value },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarManageDataOp>(
            "StellarManageDataOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarManageDataOp {
    const NAME: &'static str = "StellarManageDataOp";

    fn is_initialized(&self) -> bool {
        if self.key.is_none() {
            return false;
        }
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    self.key = ::std::option::Option::Some(is.read_string()?);
                },
                26 => {
                    self.value = ::std::option::Option::Some(is.read_bytes()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.key.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        if let Some(v) = self.value.as_ref() {
            my_size += ::protobuf::rt::bytes_size(3, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.key.as_ref() {
            os.write_string(2, v)?;
        }
        if let Some(v) = self.value.as_ref() {
            os.write_bytes(3, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarManageDataOp {
        StellarManageDataOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.key = ::std::option::Option::None;
        self.value = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarManageDataOp {
        static instance: StellarManageDataOp = StellarManageDataOp {
            source_account: ::std::option::Option::None,
            key: ::std::option::Option::None,
            value: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarManageDataOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarManageDataOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarManageDataOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarManageDataOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarBumpSequenceOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarBumpSequenceOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarBumpSequenceOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarBumpSequenceOp.bump_to)
    pub bump_to: ::std::option::Option<u64>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarBumpSequenceOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarBumpSequenceOp {
    fn default() -> &'a StellarBumpSequenceOp {
        <StellarBumpSequenceOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarBumpSequenceOp {
    pub fn new() -> StellarBumpSequenceOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required uint64 bump_to = 2;

    pub fn bump_to(&self) -> u64 {
        self.bump_to.unwrap_or(0)
    }

    pub fn clear_bump_to(&mut self) {
        self.bump_to = ::std::option::Option::None;
    }

    pub fn has_bump_to(&self) -> bool {
        self.bump_to.is_some()
    }

    // Param is passed by value, moved
    pub fn set_bump_to(&mut self, v: u64) {
        self.bump_to = ::std::option::Option::Some(v);
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(2);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarBumpSequenceOp| { &m.source_account },
            |m: &mut StellarBumpSequenceOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "bump_to",
            |m: &StellarBumpSequenceOp| { &m.bump_to },
            |m: &mut StellarBumpSequenceOp| { &mut m.bump_to },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarBumpSequenceOp>(
            "StellarBumpSequenceOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarBumpSequenceOp {
    const NAME: &'static str = "StellarBumpSequenceOp";

    fn is_initialized(&self) -> bool {
        if self.bump_to.is_none() {
            return false;
        }
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                16 => {
                    self.bump_to = ::std::option::Option::Some(is.read_uint64()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.bump_to {
            my_size += ::protobuf::rt::uint64_size(2, v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.bump_to {
            os.write_uint64(2, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarBumpSequenceOp {
        StellarBumpSequenceOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.bump_to = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarBumpSequenceOp {
        static instance: StellarBumpSequenceOp = StellarBumpSequenceOp {
            source_account: ::std::option::Option::None,
            bump_to: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarBumpSequenceOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarBumpSequenceOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarBumpSequenceOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarBumpSequenceOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarClaimClaimableBalanceOp)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarClaimClaimableBalanceOp {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarClaimClaimableBalanceOp.source_account)
    pub source_account: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarClaimClaimableBalanceOp.balance_id)
    pub balance_id: ::std::option::Option<::std::vec::Vec<u8>>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarClaimClaimableBalanceOp.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarClaimClaimableBalanceOp {
    fn default() -> &'a StellarClaimClaimableBalanceOp {
        <StellarClaimClaimableBalanceOp as ::protobuf::Message>::default_instance()
    }
}

impl StellarClaimClaimableBalanceOp {
    pub fn new() -> StellarClaimClaimableBalanceOp {
        ::std::default::Default::default()
    }

    // optional string source_account = 1;

    pub fn source_account(&self) -> &str {
        match self.source_account.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_source_account(&mut self) {
        self.source_account = ::std::option::Option::None;
    }

    pub fn has_source_account(&self) -> bool {
        self.source_account.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_account(&mut self, v: ::std::string::String) {
        self.source_account = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_account(&mut self) -> &mut ::std::string::String {
        if self.source_account.is_none() {
            self.source_account = ::std::option::Option::Some(::std::string::String::new());
        }
        self.source_account.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_account(&mut self) -> ::std::string::String {
        self.source_account.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // required bytes balance_id = 2;

    pub fn balance_id(&self) -> &[u8] {
        match self.balance_id.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_balance_id(&mut self) {
        self.balance_id = ::std::option::Option::None;
    }

    pub fn has_balance_id(&self) -> bool {
        self.balance_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_balance_id(&mut self, v: ::std::vec::Vec<u8>) {
        self.balance_id = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_balance_id(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.balance_id.is_none() {
            self.balance_id = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.balance_id.as_mut().unwrap()
    }

    // Take field
    pub fn take_balance_id(&mut self) -> ::std::vec::Vec<u8> {
        self.balance_id.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(2);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "source_account",
            |m: &StellarClaimClaimableBalanceOp| { &m.source_account },
            |m: &mut StellarClaimClaimableBalanceOp| { &mut m.source_account },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "balance_id",
            |m: &StellarClaimClaimableBalanceOp| { &m.balance_id },
            |m: &mut StellarClaimClaimableBalanceOp| { &mut m.balance_id },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarClaimClaimableBalanceOp>(
            "StellarClaimClaimableBalanceOp",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarClaimClaimableBalanceOp {
    const NAME: &'static str = "StellarClaimClaimableBalanceOp";

    fn is_initialized(&self) -> bool {
        if self.balance_id.is_none() {
            return false;
        }
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.source_account = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    self.balance_id = ::std::option::Option::Some(is.read_bytes()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.source_account.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        if let Some(v) = self.balance_id.as_ref() {
            my_size += ::protobuf::rt::bytes_size(2, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.source_account.as_ref() {
            os.write_string(1, v)?;
        }
        if let Some(v) = self.balance_id.as_ref() {
            os.write_bytes(2, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarClaimClaimableBalanceOp {
        StellarClaimClaimableBalanceOp::new()
    }

    fn clear(&mut self) {
        self.source_account = ::std::option::Option::None;
        self.balance_id = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarClaimClaimableBalanceOp {
        static instance: StellarClaimClaimableBalanceOp = StellarClaimClaimableBalanceOp {
            source_account: ::std::option::Option::None,
            balance_id: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarClaimClaimableBalanceOp {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarClaimClaimableBalanceOp").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarClaimClaimableBalanceOp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarClaimClaimableBalanceOp {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarSignedTx)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarSignedTx {
    // message fields
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignedTx.public_key)
    pub public_key: ::std::option::Option<::std::vec::Vec<u8>>,
    // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignedTx.signature)
    pub signature: ::std::option::Option<::std::vec::Vec<u8>>,
    // special fields
    // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarSignedTx.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a StellarSignedTx {
    fn default() -> &'a StellarSignedTx {
        <StellarSignedTx as ::protobuf::Message>::default_instance()
    }
}

impl StellarSignedTx {
    pub fn new() -> StellarSignedTx {
        ::std::default::Default::default()
    }

    // required bytes public_key = 1;

    pub fn public_key(&self) -> &[u8] {
        match self.public_key.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_public_key(&mut self) {
        self.public_key = ::std::option::Option::None;
    }

    pub fn has_public_key(&self) -> bool {
        self.public_key.is_some()
    }

    // Param is passed by value, moved
    pub fn set_public_key(&mut self, v: ::std::vec::Vec<u8>) {
        self.public_key = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_public_key(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.public_key.is_none() {
            self.public_key = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.public_key.as_mut().unwrap()
    }

    // Take field
    pub fn take_public_key(&mut self) -> ::std::vec::Vec<u8> {
        self.public_key.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    // required bytes signature = 2;

    pub fn signature(&self) -> &[u8] {
        match self.signature.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_signature(&mut self) {
        self.signature = ::std::option::Option::None;
    }

    pub fn has_signature(&self) -> bool {
        self.signature.is_some()
    }

    // Param is passed by value, moved
    pub fn set_signature(&mut self, v: ::std::vec::Vec<u8>) {
        self.signature = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_signature(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.signature.is_none() {
            self.signature = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.signature.as_mut().unwrap()
    }

    // Take field
    pub fn take_signature(&mut self) -> ::std::vec::Vec<u8> {
        self.signature.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(2);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "public_key",
            |m: &StellarSignedTx| { &m.public_key },
            |m: &mut StellarSignedTx| { &mut m.public_key },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "signature",
            |m: &StellarSignedTx| { &m.signature },
            |m: &mut StellarSignedTx| { &mut m.signature },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarSignedTx>(
            "StellarSignedTx",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for StellarSignedTx {
    const NAME: &'static str = "StellarSignedTx";

    fn is_initialized(&self) -> bool {
        if self.public_key.is_none() {
            return false;
        }
        if self.signature.is_none() {
            return false;
        }
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.public_key = ::std::option::Option::Some(is.read_bytes()?);
                },
                18 => {
                    self.signature = ::std::option::Option::Some(is.read_bytes()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.public_key.as_ref() {
            my_size += ::protobuf::rt::bytes_size(1, &v);
        }
        if let Some(v) = self.signature.as_ref() {
            my_size += ::protobuf::rt::bytes_size(2, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.public_key.as_ref() {
            os.write_bytes(1, v)?;
        }
        if let Some(v) = self.signature.as_ref() {
            os.write_bytes(2, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> StellarSignedTx {
        StellarSignedTx::new()
    }

    fn clear(&mut self) {
        self.public_key = ::std::option::Option::None;
        self.signature = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static StellarSignedTx {
        static instance: StellarSignedTx = StellarSignedTx {
            public_key: ::std::option::Option::None,
            signature: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for StellarSignedTx {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("StellarSignedTx").unwrap()).clone()
    }
}

impl ::std::fmt::Display for StellarSignedTx {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StellarSignedTx {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:hw.trezor.messages.stellar.StellarAssetType)
pub enum StellarAssetType {
    // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarAssetType.NATIVE)
    NATIVE = 0,
    // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarAssetType.ALPHANUM4)
    ALPHANUM4 = 1,
    // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarAssetType.ALPHANUM12)
    ALPHANUM12 = 2,
}

impl ::protobuf::Enum for StellarAssetType {
    const NAME: &'static str = "StellarAssetType";

    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<StellarAssetType> {
        match value {
            0 => ::std::option::Option::Some(StellarAssetType::NATIVE),
            1 => ::std::option::Option::Some(StellarAssetType::ALPHANUM4),
            2 => ::std::option::Option::Some(StellarAssetType::ALPHANUM12),
            _ => ::std::option::Option::None
        }
    }

    fn from_str(str: &str) -> ::std::option::Option<StellarAssetType> {
        match str {
            "NATIVE" => ::std::option::Option::Some(StellarAssetType::NATIVE),
            "ALPHANUM4" => ::std::option::Option::Some(StellarAssetType::ALPHANUM4),
            "ALPHANUM12" => ::std::option::Option::Some(StellarAssetType::ALPHANUM12),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [StellarAssetType] = &[
        StellarAssetType::NATIVE,
        StellarAssetType::ALPHANUM4,
        StellarAssetType::ALPHANUM12,
    ];
}

impl ::protobuf::EnumFull for StellarAssetType {
    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().enum_by_package_relative_name("StellarAssetType").unwrap()).clone()
    }

    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
        let index = *self as usize;
        Self::enum_descriptor().value_by_index(index)
    }
}

impl ::std::default::Default for StellarAssetType {
    fn default() -> Self {
        StellarAssetType::NATIVE
    }
}

impl StellarAssetType {
    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<StellarAssetType>("StellarAssetType")
    }
}

static file_descriptor_proto_data: &'static [u8] = b"\
    \n\x16messages-stellar.proto\x12\x1ahw.trezor.messages.stellar\"|\n\x0cS\
    tellarAsset\x12@\n\x04type\x18\x01\x20\x02(\x0e2,.hw.trezor.messages.ste\
    llar.StellarAssetTypeR\x04type\x12\x12\n\x04code\x18\x02\x20\x01(\tR\x04\
    code\x12\x16\n\x06issuer\x18\x03\x20\x01(\tR\x06issuer\"o\n\x11StellarGe\
    tAddress\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12!\n\x0c\
    show_display\x18\x02\x20\x01(\x08R\x0bshowDisplay\x12\x1a\n\x08chunkify\
    \x18\x03\x20\x01(\x08R\x08chunkify\"*\n\x0eStellarAddress\x12\x18\n\x07a\
    ddress\x18\x01\x20\x02(\tR\x07address\"\xa6\x04\n\rStellarSignTx\x12\x1b\
    \n\taddress_n\x18\x02\x20\x03(\rR\x08addressN\x12-\n\x12network_passphra\
    se\x18\x03\x20\x02(\tR\x11networkPassphrase\x12%\n\x0esource_account\x18\
    \x04\x20\x02(\tR\rsourceAccount\x12\x10\n\x03fee\x18\x05\x20\x02(\rR\x03\
    fee\x12'\n\x0fsequence_number\x18\x06\x20\x02(\x04R\x0esequenceNumber\
    \x12)\n\x10timebounds_start\x18\x08\x20\x02(\rR\x0ftimeboundsStart\x12%\
    \n\x0etimebounds_end\x18\t\x20\x02(\rR\rtimeboundsEnd\x12V\n\tmemo_type\
    \x18\n\x20\x02(\x0e29.hw.trezor.messages.stellar.StellarSignTx.StellarMe\
    moTypeR\x08memoType\x12\x1b\n\tmemo_text\x18\x0b\x20\x01(\tR\x08memoText\
    \x12\x17\n\x07memo_id\x18\x0c\x20\x01(\x04R\x06memoId\x12\x1b\n\tmemo_ha\
    sh\x18\r\x20\x01(\x0cR\x08memoHash\x12%\n\x0enum_operations\x18\x0e\x20\
    \x02(\rR\rnumOperations\"C\n\x0fStellarMemoType\x12\x08\n\x04NONE\x10\0\
    \x12\x08\n\x04TEXT\x10\x01\x12\x06\n\x02ID\x10\x02\x12\x08\n\x04HASH\x10\
    \x03\x12\n\n\x06RETURN\x10\x04\"\x14\n\x12StellarTxOpRequest\"\xc2\x01\n\
    \x10StellarPaymentOp\x12%\n\x0esource_account\x18\x01\x20\x01(\tR\rsourc\
    eAccount\x12/\n\x13destination_account\x18\x02\x20\x02(\tR\x12destinatio\
    nAccount\x12>\n\x05asset\x18\x03\x20\x02(\x0b2(.hw.trezor.messages.stell\
    ar.StellarAssetR\x05asset\x12\x16\n\x06amount\x18\x04\x20\x02(\x12R\x06a\
    mount\"\x8b\x01\n\x16StellarCreateAccountOp\x12%\n\x0esource_account\x18\
    \x01\x20\x01(\tR\rsourceAccount\x12\x1f\n\x0bnew_account\x18\x02\x20\x02\
    (\tR\nnewAccount\x12)\n\x10starting_balance\x18\x03\x20\x02(\x12R\x0fsta\
    rtingBalance\"\xa5\x03\n!StellarPathPaymentStrictReceiveOp\x12%\n\x0esou\
    rce_account\x18\x01\x20\x01(\tR\rsourceAccount\x12G\n\nsend_asset\x18\
    \x02\x20\x02(\x0b2(.hw.trezor.messages.stellar.StellarAssetR\tsendAsset\
    \x12\x19\n\x08send_max\x18\x03\x20\x02(\x12R\x07sendMax\x12/\n\x13destin\
    ation_account\x18\x04\x20\x02(\tR\x12destinationAccount\x12U\n\x11destin\
    ation_asset\x18\x05\x20\x02(\x0b2(.hw.trezor.messages.stellar.StellarAss\
    etR\x10destinationAsset\x12-\n\x12destination_amount\x18\x06\x20\x02(\
    \x12R\x11destinationAmount\x12>\n\x05paths\x18\x07\x20\x03(\x0b2(.hw.tre\
    zor.messages.stellar.StellarAssetR\x05paths\"\xa2\x03\n\x1eStellarPathPa\
    ymentStrictSendOp\x12%\n\x0esource_account\x18\x01\x20\x01(\tR\rsourceAc\
    count\x12G\n\nsend_asset\x18\x02\x20\x02(\x0b2(.hw.trezor.messages.stell\
    ar.StellarAssetR\tsendAsset\x12\x1f\n\x0bsend_amount\x18\x03\x20\x02(\
    \x12R\nsendAmount\x12/\n\x13destination_account\x18\x04\x20\x02(\tR\x12d\
    estinationAccount\x12U\n\x11destination_asset\x18\x05\x20\x02(\x0b2(.hw.\
    trezor.messages.stellar.StellarAssetR\x10destinationAsset\x12'\n\x0fdest\
    ination_min\x18\x06\x20\x02(\x12R\x0edestinationMin\x12>\n\x05paths\x18\
    \x07\x20\x03(\x0b2(.hw.trezor.messages.stellar.StellarAssetR\x05paths\"\
    \xc2\x02\n\x18StellarManageSellOfferOp\x12%\n\x0esource_account\x18\x01\
    \x20\x01(\tR\rsourceAccount\x12M\n\rselling_asset\x18\x02\x20\x02(\x0b2(\
    .hw.trezor.messages.stellar.StellarAssetR\x0csellingAsset\x12K\n\x0cbuyi\
    ng_asset\x18\x03\x20\x02(\x0b2(.hw.trezor.messages.stellar.StellarAssetR\
    \x0bbuyingAsset\x12\x16\n\x06amount\x18\x04\x20\x02(\x12R\x06amount\x12\
    \x17\n\x07price_n\x18\x05\x20\x02(\rR\x06priceN\x12\x17\n\x07price_d\x18\
    \x06\x20\x02(\rR\x06priceD\x12\x19\n\x08offer_id\x18\x07\x20\x02(\x04R\
    \x07offerId\"\xc1\x02\n\x17StellarManageBuyOfferOp\x12%\n\x0esource_acco\
    unt\x18\x01\x20\x01(\tR\rsourceAccount\x12M\n\rselling_asset\x18\x02\x20\
    \x02(\x0b2(.hw.trezor.messages.stellar.StellarAssetR\x0csellingAsset\x12\
    K\n\x0cbuying_asset\x18\x03\x20\x02(\x0b2(.hw.trezor.messages.stellar.St\
    ellarAssetR\x0bbuyingAsset\x12\x16\n\x06amount\x18\x04\x20\x02(\x12R\x06\
    amount\x12\x17\n\x07price_n\x18\x05\x20\x02(\rR\x06priceN\x12\x17\n\x07p\
    rice_d\x18\x06\x20\x02(\rR\x06priceD\x12\x19\n\x08offer_id\x18\x07\x20\
    \x02(\x04R\x07offerId\"\xae\x02\n\x1fStellarCreatePassiveSellOfferOp\x12\
    %\n\x0esource_account\x18\x01\x20\x01(\tR\rsourceAccount\x12M\n\rselling\
    _asset\x18\x02\x20\x02(\x0b2(.hw.trezor.messages.stellar.StellarAssetR\
    \x0csellingAsset\x12K\n\x0cbuying_asset\x18\x03\x20\x02(\x0b2(.hw.trezor\
    .messages.stellar.StellarAssetR\x0bbuyingAsset\x12\x16\n\x06amount\x18\
    \x04\x20\x02(\x12R\x06amount\x12\x17\n\x07price_n\x18\x05\x20\x02(\rR\
    \x06priceN\x12\x17\n\x07price_d\x18\x06\x20\x02(\rR\x06priceD\"\xdd\x04\
    \n\x13StellarSetOptionsOp\x12%\n\x0esource_account\x18\x01\x20\x01(\tR\r\
    sourceAccount\x12B\n\x1dinflation_destination_account\x18\x02\x20\x01(\t\
    R\x1binflationDestinationAccount\x12\x1f\n\x0bclear_flags\x18\x03\x20\
    \x01(\rR\nclearFlags\x12\x1b\n\tset_flags\x18\x04\x20\x01(\rR\x08setFlag\
    s\x12#\n\rmaster_weight\x18\x05\x20\x01(\rR\x0cmasterWeight\x12#\n\rlow_\
    threshold\x18\x06\x20\x01(\rR\x0clowThreshold\x12)\n\x10medium_threshold\
    \x18\x07\x20\x01(\rR\x0fmediumThreshold\x12%\n\x0ehigh_threshold\x18\x08\
    \x20\x01(\rR\rhighThreshold\x12\x1f\n\x0bhome_domain\x18\t\x20\x01(\tR\n\
    homeDomain\x12b\n\x0bsigner_type\x18\n\x20\x01(\x0e2A.hw.trezor.messages\
    .stellar.StellarSetOptionsOp.StellarSignerTypeR\nsignerType\x12\x1d\n\ns\
    igner_key\x18\x0b\x20\x01(\x0cR\tsignerKey\x12#\n\rsigner_weight\x18\x0c\
    \x20\x01(\rR\x0csignerWeight\"8\n\x11StellarSignerType\x12\x0b\n\x07ACCO\
    UNT\x10\0\x12\x0c\n\x08PRE_AUTH\x10\x01\x12\x08\n\x04HASH\x10\x02\"\x93\
    \x01\n\x14StellarChangeTrustOp\x12%\n\x0esource_account\x18\x01\x20\x01(\
    \tR\rsourceAccount\x12>\n\x05asset\x18\x02\x20\x02(\x0b2(.hw.trezor.mess\
    ages.stellar.StellarAssetR\x05asset\x12\x14\n\x05limit\x18\x03\x20\x02(\
    \x04R\x05limit\"\xf6\x01\n\x13StellarAllowTrustOp\x12%\n\x0esource_accou\
    nt\x18\x01\x20\x01(\tR\rsourceAccount\x12'\n\x0ftrusted_account\x18\x02\
    \x20\x02(\tR\x0etrustedAccount\x12K\n\nasset_type\x18\x03\x20\x02(\x0e2,\
    .hw.trezor.messages.stellar.StellarAssetTypeR\tassetType\x12\x1d\n\nasse\
    t_code\x18\x04\x20\x01(\tR\tassetCode\x12#\n\ris_authorized\x18\x05\x20\
    \x02(\x08R\x0cisAuthorized\"o\n\x15StellarAccountMergeOp\x12%\n\x0esourc\
    e_account\x18\x01\x20\x01(\tR\rsourceAccount\x12/\n\x13destination_accou\
    nt\x18\x02\x20\x02(\tR\x12destinationAccount\"d\n\x13StellarManageDataOp\
    \x12%\n\x0esource_account\x18\x01\x20\x01(\tR\rsourceAccount\x12\x10\n\
    \x03key\x18\x02\x20\x02(\tR\x03key\x12\x14\n\x05value\x18\x03\x20\x01(\
    \x0cR\x05value\"W\n\x15StellarBumpSequenceOp\x12%\n\x0esource_account\
    \x18\x01\x20\x01(\tR\rsourceAccount\x12\x17\n\x07bump_to\x18\x02\x20\x02\
    (\x04R\x06bumpTo\"f\n\x1eStellarClaimClaimableBalanceOp\x12%\n\x0esource\
    _account\x18\x01\x20\x01(\tR\rsourceAccount\x12\x1d\n\nbalance_id\x18\
    \x02\x20\x02(\x0cR\tbalanceId\"N\n\x0fStellarSignedTx\x12\x1d\n\npublic_\
    key\x18\x01\x20\x02(\x0cR\tpublicKey\x12\x1c\n\tsignature\x18\x02\x20\
    \x02(\x0cR\tsignature*=\n\x10StellarAssetType\x12\n\n\x06NATIVE\x10\0\
    \x12\r\n\tALPHANUM4\x10\x01\x12\x0e\n\nALPHANUM12\x10\x02B;\n#com.satosh\
    ilabs.trezor.lib.protobufB\x14TrezorMessageStellar\
";

/// `FileDescriptorProto` object which was a source for this generated file
fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
    file_descriptor_proto_lazy.get(|| {
        ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
    })
}

/// `FileDescriptor` object which allows dynamic access to files
pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
    static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
    static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
    file_descriptor.get(|| {
        let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
            let mut deps = ::std::vec::Vec::with_capacity(0);
            let mut messages = ::std::vec::Vec::with_capacity(20);
            messages.push(StellarAsset::generated_message_descriptor_data());
            messages.push(StellarGetAddress::generated_message_descriptor_data());
            messages.push(StellarAddress::generated_message_descriptor_data());
            messages.push(StellarSignTx::generated_message_descriptor_data());
            messages.push(StellarTxOpRequest::generated_message_descriptor_data());
            messages.push(StellarPaymentOp::generated_message_descriptor_data());
            messages.push(StellarCreateAccountOp::generated_message_descriptor_data());
            messages.push(StellarPathPaymentStrictReceiveOp::generated_message_descriptor_data());
            messages.push(StellarPathPaymentStrictSendOp::generated_message_descriptor_data());
            messages.push(StellarManageSellOfferOp::generated_message_descriptor_data());
            messages.push(StellarManageBuyOfferOp::generated_message_descriptor_data());
            messages.push(StellarCreatePassiveSellOfferOp::generated_message_descriptor_data());
            messages.push(StellarSetOptionsOp::generated_message_descriptor_data());
            messages.push(StellarChangeTrustOp::generated_message_descriptor_data());
            messages.push(StellarAllowTrustOp::generated_message_descriptor_data());
            messages.push(StellarAccountMergeOp::generated_message_descriptor_data());
            messages.push(StellarManageDataOp::generated_message_descriptor_data());
            messages.push(StellarBumpSequenceOp::generated_message_descriptor_data());
            messages.push(StellarClaimClaimableBalanceOp::generated_message_descriptor_data());
            messages.push(StellarSignedTx::generated_message_descriptor_data());
            let mut enums = ::std::vec::Vec::with_capacity(3);
            enums.push(StellarAssetType::generated_enum_descriptor_data());
            enums.push(stellar_sign_tx::StellarMemoType::generated_enum_descriptor_data());
            enums.push(stellar_set_options_op::StellarSignerType::generated_enum_descriptor_data());
            ::protobuf::reflect::GeneratedFileDescriptor::new_generated(
                file_descriptor_proto(),
                deps,
                messages,
                enums,
            )
        });
        ::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
    })
}
