diff --git a/build.rs b/build.rs index b1ceb2e..6e3fe44 100644 --- a/build.rs +++ b/build.rs @@ -7,7 +7,7 @@ fn main() { ) .unwrap(); - create_c_bindings(); + // create_c_bindings(); } #[allow(dead_code)] diff --git a/src/db/data_generated.rs b/src/db/data_generated.rs index c312713..d5baa4b 100644 --- a/src/db/data_generated.rs +++ b/src/db/data_generated.rs @@ -1,10 +1,9 @@ // automatically generated by the FlatBuffers compiler, do not modify - // @generated -use core::mem; use core::cmp::Ordering; +use core::mem; extern crate flatbuffers; use self::flatbuffers::{EndianScalar, Follow}; @@ -12,6671 +11,7278 @@ use self::flatbuffers::{EndianScalar, Follow}; #[allow(unused_imports, dead_code)] pub mod fb { - use core::mem; - use core::cmp::Ordering; - - extern crate flatbuffers; - use self::flatbuffers::{EndianScalar, Follow}; - -pub enum AccountOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Account<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Account<'a> { - type Inner = Account<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Account<'a> { - pub const VT_ID: flatbuffers::VOffsetT = 4; - pub const VT_NAME: flatbuffers::VOffsetT = 6; - pub const VT_BALANCE: flatbuffers::VOffsetT = 8; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Account { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args AccountArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = AccountBuilder::new(_fbb); - builder.add_balance(args.balance); - if let Some(x) = args.name { builder.add_name(x); } - builder.add_id(args.id); - builder.finish() - } - - pub fn unpack(&self) -> AccountT { - let id = self.id(); - let name = self.name().map(|x| { - x.to_string() - }); - let balance = self.balance(); - AccountT { - id, - name, - balance, - } - } - - #[inline] - pub fn id(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Account::VT_ID, Some(0)).unwrap()} - } - #[inline] - pub fn name(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Account::VT_NAME, None)} - } - #[inline] - pub fn balance(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Account::VT_BALANCE, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for Account<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("id", Self::VT_ID, false)? - .visit_field::>("name", Self::VT_NAME, false)? - .visit_field::("balance", Self::VT_BALANCE, false)? - .finish(); - Ok(()) - } -} -pub struct AccountArgs<'a> { - pub id: u32, - pub name: Option>, - pub balance: u64, -} -impl<'a> Default for AccountArgs<'a> { - #[inline] - fn default() -> Self { - AccountArgs { - id: 0, - name: None, - balance: 0, - } - } -} - -pub struct AccountBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> AccountBuilder<'a, 'b> { - #[inline] - pub fn add_id(&mut self, id: u32) { - self.fbb_.push_slot::(Account::VT_ID, id, 0); - } - #[inline] - pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Account::VT_NAME, name); - } - #[inline] - pub fn add_balance(&mut self, balance: u64) { - self.fbb_.push_slot::(Account::VT_BALANCE, balance, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AccountBuilder<'a, 'b> { - let start = _fbb.start_table(); - AccountBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Account<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Account"); - ds.field("id", &self.id()); - ds.field("name", &self.name()); - ds.field("balance", &self.balance()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct AccountT { - pub id: u32, - pub name: Option, - pub balance: u64, -} -impl Default for AccountT { - fn default() -> Self { - Self { - id: 0, - name: None, - balance: 0, - } - } -} -impl AccountT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let id = self.id; - let name = self.name.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let balance = self.balance; - Account::create(_fbb, &AccountArgs{ - id, - name, - balance, - }) - } -} -pub enum AccountVecOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct AccountVec<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for AccountVec<'a> { - type Inner = AccountVec<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> AccountVec<'a> { - pub const VT_ACCOUNTS: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - AccountVec { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args AccountVecArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = AccountVecBuilder::new(_fbb); - if let Some(x) = args.accounts { builder.add_accounts(x); } - builder.finish() - } - - pub fn unpack(&self) -> AccountVecT { - let accounts = self.accounts().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - AccountVecT { - accounts, - } - } - - #[inline] - pub fn accounts(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(AccountVec::VT_ACCOUNTS, None)} - } -} - -impl flatbuffers::Verifiable for AccountVec<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("accounts", Self::VT_ACCOUNTS, false)? - .finish(); - Ok(()) - } -} -pub struct AccountVecArgs<'a> { - pub accounts: Option>>>>, -} -impl<'a> Default for AccountVecArgs<'a> { - #[inline] - fn default() -> Self { - AccountVecArgs { - accounts: None, - } - } -} - -pub struct AccountVecBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> AccountVecBuilder<'a, 'b> { - #[inline] - pub fn add_accounts(&mut self, accounts: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(AccountVec::VT_ACCOUNTS, accounts); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AccountVecBuilder<'a, 'b> { - let start = _fbb.start_table(); - AccountVecBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for AccountVec<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("AccountVec"); - ds.field("accounts", &self.accounts()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct AccountVecT { - pub accounts: Option>, -} -impl Default for AccountVecT { - fn default() -> Self { - Self { - accounts: None, - } - } -} -impl AccountVecT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let accounts = self.accounts.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - AccountVec::create(_fbb, &AccountVecArgs{ - accounts, - }) - } -} -pub enum BalanceOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Balance<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Balance<'a> { - type Inner = Balance<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Balance<'a> { - pub const VT_SHIELDED: flatbuffers::VOffsetT = 4; - pub const VT_UNCONFIRMED_SPENT: flatbuffers::VOffsetT = 6; - pub const VT_BALANCE: flatbuffers::VOffsetT = 8; - pub const VT_UNDER_CONFIRMED: flatbuffers::VOffsetT = 10; - pub const VT_EXCLUDED: flatbuffers::VOffsetT = 12; - pub const VT_SAPLING: flatbuffers::VOffsetT = 14; - pub const VT_ORCHARD: flatbuffers::VOffsetT = 16; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Balance { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args BalanceArgs - ) -> flatbuffers::WIPOffset> { - let mut builder = BalanceBuilder::new(_fbb); - builder.add_orchard(args.orchard); - builder.add_sapling(args.sapling); - builder.add_excluded(args.excluded); - builder.add_under_confirmed(args.under_confirmed); - builder.add_balance(args.balance); - builder.add_unconfirmed_spent(args.unconfirmed_spent); - builder.add_shielded(args.shielded); - builder.finish() - } - - pub fn unpack(&self) -> BalanceT { - let shielded = self.shielded(); - let unconfirmed_spent = self.unconfirmed_spent(); - let balance = self.balance(); - let under_confirmed = self.under_confirmed(); - let excluded = self.excluded(); - let sapling = self.sapling(); - let orchard = self.orchard(); - BalanceT { - shielded, - unconfirmed_spent, - balance, - under_confirmed, - excluded, - sapling, - orchard, - } - } - - #[inline] - pub fn shielded(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Balance::VT_SHIELDED, Some(0)).unwrap()} - } - #[inline] - pub fn unconfirmed_spent(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Balance::VT_UNCONFIRMED_SPENT, Some(0)).unwrap()} - } - #[inline] - pub fn balance(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Balance::VT_BALANCE, Some(0)).unwrap()} - } - #[inline] - pub fn under_confirmed(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Balance::VT_UNDER_CONFIRMED, Some(0)).unwrap()} - } - #[inline] - pub fn excluded(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Balance::VT_EXCLUDED, Some(0)).unwrap()} - } - #[inline] - pub fn sapling(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Balance::VT_SAPLING, Some(0)).unwrap()} - } - #[inline] - pub fn orchard(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Balance::VT_ORCHARD, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for Balance<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("shielded", Self::VT_SHIELDED, false)? - .visit_field::("unconfirmed_spent", Self::VT_UNCONFIRMED_SPENT, false)? - .visit_field::("balance", Self::VT_BALANCE, false)? - .visit_field::("under_confirmed", Self::VT_UNDER_CONFIRMED, false)? - .visit_field::("excluded", Self::VT_EXCLUDED, false)? - .visit_field::("sapling", Self::VT_SAPLING, false)? - .visit_field::("orchard", Self::VT_ORCHARD, false)? - .finish(); - Ok(()) - } -} -pub struct BalanceArgs { - pub shielded: u64, - pub unconfirmed_spent: u64, - pub balance: u64, - pub under_confirmed: u64, - pub excluded: u64, - pub sapling: u64, - pub orchard: u64, -} -impl<'a> Default for BalanceArgs { - #[inline] - fn default() -> Self { - BalanceArgs { - shielded: 0, - unconfirmed_spent: 0, - balance: 0, - under_confirmed: 0, - excluded: 0, - sapling: 0, - orchard: 0, - } - } -} - -pub struct BalanceBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> BalanceBuilder<'a, 'b> { - #[inline] - pub fn add_shielded(&mut self, shielded: u64) { - self.fbb_.push_slot::(Balance::VT_SHIELDED, shielded, 0); - } - #[inline] - pub fn add_unconfirmed_spent(&mut self, unconfirmed_spent: u64) { - self.fbb_.push_slot::(Balance::VT_UNCONFIRMED_SPENT, unconfirmed_spent, 0); - } - #[inline] - pub fn add_balance(&mut self, balance: u64) { - self.fbb_.push_slot::(Balance::VT_BALANCE, balance, 0); - } - #[inline] - pub fn add_under_confirmed(&mut self, under_confirmed: u64) { - self.fbb_.push_slot::(Balance::VT_UNDER_CONFIRMED, under_confirmed, 0); - } - #[inline] - pub fn add_excluded(&mut self, excluded: u64) { - self.fbb_.push_slot::(Balance::VT_EXCLUDED, excluded, 0); - } - #[inline] - pub fn add_sapling(&mut self, sapling: u64) { - self.fbb_.push_slot::(Balance::VT_SAPLING, sapling, 0); - } - #[inline] - pub fn add_orchard(&mut self, orchard: u64) { - self.fbb_.push_slot::(Balance::VT_ORCHARD, orchard, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BalanceBuilder<'a, 'b> { - let start = _fbb.start_table(); - BalanceBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Balance<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Balance"); - ds.field("shielded", &self.shielded()); - ds.field("unconfirmed_spent", &self.unconfirmed_spent()); - ds.field("balance", &self.balance()); - ds.field("under_confirmed", &self.under_confirmed()); - ds.field("excluded", &self.excluded()); - ds.field("sapling", &self.sapling()); - ds.field("orchard", &self.orchard()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct BalanceT { - pub shielded: u64, - pub unconfirmed_spent: u64, - pub balance: u64, - pub under_confirmed: u64, - pub excluded: u64, - pub sapling: u64, - pub orchard: u64, -} -impl Default for BalanceT { - fn default() -> Self { - Self { - shielded: 0, - unconfirmed_spent: 0, - balance: 0, - under_confirmed: 0, - excluded: 0, - sapling: 0, - orchard: 0, - } - } -} -impl BalanceT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let shielded = self.shielded; - let unconfirmed_spent = self.unconfirmed_spent; - let balance = self.balance; - let under_confirmed = self.under_confirmed; - let excluded = self.excluded; - let sapling = self.sapling; - let orchard = self.orchard; - Balance::create(_fbb, &BalanceArgs{ - shielded, - unconfirmed_spent, - balance, - under_confirmed, - excluded, - sapling, - orchard, - }) - } -} -pub enum HeightOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Height<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Height<'a> { - type Inner = Height<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Height<'a> { - pub const VT_HEIGHT: flatbuffers::VOffsetT = 4; - pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 6; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Height { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args HeightArgs - ) -> flatbuffers::WIPOffset> { - let mut builder = HeightBuilder::new(_fbb); - builder.add_timestamp(args.timestamp); - builder.add_height(args.height); - builder.finish() - } - - pub fn unpack(&self) -> HeightT { - let height = self.height(); - let timestamp = self.timestamp(); - HeightT { - height, - timestamp, - } - } - - #[inline] - pub fn height(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Height::VT_HEIGHT, Some(0)).unwrap()} - } - #[inline] - pub fn timestamp(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Height::VT_TIMESTAMP, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for Height<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("height", Self::VT_HEIGHT, false)? - .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? - .finish(); - Ok(()) - } -} -pub struct HeightArgs { - pub height: u32, - pub timestamp: u32, -} -impl<'a> Default for HeightArgs { - #[inline] - fn default() -> Self { - HeightArgs { - height: 0, - timestamp: 0, - } - } -} - -pub struct HeightBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> HeightBuilder<'a, 'b> { - #[inline] - pub fn add_height(&mut self, height: u32) { - self.fbb_.push_slot::(Height::VT_HEIGHT, height, 0); - } - #[inline] - pub fn add_timestamp(&mut self, timestamp: u32) { - self.fbb_.push_slot::(Height::VT_TIMESTAMP, timestamp, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> HeightBuilder<'a, 'b> { - let start = _fbb.start_table(); - HeightBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Height<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Height"); - ds.field("height", &self.height()); - ds.field("timestamp", &self.timestamp()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct HeightT { - pub height: u32, - pub timestamp: u32, -} -impl Default for HeightT { - fn default() -> Self { - Self { - height: 0, - timestamp: 0, - } - } -} -impl HeightT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let height = self.height; - let timestamp = self.timestamp; - Height::create(_fbb, &HeightArgs{ - height, - timestamp, - }) - } -} -pub enum ShieldedNoteOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct ShieldedNote<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for ShieldedNote<'a> { - type Inner = ShieldedNote<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> ShieldedNote<'a> { - pub const VT_ID: flatbuffers::VOffsetT = 4; - pub const VT_HEIGHT: flatbuffers::VOffsetT = 6; - pub const VT_VALUE: flatbuffers::VOffsetT = 8; - pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 10; - pub const VT_ORCHARD: flatbuffers::VOffsetT = 12; - pub const VT_EXCLUDED: flatbuffers::VOffsetT = 14; - pub const VT_SPENT: flatbuffers::VOffsetT = 16; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - ShieldedNote { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args ShieldedNoteArgs - ) -> flatbuffers::WIPOffset> { - let mut builder = ShieldedNoteBuilder::new(_fbb); - builder.add_value(args.value); - builder.add_timestamp(args.timestamp); - builder.add_height(args.height); - builder.add_id(args.id); - builder.add_spent(args.spent); - builder.add_excluded(args.excluded); - builder.add_orchard(args.orchard); - builder.finish() - } - - pub fn unpack(&self) -> ShieldedNoteT { - let id = self.id(); - let height = self.height(); - let value = self.value(); - let timestamp = self.timestamp(); - let orchard = self.orchard(); - let excluded = self.excluded(); - let spent = self.spent(); - ShieldedNoteT { - id, - height, - value, - timestamp, - orchard, - excluded, - spent, - } - } - - #[inline] - pub fn id(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ShieldedNote::VT_ID, Some(0)).unwrap()} - } - #[inline] - pub fn height(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ShieldedNote::VT_HEIGHT, Some(0)).unwrap()} - } - #[inline] - pub fn value(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ShieldedNote::VT_VALUE, Some(0)).unwrap()} - } - #[inline] - pub fn timestamp(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ShieldedNote::VT_TIMESTAMP, Some(0)).unwrap()} - } - #[inline] - pub fn orchard(&self) -> bool { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ShieldedNote::VT_ORCHARD, Some(false)).unwrap()} - } - #[inline] - pub fn excluded(&self) -> bool { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ShieldedNote::VT_EXCLUDED, Some(false)).unwrap()} - } - #[inline] - pub fn spent(&self) -> bool { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ShieldedNote::VT_SPENT, Some(false)).unwrap()} - } -} - -impl flatbuffers::Verifiable for ShieldedNote<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("id", Self::VT_ID, false)? - .visit_field::("height", Self::VT_HEIGHT, false)? - .visit_field::("value", Self::VT_VALUE, false)? - .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? - .visit_field::("orchard", Self::VT_ORCHARD, false)? - .visit_field::("excluded", Self::VT_EXCLUDED, false)? - .visit_field::("spent", Self::VT_SPENT, false)? - .finish(); - Ok(()) - } -} -pub struct ShieldedNoteArgs { - pub id: u32, - pub height: u32, - pub value: u64, - pub timestamp: u32, - pub orchard: bool, - pub excluded: bool, - pub spent: bool, -} -impl<'a> Default for ShieldedNoteArgs { - #[inline] - fn default() -> Self { - ShieldedNoteArgs { - id: 0, - height: 0, - value: 0, - timestamp: 0, - orchard: false, - excluded: false, - spent: false, - } - } -} - -pub struct ShieldedNoteBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> ShieldedNoteBuilder<'a, 'b> { - #[inline] - pub fn add_id(&mut self, id: u32) { - self.fbb_.push_slot::(ShieldedNote::VT_ID, id, 0); - } - #[inline] - pub fn add_height(&mut self, height: u32) { - self.fbb_.push_slot::(ShieldedNote::VT_HEIGHT, height, 0); - } - #[inline] - pub fn add_value(&mut self, value: u64) { - self.fbb_.push_slot::(ShieldedNote::VT_VALUE, value, 0); - } - #[inline] - pub fn add_timestamp(&mut self, timestamp: u32) { - self.fbb_.push_slot::(ShieldedNote::VT_TIMESTAMP, timestamp, 0); - } - #[inline] - pub fn add_orchard(&mut self, orchard: bool) { - self.fbb_.push_slot::(ShieldedNote::VT_ORCHARD, orchard, false); - } - #[inline] - pub fn add_excluded(&mut self, excluded: bool) { - self.fbb_.push_slot::(ShieldedNote::VT_EXCLUDED, excluded, false); - } - #[inline] - pub fn add_spent(&mut self, spent: bool) { - self.fbb_.push_slot::(ShieldedNote::VT_SPENT, spent, false); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ShieldedNoteBuilder<'a, 'b> { - let start = _fbb.start_table(); - ShieldedNoteBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for ShieldedNote<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("ShieldedNote"); - ds.field("id", &self.id()); - ds.field("height", &self.height()); - ds.field("value", &self.value()); - ds.field("timestamp", &self.timestamp()); - ds.field("orchard", &self.orchard()); - ds.field("excluded", &self.excluded()); - ds.field("spent", &self.spent()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct ShieldedNoteT { - pub id: u32, - pub height: u32, - pub value: u64, - pub timestamp: u32, - pub orchard: bool, - pub excluded: bool, - pub spent: bool, -} -impl Default for ShieldedNoteT { - fn default() -> Self { - Self { - id: 0, - height: 0, - value: 0, - timestamp: 0, - orchard: false, - excluded: false, - spent: false, - } - } -} -impl ShieldedNoteT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let id = self.id; - let height = self.height; - let value = self.value; - let timestamp = self.timestamp; - let orchard = self.orchard; - let excluded = self.excluded; - let spent = self.spent; - ShieldedNote::create(_fbb, &ShieldedNoteArgs{ - id, - height, - value, - timestamp, - orchard, - excluded, - spent, - }) - } -} -pub enum ShieldedNoteVecOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct ShieldedNoteVec<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for ShieldedNoteVec<'a> { - type Inner = ShieldedNoteVec<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> ShieldedNoteVec<'a> { - pub const VT_NOTES: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - ShieldedNoteVec { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args ShieldedNoteVecArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = ShieldedNoteVecBuilder::new(_fbb); - if let Some(x) = args.notes { builder.add_notes(x); } - builder.finish() - } - - pub fn unpack(&self) -> ShieldedNoteVecT { - let notes = self.notes().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - ShieldedNoteVecT { - notes, - } - } - - #[inline] - pub fn notes(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(ShieldedNoteVec::VT_NOTES, None)} - } -} - -impl flatbuffers::Verifiable for ShieldedNoteVec<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("notes", Self::VT_NOTES, false)? - .finish(); - Ok(()) - } -} -pub struct ShieldedNoteVecArgs<'a> { - pub notes: Option>>>>, -} -impl<'a> Default for ShieldedNoteVecArgs<'a> { - #[inline] - fn default() -> Self { - ShieldedNoteVecArgs { - notes: None, - } - } -} - -pub struct ShieldedNoteVecBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> ShieldedNoteVecBuilder<'a, 'b> { - #[inline] - pub fn add_notes(&mut self, notes: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(ShieldedNoteVec::VT_NOTES, notes); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ShieldedNoteVecBuilder<'a, 'b> { - let start = _fbb.start_table(); - ShieldedNoteVecBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for ShieldedNoteVec<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("ShieldedNoteVec"); - ds.field("notes", &self.notes()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct ShieldedNoteVecT { - pub notes: Option>, -} -impl Default for ShieldedNoteVecT { - fn default() -> Self { - Self { - notes: None, - } - } -} -impl ShieldedNoteVecT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let notes = self.notes.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - ShieldedNoteVec::create(_fbb, &ShieldedNoteVecArgs{ - notes, - }) - } -} -pub enum ShieldedTxOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct ShieldedTx<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for ShieldedTx<'a> { - type Inner = ShieldedTx<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> ShieldedTx<'a> { - pub const VT_ID: flatbuffers::VOffsetT = 4; - pub const VT_TX_ID: flatbuffers::VOffsetT = 6; - pub const VT_HEIGHT: flatbuffers::VOffsetT = 8; - pub const VT_SHORT_TX_ID: flatbuffers::VOffsetT = 10; - pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 12; - pub const VT_NAME: flatbuffers::VOffsetT = 14; - pub const VT_VALUE: flatbuffers::VOffsetT = 16; - pub const VT_ADDRESS: flatbuffers::VOffsetT = 18; - pub const VT_MEMO: flatbuffers::VOffsetT = 20; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - ShieldedTx { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args ShieldedTxArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = ShieldedTxBuilder::new(_fbb); - builder.add_value(args.value); - if let Some(x) = args.memo { builder.add_memo(x); } - if let Some(x) = args.address { builder.add_address(x); } - if let Some(x) = args.name { builder.add_name(x); } - builder.add_timestamp(args.timestamp); - if let Some(x) = args.short_tx_id { builder.add_short_tx_id(x); } - builder.add_height(args.height); - if let Some(x) = args.tx_id { builder.add_tx_id(x); } - builder.add_id(args.id); - builder.finish() - } - - pub fn unpack(&self) -> ShieldedTxT { - let id = self.id(); - let tx_id = self.tx_id().map(|x| { - x.to_string() - }); - let height = self.height(); - let short_tx_id = self.short_tx_id().map(|x| { - x.to_string() - }); - let timestamp = self.timestamp(); - let name = self.name().map(|x| { - x.to_string() - }); - let value = self.value(); - let address = self.address().map(|x| { - x.to_string() - }); - let memo = self.memo().map(|x| { - x.to_string() - }); - ShieldedTxT { - id, - tx_id, - height, - short_tx_id, - timestamp, - name, - value, - address, - memo, - } - } - - #[inline] - pub fn id(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ShieldedTx::VT_ID, Some(0)).unwrap()} - } - #[inline] - pub fn tx_id(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(ShieldedTx::VT_TX_ID, None)} - } - #[inline] - pub fn height(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ShieldedTx::VT_HEIGHT, Some(0)).unwrap()} - } - #[inline] - pub fn short_tx_id(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(ShieldedTx::VT_SHORT_TX_ID, None)} - } - #[inline] - pub fn timestamp(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ShieldedTx::VT_TIMESTAMP, Some(0)).unwrap()} - } - #[inline] - pub fn name(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(ShieldedTx::VT_NAME, None)} - } - #[inline] - pub fn value(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ShieldedTx::VT_VALUE, Some(0)).unwrap()} - } - #[inline] - pub fn address(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(ShieldedTx::VT_ADDRESS, None)} - } - #[inline] - pub fn memo(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(ShieldedTx::VT_MEMO, None)} - } -} - -impl flatbuffers::Verifiable for ShieldedTx<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("id", Self::VT_ID, false)? - .visit_field::>("tx_id", Self::VT_TX_ID, false)? - .visit_field::("height", Self::VT_HEIGHT, false)? - .visit_field::>("short_tx_id", Self::VT_SHORT_TX_ID, false)? - .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? - .visit_field::>("name", Self::VT_NAME, false)? - .visit_field::("value", Self::VT_VALUE, false)? - .visit_field::>("address", Self::VT_ADDRESS, false)? - .visit_field::>("memo", Self::VT_MEMO, false)? - .finish(); - Ok(()) - } -} -pub struct ShieldedTxArgs<'a> { - pub id: u32, - pub tx_id: Option>, - pub height: u32, - pub short_tx_id: Option>, - pub timestamp: u32, - pub name: Option>, - pub value: u64, - pub address: Option>, - pub memo: Option>, -} -impl<'a> Default for ShieldedTxArgs<'a> { - #[inline] - fn default() -> Self { - ShieldedTxArgs { - id: 0, - tx_id: None, - height: 0, - short_tx_id: None, - timestamp: 0, - name: None, - value: 0, - address: None, - memo: None, - } - } -} - -pub struct ShieldedTxBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> ShieldedTxBuilder<'a, 'b> { - #[inline] - pub fn add_id(&mut self, id: u32) { - self.fbb_.push_slot::(ShieldedTx::VT_ID, id, 0); - } - #[inline] - pub fn add_tx_id(&mut self, tx_id: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(ShieldedTx::VT_TX_ID, tx_id); - } - #[inline] - pub fn add_height(&mut self, height: u32) { - self.fbb_.push_slot::(ShieldedTx::VT_HEIGHT, height, 0); - } - #[inline] - pub fn add_short_tx_id(&mut self, short_tx_id: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(ShieldedTx::VT_SHORT_TX_ID, short_tx_id); - } - #[inline] - pub fn add_timestamp(&mut self, timestamp: u32) { - self.fbb_.push_slot::(ShieldedTx::VT_TIMESTAMP, timestamp, 0); - } - #[inline] - pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(ShieldedTx::VT_NAME, name); - } - #[inline] - pub fn add_value(&mut self, value: u64) { - self.fbb_.push_slot::(ShieldedTx::VT_VALUE, value, 0); - } - #[inline] - pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(ShieldedTx::VT_ADDRESS, address); - } - #[inline] - pub fn add_memo(&mut self, memo: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(ShieldedTx::VT_MEMO, memo); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ShieldedTxBuilder<'a, 'b> { - let start = _fbb.start_table(); - ShieldedTxBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for ShieldedTx<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("ShieldedTx"); - ds.field("id", &self.id()); - ds.field("tx_id", &self.tx_id()); - ds.field("height", &self.height()); - ds.field("short_tx_id", &self.short_tx_id()); - ds.field("timestamp", &self.timestamp()); - ds.field("name", &self.name()); - ds.field("value", &self.value()); - ds.field("address", &self.address()); - ds.field("memo", &self.memo()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct ShieldedTxT { - pub id: u32, - pub tx_id: Option, - pub height: u32, - pub short_tx_id: Option, - pub timestamp: u32, - pub name: Option, - pub value: u64, - pub address: Option, - pub memo: Option, -} -impl Default for ShieldedTxT { - fn default() -> Self { - Self { - id: 0, - tx_id: None, - height: 0, - short_tx_id: None, - timestamp: 0, - name: None, - value: 0, - address: None, - memo: None, - } - } -} -impl ShieldedTxT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let id = self.id; - let tx_id = self.tx_id.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let height = self.height; - let short_tx_id = self.short_tx_id.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let timestamp = self.timestamp; - let name = self.name.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let value = self.value; - let address = self.address.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let memo = self.memo.as_ref().map(|x|{ - _fbb.create_string(x) - }); - ShieldedTx::create(_fbb, &ShieldedTxArgs{ - id, - tx_id, - height, - short_tx_id, - timestamp, - name, - value, - address, - memo, - }) - } -} -pub enum ShieldedTxVecOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct ShieldedTxVec<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for ShieldedTxVec<'a> { - type Inner = ShieldedTxVec<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> ShieldedTxVec<'a> { - pub const VT_TXS: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - ShieldedTxVec { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args ShieldedTxVecArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = ShieldedTxVecBuilder::new(_fbb); - if let Some(x) = args.txs { builder.add_txs(x); } - builder.finish() - } - - pub fn unpack(&self) -> ShieldedTxVecT { - let txs = self.txs().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - ShieldedTxVecT { - txs, - } - } - - #[inline] - pub fn txs(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(ShieldedTxVec::VT_TXS, None)} - } -} - -impl flatbuffers::Verifiable for ShieldedTxVec<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("txs", Self::VT_TXS, false)? - .finish(); - Ok(()) - } -} -pub struct ShieldedTxVecArgs<'a> { - pub txs: Option>>>>, -} -impl<'a> Default for ShieldedTxVecArgs<'a> { - #[inline] - fn default() -> Self { - ShieldedTxVecArgs { - txs: None, - } - } -} - -pub struct ShieldedTxVecBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> ShieldedTxVecBuilder<'a, 'b> { - #[inline] - pub fn add_txs(&mut self, txs: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(ShieldedTxVec::VT_TXS, txs); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ShieldedTxVecBuilder<'a, 'b> { - let start = _fbb.start_table(); - ShieldedTxVecBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for ShieldedTxVec<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("ShieldedTxVec"); - ds.field("txs", &self.txs()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct ShieldedTxVecT { - pub txs: Option>, -} -impl Default for ShieldedTxVecT { - fn default() -> Self { - Self { - txs: None, - } - } -} -impl ShieldedTxVecT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let txs = self.txs.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - ShieldedTxVec::create(_fbb, &ShieldedTxVecArgs{ - txs, - }) - } -} -pub enum MessageOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Message<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Message<'a> { - type Inner = Message<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Message<'a> { - pub const VT_ID_MSG: flatbuffers::VOffsetT = 4; - pub const VT_ID_TX: flatbuffers::VOffsetT = 6; - pub const VT_HEIGHT: flatbuffers::VOffsetT = 8; - pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 10; - pub const VT_FROM: flatbuffers::VOffsetT = 12; - pub const VT_TO: flatbuffers::VOffsetT = 14; - pub const VT_SUBJECT: flatbuffers::VOffsetT = 16; - pub const VT_BODY: flatbuffers::VOffsetT = 18; - pub const VT_READ: flatbuffers::VOffsetT = 20; - pub const VT_INCOMING: flatbuffers::VOffsetT = 22; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Message { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args MessageArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = MessageBuilder::new(_fbb); - if let Some(x) = args.body { builder.add_body(x); } - if let Some(x) = args.subject { builder.add_subject(x); } - if let Some(x) = args.to { builder.add_to(x); } - if let Some(x) = args.from { builder.add_from(x); } - builder.add_timestamp(args.timestamp); - builder.add_height(args.height); - builder.add_id_tx(args.id_tx); - builder.add_id_msg(args.id_msg); - builder.add_incoming(args.incoming); - builder.add_read(args.read); - builder.finish() - } - - pub fn unpack(&self) -> MessageT { - let id_msg = self.id_msg(); - let id_tx = self.id_tx(); - let height = self.height(); - let timestamp = self.timestamp(); - let from = self.from().map(|x| { - x.to_string() - }); - let to = self.to().map(|x| { - x.to_string() - }); - let subject = self.subject().map(|x| { - x.to_string() - }); - let body = self.body().map(|x| { - x.to_string() - }); - let read = self.read(); - let incoming = self.incoming(); - MessageT { - id_msg, - id_tx, - height, - timestamp, - from, - to, - subject, - body, - read, - incoming, - } - } - - #[inline] - pub fn id_msg(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Message::VT_ID_MSG, Some(0)).unwrap()} - } - #[inline] - pub fn id_tx(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Message::VT_ID_TX, Some(0)).unwrap()} - } - #[inline] - pub fn height(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Message::VT_HEIGHT, Some(0)).unwrap()} - } - #[inline] - pub fn timestamp(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Message::VT_TIMESTAMP, Some(0)).unwrap()} - } - #[inline] - pub fn from(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Message::VT_FROM, None)} - } - #[inline] - pub fn to(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Message::VT_TO, None)} - } - #[inline] - pub fn subject(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Message::VT_SUBJECT, None)} - } - #[inline] - pub fn body(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Message::VT_BODY, None)} - } - #[inline] - pub fn read(&self) -> bool { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Message::VT_READ, Some(false)).unwrap()} - } - #[inline] - pub fn incoming(&self) -> bool { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Message::VT_INCOMING, Some(false)).unwrap()} - } -} - -impl flatbuffers::Verifiable for Message<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("id_msg", Self::VT_ID_MSG, false)? - .visit_field::("id_tx", Self::VT_ID_TX, false)? - .visit_field::("height", Self::VT_HEIGHT, false)? - .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? - .visit_field::>("from", Self::VT_FROM, false)? - .visit_field::>("to", Self::VT_TO, false)? - .visit_field::>("subject", Self::VT_SUBJECT, false)? - .visit_field::>("body", Self::VT_BODY, false)? - .visit_field::("read", Self::VT_READ, false)? - .visit_field::("incoming", Self::VT_INCOMING, false)? - .finish(); - Ok(()) - } -} -pub struct MessageArgs<'a> { - pub id_msg: u32, - pub id_tx: u32, - pub height: u32, - pub timestamp: u32, - pub from: Option>, - pub to: Option>, - pub subject: Option>, - pub body: Option>, - pub read: bool, - pub incoming: bool, -} -impl<'a> Default for MessageArgs<'a> { - #[inline] - fn default() -> Self { - MessageArgs { - id_msg: 0, - id_tx: 0, - height: 0, - timestamp: 0, - from: None, - to: None, - subject: None, - body: None, - read: false, - incoming: false, - } - } -} - -pub struct MessageBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> MessageBuilder<'a, 'b> { - #[inline] - pub fn add_id_msg(&mut self, id_msg: u32) { - self.fbb_.push_slot::(Message::VT_ID_MSG, id_msg, 0); - } - #[inline] - pub fn add_id_tx(&mut self, id_tx: u32) { - self.fbb_.push_slot::(Message::VT_ID_TX, id_tx, 0); - } - #[inline] - pub fn add_height(&mut self, height: u32) { - self.fbb_.push_slot::(Message::VT_HEIGHT, height, 0); - } - #[inline] - pub fn add_timestamp(&mut self, timestamp: u32) { - self.fbb_.push_slot::(Message::VT_TIMESTAMP, timestamp, 0); - } - #[inline] - pub fn add_from(&mut self, from: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Message::VT_FROM, from); - } - #[inline] - pub fn add_to(&mut self, to: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Message::VT_TO, to); - } - #[inline] - pub fn add_subject(&mut self, subject: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Message::VT_SUBJECT, subject); - } - #[inline] - pub fn add_body(&mut self, body: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Message::VT_BODY, body); - } - #[inline] - pub fn add_read(&mut self, read: bool) { - self.fbb_.push_slot::(Message::VT_READ, read, false); - } - #[inline] - pub fn add_incoming(&mut self, incoming: bool) { - self.fbb_.push_slot::(Message::VT_INCOMING, incoming, false); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MessageBuilder<'a, 'b> { - let start = _fbb.start_table(); - MessageBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Message<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Message"); - ds.field("id_msg", &self.id_msg()); - ds.field("id_tx", &self.id_tx()); - ds.field("height", &self.height()); - ds.field("timestamp", &self.timestamp()); - ds.field("from", &self.from()); - ds.field("to", &self.to()); - ds.field("subject", &self.subject()); - ds.field("body", &self.body()); - ds.field("read", &self.read()); - ds.field("incoming", &self.incoming()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct MessageT { - pub id_msg: u32, - pub id_tx: u32, - pub height: u32, - pub timestamp: u32, - pub from: Option, - pub to: Option, - pub subject: Option, - pub body: Option, - pub read: bool, - pub incoming: bool, -} -impl Default for MessageT { - fn default() -> Self { - Self { - id_msg: 0, - id_tx: 0, - height: 0, - timestamp: 0, - from: None, - to: None, - subject: None, - body: None, - read: false, - incoming: false, - } - } -} -impl MessageT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let id_msg = self.id_msg; - let id_tx = self.id_tx; - let height = self.height; - let timestamp = self.timestamp; - let from = self.from.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let to = self.to.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let subject = self.subject.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let body = self.body.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let read = self.read; - let incoming = self.incoming; - Message::create(_fbb, &MessageArgs{ - id_msg, - id_tx, - height, - timestamp, - from, - to, - subject, - body, - read, - incoming, - }) - } -} -pub enum MessageVecOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct MessageVec<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for MessageVec<'a> { - type Inner = MessageVec<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> MessageVec<'a> { - pub const VT_MESSAGES: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - MessageVec { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args MessageVecArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = MessageVecBuilder::new(_fbb); - if let Some(x) = args.messages { builder.add_messages(x); } - builder.finish() - } - - pub fn unpack(&self) -> MessageVecT { - let messages = self.messages().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - MessageVecT { - messages, - } - } - - #[inline] - pub fn messages(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(MessageVec::VT_MESSAGES, None)} - } -} - -impl flatbuffers::Verifiable for MessageVec<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("messages", Self::VT_MESSAGES, false)? - .finish(); - Ok(()) - } -} -pub struct MessageVecArgs<'a> { - pub messages: Option>>>>, -} -impl<'a> Default for MessageVecArgs<'a> { - #[inline] - fn default() -> Self { - MessageVecArgs { - messages: None, - } - } -} - -pub struct MessageVecBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> MessageVecBuilder<'a, 'b> { - #[inline] - pub fn add_messages(&mut self, messages: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(MessageVec::VT_MESSAGES, messages); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MessageVecBuilder<'a, 'b> { - let start = _fbb.start_table(); - MessageVecBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for MessageVec<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("MessageVec"); - ds.field("messages", &self.messages()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct MessageVecT { - pub messages: Option>, -} -impl Default for MessageVecT { - fn default() -> Self { - Self { - messages: None, - } - } -} -impl MessageVecT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let messages = self.messages.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - MessageVec::create(_fbb, &MessageVecArgs{ - messages, - }) - } -} -pub enum PrevNextOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct PrevNext<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for PrevNext<'a> { - type Inner = PrevNext<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> PrevNext<'a> { - pub const VT_PREV: flatbuffers::VOffsetT = 4; - pub const VT_NEXT: flatbuffers::VOffsetT = 6; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - PrevNext { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args PrevNextArgs - ) -> flatbuffers::WIPOffset> { - let mut builder = PrevNextBuilder::new(_fbb); - builder.add_next(args.next); - builder.add_prev(args.prev); - builder.finish() - } - - pub fn unpack(&self) -> PrevNextT { - let prev = self.prev(); - let next = self.next(); - PrevNextT { - prev, - next, - } - } - - #[inline] - pub fn prev(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(PrevNext::VT_PREV, Some(0)).unwrap()} - } - #[inline] - pub fn next(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(PrevNext::VT_NEXT, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for PrevNext<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("prev", Self::VT_PREV, false)? - .visit_field::("next", Self::VT_NEXT, false)? - .finish(); - Ok(()) - } -} -pub struct PrevNextArgs { - pub prev: u32, - pub next: u32, -} -impl<'a> Default for PrevNextArgs { - #[inline] - fn default() -> Self { - PrevNextArgs { - prev: 0, - next: 0, - } - } -} - -pub struct PrevNextBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> PrevNextBuilder<'a, 'b> { - #[inline] - pub fn add_prev(&mut self, prev: u32) { - self.fbb_.push_slot::(PrevNext::VT_PREV, prev, 0); - } - #[inline] - pub fn add_next(&mut self, next: u32) { - self.fbb_.push_slot::(PrevNext::VT_NEXT, next, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> PrevNextBuilder<'a, 'b> { - let start = _fbb.start_table(); - PrevNextBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for PrevNext<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("PrevNext"); - ds.field("prev", &self.prev()); - ds.field("next", &self.next()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct PrevNextT { - pub prev: u32, - pub next: u32, -} -impl Default for PrevNextT { - fn default() -> Self { - Self { - prev: 0, - next: 0, - } - } -} -impl PrevNextT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let prev = self.prev; - let next = self.next; - PrevNext::create(_fbb, &PrevNextArgs{ - prev, - next, - }) - } -} -pub enum SendTemplateOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct SendTemplate<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for SendTemplate<'a> { - type Inner = SendTemplate<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> SendTemplate<'a> { - pub const VT_ID: flatbuffers::VOffsetT = 4; - pub const VT_TITLE: flatbuffers::VOffsetT = 6; - pub const VT_ADDRESS: flatbuffers::VOffsetT = 8; - pub const VT_AMOUNT: flatbuffers::VOffsetT = 10; - pub const VT_FIAT_AMOUNT: flatbuffers::VOffsetT = 12; - pub const VT_FEE_INCLUDED: flatbuffers::VOffsetT = 14; - pub const VT_FIAT: flatbuffers::VOffsetT = 16; - pub const VT_INCLUDE_REPLY_TO: flatbuffers::VOffsetT = 18; - pub const VT_SUBJECT: flatbuffers::VOffsetT = 20; - pub const VT_BODY: flatbuffers::VOffsetT = 22; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - SendTemplate { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args SendTemplateArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = SendTemplateBuilder::new(_fbb); - builder.add_fiat_amount(args.fiat_amount); - builder.add_amount(args.amount); - if let Some(x) = args.body { builder.add_body(x); } - if let Some(x) = args.subject { builder.add_subject(x); } - if let Some(x) = args.fiat { builder.add_fiat(x); } - if let Some(x) = args.address { builder.add_address(x); } - if let Some(x) = args.title { builder.add_title(x); } - builder.add_id(args.id); - builder.add_include_reply_to(args.include_reply_to); - builder.add_fee_included(args.fee_included); - builder.finish() - } - - pub fn unpack(&self) -> SendTemplateT { - let id = self.id(); - let title = self.title().map(|x| { - x.to_string() - }); - let address = self.address().map(|x| { - x.to_string() - }); - let amount = self.amount(); - let fiat_amount = self.fiat_amount(); - let fee_included = self.fee_included(); - let fiat = self.fiat().map(|x| { - x.to_string() - }); - let include_reply_to = self.include_reply_to(); - let subject = self.subject().map(|x| { - x.to_string() - }); - let body = self.body().map(|x| { - x.to_string() - }); - SendTemplateT { - id, - title, - address, - amount, - fiat_amount, - fee_included, - fiat, - include_reply_to, - subject, - body, - } - } - - #[inline] - pub fn id(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(SendTemplate::VT_ID, Some(0)).unwrap()} - } - #[inline] - pub fn title(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(SendTemplate::VT_TITLE, None)} - } - #[inline] - pub fn address(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(SendTemplate::VT_ADDRESS, None)} - } - #[inline] - pub fn amount(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(SendTemplate::VT_AMOUNT, Some(0)).unwrap()} - } - #[inline] - pub fn fiat_amount(&self) -> f64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(SendTemplate::VT_FIAT_AMOUNT, Some(0.0)).unwrap()} - } - #[inline] - pub fn fee_included(&self) -> bool { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(SendTemplate::VT_FEE_INCLUDED, Some(false)).unwrap()} - } - #[inline] - pub fn fiat(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(SendTemplate::VT_FIAT, None)} - } - #[inline] - pub fn include_reply_to(&self) -> bool { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(SendTemplate::VT_INCLUDE_REPLY_TO, Some(false)).unwrap()} - } - #[inline] - pub fn subject(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(SendTemplate::VT_SUBJECT, None)} - } - #[inline] - pub fn body(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(SendTemplate::VT_BODY, None)} - } -} - -impl flatbuffers::Verifiable for SendTemplate<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("id", Self::VT_ID, false)? - .visit_field::>("title", Self::VT_TITLE, false)? - .visit_field::>("address", Self::VT_ADDRESS, false)? - .visit_field::("amount", Self::VT_AMOUNT, false)? - .visit_field::("fiat_amount", Self::VT_FIAT_AMOUNT, false)? - .visit_field::("fee_included", Self::VT_FEE_INCLUDED, false)? - .visit_field::>("fiat", Self::VT_FIAT, false)? - .visit_field::("include_reply_to", Self::VT_INCLUDE_REPLY_TO, false)? - .visit_field::>("subject", Self::VT_SUBJECT, false)? - .visit_field::>("body", Self::VT_BODY, false)? - .finish(); - Ok(()) - } -} -pub struct SendTemplateArgs<'a> { - pub id: u32, - pub title: Option>, - pub address: Option>, - pub amount: u64, - pub fiat_amount: f64, - pub fee_included: bool, - pub fiat: Option>, - pub include_reply_to: bool, - pub subject: Option>, - pub body: Option>, -} -impl<'a> Default for SendTemplateArgs<'a> { - #[inline] - fn default() -> Self { - SendTemplateArgs { - id: 0, - title: None, - address: None, - amount: 0, - fiat_amount: 0.0, - fee_included: false, - fiat: None, - include_reply_to: false, - subject: None, - body: None, - } - } -} - -pub struct SendTemplateBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> SendTemplateBuilder<'a, 'b> { - #[inline] - pub fn add_id(&mut self, id: u32) { - self.fbb_.push_slot::(SendTemplate::VT_ID, id, 0); - } - #[inline] - pub fn add_title(&mut self, title: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(SendTemplate::VT_TITLE, title); - } - #[inline] - pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(SendTemplate::VT_ADDRESS, address); - } - #[inline] - pub fn add_amount(&mut self, amount: u64) { - self.fbb_.push_slot::(SendTemplate::VT_AMOUNT, amount, 0); - } - #[inline] - pub fn add_fiat_amount(&mut self, fiat_amount: f64) { - self.fbb_.push_slot::(SendTemplate::VT_FIAT_AMOUNT, fiat_amount, 0.0); - } - #[inline] - pub fn add_fee_included(&mut self, fee_included: bool) { - self.fbb_.push_slot::(SendTemplate::VT_FEE_INCLUDED, fee_included, false); - } - #[inline] - pub fn add_fiat(&mut self, fiat: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(SendTemplate::VT_FIAT, fiat); - } - #[inline] - pub fn add_include_reply_to(&mut self, include_reply_to: bool) { - self.fbb_.push_slot::(SendTemplate::VT_INCLUDE_REPLY_TO, include_reply_to, false); - } - #[inline] - pub fn add_subject(&mut self, subject: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(SendTemplate::VT_SUBJECT, subject); - } - #[inline] - pub fn add_body(&mut self, body: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(SendTemplate::VT_BODY, body); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SendTemplateBuilder<'a, 'b> { - let start = _fbb.start_table(); - SendTemplateBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for SendTemplate<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("SendTemplate"); - ds.field("id", &self.id()); - ds.field("title", &self.title()); - ds.field("address", &self.address()); - ds.field("amount", &self.amount()); - ds.field("fiat_amount", &self.fiat_amount()); - ds.field("fee_included", &self.fee_included()); - ds.field("fiat", &self.fiat()); - ds.field("include_reply_to", &self.include_reply_to()); - ds.field("subject", &self.subject()); - ds.field("body", &self.body()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct SendTemplateT { - pub id: u32, - pub title: Option, - pub address: Option, - pub amount: u64, - pub fiat_amount: f64, - pub fee_included: bool, - pub fiat: Option, - pub include_reply_to: bool, - pub subject: Option, - pub body: Option, -} -impl Default for SendTemplateT { - fn default() -> Self { - Self { - id: 0, - title: None, - address: None, - amount: 0, - fiat_amount: 0.0, - fee_included: false, - fiat: None, - include_reply_to: false, - subject: None, - body: None, - } - } -} -impl SendTemplateT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let id = self.id; - let title = self.title.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let address = self.address.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let amount = self.amount; - let fiat_amount = self.fiat_amount; - let fee_included = self.fee_included; - let fiat = self.fiat.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let include_reply_to = self.include_reply_to; - let subject = self.subject.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let body = self.body.as_ref().map(|x|{ - _fbb.create_string(x) - }); - SendTemplate::create(_fbb, &SendTemplateArgs{ - id, - title, - address, - amount, - fiat_amount, - fee_included, - fiat, - include_reply_to, - subject, - body, - }) - } -} -pub enum SendTemplateVecOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct SendTemplateVec<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for SendTemplateVec<'a> { - type Inner = SendTemplateVec<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> SendTemplateVec<'a> { - pub const VT_TEMPLATES: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - SendTemplateVec { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args SendTemplateVecArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = SendTemplateVecBuilder::new(_fbb); - if let Some(x) = args.templates { builder.add_templates(x); } - builder.finish() - } - - pub fn unpack(&self) -> SendTemplateVecT { - let templates = self.templates().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - SendTemplateVecT { - templates, - } - } - - #[inline] - pub fn templates(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(SendTemplateVec::VT_TEMPLATES, None)} - } -} - -impl flatbuffers::Verifiable for SendTemplateVec<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("templates", Self::VT_TEMPLATES, false)? - .finish(); - Ok(()) - } -} -pub struct SendTemplateVecArgs<'a> { - pub templates: Option>>>>, -} -impl<'a> Default for SendTemplateVecArgs<'a> { - #[inline] - fn default() -> Self { - SendTemplateVecArgs { - templates: None, - } - } -} - -pub struct SendTemplateVecBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> SendTemplateVecBuilder<'a, 'b> { - #[inline] - pub fn add_templates(&mut self, templates: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(SendTemplateVec::VT_TEMPLATES, templates); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SendTemplateVecBuilder<'a, 'b> { - let start = _fbb.start_table(); - SendTemplateVecBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for SendTemplateVec<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("SendTemplateVec"); - ds.field("templates", &self.templates()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct SendTemplateVecT { - pub templates: Option>, -} -impl Default for SendTemplateVecT { - fn default() -> Self { - Self { - templates: None, - } - } -} -impl SendTemplateVecT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let templates = self.templates.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - SendTemplateVec::create(_fbb, &SendTemplateVecArgs{ - templates, - }) - } -} -pub enum ContactOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Contact<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Contact<'a> { - type Inner = Contact<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Contact<'a> { - pub const VT_ID: flatbuffers::VOffsetT = 4; - pub const VT_NAME: flatbuffers::VOffsetT = 6; - pub const VT_ADDRESS: flatbuffers::VOffsetT = 8; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Contact { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args ContactArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = ContactBuilder::new(_fbb); - if let Some(x) = args.address { builder.add_address(x); } - if let Some(x) = args.name { builder.add_name(x); } - builder.add_id(args.id); - builder.finish() - } - - pub fn unpack(&self) -> ContactT { - let id = self.id(); - let name = self.name().map(|x| { - x.to_string() - }); - let address = self.address().map(|x| { - x.to_string() - }); - ContactT { - id, - name, - address, - } - } - - #[inline] - pub fn id(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Contact::VT_ID, Some(0)).unwrap()} - } - #[inline] - pub fn name(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Contact::VT_NAME, None)} - } - #[inline] - pub fn address(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Contact::VT_ADDRESS, None)} - } -} - -impl flatbuffers::Verifiable for Contact<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("id", Self::VT_ID, false)? - .visit_field::>("name", Self::VT_NAME, false)? - .visit_field::>("address", Self::VT_ADDRESS, false)? - .finish(); - Ok(()) - } -} -pub struct ContactArgs<'a> { - pub id: u32, - pub name: Option>, - pub address: Option>, -} -impl<'a> Default for ContactArgs<'a> { - #[inline] - fn default() -> Self { - ContactArgs { - id: 0, - name: None, - address: None, - } - } -} - -pub struct ContactBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> ContactBuilder<'a, 'b> { - #[inline] - pub fn add_id(&mut self, id: u32) { - self.fbb_.push_slot::(Contact::VT_ID, id, 0); - } - #[inline] - pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Contact::VT_NAME, name); - } - #[inline] - pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Contact::VT_ADDRESS, address); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ContactBuilder<'a, 'b> { - let start = _fbb.start_table(); - ContactBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Contact<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Contact"); - ds.field("id", &self.id()); - ds.field("name", &self.name()); - ds.field("address", &self.address()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct ContactT { - pub id: u32, - pub name: Option, - pub address: Option, -} -impl Default for ContactT { - fn default() -> Self { - Self { - id: 0, - name: None, - address: None, - } - } -} -impl ContactT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let id = self.id; - let name = self.name.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let address = self.address.as_ref().map(|x|{ - _fbb.create_string(x) - }); - Contact::create(_fbb, &ContactArgs{ - id, - name, - address, - }) - } -} -pub enum ContactVecOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct ContactVec<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for ContactVec<'a> { - type Inner = ContactVec<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> ContactVec<'a> { - pub const VT_CONTACTS: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - ContactVec { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args ContactVecArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = ContactVecBuilder::new(_fbb); - if let Some(x) = args.contacts { builder.add_contacts(x); } - builder.finish() - } - - pub fn unpack(&self) -> ContactVecT { - let contacts = self.contacts().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - ContactVecT { - contacts, - } - } - - #[inline] - pub fn contacts(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(ContactVec::VT_CONTACTS, None)} - } -} - -impl flatbuffers::Verifiable for ContactVec<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("contacts", Self::VT_CONTACTS, false)? - .finish(); - Ok(()) - } -} -pub struct ContactVecArgs<'a> { - pub contacts: Option>>>>, -} -impl<'a> Default for ContactVecArgs<'a> { - #[inline] - fn default() -> Self { - ContactVecArgs { - contacts: None, - } - } -} - -pub struct ContactVecBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> ContactVecBuilder<'a, 'b> { - #[inline] - pub fn add_contacts(&mut self, contacts: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(ContactVec::VT_CONTACTS, contacts); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ContactVecBuilder<'a, 'b> { - let start = _fbb.start_table(); - ContactVecBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for ContactVec<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("ContactVec"); - ds.field("contacts", &self.contacts()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct ContactVecT { - pub contacts: Option>, -} -impl Default for ContactVecT { - fn default() -> Self { - Self { - contacts: None, - } - } -} -impl ContactVecT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let contacts = self.contacts.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - ContactVec::create(_fbb, &ContactVecArgs{ - contacts, - }) - } -} -pub enum TxTimeValueOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct TxTimeValue<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for TxTimeValue<'a> { - type Inner = TxTimeValue<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> TxTimeValue<'a> { - pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 4; - pub const VT_VALUE: flatbuffers::VOffsetT = 6; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - TxTimeValue { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args TxTimeValueArgs - ) -> flatbuffers::WIPOffset> { - let mut builder = TxTimeValueBuilder::new(_fbb); - builder.add_value(args.value); - builder.add_timestamp(args.timestamp); - builder.finish() - } - - pub fn unpack(&self) -> TxTimeValueT { - let timestamp = self.timestamp(); - let value = self.value(); - TxTimeValueT { - timestamp, - value, - } - } - - #[inline] - pub fn timestamp(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxTimeValue::VT_TIMESTAMP, Some(0)).unwrap()} - } - #[inline] - pub fn value(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxTimeValue::VT_VALUE, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for TxTimeValue<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? - .visit_field::("value", Self::VT_VALUE, false)? - .finish(); - Ok(()) - } -} -pub struct TxTimeValueArgs { - pub timestamp: u32, - pub value: u64, -} -impl<'a> Default for TxTimeValueArgs { - #[inline] - fn default() -> Self { - TxTimeValueArgs { - timestamp: 0, - value: 0, - } - } -} - -pub struct TxTimeValueBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> TxTimeValueBuilder<'a, 'b> { - #[inline] - pub fn add_timestamp(&mut self, timestamp: u32) { - self.fbb_.push_slot::(TxTimeValue::VT_TIMESTAMP, timestamp, 0); - } - #[inline] - pub fn add_value(&mut self, value: u64) { - self.fbb_.push_slot::(TxTimeValue::VT_VALUE, value, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TxTimeValueBuilder<'a, 'b> { - let start = _fbb.start_table(); - TxTimeValueBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for TxTimeValue<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("TxTimeValue"); - ds.field("timestamp", &self.timestamp()); - ds.field("value", &self.value()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct TxTimeValueT { - pub timestamp: u32, - pub value: u64, -} -impl Default for TxTimeValueT { - fn default() -> Self { - Self { - timestamp: 0, - value: 0, - } - } -} -impl TxTimeValueT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let timestamp = self.timestamp; - let value = self.value; - TxTimeValue::create(_fbb, &TxTimeValueArgs{ - timestamp, - value, - }) - } -} -pub enum TxTimeValueVecOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct TxTimeValueVec<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for TxTimeValueVec<'a> { - type Inner = TxTimeValueVec<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> TxTimeValueVec<'a> { - pub const VT_VALUES: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - TxTimeValueVec { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args TxTimeValueVecArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = TxTimeValueVecBuilder::new(_fbb); - if let Some(x) = args.values { builder.add_values(x); } - builder.finish() - } - - pub fn unpack(&self) -> TxTimeValueVecT { - let values = self.values().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - TxTimeValueVecT { - values, - } - } - - #[inline] - pub fn values(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(TxTimeValueVec::VT_VALUES, None)} - } -} - -impl flatbuffers::Verifiable for TxTimeValueVec<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("values", Self::VT_VALUES, false)? - .finish(); - Ok(()) - } -} -pub struct TxTimeValueVecArgs<'a> { - pub values: Option>>>>, -} -impl<'a> Default for TxTimeValueVecArgs<'a> { - #[inline] - fn default() -> Self { - TxTimeValueVecArgs { - values: None, - } - } -} - -pub struct TxTimeValueVecBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> TxTimeValueVecBuilder<'a, 'b> { - #[inline] - pub fn add_values(&mut self, values: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(TxTimeValueVec::VT_VALUES, values); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TxTimeValueVecBuilder<'a, 'b> { - let start = _fbb.start_table(); - TxTimeValueVecBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for TxTimeValueVec<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("TxTimeValueVec"); - ds.field("values", &self.values()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct TxTimeValueVecT { - pub values: Option>, -} -impl Default for TxTimeValueVecT { - fn default() -> Self { - Self { - values: None, - } - } -} -impl TxTimeValueVecT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let values = self.values.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - TxTimeValueVec::create(_fbb, &TxTimeValueVecArgs{ - values, - }) - } -} -pub enum QuoteOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Quote<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Quote<'a> { - type Inner = Quote<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Quote<'a> { - pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 4; - pub const VT_PRICE: flatbuffers::VOffsetT = 6; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Quote { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args QuoteArgs - ) -> flatbuffers::WIPOffset> { - let mut builder = QuoteBuilder::new(_fbb); - builder.add_price(args.price); - builder.add_timestamp(args.timestamp); - builder.finish() - } - - pub fn unpack(&self) -> QuoteT { - let timestamp = self.timestamp(); - let price = self.price(); - QuoteT { - timestamp, - price, - } - } - - #[inline] - pub fn timestamp(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Quote::VT_TIMESTAMP, Some(0)).unwrap()} - } - #[inline] - pub fn price(&self) -> f64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Quote::VT_PRICE, Some(0.0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for Quote<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? - .visit_field::("price", Self::VT_PRICE, false)? - .finish(); - Ok(()) - } -} -pub struct QuoteArgs { - pub timestamp: u32, - pub price: f64, -} -impl<'a> Default for QuoteArgs { - #[inline] - fn default() -> Self { - QuoteArgs { - timestamp: 0, - price: 0.0, - } - } -} - -pub struct QuoteBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> QuoteBuilder<'a, 'b> { - #[inline] - pub fn add_timestamp(&mut self, timestamp: u32) { - self.fbb_.push_slot::(Quote::VT_TIMESTAMP, timestamp, 0); - } - #[inline] - pub fn add_price(&mut self, price: f64) { - self.fbb_.push_slot::(Quote::VT_PRICE, price, 0.0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> QuoteBuilder<'a, 'b> { - let start = _fbb.start_table(); - QuoteBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Quote<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Quote"); - ds.field("timestamp", &self.timestamp()); - ds.field("price", &self.price()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct QuoteT { - pub timestamp: u32, - pub price: f64, -} -impl Default for QuoteT { - fn default() -> Self { - Self { - timestamp: 0, - price: 0.0, - } - } -} -impl QuoteT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let timestamp = self.timestamp; - let price = self.price; - Quote::create(_fbb, &QuoteArgs{ - timestamp, - price, - }) - } -} -pub enum QuoteVecOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct QuoteVec<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for QuoteVec<'a> { - type Inner = QuoteVec<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> QuoteVec<'a> { - pub const VT_VALUES: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - QuoteVec { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args QuoteVecArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = QuoteVecBuilder::new(_fbb); - if let Some(x) = args.values { builder.add_values(x); } - builder.finish() - } - - pub fn unpack(&self) -> QuoteVecT { - let values = self.values().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - QuoteVecT { - values, - } - } - - #[inline] - pub fn values(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(QuoteVec::VT_VALUES, None)} - } -} - -impl flatbuffers::Verifiable for QuoteVec<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("values", Self::VT_VALUES, false)? - .finish(); - Ok(()) - } -} -pub struct QuoteVecArgs<'a> { - pub values: Option>>>>, -} -impl<'a> Default for QuoteVecArgs<'a> { - #[inline] - fn default() -> Self { - QuoteVecArgs { - values: None, - } - } -} - -pub struct QuoteVecBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> QuoteVecBuilder<'a, 'b> { - #[inline] - pub fn add_values(&mut self, values: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(QuoteVec::VT_VALUES, values); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> QuoteVecBuilder<'a, 'b> { - let start = _fbb.start_table(); - QuoteVecBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for QuoteVec<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("QuoteVec"); - ds.field("values", &self.values()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct QuoteVecT { - pub values: Option>, -} -impl Default for QuoteVecT { - fn default() -> Self { - Self { - values: None, - } - } -} -impl QuoteVecT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let values = self.values.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - QuoteVec::create(_fbb, &QuoteVecArgs{ - values, - }) - } -} -pub enum SpendingOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Spending<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Spending<'a> { - type Inner = Spending<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Spending<'a> { - pub const VT_RECIPIENT: flatbuffers::VOffsetT = 4; - pub const VT_AMOUNT: flatbuffers::VOffsetT = 6; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Spending { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args SpendingArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = SpendingBuilder::new(_fbb); - builder.add_amount(args.amount); - if let Some(x) = args.recipient { builder.add_recipient(x); } - builder.finish() - } - - pub fn unpack(&self) -> SpendingT { - let recipient = self.recipient().map(|x| { - x.to_string() - }); - let amount = self.amount(); - SpendingT { - recipient, - amount, - } - } - - #[inline] - pub fn recipient(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Spending::VT_RECIPIENT, None)} - } - #[inline] - pub fn amount(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Spending::VT_AMOUNT, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for Spending<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>("recipient", Self::VT_RECIPIENT, false)? - .visit_field::("amount", Self::VT_AMOUNT, false)? - .finish(); - Ok(()) - } -} -pub struct SpendingArgs<'a> { - pub recipient: Option>, - pub amount: u64, -} -impl<'a> Default for SpendingArgs<'a> { - #[inline] - fn default() -> Self { - SpendingArgs { - recipient: None, - amount: 0, - } - } -} - -pub struct SpendingBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> SpendingBuilder<'a, 'b> { - #[inline] - pub fn add_recipient(&mut self, recipient: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Spending::VT_RECIPIENT, recipient); - } - #[inline] - pub fn add_amount(&mut self, amount: u64) { - self.fbb_.push_slot::(Spending::VT_AMOUNT, amount, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SpendingBuilder<'a, 'b> { - let start = _fbb.start_table(); - SpendingBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Spending<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Spending"); - ds.field("recipient", &self.recipient()); - ds.field("amount", &self.amount()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct SpendingT { - pub recipient: Option, - pub amount: u64, -} -impl Default for SpendingT { - fn default() -> Self { - Self { - recipient: None, - amount: 0, - } - } -} -impl SpendingT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let recipient = self.recipient.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let amount = self.amount; - Spending::create(_fbb, &SpendingArgs{ - recipient, - amount, - }) - } -} -pub enum SpendingVecOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct SpendingVec<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for SpendingVec<'a> { - type Inner = SpendingVec<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> SpendingVec<'a> { - pub const VT_VALUES: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - SpendingVec { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args SpendingVecArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = SpendingVecBuilder::new(_fbb); - if let Some(x) = args.values { builder.add_values(x); } - builder.finish() - } - - pub fn unpack(&self) -> SpendingVecT { - let values = self.values().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - SpendingVecT { - values, - } - } - - #[inline] - pub fn values(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(SpendingVec::VT_VALUES, None)} - } -} - -impl flatbuffers::Verifiable for SpendingVec<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("values", Self::VT_VALUES, false)? - .finish(); - Ok(()) - } -} -pub struct SpendingVecArgs<'a> { - pub values: Option>>>>, -} -impl<'a> Default for SpendingVecArgs<'a> { - #[inline] - fn default() -> Self { - SpendingVecArgs { - values: None, - } - } -} - -pub struct SpendingVecBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> SpendingVecBuilder<'a, 'b> { - #[inline] - pub fn add_values(&mut self, values: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(SpendingVec::VT_VALUES, values); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SpendingVecBuilder<'a, 'b> { - let start = _fbb.start_table(); - SpendingVecBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for SpendingVec<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("SpendingVec"); - ds.field("values", &self.values()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct SpendingVecT { - pub values: Option>, -} -impl Default for SpendingVecT { - fn default() -> Self { - Self { - values: None, - } - } -} -impl SpendingVecT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let values = self.values.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - SpendingVec::create(_fbb, &SpendingVecArgs{ - values, - }) - } -} -pub enum AddressBalanceOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct AddressBalance<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for AddressBalance<'a> { - type Inner = AddressBalance<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> AddressBalance<'a> { - pub const VT_INDEX: flatbuffers::VOffsetT = 4; - pub const VT_ADDRESS: flatbuffers::VOffsetT = 6; - pub const VT_BALANCE: flatbuffers::VOffsetT = 8; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - AddressBalance { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args AddressBalanceArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = AddressBalanceBuilder::new(_fbb); - builder.add_balance(args.balance); - if let Some(x) = args.address { builder.add_address(x); } - builder.add_index(args.index); - builder.finish() - } - - pub fn unpack(&self) -> AddressBalanceT { - let index = self.index(); - let address = self.address().map(|x| { - x.to_string() - }); - let balance = self.balance(); - AddressBalanceT { - index, - address, - balance, - } - } - - #[inline] - pub fn index(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(AddressBalance::VT_INDEX, Some(0)).unwrap()} - } - #[inline] - pub fn address(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(AddressBalance::VT_ADDRESS, None)} - } - #[inline] - pub fn balance(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(AddressBalance::VT_BALANCE, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for AddressBalance<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("index", Self::VT_INDEX, false)? - .visit_field::>("address", Self::VT_ADDRESS, false)? - .visit_field::("balance", Self::VT_BALANCE, false)? - .finish(); - Ok(()) - } -} -pub struct AddressBalanceArgs<'a> { - pub index: u32, - pub address: Option>, - pub balance: u64, -} -impl<'a> Default for AddressBalanceArgs<'a> { - #[inline] - fn default() -> Self { - AddressBalanceArgs { - index: 0, - address: None, - balance: 0, - } - } -} - -pub struct AddressBalanceBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> AddressBalanceBuilder<'a, 'b> { - #[inline] - pub fn add_index(&mut self, index: u32) { - self.fbb_.push_slot::(AddressBalance::VT_INDEX, index, 0); - } - #[inline] - pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(AddressBalance::VT_ADDRESS, address); - } - #[inline] - pub fn add_balance(&mut self, balance: u64) { - self.fbb_.push_slot::(AddressBalance::VT_BALANCE, balance, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AddressBalanceBuilder<'a, 'b> { - let start = _fbb.start_table(); - AddressBalanceBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for AddressBalance<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("AddressBalance"); - ds.field("index", &self.index()); - ds.field("address", &self.address()); - ds.field("balance", &self.balance()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct AddressBalanceT { - pub index: u32, - pub address: Option, - pub balance: u64, -} -impl Default for AddressBalanceT { - fn default() -> Self { - Self { - index: 0, - address: None, - balance: 0, - } - } -} -impl AddressBalanceT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let index = self.index; - let address = self.address.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let balance = self.balance; - AddressBalance::create(_fbb, &AddressBalanceArgs{ - index, - address, - balance, - }) - } -} -pub enum AddressBalanceVecOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct AddressBalanceVec<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for AddressBalanceVec<'a> { - type Inner = AddressBalanceVec<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> AddressBalanceVec<'a> { - pub const VT_VALUES: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - AddressBalanceVec { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args AddressBalanceVecArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = AddressBalanceVecBuilder::new(_fbb); - if let Some(x) = args.values { builder.add_values(x); } - builder.finish() - } - - pub fn unpack(&self) -> AddressBalanceVecT { - let values = self.values().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - AddressBalanceVecT { - values, - } - } - - #[inline] - pub fn values(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(AddressBalanceVec::VT_VALUES, None)} - } -} - -impl flatbuffers::Verifiable for AddressBalanceVec<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("values", Self::VT_VALUES, false)? - .finish(); - Ok(()) - } -} -pub struct AddressBalanceVecArgs<'a> { - pub values: Option>>>>, -} -impl<'a> Default for AddressBalanceVecArgs<'a> { - #[inline] - fn default() -> Self { - AddressBalanceVecArgs { - values: None, - } - } -} - -pub struct AddressBalanceVecBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> AddressBalanceVecBuilder<'a, 'b> { - #[inline] - pub fn add_values(&mut self, values: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(AddressBalanceVec::VT_VALUES, values); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AddressBalanceVecBuilder<'a, 'b> { - let start = _fbb.start_table(); - AddressBalanceVecBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for AddressBalanceVec<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("AddressBalanceVec"); - ds.field("values", &self.values()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct AddressBalanceVecT { - pub values: Option>, -} -impl Default for AddressBalanceVecT { - fn default() -> Self { - Self { - values: None, - } - } -} -impl AddressBalanceVecT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let values = self.values.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - AddressBalanceVec::create(_fbb, &AddressBalanceVecArgs{ - values, - }) - } -} -pub enum CheckpointOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Checkpoint<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Checkpoint<'a> { - type Inner = Checkpoint<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Checkpoint<'a> { - pub const VT_HEIGHT: flatbuffers::VOffsetT = 4; - pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 6; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Checkpoint { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args CheckpointArgs - ) -> flatbuffers::WIPOffset> { - let mut builder = CheckpointBuilder::new(_fbb); - builder.add_timestamp(args.timestamp); - builder.add_height(args.height); - builder.finish() - } - - pub fn unpack(&self) -> CheckpointT { - let height = self.height(); - let timestamp = self.timestamp(); - CheckpointT { - height, - timestamp, - } - } - - #[inline] - pub fn height(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Checkpoint::VT_HEIGHT, Some(0)).unwrap()} - } - #[inline] - pub fn timestamp(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Checkpoint::VT_TIMESTAMP, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for Checkpoint<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("height", Self::VT_HEIGHT, false)? - .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? - .finish(); - Ok(()) - } -} -pub struct CheckpointArgs { - pub height: u32, - pub timestamp: u32, -} -impl<'a> Default for CheckpointArgs { - #[inline] - fn default() -> Self { - CheckpointArgs { - height: 0, - timestamp: 0, - } - } -} - -pub struct CheckpointBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> CheckpointBuilder<'a, 'b> { - #[inline] - pub fn add_height(&mut self, height: u32) { - self.fbb_.push_slot::(Checkpoint::VT_HEIGHT, height, 0); - } - #[inline] - pub fn add_timestamp(&mut self, timestamp: u32) { - self.fbb_.push_slot::(Checkpoint::VT_TIMESTAMP, timestamp, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> CheckpointBuilder<'a, 'b> { - let start = _fbb.start_table(); - CheckpointBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Checkpoint<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Checkpoint"); - ds.field("height", &self.height()); - ds.field("timestamp", &self.timestamp()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct CheckpointT { - pub height: u32, - pub timestamp: u32, -} -impl Default for CheckpointT { - fn default() -> Self { - Self { - height: 0, - timestamp: 0, - } - } -} -impl CheckpointT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let height = self.height; - let timestamp = self.timestamp; - Checkpoint::create(_fbb, &CheckpointArgs{ - height, - timestamp, - }) - } -} -pub enum CheckpointVecOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct CheckpointVec<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for CheckpointVec<'a> { - type Inner = CheckpointVec<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> CheckpointVec<'a> { - pub const VT_VALUES: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - CheckpointVec { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args CheckpointVecArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = CheckpointVecBuilder::new(_fbb); - if let Some(x) = args.values { builder.add_values(x); } - builder.finish() - } - - pub fn unpack(&self) -> CheckpointVecT { - let values = self.values().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - CheckpointVecT { - values, - } - } - - #[inline] - pub fn values(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(CheckpointVec::VT_VALUES, None)} - } -} - -impl flatbuffers::Verifiable for CheckpointVec<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("values", Self::VT_VALUES, false)? - .finish(); - Ok(()) - } -} -pub struct CheckpointVecArgs<'a> { - pub values: Option>>>>, -} -impl<'a> Default for CheckpointVecArgs<'a> { - #[inline] - fn default() -> Self { - CheckpointVecArgs { - values: None, - } - } -} - -pub struct CheckpointVecBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> CheckpointVecBuilder<'a, 'b> { - #[inline] - pub fn add_values(&mut self, values: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(CheckpointVec::VT_VALUES, values); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> CheckpointVecBuilder<'a, 'b> { - let start = _fbb.start_table(); - CheckpointVecBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for CheckpointVec<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("CheckpointVec"); - ds.field("values", &self.values()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct CheckpointVecT { - pub values: Option>, -} -impl Default for CheckpointVecT { - fn default() -> Self { - Self { - values: None, - } - } -} -impl CheckpointVecT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let values = self.values.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - CheckpointVec::create(_fbb, &CheckpointVecArgs{ - values, - }) - } -} -pub enum BackupOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Backup<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Backup<'a> { - type Inner = Backup<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Backup<'a> { - pub const VT_NAME: flatbuffers::VOffsetT = 4; - pub const VT_SEED: flatbuffers::VOffsetT = 6; - pub const VT_INDEX: flatbuffers::VOffsetT = 8; - pub const VT_SK: flatbuffers::VOffsetT = 10; - pub const VT_FVK: flatbuffers::VOffsetT = 12; - pub const VT_UVK: flatbuffers::VOffsetT = 14; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Backup { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args BackupArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = BackupBuilder::new(_fbb); - if let Some(x) = args.uvk { builder.add_uvk(x); } - if let Some(x) = args.fvk { builder.add_fvk(x); } - if let Some(x) = args.sk { builder.add_sk(x); } - builder.add_index(args.index); - if let Some(x) = args.seed { builder.add_seed(x); } - if let Some(x) = args.name { builder.add_name(x); } - builder.finish() - } - - pub fn unpack(&self) -> BackupT { - let name = self.name().map(|x| { - x.to_string() - }); - let seed = self.seed().map(|x| { - x.to_string() - }); - let index = self.index(); - let sk = self.sk().map(|x| { - x.to_string() - }); - let fvk = self.fvk().map(|x| { - x.to_string() - }); - let uvk = self.uvk().map(|x| { - x.to_string() - }); - BackupT { - name, - seed, - index, - sk, - fvk, - uvk, - } - } - - #[inline] - pub fn name(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Backup::VT_NAME, None)} - } - #[inline] - pub fn seed(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Backup::VT_SEED, None)} - } - #[inline] - pub fn index(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Backup::VT_INDEX, Some(0)).unwrap()} - } - #[inline] - pub fn sk(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Backup::VT_SK, None)} - } - #[inline] - pub fn fvk(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Backup::VT_FVK, None)} - } - #[inline] - pub fn uvk(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Backup::VT_UVK, None)} - } -} - -impl flatbuffers::Verifiable for Backup<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>("name", Self::VT_NAME, false)? - .visit_field::>("seed", Self::VT_SEED, false)? - .visit_field::("index", Self::VT_INDEX, false)? - .visit_field::>("sk", Self::VT_SK, false)? - .visit_field::>("fvk", Self::VT_FVK, false)? - .visit_field::>("uvk", Self::VT_UVK, false)? - .finish(); - Ok(()) - } -} -pub struct BackupArgs<'a> { - pub name: Option>, - pub seed: Option>, - pub index: u32, - pub sk: Option>, - pub fvk: Option>, - pub uvk: Option>, -} -impl<'a> Default for BackupArgs<'a> { - #[inline] - fn default() -> Self { - BackupArgs { - name: None, - seed: None, - index: 0, - sk: None, - fvk: None, - uvk: None, - } - } -} - -pub struct BackupBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> BackupBuilder<'a, 'b> { - #[inline] - pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Backup::VT_NAME, name); - } - #[inline] - pub fn add_seed(&mut self, seed: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Backup::VT_SEED, seed); - } - #[inline] - pub fn add_index(&mut self, index: u32) { - self.fbb_.push_slot::(Backup::VT_INDEX, index, 0); - } - #[inline] - pub fn add_sk(&mut self, sk: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Backup::VT_SK, sk); - } - #[inline] - pub fn add_fvk(&mut self, fvk: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Backup::VT_FVK, fvk); - } - #[inline] - pub fn add_uvk(&mut self, uvk: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Backup::VT_UVK, uvk); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BackupBuilder<'a, 'b> { - let start = _fbb.start_table(); - BackupBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Backup<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Backup"); - ds.field("name", &self.name()); - ds.field("seed", &self.seed()); - ds.field("index", &self.index()); - ds.field("sk", &self.sk()); - ds.field("fvk", &self.fvk()); - ds.field("uvk", &self.uvk()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct BackupT { - pub name: Option, - pub seed: Option, - pub index: u32, - pub sk: Option, - pub fvk: Option, - pub uvk: Option, -} -impl Default for BackupT { - fn default() -> Self { - Self { - name: None, - seed: None, - index: 0, - sk: None, - fvk: None, - uvk: None, - } - } -} -impl BackupT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let name = self.name.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let seed = self.seed.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let index = self.index; - let sk = self.sk.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let fvk = self.fvk.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let uvk = self.uvk.as_ref().map(|x|{ - _fbb.create_string(x) - }); - Backup::create(_fbb, &BackupArgs{ - name, - seed, - index, - sk, - fvk, - uvk, - }) - } -} -pub enum RaptorQDropsOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct RaptorQDrops<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for RaptorQDrops<'a> { - type Inner = RaptorQDrops<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> RaptorQDrops<'a> { - pub const VT_DROPS: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - RaptorQDrops { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args RaptorQDropsArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = RaptorQDropsBuilder::new(_fbb); - if let Some(x) = args.drops { builder.add_drops(x); } - builder.finish() - } - - pub fn unpack(&self) -> RaptorQDropsT { - let drops = self.drops().map(|x| { - x.iter().map(|s| s.to_string()).collect() - }); - RaptorQDropsT { - drops, - } - } - - #[inline] - pub fn drops(&self) -> Option>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(RaptorQDrops::VT_DROPS, None)} - } -} - -impl flatbuffers::Verifiable for RaptorQDrops<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("drops", Self::VT_DROPS, false)? - .finish(); - Ok(()) - } -} -pub struct RaptorQDropsArgs<'a> { - pub drops: Option>>>, -} -impl<'a> Default for RaptorQDropsArgs<'a> { - #[inline] - fn default() -> Self { - RaptorQDropsArgs { - drops: None, - } - } -} - -pub struct RaptorQDropsBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> RaptorQDropsBuilder<'a, 'b> { - #[inline] - pub fn add_drops(&mut self, drops: flatbuffers::WIPOffset>>) { - self.fbb_.push_slot_always::>(RaptorQDrops::VT_DROPS, drops); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RaptorQDropsBuilder<'a, 'b> { - let start = _fbb.start_table(); - RaptorQDropsBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for RaptorQDrops<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("RaptorQDrops"); - ds.field("drops", &self.drops()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct RaptorQDropsT { - pub drops: Option>, -} -impl Default for RaptorQDropsT { - fn default() -> Self { - Self { - drops: None, - } - } -} -impl RaptorQDropsT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let drops = self.drops.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|s| _fbb.create_string(s)).collect();_fbb.create_vector(&w) - }); - RaptorQDrops::create(_fbb, &RaptorQDropsArgs{ - drops, - }) - } -} -pub enum AGEKeysOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct AGEKeys<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for AGEKeys<'a> { - type Inner = AGEKeys<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> AGEKeys<'a> { - pub const VT_SK: flatbuffers::VOffsetT = 4; - pub const VT_PK: flatbuffers::VOffsetT = 6; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - AGEKeys { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args AGEKeysArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = AGEKeysBuilder::new(_fbb); - if let Some(x) = args.pk { builder.add_pk(x); } - if let Some(x) = args.sk { builder.add_sk(x); } - builder.finish() - } - - pub fn unpack(&self) -> AGEKeysT { - let sk = self.sk().map(|x| { - x.to_string() - }); - let pk = self.pk().map(|x| { - x.to_string() - }); - AGEKeysT { - sk, - pk, - } - } - - #[inline] - pub fn sk(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(AGEKeys::VT_SK, None)} - } - #[inline] - pub fn pk(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(AGEKeys::VT_PK, None)} - } -} - -impl flatbuffers::Verifiable for AGEKeys<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>("sk", Self::VT_SK, false)? - .visit_field::>("pk", Self::VT_PK, false)? - .finish(); - Ok(()) - } -} -pub struct AGEKeysArgs<'a> { - pub sk: Option>, - pub pk: Option>, -} -impl<'a> Default for AGEKeysArgs<'a> { - #[inline] - fn default() -> Self { - AGEKeysArgs { - sk: None, - pk: None, - } - } -} - -pub struct AGEKeysBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> AGEKeysBuilder<'a, 'b> { - #[inline] - pub fn add_sk(&mut self, sk: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(AGEKeys::VT_SK, sk); - } - #[inline] - pub fn add_pk(&mut self, pk: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(AGEKeys::VT_PK, pk); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AGEKeysBuilder<'a, 'b> { - let start = _fbb.start_table(); - AGEKeysBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for AGEKeys<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("AGEKeys"); - ds.field("sk", &self.sk()); - ds.field("pk", &self.pk()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct AGEKeysT { - pub sk: Option, - pub pk: Option, -} -impl Default for AGEKeysT { - fn default() -> Self { - Self { - sk: None, - pk: None, - } - } -} -impl AGEKeysT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let sk = self.sk.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let pk = self.pk.as_ref().map(|x|{ - _fbb.create_string(x) - }); - AGEKeys::create(_fbb, &AGEKeysArgs{ - sk, - pk, - }) - } -} -pub enum ServersOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Servers<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Servers<'a> { - type Inner = Servers<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Servers<'a> { - pub const VT_URLS: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Servers { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args ServersArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = ServersBuilder::new(_fbb); - if let Some(x) = args.urls { builder.add_urls(x); } - builder.finish() - } - - pub fn unpack(&self) -> ServersT { - let urls = self.urls().map(|x| { - x.iter().map(|s| s.to_string()).collect() - }); - ServersT { - urls, - } - } - - #[inline] - pub fn urls(&self) -> Option>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(Servers::VT_URLS, None)} - } -} - -impl flatbuffers::Verifiable for Servers<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("urls", Self::VT_URLS, false)? - .finish(); - Ok(()) - } -} -pub struct ServersArgs<'a> { - pub urls: Option>>>, -} -impl<'a> Default for ServersArgs<'a> { - #[inline] - fn default() -> Self { - ServersArgs { - urls: None, - } - } -} - -pub struct ServersBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> ServersBuilder<'a, 'b> { - #[inline] - pub fn add_urls(&mut self, urls: flatbuffers::WIPOffset>>) { - self.fbb_.push_slot_always::>(Servers::VT_URLS, urls); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ServersBuilder<'a, 'b> { - let start = _fbb.start_table(); - ServersBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Servers<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Servers"); - ds.field("urls", &self.urls()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct ServersT { - pub urls: Option>, -} -impl Default for ServersT { - fn default() -> Self { - Self { - urls: None, - } - } -} -impl ServersT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let urls = self.urls.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|s| _fbb.create_string(s)).collect();_fbb.create_vector(&w) - }); - Servers::create(_fbb, &ServersArgs{ - urls, - }) - } -} -pub enum ProgressOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Progress<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Progress<'a> { - type Inner = Progress<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Progress<'a> { - pub const VT_HEIGHT: flatbuffers::VOffsetT = 4; - pub const VT_TRIAL_DECRYPTIONS: flatbuffers::VOffsetT = 6; - pub const VT_DOWNLOADED: flatbuffers::VOffsetT = 8; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Progress { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args ProgressArgs - ) -> flatbuffers::WIPOffset> { - let mut builder = ProgressBuilder::new(_fbb); - builder.add_downloaded(args.downloaded); - builder.add_trial_decryptions(args.trial_decryptions); - builder.add_height(args.height); - builder.finish() - } - - pub fn unpack(&self) -> ProgressT { - let height = self.height(); - let trial_decryptions = self.trial_decryptions(); - let downloaded = self.downloaded(); - ProgressT { - height, - trial_decryptions, - downloaded, - } - } - - #[inline] - pub fn height(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Progress::VT_HEIGHT, Some(0)).unwrap()} - } - #[inline] - pub fn trial_decryptions(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Progress::VT_TRIAL_DECRYPTIONS, Some(0)).unwrap()} - } - #[inline] - pub fn downloaded(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Progress::VT_DOWNLOADED, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for Progress<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("height", Self::VT_HEIGHT, false)? - .visit_field::("trial_decryptions", Self::VT_TRIAL_DECRYPTIONS, false)? - .visit_field::("downloaded", Self::VT_DOWNLOADED, false)? - .finish(); - Ok(()) - } -} -pub struct ProgressArgs { - pub height: u32, - pub trial_decryptions: u64, - pub downloaded: u64, -} -impl<'a> Default for ProgressArgs { - #[inline] - fn default() -> Self { - ProgressArgs { - height: 0, - trial_decryptions: 0, - downloaded: 0, - } - } -} - -pub struct ProgressBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> ProgressBuilder<'a, 'b> { - #[inline] - pub fn add_height(&mut self, height: u32) { - self.fbb_.push_slot::(Progress::VT_HEIGHT, height, 0); - } - #[inline] - pub fn add_trial_decryptions(&mut self, trial_decryptions: u64) { - self.fbb_.push_slot::(Progress::VT_TRIAL_DECRYPTIONS, trial_decryptions, 0); - } - #[inline] - pub fn add_downloaded(&mut self, downloaded: u64) { - self.fbb_.push_slot::(Progress::VT_DOWNLOADED, downloaded, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ProgressBuilder<'a, 'b> { - let start = _fbb.start_table(); - ProgressBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Progress<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Progress"); - ds.field("height", &self.height()); - ds.field("trial_decryptions", &self.trial_decryptions()); - ds.field("downloaded", &self.downloaded()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct ProgressT { - pub height: u32, - pub trial_decryptions: u64, - pub downloaded: u64, -} -impl Default for ProgressT { - fn default() -> Self { - Self { - height: 0, - trial_decryptions: 0, - downloaded: 0, - } - } -} -impl ProgressT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let height = self.height; - let trial_decryptions = self.trial_decryptions; - let downloaded = self.downloaded; - Progress::create(_fbb, &ProgressArgs{ - height, - trial_decryptions, - downloaded, - }) - } -} -pub enum KeyPackOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct KeyPack<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for KeyPack<'a> { - type Inner = KeyPack<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> KeyPack<'a> { - pub const VT_T_ADDR: flatbuffers::VOffsetT = 4; - pub const VT_T_KEY: flatbuffers::VOffsetT = 6; - pub const VT_Z_ADDR: flatbuffers::VOffsetT = 8; - pub const VT_Z_KEY: flatbuffers::VOffsetT = 10; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - KeyPack { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args KeyPackArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = KeyPackBuilder::new(_fbb); - if let Some(x) = args.z_key { builder.add_z_key(x); } - if let Some(x) = args.z_addr { builder.add_z_addr(x); } - if let Some(x) = args.t_key { builder.add_t_key(x); } - if let Some(x) = args.t_addr { builder.add_t_addr(x); } - builder.finish() - } - - pub fn unpack(&self) -> KeyPackT { - let t_addr = self.t_addr().map(|x| { - x.to_string() - }); - let t_key = self.t_key().map(|x| { - x.to_string() - }); - let z_addr = self.z_addr().map(|x| { - x.to_string() - }); - let z_key = self.z_key().map(|x| { - x.to_string() - }); - KeyPackT { - t_addr, - t_key, - z_addr, - z_key, - } - } - - #[inline] - pub fn t_addr(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(KeyPack::VT_T_ADDR, None)} - } - #[inline] - pub fn t_key(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(KeyPack::VT_T_KEY, None)} - } - #[inline] - pub fn z_addr(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(KeyPack::VT_Z_ADDR, None)} - } - #[inline] - pub fn z_key(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(KeyPack::VT_Z_KEY, None)} - } -} - -impl flatbuffers::Verifiable for KeyPack<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>("t_addr", Self::VT_T_ADDR, false)? - .visit_field::>("t_key", Self::VT_T_KEY, false)? - .visit_field::>("z_addr", Self::VT_Z_ADDR, false)? - .visit_field::>("z_key", Self::VT_Z_KEY, false)? - .finish(); - Ok(()) - } -} -pub struct KeyPackArgs<'a> { - pub t_addr: Option>, - pub t_key: Option>, - pub z_addr: Option>, - pub z_key: Option>, -} -impl<'a> Default for KeyPackArgs<'a> { - #[inline] - fn default() -> Self { - KeyPackArgs { - t_addr: None, - t_key: None, - z_addr: None, - z_key: None, - } - } -} - -pub struct KeyPackBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> KeyPackBuilder<'a, 'b> { - #[inline] - pub fn add_t_addr(&mut self, t_addr: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(KeyPack::VT_T_ADDR, t_addr); - } - #[inline] - pub fn add_t_key(&mut self, t_key: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(KeyPack::VT_T_KEY, t_key); - } - #[inline] - pub fn add_z_addr(&mut self, z_addr: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(KeyPack::VT_Z_ADDR, z_addr); - } - #[inline] - pub fn add_z_key(&mut self, z_key: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(KeyPack::VT_Z_KEY, z_key); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> KeyPackBuilder<'a, 'b> { - let start = _fbb.start_table(); - KeyPackBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for KeyPack<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("KeyPack"); - ds.field("t_addr", &self.t_addr()); - ds.field("t_key", &self.t_key()); - ds.field("z_addr", &self.z_addr()); - ds.field("z_key", &self.z_key()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct KeyPackT { - pub t_addr: Option, - pub t_key: Option, - pub z_addr: Option, - pub z_key: Option, -} -impl Default for KeyPackT { - fn default() -> Self { - Self { - t_addr: None, - t_key: None, - z_addr: None, - z_key: None, - } - } -} -impl KeyPackT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let t_addr = self.t_addr.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let t_key = self.t_key.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let z_addr = self.z_addr.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let z_key = self.z_key.as_ref().map(|x|{ - _fbb.create_string(x) - }); - KeyPack::create(_fbb, &KeyPackArgs{ - t_addr, - t_key, - z_addr, - z_key, - }) - } -} -pub enum RecipientOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Recipient<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Recipient<'a> { - type Inner = Recipient<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Recipient<'a> { - pub const VT_ADDRESS: flatbuffers::VOffsetT = 4; - pub const VT_AMOUNT: flatbuffers::VOffsetT = 6; - pub const VT_FEE_INCLUDED: flatbuffers::VOffsetT = 8; - pub const VT_REPLY_TO: flatbuffers::VOffsetT = 10; - pub const VT_SUBJECT: flatbuffers::VOffsetT = 12; - pub const VT_MEMO: flatbuffers::VOffsetT = 14; - pub const VT_MAX_AMOUNT_PER_NOTE: flatbuffers::VOffsetT = 16; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Recipient { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args RecipientArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = RecipientBuilder::new(_fbb); - builder.add_max_amount_per_note(args.max_amount_per_note); - builder.add_amount(args.amount); - if let Some(x) = args.memo { builder.add_memo(x); } - if let Some(x) = args.subject { builder.add_subject(x); } - if let Some(x) = args.address { builder.add_address(x); } - builder.add_reply_to(args.reply_to); - builder.add_fee_included(args.fee_included); - builder.finish() - } - - pub fn unpack(&self) -> RecipientT { - let address = self.address().map(|x| { - x.to_string() - }); - let amount = self.amount(); - let fee_included = self.fee_included(); - let reply_to = self.reply_to(); - let subject = self.subject().map(|x| { - x.to_string() - }); - let memo = self.memo().map(|x| { - x.to_string() - }); - let max_amount_per_note = self.max_amount_per_note(); - RecipientT { - address, - amount, - fee_included, - reply_to, - subject, - memo, - max_amount_per_note, - } - } - - #[inline] - pub fn address(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Recipient::VT_ADDRESS, None)} - } - #[inline] - pub fn amount(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Recipient::VT_AMOUNT, Some(0)).unwrap()} - } - #[inline] - pub fn fee_included(&self) -> bool { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Recipient::VT_FEE_INCLUDED, Some(false)).unwrap()} - } - #[inline] - pub fn reply_to(&self) -> bool { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Recipient::VT_REPLY_TO, Some(false)).unwrap()} - } - #[inline] - pub fn subject(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Recipient::VT_SUBJECT, None)} - } - #[inline] - pub fn memo(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(Recipient::VT_MEMO, None)} - } - #[inline] - pub fn max_amount_per_note(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(Recipient::VT_MAX_AMOUNT_PER_NOTE, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for Recipient<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>("address", Self::VT_ADDRESS, false)? - .visit_field::("amount", Self::VT_AMOUNT, false)? - .visit_field::("fee_included", Self::VT_FEE_INCLUDED, false)? - .visit_field::("reply_to", Self::VT_REPLY_TO, false)? - .visit_field::>("subject", Self::VT_SUBJECT, false)? - .visit_field::>("memo", Self::VT_MEMO, false)? - .visit_field::("max_amount_per_note", Self::VT_MAX_AMOUNT_PER_NOTE, false)? - .finish(); - Ok(()) - } -} -pub struct RecipientArgs<'a> { - pub address: Option>, - pub amount: u64, - pub fee_included: bool, - pub reply_to: bool, - pub subject: Option>, - pub memo: Option>, - pub max_amount_per_note: u64, -} -impl<'a> Default for RecipientArgs<'a> { - #[inline] - fn default() -> Self { - RecipientArgs { - address: None, - amount: 0, - fee_included: false, - reply_to: false, - subject: None, - memo: None, - max_amount_per_note: 0, - } - } -} - -pub struct RecipientBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> RecipientBuilder<'a, 'b> { - #[inline] - pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Recipient::VT_ADDRESS, address); - } - #[inline] - pub fn add_amount(&mut self, amount: u64) { - self.fbb_.push_slot::(Recipient::VT_AMOUNT, amount, 0); - } - #[inline] - pub fn add_fee_included(&mut self, fee_included: bool) { - self.fbb_.push_slot::(Recipient::VT_FEE_INCLUDED, fee_included, false); - } - #[inline] - pub fn add_reply_to(&mut self, reply_to: bool) { - self.fbb_.push_slot::(Recipient::VT_REPLY_TO, reply_to, false); - } - #[inline] - pub fn add_subject(&mut self, subject: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Recipient::VT_SUBJECT, subject); - } - #[inline] - pub fn add_memo(&mut self, memo: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(Recipient::VT_MEMO, memo); - } - #[inline] - pub fn add_max_amount_per_note(&mut self, max_amount_per_note: u64) { - self.fbb_.push_slot::(Recipient::VT_MAX_AMOUNT_PER_NOTE, max_amount_per_note, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RecipientBuilder<'a, 'b> { - let start = _fbb.start_table(); - RecipientBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Recipient<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Recipient"); - ds.field("address", &self.address()); - ds.field("amount", &self.amount()); - ds.field("fee_included", &self.fee_included()); - ds.field("reply_to", &self.reply_to()); - ds.field("subject", &self.subject()); - ds.field("memo", &self.memo()); - ds.field("max_amount_per_note", &self.max_amount_per_note()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct RecipientT { - pub address: Option, - pub amount: u64, - pub fee_included: bool, - pub reply_to: bool, - pub subject: Option, - pub memo: Option, - pub max_amount_per_note: u64, -} -impl Default for RecipientT { - fn default() -> Self { - Self { - address: None, - amount: 0, - fee_included: false, - reply_to: false, - subject: None, - memo: None, - max_amount_per_note: 0, - } - } -} -impl RecipientT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let address = self.address.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let amount = self.amount; - let fee_included = self.fee_included; - let reply_to = self.reply_to; - let subject = self.subject.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let memo = self.memo.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let max_amount_per_note = self.max_amount_per_note; - Recipient::create(_fbb, &RecipientArgs{ - address, - amount, - fee_included, - reply_to, - subject, - memo, - max_amount_per_note, - }) - } -} -pub enum RecipientsOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct Recipients<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for Recipients<'a> { - type Inner = Recipients<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> Recipients<'a> { - pub const VT_VALUES: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - Recipients { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args RecipientsArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = RecipientsBuilder::new(_fbb); - if let Some(x) = args.values { builder.add_values(x); } - builder.finish() - } - - pub fn unpack(&self) -> RecipientsT { - let values = self.values().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - RecipientsT { - values, - } - } - - #[inline] - pub fn values(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(Recipients::VT_VALUES, None)} - } -} - -impl flatbuffers::Verifiable for Recipients<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("values", Self::VT_VALUES, false)? - .finish(); - Ok(()) - } -} -pub struct RecipientsArgs<'a> { - pub values: Option>>>>, -} -impl<'a> Default for RecipientsArgs<'a> { - #[inline] - fn default() -> Self { - RecipientsArgs { - values: None, - } - } -} - -pub struct RecipientsBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> RecipientsBuilder<'a, 'b> { - #[inline] - pub fn add_values(&mut self, values: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(Recipients::VT_VALUES, values); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RecipientsBuilder<'a, 'b> { - let start = _fbb.start_table(); - RecipientsBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for Recipients<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("Recipients"); - ds.field("values", &self.values()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct RecipientsT { - pub values: Option>, -} -impl Default for RecipientsT { - fn default() -> Self { - Self { - values: None, - } - } -} -impl RecipientsT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let values = self.values.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - Recipients::create(_fbb, &RecipientsArgs{ - values, - }) - } -} -pub enum RecipientSummaryOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct RecipientSummary<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for RecipientSummary<'a> { - type Inner = RecipientSummary<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> RecipientSummary<'a> { - pub const VT_AMOUNT: flatbuffers::VOffsetT = 4; - pub const VT_ADDRESS: flatbuffers::VOffsetT = 6; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - RecipientSummary { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args RecipientSummaryArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = RecipientSummaryBuilder::new(_fbb); - builder.add_amount(args.amount); - if let Some(x) = args.address { builder.add_address(x); } - builder.finish() - } - - pub fn unpack(&self) -> RecipientSummaryT { - let amount = self.amount(); - let address = self.address().map(|x| { - x.to_string() - }); - RecipientSummaryT { - amount, - address, - } - } - - #[inline] - pub fn amount(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(RecipientSummary::VT_AMOUNT, Some(0)).unwrap()} - } - #[inline] - pub fn address(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(RecipientSummary::VT_ADDRESS, None)} - } -} - -impl flatbuffers::Verifiable for RecipientSummary<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("amount", Self::VT_AMOUNT, false)? - .visit_field::>("address", Self::VT_ADDRESS, false)? - .finish(); - Ok(()) - } -} -pub struct RecipientSummaryArgs<'a> { - pub amount: u64, - pub address: Option>, -} -impl<'a> Default for RecipientSummaryArgs<'a> { - #[inline] - fn default() -> Self { - RecipientSummaryArgs { - amount: 0, - address: None, - } - } -} - -pub struct RecipientSummaryBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> RecipientSummaryBuilder<'a, 'b> { - #[inline] - pub fn add_amount(&mut self, amount: u64) { - self.fbb_.push_slot::(RecipientSummary::VT_AMOUNT, amount, 0); - } - #[inline] - pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(RecipientSummary::VT_ADDRESS, address); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RecipientSummaryBuilder<'a, 'b> { - let start = _fbb.start_table(); - RecipientSummaryBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for RecipientSummary<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("RecipientSummary"); - ds.field("amount", &self.amount()); - ds.field("address", &self.address()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct RecipientSummaryT { - pub amount: u64, - pub address: Option, -} -impl Default for RecipientSummaryT { - fn default() -> Self { - Self { - amount: 0, - address: None, - } - } -} -impl RecipientSummaryT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let amount = self.amount; - let address = self.address.as_ref().map(|x|{ - _fbb.create_string(x) - }); - RecipientSummary::create(_fbb, &RecipientSummaryArgs{ - amount, - address, - }) - } -} -pub enum UnsignedTxSummaryOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct UnsignedTxSummary<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for UnsignedTxSummary<'a> { - type Inner = UnsignedTxSummary<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> UnsignedTxSummary<'a> { - pub const VT_RECIPIENTS: flatbuffers::VOffsetT = 4; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - UnsignedTxSummary { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args UnsignedTxSummaryArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = UnsignedTxSummaryBuilder::new(_fbb); - if let Some(x) = args.recipients { builder.add_recipients(x); } - builder.finish() - } - - pub fn unpack(&self) -> UnsignedTxSummaryT { - let recipients = self.recipients().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - UnsignedTxSummaryT { - recipients, - } - } - - #[inline] - pub fn recipients(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(UnsignedTxSummary::VT_RECIPIENTS, None)} - } -} - -impl flatbuffers::Verifiable for UnsignedTxSummary<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("recipients", Self::VT_RECIPIENTS, false)? - .finish(); - Ok(()) - } -} -pub struct UnsignedTxSummaryArgs<'a> { - pub recipients: Option>>>>, -} -impl<'a> Default for UnsignedTxSummaryArgs<'a> { - #[inline] - fn default() -> Self { - UnsignedTxSummaryArgs { - recipients: None, - } - } -} - -pub struct UnsignedTxSummaryBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> UnsignedTxSummaryBuilder<'a, 'b> { - #[inline] - pub fn add_recipients(&mut self, recipients: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(UnsignedTxSummary::VT_RECIPIENTS, recipients); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> UnsignedTxSummaryBuilder<'a, 'b> { - let start = _fbb.start_table(); - UnsignedTxSummaryBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for UnsignedTxSummary<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("UnsignedTxSummary"); - ds.field("recipients", &self.recipients()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct UnsignedTxSummaryT { - pub recipients: Option>, -} -impl Default for UnsignedTxSummaryT { - fn default() -> Self { - Self { - recipients: None, - } - } -} -impl UnsignedTxSummaryT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let recipients = self.recipients.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - UnsignedTxSummary::create(_fbb, &UnsignedTxSummaryArgs{ - recipients, - }) - } -} -pub enum TxOutputOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct TxOutput<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for TxOutput<'a> { - type Inner = TxOutput<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> TxOutput<'a> { - pub const VT_ID: flatbuffers::VOffsetT = 4; - pub const VT_ADDRESS: flatbuffers::VOffsetT = 6; - pub const VT_AMOUNT: flatbuffers::VOffsetT = 8; - pub const VT_POOL: flatbuffers::VOffsetT = 10; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - TxOutput { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args TxOutputArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = TxOutputBuilder::new(_fbb); - builder.add_amount(args.amount); - if let Some(x) = args.address { builder.add_address(x); } - builder.add_id(args.id); - builder.add_pool(args.pool); - builder.finish() - } - - pub fn unpack(&self) -> TxOutputT { - let id = self.id(); - let address = self.address().map(|x| { - x.to_string() - }); - let amount = self.amount(); - let pool = self.pool(); - TxOutputT { - id, - address, - amount, - pool, - } - } - - #[inline] - pub fn id(&self) -> u32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxOutput::VT_ID, Some(0)).unwrap()} - } - #[inline] - pub fn address(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(TxOutput::VT_ADDRESS, None)} - } - #[inline] - pub fn amount(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxOutput::VT_AMOUNT, Some(0)).unwrap()} - } - #[inline] - pub fn pool(&self) -> u8 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxOutput::VT_POOL, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for TxOutput<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("id", Self::VT_ID, false)? - .visit_field::>("address", Self::VT_ADDRESS, false)? - .visit_field::("amount", Self::VT_AMOUNT, false)? - .visit_field::("pool", Self::VT_POOL, false)? - .finish(); - Ok(()) - } -} -pub struct TxOutputArgs<'a> { - pub id: u32, - pub address: Option>, - pub amount: u64, - pub pool: u8, -} -impl<'a> Default for TxOutputArgs<'a> { - #[inline] - fn default() -> Self { - TxOutputArgs { - id: 0, - address: None, - amount: 0, - pool: 0, - } - } -} - -pub struct TxOutputBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> TxOutputBuilder<'a, 'b> { - #[inline] - pub fn add_id(&mut self, id: u32) { - self.fbb_.push_slot::(TxOutput::VT_ID, id, 0); - } - #[inline] - pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(TxOutput::VT_ADDRESS, address); - } - #[inline] - pub fn add_amount(&mut self, amount: u64) { - self.fbb_.push_slot::(TxOutput::VT_AMOUNT, amount, 0); - } - #[inline] - pub fn add_pool(&mut self, pool: u8) { - self.fbb_.push_slot::(TxOutput::VT_POOL, pool, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TxOutputBuilder<'a, 'b> { - let start = _fbb.start_table(); - TxOutputBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for TxOutput<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("TxOutput"); - ds.field("id", &self.id()); - ds.field("address", &self.address()); - ds.field("amount", &self.amount()); - ds.field("pool", &self.pool()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct TxOutputT { - pub id: u32, - pub address: Option, - pub amount: u64, - pub pool: u8, -} -impl Default for TxOutputT { - fn default() -> Self { - Self { - id: 0, - address: None, - amount: 0, - pool: 0, - } - } -} -impl TxOutputT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let id = self.id; - let address = self.address.as_ref().map(|x|{ - _fbb.create_string(x) - }); - let amount = self.amount; - let pool = self.pool; - TxOutput::create(_fbb, &TxOutputArgs{ - id, - address, - amount, - pool, - }) - } -} -pub enum TxReportOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct TxReport<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for TxReport<'a> { - type Inner = TxReport<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> TxReport<'a> { - pub const VT_OUTPUTS: flatbuffers::VOffsetT = 4; - pub const VT_TRANSPARENT: flatbuffers::VOffsetT = 6; - pub const VT_SAPLING: flatbuffers::VOffsetT = 8; - pub const VT_ORCHARD: flatbuffers::VOffsetT = 10; - pub const VT_NET_SAPLING: flatbuffers::VOffsetT = 12; - pub const VT_NET_ORCHARD: flatbuffers::VOffsetT = 14; - pub const VT_FEE: flatbuffers::VOffsetT = 16; - pub const VT_PRIVACY_LEVEL: flatbuffers::VOffsetT = 18; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - TxReport { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args TxReportArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = TxReportBuilder::new(_fbb); - builder.add_fee(args.fee); - builder.add_net_orchard(args.net_orchard); - builder.add_net_sapling(args.net_sapling); - builder.add_orchard(args.orchard); - builder.add_sapling(args.sapling); - builder.add_transparent(args.transparent); - if let Some(x) = args.outputs { builder.add_outputs(x); } - builder.add_privacy_level(args.privacy_level); - builder.finish() - } - - pub fn unpack(&self) -> TxReportT { - let outputs = self.outputs().map(|x| { - x.iter().map(|t| t.unpack()).collect() - }); - let transparent = self.transparent(); - let sapling = self.sapling(); - let orchard = self.orchard(); - let net_sapling = self.net_sapling(); - let net_orchard = self.net_orchard(); - let fee = self.fee(); - let privacy_level = self.privacy_level(); - TxReportT { - outputs, - transparent, - sapling, - orchard, - net_sapling, - net_orchard, - fee, - privacy_level, - } - } - - #[inline] - pub fn outputs(&self) -> Option>>> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>>>(TxReport::VT_OUTPUTS, None)} - } - #[inline] - pub fn transparent(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxReport::VT_TRANSPARENT, Some(0)).unwrap()} - } - #[inline] - pub fn sapling(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxReport::VT_SAPLING, Some(0)).unwrap()} - } - #[inline] - pub fn orchard(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxReport::VT_ORCHARD, Some(0)).unwrap()} - } - #[inline] - pub fn net_sapling(&self) -> i64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxReport::VT_NET_SAPLING, Some(0)).unwrap()} - } - #[inline] - pub fn net_orchard(&self) -> i64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxReport::VT_NET_ORCHARD, Some(0)).unwrap()} - } - #[inline] - pub fn fee(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxReport::VT_FEE, Some(0)).unwrap()} - } - #[inline] - pub fn privacy_level(&self) -> u8 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(TxReport::VT_PRIVACY_LEVEL, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for TxReport<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>>>("outputs", Self::VT_OUTPUTS, false)? - .visit_field::("transparent", Self::VT_TRANSPARENT, false)? - .visit_field::("sapling", Self::VT_SAPLING, false)? - .visit_field::("orchard", Self::VT_ORCHARD, false)? - .visit_field::("net_sapling", Self::VT_NET_SAPLING, false)? - .visit_field::("net_orchard", Self::VT_NET_ORCHARD, false)? - .visit_field::("fee", Self::VT_FEE, false)? - .visit_field::("privacy_level", Self::VT_PRIVACY_LEVEL, false)? - .finish(); - Ok(()) - } -} -pub struct TxReportArgs<'a> { - pub outputs: Option>>>>, - pub transparent: u64, - pub sapling: u64, - pub orchard: u64, - pub net_sapling: i64, - pub net_orchard: i64, - pub fee: u64, - pub privacy_level: u8, -} -impl<'a> Default for TxReportArgs<'a> { - #[inline] - fn default() -> Self { - TxReportArgs { - outputs: None, - transparent: 0, - sapling: 0, - orchard: 0, - net_sapling: 0, - net_orchard: 0, - fee: 0, - privacy_level: 0, - } - } -} - -pub struct TxReportBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> TxReportBuilder<'a, 'b> { - #[inline] - pub fn add_outputs(&mut self, outputs: flatbuffers::WIPOffset>>>) { - self.fbb_.push_slot_always::>(TxReport::VT_OUTPUTS, outputs); - } - #[inline] - pub fn add_transparent(&mut self, transparent: u64) { - self.fbb_.push_slot::(TxReport::VT_TRANSPARENT, transparent, 0); - } - #[inline] - pub fn add_sapling(&mut self, sapling: u64) { - self.fbb_.push_slot::(TxReport::VT_SAPLING, sapling, 0); - } - #[inline] - pub fn add_orchard(&mut self, orchard: u64) { - self.fbb_.push_slot::(TxReport::VT_ORCHARD, orchard, 0); - } - #[inline] - pub fn add_net_sapling(&mut self, net_sapling: i64) { - self.fbb_.push_slot::(TxReport::VT_NET_SAPLING, net_sapling, 0); - } - #[inline] - pub fn add_net_orchard(&mut self, net_orchard: i64) { - self.fbb_.push_slot::(TxReport::VT_NET_ORCHARD, net_orchard, 0); - } - #[inline] - pub fn add_fee(&mut self, fee: u64) { - self.fbb_.push_slot::(TxReport::VT_FEE, fee, 0); - } - #[inline] - pub fn add_privacy_level(&mut self, privacy_level: u8) { - self.fbb_.push_slot::(TxReport::VT_PRIVACY_LEVEL, privacy_level, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TxReportBuilder<'a, 'b> { - let start = _fbb.start_table(); - TxReportBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for TxReport<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("TxReport"); - ds.field("outputs", &self.outputs()); - ds.field("transparent", &self.transparent()); - ds.field("sapling", &self.sapling()); - ds.field("orchard", &self.orchard()); - ds.field("net_sapling", &self.net_sapling()); - ds.field("net_orchard", &self.net_orchard()); - ds.field("fee", &self.fee()); - ds.field("privacy_level", &self.privacy_level()); - ds.finish() - } -} -#[non_exhaustive] -#[derive(Debug, Clone, PartialEq)] -pub struct TxReportT { - pub outputs: Option>, - pub transparent: u64, - pub sapling: u64, - pub orchard: u64, - pub net_sapling: i64, - pub net_orchard: i64, - pub fee: u64, - pub privacy_level: u8, -} -impl Default for TxReportT { - fn default() -> Self { - Self { - outputs: None, - transparent: 0, - sapling: 0, - orchard: 0, - net_sapling: 0, - net_orchard: 0, - fee: 0, - privacy_level: 0, - } - } -} -impl TxReportT { - pub fn pack<'b>( - &self, - _fbb: &mut flatbuffers::FlatBufferBuilder<'b> - ) -> flatbuffers::WIPOffset> { - let outputs = self.outputs.as_ref().map(|x|{ - let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect();_fbb.create_vector(&w) - }); - let transparent = self.transparent; - let sapling = self.sapling; - let orchard = self.orchard; - let net_sapling = self.net_sapling; - let net_orchard = self.net_orchard; - let fee = self.fee; - let privacy_level = self.privacy_level; - TxReport::create(_fbb, &TxReportArgs{ - outputs, - transparent, - sapling, - orchard, - net_sapling, - net_orchard, - fee, - privacy_level, - }) - } -} -} // pub mod fb - + use core::cmp::Ordering; + use core::mem; + + extern crate flatbuffers; + use self::flatbuffers::{EndianScalar, Follow}; + + pub enum AccountOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Account<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Account<'a> { + type Inner = Account<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Account<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_NAME: flatbuffers::VOffsetT = 6; + pub const VT_BALANCE: flatbuffers::VOffsetT = 8; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Account { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args AccountArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = AccountBuilder::new(_fbb); + builder.add_balance(args.balance); + if let Some(x) = args.name { + builder.add_name(x); + } + builder.add_id(args.id); + builder.finish() + } + + pub fn unpack(&self) -> AccountT { + let id = self.id(); + let name = self.name().map(|x| x.to_string()); + let balance = self.balance(); + AccountT { id, name, balance } + } + + #[inline] + pub fn id(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Account::VT_ID, Some(0)).unwrap() } + } + #[inline] + pub fn name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Account::VT_NAME, None) + } + } + #[inline] + pub fn balance(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Account::VT_BALANCE, Some(0)).unwrap() } + } + } + + impl flatbuffers::Verifiable for Account<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("name", Self::VT_NAME, false)? + .visit_field::("balance", Self::VT_BALANCE, false)? + .finish(); + Ok(()) + } + } + pub struct AccountArgs<'a> { + pub id: u32, + pub name: Option>, + pub balance: u64, + } + impl<'a> Default for AccountArgs<'a> { + #[inline] + fn default() -> Self { + AccountArgs { + id: 0, + name: None, + balance: 0, + } + } + } + + pub struct AccountBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> AccountBuilder<'a, 'b> { + #[inline] + pub fn add_id(&mut self, id: u32) { + self.fbb_.push_slot::(Account::VT_ID, id, 0); + } + #[inline] + pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Account::VT_NAME, name); + } + #[inline] + pub fn add_balance(&mut self, balance: u64) { + self.fbb_.push_slot::(Account::VT_BALANCE, balance, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AccountBuilder<'a, 'b> { + let start = _fbb.start_table(); + AccountBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Account<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Account"); + ds.field("id", &self.id()); + ds.field("name", &self.name()); + ds.field("balance", &self.balance()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct AccountT { + pub id: u32, + pub name: Option, + pub balance: u64, + } + impl Default for AccountT { + fn default() -> Self { + Self { + id: 0, + name: None, + balance: 0, + } + } + } + impl AccountT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let id = self.id; + let name = self.name.as_ref().map(|x| _fbb.create_string(x)); + let balance = self.balance; + Account::create(_fbb, &AccountArgs { id, name, balance }) + } + } + pub enum AccountVecOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct AccountVec<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for AccountVec<'a> { + type Inner = AccountVec<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> AccountVec<'a> { + pub const VT_ACCOUNTS: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + AccountVec { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args AccountVecArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = AccountVecBuilder::new(_fbb); + if let Some(x) = args.accounts { + builder.add_accounts(x); + } + builder.finish() + } + + pub fn unpack(&self) -> AccountVecT { + let accounts = self + .accounts() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + AccountVecT { accounts } + } + + #[inline] + pub fn accounts( + &self, + ) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(AccountVec::VT_ACCOUNTS, None) + } + } + } + + impl flatbuffers::Verifiable for AccountVec<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("accounts", Self::VT_ACCOUNTS, false)? + .finish(); + Ok(()) + } + } + pub struct AccountVecArgs<'a> { + pub accounts: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for AccountVecArgs<'a> { + #[inline] + fn default() -> Self { + AccountVecArgs { accounts: None } + } + } + + pub struct AccountVecBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> AccountVecBuilder<'a, 'b> { + #[inline] + pub fn add_accounts( + &mut self, + accounts: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_ + .push_slot_always::>(AccountVec::VT_ACCOUNTS, accounts); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AccountVecBuilder<'a, 'b> { + let start = _fbb.start_table(); + AccountVecBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for AccountVec<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("AccountVec"); + ds.field("accounts", &self.accounts()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct AccountVecT { + pub accounts: Option>, + } + impl Default for AccountVecT { + fn default() -> Self { + Self { accounts: None } + } + } + impl AccountVecT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let accounts = self.accounts.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + AccountVec::create(_fbb, &AccountVecArgs { accounts }) + } + } + pub enum BalanceOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Balance<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Balance<'a> { + type Inner = Balance<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Balance<'a> { + pub const VT_SHIELDED: flatbuffers::VOffsetT = 4; + pub const VT_UNCONFIRMED_SPENT: flatbuffers::VOffsetT = 6; + pub const VT_BALANCE: flatbuffers::VOffsetT = 8; + pub const VT_UNDER_CONFIRMED: flatbuffers::VOffsetT = 10; + pub const VT_EXCLUDED: flatbuffers::VOffsetT = 12; + pub const VT_SAPLING: flatbuffers::VOffsetT = 14; + pub const VT_ORCHARD: flatbuffers::VOffsetT = 16; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Balance { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args BalanceArgs, + ) -> flatbuffers::WIPOffset> { + let mut builder = BalanceBuilder::new(_fbb); + builder.add_orchard(args.orchard); + builder.add_sapling(args.sapling); + builder.add_excluded(args.excluded); + builder.add_under_confirmed(args.under_confirmed); + builder.add_balance(args.balance); + builder.add_unconfirmed_spent(args.unconfirmed_spent); + builder.add_shielded(args.shielded); + builder.finish() + } + + pub fn unpack(&self) -> BalanceT { + let shielded = self.shielded(); + let unconfirmed_spent = self.unconfirmed_spent(); + let balance = self.balance(); + let under_confirmed = self.under_confirmed(); + let excluded = self.excluded(); + let sapling = self.sapling(); + let orchard = self.orchard(); + BalanceT { + shielded, + unconfirmed_spent, + balance, + under_confirmed, + excluded, + sapling, + orchard, + } + } + + #[inline] + pub fn shielded(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Balance::VT_SHIELDED, Some(0)).unwrap() } + } + #[inline] + pub fn unconfirmed_spent(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Balance::VT_UNCONFIRMED_SPENT, Some(0)) + .unwrap() + } + } + #[inline] + pub fn balance(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Balance::VT_BALANCE, Some(0)).unwrap() } + } + #[inline] + pub fn under_confirmed(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Balance::VT_UNDER_CONFIRMED, Some(0)) + .unwrap() + } + } + #[inline] + pub fn excluded(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Balance::VT_EXCLUDED, Some(0)).unwrap() } + } + #[inline] + pub fn sapling(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Balance::VT_SAPLING, Some(0)).unwrap() } + } + #[inline] + pub fn orchard(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Balance::VT_ORCHARD, Some(0)).unwrap() } + } + } + + impl flatbuffers::Verifiable for Balance<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("shielded", Self::VT_SHIELDED, false)? + .visit_field::("unconfirmed_spent", Self::VT_UNCONFIRMED_SPENT, false)? + .visit_field::("balance", Self::VT_BALANCE, false)? + .visit_field::("under_confirmed", Self::VT_UNDER_CONFIRMED, false)? + .visit_field::("excluded", Self::VT_EXCLUDED, false)? + .visit_field::("sapling", Self::VT_SAPLING, false)? + .visit_field::("orchard", Self::VT_ORCHARD, false)? + .finish(); + Ok(()) + } + } + pub struct BalanceArgs { + pub shielded: u64, + pub unconfirmed_spent: u64, + pub balance: u64, + pub under_confirmed: u64, + pub excluded: u64, + pub sapling: u64, + pub orchard: u64, + } + impl<'a> Default for BalanceArgs { + #[inline] + fn default() -> Self { + BalanceArgs { + shielded: 0, + unconfirmed_spent: 0, + balance: 0, + under_confirmed: 0, + excluded: 0, + sapling: 0, + orchard: 0, + } + } + } + + pub struct BalanceBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> BalanceBuilder<'a, 'b> { + #[inline] + pub fn add_shielded(&mut self, shielded: u64) { + self.fbb_ + .push_slot::(Balance::VT_SHIELDED, shielded, 0); + } + #[inline] + pub fn add_unconfirmed_spent(&mut self, unconfirmed_spent: u64) { + self.fbb_ + .push_slot::(Balance::VT_UNCONFIRMED_SPENT, unconfirmed_spent, 0); + } + #[inline] + pub fn add_balance(&mut self, balance: u64) { + self.fbb_.push_slot::(Balance::VT_BALANCE, balance, 0); + } + #[inline] + pub fn add_under_confirmed(&mut self, under_confirmed: u64) { + self.fbb_ + .push_slot::(Balance::VT_UNDER_CONFIRMED, under_confirmed, 0); + } + #[inline] + pub fn add_excluded(&mut self, excluded: u64) { + self.fbb_ + .push_slot::(Balance::VT_EXCLUDED, excluded, 0); + } + #[inline] + pub fn add_sapling(&mut self, sapling: u64) { + self.fbb_.push_slot::(Balance::VT_SAPLING, sapling, 0); + } + #[inline] + pub fn add_orchard(&mut self, orchard: u64) { + self.fbb_.push_slot::(Balance::VT_ORCHARD, orchard, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BalanceBuilder<'a, 'b> { + let start = _fbb.start_table(); + BalanceBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Balance<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Balance"); + ds.field("shielded", &self.shielded()); + ds.field("unconfirmed_spent", &self.unconfirmed_spent()); + ds.field("balance", &self.balance()); + ds.field("under_confirmed", &self.under_confirmed()); + ds.field("excluded", &self.excluded()); + ds.field("sapling", &self.sapling()); + ds.field("orchard", &self.orchard()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct BalanceT { + pub shielded: u64, + pub unconfirmed_spent: u64, + pub balance: u64, + pub under_confirmed: u64, + pub excluded: u64, + pub sapling: u64, + pub orchard: u64, + } + impl Default for BalanceT { + fn default() -> Self { + Self { + shielded: 0, + unconfirmed_spent: 0, + balance: 0, + under_confirmed: 0, + excluded: 0, + sapling: 0, + orchard: 0, + } + } + } + impl BalanceT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let shielded = self.shielded; + let unconfirmed_spent = self.unconfirmed_spent; + let balance = self.balance; + let under_confirmed = self.under_confirmed; + let excluded = self.excluded; + let sapling = self.sapling; + let orchard = self.orchard; + Balance::create( + _fbb, + &BalanceArgs { + shielded, + unconfirmed_spent, + balance, + under_confirmed, + excluded, + sapling, + orchard, + }, + ) + } + } + pub enum HeightOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Height<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Height<'a> { + type Inner = Height<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Height<'a> { + pub const VT_HEIGHT: flatbuffers::VOffsetT = 4; + pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 6; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Height { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args HeightArgs, + ) -> flatbuffers::WIPOffset> { + let mut builder = HeightBuilder::new(_fbb); + builder.add_timestamp(args.timestamp); + builder.add_height(args.height); + builder.finish() + } + + pub fn unpack(&self) -> HeightT { + let height = self.height(); + let timestamp = self.timestamp(); + HeightT { height, timestamp } + } + + #[inline] + pub fn height(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Height::VT_HEIGHT, Some(0)).unwrap() } + } + #[inline] + pub fn timestamp(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Height::VT_TIMESTAMP, Some(0)).unwrap() } + } + } + + impl flatbuffers::Verifiable for Height<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("height", Self::VT_HEIGHT, false)? + .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? + .finish(); + Ok(()) + } + } + pub struct HeightArgs { + pub height: u32, + pub timestamp: u32, + } + impl<'a> Default for HeightArgs { + #[inline] + fn default() -> Self { + HeightArgs { + height: 0, + timestamp: 0, + } + } + } + + pub struct HeightBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> HeightBuilder<'a, 'b> { + #[inline] + pub fn add_height(&mut self, height: u32) { + self.fbb_.push_slot::(Height::VT_HEIGHT, height, 0); + } + #[inline] + pub fn add_timestamp(&mut self, timestamp: u32) { + self.fbb_ + .push_slot::(Height::VT_TIMESTAMP, timestamp, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> HeightBuilder<'a, 'b> { + let start = _fbb.start_table(); + HeightBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Height<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Height"); + ds.field("height", &self.height()); + ds.field("timestamp", &self.timestamp()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct HeightT { + pub height: u32, + pub timestamp: u32, + } + impl Default for HeightT { + fn default() -> Self { + Self { + height: 0, + timestamp: 0, + } + } + } + impl HeightT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let height = self.height; + let timestamp = self.timestamp; + Height::create(_fbb, &HeightArgs { height, timestamp }) + } + } + pub enum ShieldedNoteOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct ShieldedNote<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for ShieldedNote<'a> { + type Inner = ShieldedNote<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> ShieldedNote<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_HEIGHT: flatbuffers::VOffsetT = 6; + pub const VT_VALUE: flatbuffers::VOffsetT = 8; + pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 10; + pub const VT_ORCHARD: flatbuffers::VOffsetT = 12; + pub const VT_EXCLUDED: flatbuffers::VOffsetT = 14; + pub const VT_SPENT: flatbuffers::VOffsetT = 16; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + ShieldedNote { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args ShieldedNoteArgs, + ) -> flatbuffers::WIPOffset> { + let mut builder = ShieldedNoteBuilder::new(_fbb); + builder.add_value(args.value); + builder.add_timestamp(args.timestamp); + builder.add_height(args.height); + builder.add_id(args.id); + builder.add_spent(args.spent); + builder.add_excluded(args.excluded); + builder.add_orchard(args.orchard); + builder.finish() + } + + pub fn unpack(&self) -> ShieldedNoteT { + let id = self.id(); + let height = self.height(); + let value = self.value(); + let timestamp = self.timestamp(); + let orchard = self.orchard(); + let excluded = self.excluded(); + let spent = self.spent(); + ShieldedNoteT { + id, + height, + value, + timestamp, + orchard, + excluded, + spent, + } + } + + #[inline] + pub fn id(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ShieldedNote::VT_ID, Some(0)).unwrap() } + } + #[inline] + pub fn height(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(ShieldedNote::VT_HEIGHT, Some(0)) + .unwrap() + } + } + #[inline] + pub fn value(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(ShieldedNote::VT_VALUE, Some(0)) + .unwrap() + } + } + #[inline] + pub fn timestamp(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(ShieldedNote::VT_TIMESTAMP, Some(0)) + .unwrap() + } + } + #[inline] + pub fn orchard(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(ShieldedNote::VT_ORCHARD, Some(false)) + .unwrap() + } + } + #[inline] + pub fn excluded(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(ShieldedNote::VT_EXCLUDED, Some(false)) + .unwrap() + } + } + #[inline] + pub fn spent(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(ShieldedNote::VT_SPENT, Some(false)) + .unwrap() + } + } + } + + impl flatbuffers::Verifiable for ShieldedNote<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::("height", Self::VT_HEIGHT, false)? + .visit_field::("value", Self::VT_VALUE, false)? + .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? + .visit_field::("orchard", Self::VT_ORCHARD, false)? + .visit_field::("excluded", Self::VT_EXCLUDED, false)? + .visit_field::("spent", Self::VT_SPENT, false)? + .finish(); + Ok(()) + } + } + pub struct ShieldedNoteArgs { + pub id: u32, + pub height: u32, + pub value: u64, + pub timestamp: u32, + pub orchard: bool, + pub excluded: bool, + pub spent: bool, + } + impl<'a> Default for ShieldedNoteArgs { + #[inline] + fn default() -> Self { + ShieldedNoteArgs { + id: 0, + height: 0, + value: 0, + timestamp: 0, + orchard: false, + excluded: false, + spent: false, + } + } + } + + pub struct ShieldedNoteBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> ShieldedNoteBuilder<'a, 'b> { + #[inline] + pub fn add_id(&mut self, id: u32) { + self.fbb_.push_slot::(ShieldedNote::VT_ID, id, 0); + } + #[inline] + pub fn add_height(&mut self, height: u32) { + self.fbb_ + .push_slot::(ShieldedNote::VT_HEIGHT, height, 0); + } + #[inline] + pub fn add_value(&mut self, value: u64) { + self.fbb_.push_slot::(ShieldedNote::VT_VALUE, value, 0); + } + #[inline] + pub fn add_timestamp(&mut self, timestamp: u32) { + self.fbb_ + .push_slot::(ShieldedNote::VT_TIMESTAMP, timestamp, 0); + } + #[inline] + pub fn add_orchard(&mut self, orchard: bool) { + self.fbb_ + .push_slot::(ShieldedNote::VT_ORCHARD, orchard, false); + } + #[inline] + pub fn add_excluded(&mut self, excluded: bool) { + self.fbb_ + .push_slot::(ShieldedNote::VT_EXCLUDED, excluded, false); + } + #[inline] + pub fn add_spent(&mut self, spent: bool) { + self.fbb_ + .push_slot::(ShieldedNote::VT_SPENT, spent, false); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> ShieldedNoteBuilder<'a, 'b> { + let start = _fbb.start_table(); + ShieldedNoteBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for ShieldedNote<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("ShieldedNote"); + ds.field("id", &self.id()); + ds.field("height", &self.height()); + ds.field("value", &self.value()); + ds.field("timestamp", &self.timestamp()); + ds.field("orchard", &self.orchard()); + ds.field("excluded", &self.excluded()); + ds.field("spent", &self.spent()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct ShieldedNoteT { + pub id: u32, + pub height: u32, + pub value: u64, + pub timestamp: u32, + pub orchard: bool, + pub excluded: bool, + pub spent: bool, + } + impl Default for ShieldedNoteT { + fn default() -> Self { + Self { + id: 0, + height: 0, + value: 0, + timestamp: 0, + orchard: false, + excluded: false, + spent: false, + } + } + } + impl ShieldedNoteT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let id = self.id; + let height = self.height; + let value = self.value; + let timestamp = self.timestamp; + let orchard = self.orchard; + let excluded = self.excluded; + let spent = self.spent; + ShieldedNote::create( + _fbb, + &ShieldedNoteArgs { + id, + height, + value, + timestamp, + orchard, + excluded, + spent, + }, + ) + } + } + pub enum ShieldedNoteVecOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct ShieldedNoteVec<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for ShieldedNoteVec<'a> { + type Inner = ShieldedNoteVec<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> ShieldedNoteVec<'a> { + pub const VT_NOTES: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + ShieldedNoteVec { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args ShieldedNoteVecArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = ShieldedNoteVecBuilder::new(_fbb); + if let Some(x) = args.notes { + builder.add_notes(x); + } + builder.finish() + } + + pub fn unpack(&self) -> ShieldedNoteVecT { + let notes = self.notes().map(|x| x.iter().map(|t| t.unpack()).collect()); + ShieldedNoteVecT { notes } + } + + #[inline] + pub fn notes( + &self, + ) -> Option>>> + { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(ShieldedNoteVec::VT_NOTES, None) + } + } + } + + impl flatbuffers::Verifiable for ShieldedNoteVec<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("notes", Self::VT_NOTES, false)? + .finish(); + Ok(()) + } + } + pub struct ShieldedNoteVecArgs<'a> { + pub notes: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for ShieldedNoteVecArgs<'a> { + #[inline] + fn default() -> Self { + ShieldedNoteVecArgs { notes: None } + } + } + + pub struct ShieldedNoteVecBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> ShieldedNoteVecBuilder<'a, 'b> { + #[inline] + pub fn add_notes( + &mut self, + notes: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_ + .push_slot_always::>(ShieldedNoteVec::VT_NOTES, notes); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> ShieldedNoteVecBuilder<'a, 'b> { + let start = _fbb.start_table(); + ShieldedNoteVecBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for ShieldedNoteVec<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("ShieldedNoteVec"); + ds.field("notes", &self.notes()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct ShieldedNoteVecT { + pub notes: Option>, + } + impl Default for ShieldedNoteVecT { + fn default() -> Self { + Self { notes: None } + } + } + impl ShieldedNoteVecT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let notes = self.notes.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + ShieldedNoteVec::create(_fbb, &ShieldedNoteVecArgs { notes }) + } + } + pub enum ShieldedTxOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct ShieldedTx<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for ShieldedTx<'a> { + type Inner = ShieldedTx<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> ShieldedTx<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_TX_ID: flatbuffers::VOffsetT = 6; + pub const VT_HEIGHT: flatbuffers::VOffsetT = 8; + pub const VT_SHORT_TX_ID: flatbuffers::VOffsetT = 10; + pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 12; + pub const VT_NAME: flatbuffers::VOffsetT = 14; + pub const VT_VALUE: flatbuffers::VOffsetT = 16; + pub const VT_ADDRESS: flatbuffers::VOffsetT = 18; + pub const VT_MEMO: flatbuffers::VOffsetT = 20; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + ShieldedTx { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args ShieldedTxArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = ShieldedTxBuilder::new(_fbb); + builder.add_value(args.value); + if let Some(x) = args.memo { + builder.add_memo(x); + } + if let Some(x) = args.address { + builder.add_address(x); + } + if let Some(x) = args.name { + builder.add_name(x); + } + builder.add_timestamp(args.timestamp); + if let Some(x) = args.short_tx_id { + builder.add_short_tx_id(x); + } + builder.add_height(args.height); + if let Some(x) = args.tx_id { + builder.add_tx_id(x); + } + builder.add_id(args.id); + builder.finish() + } + + pub fn unpack(&self) -> ShieldedTxT { + let id = self.id(); + let tx_id = self.tx_id().map(|x| x.to_string()); + let height = self.height(); + let short_tx_id = self.short_tx_id().map(|x| x.to_string()); + let timestamp = self.timestamp(); + let name = self.name().map(|x| x.to_string()); + let value = self.value(); + let address = self.address().map(|x| x.to_string()); + let memo = self.memo().map(|x| x.to_string()); + ShieldedTxT { + id, + tx_id, + height, + short_tx_id, + timestamp, + name, + value, + address, + memo, + } + } + + #[inline] + pub fn id(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ShieldedTx::VT_ID, Some(0)).unwrap() } + } + #[inline] + pub fn tx_id(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(ShieldedTx::VT_TX_ID, None) + } + } + #[inline] + pub fn height(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(ShieldedTx::VT_HEIGHT, Some(0)) + .unwrap() + } + } + #[inline] + pub fn short_tx_id(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(ShieldedTx::VT_SHORT_TX_ID, None) + } + } + #[inline] + pub fn timestamp(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(ShieldedTx::VT_TIMESTAMP, Some(0)) + .unwrap() + } + } + #[inline] + pub fn name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(ShieldedTx::VT_NAME, None) + } + } + #[inline] + pub fn value(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ShieldedTx::VT_VALUE, Some(0)).unwrap() } + } + #[inline] + pub fn address(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(ShieldedTx::VT_ADDRESS, None) + } + } + #[inline] + pub fn memo(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(ShieldedTx::VT_MEMO, None) + } + } + } + + impl flatbuffers::Verifiable for ShieldedTx<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("tx_id", Self::VT_TX_ID, false)? + .visit_field::("height", Self::VT_HEIGHT, false)? + .visit_field::>( + "short_tx_id", + Self::VT_SHORT_TX_ID, + false, + )? + .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? + .visit_field::>("name", Self::VT_NAME, false)? + .visit_field::("value", Self::VT_VALUE, false)? + .visit_field::>( + "address", + Self::VT_ADDRESS, + false, + )? + .visit_field::>("memo", Self::VT_MEMO, false)? + .finish(); + Ok(()) + } + } + pub struct ShieldedTxArgs<'a> { + pub id: u32, + pub tx_id: Option>, + pub height: u32, + pub short_tx_id: Option>, + pub timestamp: u32, + pub name: Option>, + pub value: u64, + pub address: Option>, + pub memo: Option>, + } + impl<'a> Default for ShieldedTxArgs<'a> { + #[inline] + fn default() -> Self { + ShieldedTxArgs { + id: 0, + tx_id: None, + height: 0, + short_tx_id: None, + timestamp: 0, + name: None, + value: 0, + address: None, + memo: None, + } + } + } + + pub struct ShieldedTxBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> ShieldedTxBuilder<'a, 'b> { + #[inline] + pub fn add_id(&mut self, id: u32) { + self.fbb_.push_slot::(ShieldedTx::VT_ID, id, 0); + } + #[inline] + pub fn add_tx_id(&mut self, tx_id: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(ShieldedTx::VT_TX_ID, tx_id); + } + #[inline] + pub fn add_height(&mut self, height: u32) { + self.fbb_.push_slot::(ShieldedTx::VT_HEIGHT, height, 0); + } + #[inline] + pub fn add_short_tx_id(&mut self, short_tx_id: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>( + ShieldedTx::VT_SHORT_TX_ID, + short_tx_id, + ); + } + #[inline] + pub fn add_timestamp(&mut self, timestamp: u32) { + self.fbb_ + .push_slot::(ShieldedTx::VT_TIMESTAMP, timestamp, 0); + } + #[inline] + pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(ShieldedTx::VT_NAME, name); + } + #[inline] + pub fn add_value(&mut self, value: u64) { + self.fbb_.push_slot::(ShieldedTx::VT_VALUE, value, 0); + } + #[inline] + pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(ShieldedTx::VT_ADDRESS, address); + } + #[inline] + pub fn add_memo(&mut self, memo: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(ShieldedTx::VT_MEMO, memo); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ShieldedTxBuilder<'a, 'b> { + let start = _fbb.start_table(); + ShieldedTxBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for ShieldedTx<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("ShieldedTx"); + ds.field("id", &self.id()); + ds.field("tx_id", &self.tx_id()); + ds.field("height", &self.height()); + ds.field("short_tx_id", &self.short_tx_id()); + ds.field("timestamp", &self.timestamp()); + ds.field("name", &self.name()); + ds.field("value", &self.value()); + ds.field("address", &self.address()); + ds.field("memo", &self.memo()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct ShieldedTxT { + pub id: u32, + pub tx_id: Option, + pub height: u32, + pub short_tx_id: Option, + pub timestamp: u32, + pub name: Option, + pub value: u64, + pub address: Option, + pub memo: Option, + } + impl Default for ShieldedTxT { + fn default() -> Self { + Self { + id: 0, + tx_id: None, + height: 0, + short_tx_id: None, + timestamp: 0, + name: None, + value: 0, + address: None, + memo: None, + } + } + } + impl ShieldedTxT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let id = self.id; + let tx_id = self.tx_id.as_ref().map(|x| _fbb.create_string(x)); + let height = self.height; + let short_tx_id = self.short_tx_id.as_ref().map(|x| _fbb.create_string(x)); + let timestamp = self.timestamp; + let name = self.name.as_ref().map(|x| _fbb.create_string(x)); + let value = self.value; + let address = self.address.as_ref().map(|x| _fbb.create_string(x)); + let memo = self.memo.as_ref().map(|x| _fbb.create_string(x)); + ShieldedTx::create( + _fbb, + &ShieldedTxArgs { + id, + tx_id, + height, + short_tx_id, + timestamp, + name, + value, + address, + memo, + }, + ) + } + } + pub enum ShieldedTxVecOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct ShieldedTxVec<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for ShieldedTxVec<'a> { + type Inner = ShieldedTxVec<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> ShieldedTxVec<'a> { + pub const VT_TXS: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + ShieldedTxVec { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args ShieldedTxVecArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = ShieldedTxVecBuilder::new(_fbb); + if let Some(x) = args.txs { + builder.add_txs(x); + } + builder.finish() + } + + pub fn unpack(&self) -> ShieldedTxVecT { + let txs = self.txs().map(|x| x.iter().map(|t| t.unpack()).collect()); + ShieldedTxVecT { txs } + } + + #[inline] + pub fn txs( + &self, + ) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(ShieldedTxVec::VT_TXS, None) + } + } + } + + impl flatbuffers::Verifiable for ShieldedTxVec<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("txs", Self::VT_TXS, false)? + .finish(); + Ok(()) + } + } + pub struct ShieldedTxVecArgs<'a> { + pub txs: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for ShieldedTxVecArgs<'a> { + #[inline] + fn default() -> Self { + ShieldedTxVecArgs { txs: None } + } + } + + pub struct ShieldedTxVecBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> ShieldedTxVecBuilder<'a, 'b> { + #[inline] + pub fn add_txs( + &mut self, + txs: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_ + .push_slot_always::>(ShieldedTxVec::VT_TXS, txs); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> ShieldedTxVecBuilder<'a, 'b> { + let start = _fbb.start_table(); + ShieldedTxVecBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for ShieldedTxVec<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("ShieldedTxVec"); + ds.field("txs", &self.txs()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct ShieldedTxVecT { + pub txs: Option>, + } + impl Default for ShieldedTxVecT { + fn default() -> Self { + Self { txs: None } + } + } + impl ShieldedTxVecT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let txs = self.txs.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + ShieldedTxVec::create(_fbb, &ShieldedTxVecArgs { txs }) + } + } + pub enum MessageOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Message<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Message<'a> { + type Inner = Message<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Message<'a> { + pub const VT_ID_MSG: flatbuffers::VOffsetT = 4; + pub const VT_ID_TX: flatbuffers::VOffsetT = 6; + pub const VT_HEIGHT: flatbuffers::VOffsetT = 8; + pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 10; + pub const VT_FROM: flatbuffers::VOffsetT = 12; + pub const VT_TO: flatbuffers::VOffsetT = 14; + pub const VT_SUBJECT: flatbuffers::VOffsetT = 16; + pub const VT_BODY: flatbuffers::VOffsetT = 18; + pub const VT_READ: flatbuffers::VOffsetT = 20; + pub const VT_INCOMING: flatbuffers::VOffsetT = 22; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Message { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args MessageArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = MessageBuilder::new(_fbb); + if let Some(x) = args.body { + builder.add_body(x); + } + if let Some(x) = args.subject { + builder.add_subject(x); + } + if let Some(x) = args.to { + builder.add_to(x); + } + if let Some(x) = args.from { + builder.add_from(x); + } + builder.add_timestamp(args.timestamp); + builder.add_height(args.height); + builder.add_id_tx(args.id_tx); + builder.add_id_msg(args.id_msg); + builder.add_incoming(args.incoming); + builder.add_read(args.read); + builder.finish() + } + + pub fn unpack(&self) -> MessageT { + let id_msg = self.id_msg(); + let id_tx = self.id_tx(); + let height = self.height(); + let timestamp = self.timestamp(); + let from = self.from().map(|x| x.to_string()); + let to = self.to().map(|x| x.to_string()); + let subject = self.subject().map(|x| x.to_string()); + let body = self.body().map(|x| x.to_string()); + let read = self.read(); + let incoming = self.incoming(); + MessageT { + id_msg, + id_tx, + height, + timestamp, + from, + to, + subject, + body, + read, + incoming, + } + } + + #[inline] + pub fn id_msg(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Message::VT_ID_MSG, Some(0)).unwrap() } + } + #[inline] + pub fn id_tx(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Message::VT_ID_TX, Some(0)).unwrap() } + } + #[inline] + pub fn height(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Message::VT_HEIGHT, Some(0)).unwrap() } + } + #[inline] + pub fn timestamp(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Message::VT_TIMESTAMP, Some(0)) + .unwrap() + } + } + #[inline] + pub fn from(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Message::VT_FROM, None) + } + } + #[inline] + pub fn to(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Message::VT_TO, None) + } + } + #[inline] + pub fn subject(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Message::VT_SUBJECT, None) + } + } + #[inline] + pub fn body(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Message::VT_BODY, None) + } + } + #[inline] + pub fn read(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Message::VT_READ, Some(false)) + .unwrap() + } + } + #[inline] + pub fn incoming(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Message::VT_INCOMING, Some(false)) + .unwrap() + } + } + } + + impl flatbuffers::Verifiable for Message<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id_msg", Self::VT_ID_MSG, false)? + .visit_field::("id_tx", Self::VT_ID_TX, false)? + .visit_field::("height", Self::VT_HEIGHT, false)? + .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? + .visit_field::>("from", Self::VT_FROM, false)? + .visit_field::>("to", Self::VT_TO, false)? + .visit_field::>( + "subject", + Self::VT_SUBJECT, + false, + )? + .visit_field::>("body", Self::VT_BODY, false)? + .visit_field::("read", Self::VT_READ, false)? + .visit_field::("incoming", Self::VT_INCOMING, false)? + .finish(); + Ok(()) + } + } + pub struct MessageArgs<'a> { + pub id_msg: u32, + pub id_tx: u32, + pub height: u32, + pub timestamp: u32, + pub from: Option>, + pub to: Option>, + pub subject: Option>, + pub body: Option>, + pub read: bool, + pub incoming: bool, + } + impl<'a> Default for MessageArgs<'a> { + #[inline] + fn default() -> Self { + MessageArgs { + id_msg: 0, + id_tx: 0, + height: 0, + timestamp: 0, + from: None, + to: None, + subject: None, + body: None, + read: false, + incoming: false, + } + } + } + + pub struct MessageBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> MessageBuilder<'a, 'b> { + #[inline] + pub fn add_id_msg(&mut self, id_msg: u32) { + self.fbb_.push_slot::(Message::VT_ID_MSG, id_msg, 0); + } + #[inline] + pub fn add_id_tx(&mut self, id_tx: u32) { + self.fbb_.push_slot::(Message::VT_ID_TX, id_tx, 0); + } + #[inline] + pub fn add_height(&mut self, height: u32) { + self.fbb_.push_slot::(Message::VT_HEIGHT, height, 0); + } + #[inline] + pub fn add_timestamp(&mut self, timestamp: u32) { + self.fbb_ + .push_slot::(Message::VT_TIMESTAMP, timestamp, 0); + } + #[inline] + pub fn add_from(&mut self, from: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Message::VT_FROM, from); + } + #[inline] + pub fn add_to(&mut self, to: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Message::VT_TO, to); + } + #[inline] + pub fn add_subject(&mut self, subject: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Message::VT_SUBJECT, subject); + } + #[inline] + pub fn add_body(&mut self, body: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Message::VT_BODY, body); + } + #[inline] + pub fn add_read(&mut self, read: bool) { + self.fbb_.push_slot::(Message::VT_READ, read, false); + } + #[inline] + pub fn add_incoming(&mut self, incoming: bool) { + self.fbb_ + .push_slot::(Message::VT_INCOMING, incoming, false); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MessageBuilder<'a, 'b> { + let start = _fbb.start_table(); + MessageBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Message<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Message"); + ds.field("id_msg", &self.id_msg()); + ds.field("id_tx", &self.id_tx()); + ds.field("height", &self.height()); + ds.field("timestamp", &self.timestamp()); + ds.field("from", &self.from()); + ds.field("to", &self.to()); + ds.field("subject", &self.subject()); + ds.field("body", &self.body()); + ds.field("read", &self.read()); + ds.field("incoming", &self.incoming()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct MessageT { + pub id_msg: u32, + pub id_tx: u32, + pub height: u32, + pub timestamp: u32, + pub from: Option, + pub to: Option, + pub subject: Option, + pub body: Option, + pub read: bool, + pub incoming: bool, + } + impl Default for MessageT { + fn default() -> Self { + Self { + id_msg: 0, + id_tx: 0, + height: 0, + timestamp: 0, + from: None, + to: None, + subject: None, + body: None, + read: false, + incoming: false, + } + } + } + impl MessageT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let id_msg = self.id_msg; + let id_tx = self.id_tx; + let height = self.height; + let timestamp = self.timestamp; + let from = self.from.as_ref().map(|x| _fbb.create_string(x)); + let to = self.to.as_ref().map(|x| _fbb.create_string(x)); + let subject = self.subject.as_ref().map(|x| _fbb.create_string(x)); + let body = self.body.as_ref().map(|x| _fbb.create_string(x)); + let read = self.read; + let incoming = self.incoming; + Message::create( + _fbb, + &MessageArgs { + id_msg, + id_tx, + height, + timestamp, + from, + to, + subject, + body, + read, + incoming, + }, + ) + } + } + pub enum MessageVecOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct MessageVec<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for MessageVec<'a> { + type Inner = MessageVec<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> MessageVec<'a> { + pub const VT_MESSAGES: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + MessageVec { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args MessageVecArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = MessageVecBuilder::new(_fbb); + if let Some(x) = args.messages { + builder.add_messages(x); + } + builder.finish() + } + + pub fn unpack(&self) -> MessageVecT { + let messages = self + .messages() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + MessageVecT { messages } + } + + #[inline] + pub fn messages( + &self, + ) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(MessageVec::VT_MESSAGES, None) + } + } + } + + impl flatbuffers::Verifiable for MessageVec<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("messages", Self::VT_MESSAGES, false)? + .finish(); + Ok(()) + } + } + pub struct MessageVecArgs<'a> { + pub messages: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for MessageVecArgs<'a> { + #[inline] + fn default() -> Self { + MessageVecArgs { messages: None } + } + } + + pub struct MessageVecBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> MessageVecBuilder<'a, 'b> { + #[inline] + pub fn add_messages( + &mut self, + messages: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_ + .push_slot_always::>(MessageVec::VT_MESSAGES, messages); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MessageVecBuilder<'a, 'b> { + let start = _fbb.start_table(); + MessageVecBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for MessageVec<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("MessageVec"); + ds.field("messages", &self.messages()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct MessageVecT { + pub messages: Option>, + } + impl Default for MessageVecT { + fn default() -> Self { + Self { messages: None } + } + } + impl MessageVecT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let messages = self.messages.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + MessageVec::create(_fbb, &MessageVecArgs { messages }) + } + } + pub enum PrevNextOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct PrevNext<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for PrevNext<'a> { + type Inner = PrevNext<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> PrevNext<'a> { + pub const VT_PREV: flatbuffers::VOffsetT = 4; + pub const VT_NEXT: flatbuffers::VOffsetT = 6; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + PrevNext { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args PrevNextArgs, + ) -> flatbuffers::WIPOffset> { + let mut builder = PrevNextBuilder::new(_fbb); + builder.add_next(args.next); + builder.add_prev(args.prev); + builder.finish() + } + + pub fn unpack(&self) -> PrevNextT { + let prev = self.prev(); + let next = self.next(); + PrevNextT { prev, next } + } + + #[inline] + pub fn prev(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(PrevNext::VT_PREV, Some(0)).unwrap() } + } + #[inline] + pub fn next(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(PrevNext::VT_NEXT, Some(0)).unwrap() } + } + } + + impl flatbuffers::Verifiable for PrevNext<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("prev", Self::VT_PREV, false)? + .visit_field::("next", Self::VT_NEXT, false)? + .finish(); + Ok(()) + } + } + pub struct PrevNextArgs { + pub prev: u32, + pub next: u32, + } + impl<'a> Default for PrevNextArgs { + #[inline] + fn default() -> Self { + PrevNextArgs { prev: 0, next: 0 } + } + } + + pub struct PrevNextBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> PrevNextBuilder<'a, 'b> { + #[inline] + pub fn add_prev(&mut self, prev: u32) { + self.fbb_.push_slot::(PrevNext::VT_PREV, prev, 0); + } + #[inline] + pub fn add_next(&mut self, next: u32) { + self.fbb_.push_slot::(PrevNext::VT_NEXT, next, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> PrevNextBuilder<'a, 'b> { + let start = _fbb.start_table(); + PrevNextBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for PrevNext<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("PrevNext"); + ds.field("prev", &self.prev()); + ds.field("next", &self.next()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct PrevNextT { + pub prev: u32, + pub next: u32, + } + impl Default for PrevNextT { + fn default() -> Self { + Self { prev: 0, next: 0 } + } + } + impl PrevNextT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let prev = self.prev; + let next = self.next; + PrevNext::create(_fbb, &PrevNextArgs { prev, next }) + } + } + pub enum SendTemplateOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct SendTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for SendTemplate<'a> { + type Inner = SendTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> SendTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_TITLE: flatbuffers::VOffsetT = 6; + pub const VT_ADDRESS: flatbuffers::VOffsetT = 8; + pub const VT_AMOUNT: flatbuffers::VOffsetT = 10; + pub const VT_FIAT_AMOUNT: flatbuffers::VOffsetT = 12; + pub const VT_FEE_INCLUDED: flatbuffers::VOffsetT = 14; + pub const VT_FIAT: flatbuffers::VOffsetT = 16; + pub const VT_INCLUDE_REPLY_TO: flatbuffers::VOffsetT = 18; + pub const VT_SUBJECT: flatbuffers::VOffsetT = 20; + pub const VT_BODY: flatbuffers::VOffsetT = 22; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + SendTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args SendTemplateArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = SendTemplateBuilder::new(_fbb); + builder.add_fiat_amount(args.fiat_amount); + builder.add_amount(args.amount); + if let Some(x) = args.body { + builder.add_body(x); + } + if let Some(x) = args.subject { + builder.add_subject(x); + } + if let Some(x) = args.fiat { + builder.add_fiat(x); + } + if let Some(x) = args.address { + builder.add_address(x); + } + if let Some(x) = args.title { + builder.add_title(x); + } + builder.add_id(args.id); + builder.add_include_reply_to(args.include_reply_to); + builder.add_fee_included(args.fee_included); + builder.finish() + } + + pub fn unpack(&self) -> SendTemplateT { + let id = self.id(); + let title = self.title().map(|x| x.to_string()); + let address = self.address().map(|x| x.to_string()); + let amount = self.amount(); + let fiat_amount = self.fiat_amount(); + let fee_included = self.fee_included(); + let fiat = self.fiat().map(|x| x.to_string()); + let include_reply_to = self.include_reply_to(); + let subject = self.subject().map(|x| x.to_string()); + let body = self.body().map(|x| x.to_string()); + SendTemplateT { + id, + title, + address, + amount, + fiat_amount, + fee_included, + fiat, + include_reply_to, + subject, + body, + } + } + + #[inline] + pub fn id(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(SendTemplate::VT_ID, Some(0)).unwrap() } + } + #[inline] + pub fn title(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(SendTemplate::VT_TITLE, None) + } + } + #[inline] + pub fn address(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(SendTemplate::VT_ADDRESS, None) + } + } + #[inline] + pub fn amount(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(SendTemplate::VT_AMOUNT, Some(0)) + .unwrap() + } + } + #[inline] + pub fn fiat_amount(&self) -> f64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(SendTemplate::VT_FIAT_AMOUNT, Some(0.0)) + .unwrap() + } + } + #[inline] + pub fn fee_included(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(SendTemplate::VT_FEE_INCLUDED, Some(false)) + .unwrap() + } + } + #[inline] + pub fn fiat(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(SendTemplate::VT_FIAT, None) + } + } + #[inline] + pub fn include_reply_to(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(SendTemplate::VT_INCLUDE_REPLY_TO, Some(false)) + .unwrap() + } + } + #[inline] + pub fn subject(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(SendTemplate::VT_SUBJECT, None) + } + } + #[inline] + pub fn body(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(SendTemplate::VT_BODY, None) + } + } + } + + impl flatbuffers::Verifiable for SendTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("title", Self::VT_TITLE, false)? + .visit_field::>( + "address", + Self::VT_ADDRESS, + false, + )? + .visit_field::("amount", Self::VT_AMOUNT, false)? + .visit_field::("fiat_amount", Self::VT_FIAT_AMOUNT, false)? + .visit_field::("fee_included", Self::VT_FEE_INCLUDED, false)? + .visit_field::>("fiat", Self::VT_FIAT, false)? + .visit_field::("include_reply_to", Self::VT_INCLUDE_REPLY_TO, false)? + .visit_field::>( + "subject", + Self::VT_SUBJECT, + false, + )? + .visit_field::>("body", Self::VT_BODY, false)? + .finish(); + Ok(()) + } + } + pub struct SendTemplateArgs<'a> { + pub id: u32, + pub title: Option>, + pub address: Option>, + pub amount: u64, + pub fiat_amount: f64, + pub fee_included: bool, + pub fiat: Option>, + pub include_reply_to: bool, + pub subject: Option>, + pub body: Option>, + } + impl<'a> Default for SendTemplateArgs<'a> { + #[inline] + fn default() -> Self { + SendTemplateArgs { + id: 0, + title: None, + address: None, + amount: 0, + fiat_amount: 0.0, + fee_included: false, + fiat: None, + include_reply_to: false, + subject: None, + body: None, + } + } + } + + pub struct SendTemplateBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> SendTemplateBuilder<'a, 'b> { + #[inline] + pub fn add_id(&mut self, id: u32) { + self.fbb_.push_slot::(SendTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_title(&mut self, title: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(SendTemplate::VT_TITLE, title); + } + #[inline] + pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(SendTemplate::VT_ADDRESS, address); + } + #[inline] + pub fn add_amount(&mut self, amount: u64) { + self.fbb_ + .push_slot::(SendTemplate::VT_AMOUNT, amount, 0); + } + #[inline] + pub fn add_fiat_amount(&mut self, fiat_amount: f64) { + self.fbb_ + .push_slot::(SendTemplate::VT_FIAT_AMOUNT, fiat_amount, 0.0); + } + #[inline] + pub fn add_fee_included(&mut self, fee_included: bool) { + self.fbb_ + .push_slot::(SendTemplate::VT_FEE_INCLUDED, fee_included, false); + } + #[inline] + pub fn add_fiat(&mut self, fiat: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(SendTemplate::VT_FIAT, fiat); + } + #[inline] + pub fn add_include_reply_to(&mut self, include_reply_to: bool) { + self.fbb_ + .push_slot::(SendTemplate::VT_INCLUDE_REPLY_TO, include_reply_to, false); + } + #[inline] + pub fn add_subject(&mut self, subject: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(SendTemplate::VT_SUBJECT, subject); + } + #[inline] + pub fn add_body(&mut self, body: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(SendTemplate::VT_BODY, body); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> SendTemplateBuilder<'a, 'b> { + let start = _fbb.start_table(); + SendTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for SendTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("SendTemplate"); + ds.field("id", &self.id()); + ds.field("title", &self.title()); + ds.field("address", &self.address()); + ds.field("amount", &self.amount()); + ds.field("fiat_amount", &self.fiat_amount()); + ds.field("fee_included", &self.fee_included()); + ds.field("fiat", &self.fiat()); + ds.field("include_reply_to", &self.include_reply_to()); + ds.field("subject", &self.subject()); + ds.field("body", &self.body()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct SendTemplateT { + pub id: u32, + pub title: Option, + pub address: Option, + pub amount: u64, + pub fiat_amount: f64, + pub fee_included: bool, + pub fiat: Option, + pub include_reply_to: bool, + pub subject: Option, + pub body: Option, + } + impl Default for SendTemplateT { + fn default() -> Self { + Self { + id: 0, + title: None, + address: None, + amount: 0, + fiat_amount: 0.0, + fee_included: false, + fiat: None, + include_reply_to: false, + subject: None, + body: None, + } + } + } + impl SendTemplateT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let id = self.id; + let title = self.title.as_ref().map(|x| _fbb.create_string(x)); + let address = self.address.as_ref().map(|x| _fbb.create_string(x)); + let amount = self.amount; + let fiat_amount = self.fiat_amount; + let fee_included = self.fee_included; + let fiat = self.fiat.as_ref().map(|x| _fbb.create_string(x)); + let include_reply_to = self.include_reply_to; + let subject = self.subject.as_ref().map(|x| _fbb.create_string(x)); + let body = self.body.as_ref().map(|x| _fbb.create_string(x)); + SendTemplate::create( + _fbb, + &SendTemplateArgs { + id, + title, + address, + amount, + fiat_amount, + fee_included, + fiat, + include_reply_to, + subject, + body, + }, + ) + } + } + pub enum SendTemplateVecOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct SendTemplateVec<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for SendTemplateVec<'a> { + type Inner = SendTemplateVec<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> SendTemplateVec<'a> { + pub const VT_TEMPLATES: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + SendTemplateVec { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args SendTemplateVecArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = SendTemplateVecBuilder::new(_fbb); + if let Some(x) = args.templates { + builder.add_templates(x); + } + builder.finish() + } + + pub fn unpack(&self) -> SendTemplateVecT { + let templates = self + .templates() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + SendTemplateVecT { templates } + } + + #[inline] + pub fn templates( + &self, + ) -> Option>>> + { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(SendTemplateVec::VT_TEMPLATES, None) + } + } + } + + impl flatbuffers::Verifiable for SendTemplateVec<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("templates", Self::VT_TEMPLATES, false)? + .finish(); + Ok(()) + } + } + pub struct SendTemplateVecArgs<'a> { + pub templates: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for SendTemplateVecArgs<'a> { + #[inline] + fn default() -> Self { + SendTemplateVecArgs { templates: None } + } + } + + pub struct SendTemplateVecBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> SendTemplateVecBuilder<'a, 'b> { + #[inline] + pub fn add_templates( + &mut self, + templates: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_.push_slot_always::>( + SendTemplateVec::VT_TEMPLATES, + templates, + ); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> SendTemplateVecBuilder<'a, 'b> { + let start = _fbb.start_table(); + SendTemplateVecBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for SendTemplateVec<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("SendTemplateVec"); + ds.field("templates", &self.templates()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct SendTemplateVecT { + pub templates: Option>, + } + impl Default for SendTemplateVecT { + fn default() -> Self { + Self { templates: None } + } + } + impl SendTemplateVecT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let templates = self.templates.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + SendTemplateVec::create(_fbb, &SendTemplateVecArgs { templates }) + } + } + pub enum ContactOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Contact<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Contact<'a> { + type Inner = Contact<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Contact<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_NAME: flatbuffers::VOffsetT = 6; + pub const VT_ADDRESS: flatbuffers::VOffsetT = 8; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Contact { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args ContactArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = ContactBuilder::new(_fbb); + if let Some(x) = args.address { + builder.add_address(x); + } + if let Some(x) = args.name { + builder.add_name(x); + } + builder.add_id(args.id); + builder.finish() + } + + pub fn unpack(&self) -> ContactT { + let id = self.id(); + let name = self.name().map(|x| x.to_string()); + let address = self.address().map(|x| x.to_string()); + ContactT { id, name, address } + } + + #[inline] + pub fn id(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Contact::VT_ID, Some(0)).unwrap() } + } + #[inline] + pub fn name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Contact::VT_NAME, None) + } + } + #[inline] + pub fn address(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Contact::VT_ADDRESS, None) + } + } + } + + impl flatbuffers::Verifiable for Contact<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("name", Self::VT_NAME, false)? + .visit_field::>( + "address", + Self::VT_ADDRESS, + false, + )? + .finish(); + Ok(()) + } + } + pub struct ContactArgs<'a> { + pub id: u32, + pub name: Option>, + pub address: Option>, + } + impl<'a> Default for ContactArgs<'a> { + #[inline] + fn default() -> Self { + ContactArgs { + id: 0, + name: None, + address: None, + } + } + } + + pub struct ContactBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> ContactBuilder<'a, 'b> { + #[inline] + pub fn add_id(&mut self, id: u32) { + self.fbb_.push_slot::(Contact::VT_ID, id, 0); + } + #[inline] + pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Contact::VT_NAME, name); + } + #[inline] + pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Contact::VT_ADDRESS, address); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ContactBuilder<'a, 'b> { + let start = _fbb.start_table(); + ContactBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Contact<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Contact"); + ds.field("id", &self.id()); + ds.field("name", &self.name()); + ds.field("address", &self.address()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct ContactT { + pub id: u32, + pub name: Option, + pub address: Option, + } + impl Default for ContactT { + fn default() -> Self { + Self { + id: 0, + name: None, + address: None, + } + } + } + impl ContactT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let id = self.id; + let name = self.name.as_ref().map(|x| _fbb.create_string(x)); + let address = self.address.as_ref().map(|x| _fbb.create_string(x)); + Contact::create(_fbb, &ContactArgs { id, name, address }) + } + } + pub enum ContactVecOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct ContactVec<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for ContactVec<'a> { + type Inner = ContactVec<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> ContactVec<'a> { + pub const VT_CONTACTS: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + ContactVec { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args ContactVecArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = ContactVecBuilder::new(_fbb); + if let Some(x) = args.contacts { + builder.add_contacts(x); + } + builder.finish() + } + + pub fn unpack(&self) -> ContactVecT { + let contacts = self + .contacts() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + ContactVecT { contacts } + } + + #[inline] + pub fn contacts( + &self, + ) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(ContactVec::VT_CONTACTS, None) + } + } + } + + impl flatbuffers::Verifiable for ContactVec<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("contacts", Self::VT_CONTACTS, false)? + .finish(); + Ok(()) + } + } + pub struct ContactVecArgs<'a> { + pub contacts: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for ContactVecArgs<'a> { + #[inline] + fn default() -> Self { + ContactVecArgs { contacts: None } + } + } + + pub struct ContactVecBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> ContactVecBuilder<'a, 'b> { + #[inline] + pub fn add_contacts( + &mut self, + contacts: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_ + .push_slot_always::>(ContactVec::VT_CONTACTS, contacts); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ContactVecBuilder<'a, 'b> { + let start = _fbb.start_table(); + ContactVecBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for ContactVec<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("ContactVec"); + ds.field("contacts", &self.contacts()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct ContactVecT { + pub contacts: Option>, + } + impl Default for ContactVecT { + fn default() -> Self { + Self { contacts: None } + } + } + impl ContactVecT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let contacts = self.contacts.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + ContactVec::create(_fbb, &ContactVecArgs { contacts }) + } + } + pub enum TxTimeValueOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct TxTimeValue<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for TxTimeValue<'a> { + type Inner = TxTimeValue<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> TxTimeValue<'a> { + pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 4; + pub const VT_VALUE: flatbuffers::VOffsetT = 6; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + TxTimeValue { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args TxTimeValueArgs, + ) -> flatbuffers::WIPOffset> { + let mut builder = TxTimeValueBuilder::new(_fbb); + builder.add_value(args.value); + builder.add_timestamp(args.timestamp); + builder.finish() + } + + pub fn unpack(&self) -> TxTimeValueT { + let timestamp = self.timestamp(); + let value = self.value(); + TxTimeValueT { timestamp, value } + } + + #[inline] + pub fn timestamp(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(TxTimeValue::VT_TIMESTAMP, Some(0)) + .unwrap() + } + } + #[inline] + pub fn value(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(TxTimeValue::VT_VALUE, Some(0)) + .unwrap() + } + } + } + + impl flatbuffers::Verifiable for TxTimeValue<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? + .visit_field::("value", Self::VT_VALUE, false)? + .finish(); + Ok(()) + } + } + pub struct TxTimeValueArgs { + pub timestamp: u32, + pub value: u64, + } + impl<'a> Default for TxTimeValueArgs { + #[inline] + fn default() -> Self { + TxTimeValueArgs { + timestamp: 0, + value: 0, + } + } + } + + pub struct TxTimeValueBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> TxTimeValueBuilder<'a, 'b> { + #[inline] + pub fn add_timestamp(&mut self, timestamp: u32) { + self.fbb_ + .push_slot::(TxTimeValue::VT_TIMESTAMP, timestamp, 0); + } + #[inline] + pub fn add_value(&mut self, value: u64) { + self.fbb_.push_slot::(TxTimeValue::VT_VALUE, value, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TxTimeValueBuilder<'a, 'b> { + let start = _fbb.start_table(); + TxTimeValueBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for TxTimeValue<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("TxTimeValue"); + ds.field("timestamp", &self.timestamp()); + ds.field("value", &self.value()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct TxTimeValueT { + pub timestamp: u32, + pub value: u64, + } + impl Default for TxTimeValueT { + fn default() -> Self { + Self { + timestamp: 0, + value: 0, + } + } + } + impl TxTimeValueT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let timestamp = self.timestamp; + let value = self.value; + TxTimeValue::create(_fbb, &TxTimeValueArgs { timestamp, value }) + } + } + pub enum TxTimeValueVecOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct TxTimeValueVec<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for TxTimeValueVec<'a> { + type Inner = TxTimeValueVec<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> TxTimeValueVec<'a> { + pub const VT_VALUES: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + TxTimeValueVec { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args TxTimeValueVecArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = TxTimeValueVecBuilder::new(_fbb); + if let Some(x) = args.values { + builder.add_values(x); + } + builder.finish() + } + + pub fn unpack(&self) -> TxTimeValueVecT { + let values = self + .values() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + TxTimeValueVecT { values } + } + + #[inline] + pub fn values( + &self, + ) -> Option>>> + { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(TxTimeValueVec::VT_VALUES, None) + } + } + } + + impl flatbuffers::Verifiable for TxTimeValueVec<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("values", Self::VT_VALUES, false)? + .finish(); + Ok(()) + } + } + pub struct TxTimeValueVecArgs<'a> { + pub values: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for TxTimeValueVecArgs<'a> { + #[inline] + fn default() -> Self { + TxTimeValueVecArgs { values: None } + } + } + + pub struct TxTimeValueVecBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> TxTimeValueVecBuilder<'a, 'b> { + #[inline] + pub fn add_values( + &mut self, + values: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_ + .push_slot_always::>(TxTimeValueVec::VT_VALUES, values); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> TxTimeValueVecBuilder<'a, 'b> { + let start = _fbb.start_table(); + TxTimeValueVecBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for TxTimeValueVec<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("TxTimeValueVec"); + ds.field("values", &self.values()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct TxTimeValueVecT { + pub values: Option>, + } + impl Default for TxTimeValueVecT { + fn default() -> Self { + Self { values: None } + } + } + impl TxTimeValueVecT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let values = self.values.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + TxTimeValueVec::create(_fbb, &TxTimeValueVecArgs { values }) + } + } + pub enum QuoteOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Quote<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Quote<'a> { + type Inner = Quote<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Quote<'a> { + pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 4; + pub const VT_PRICE: flatbuffers::VOffsetT = 6; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Quote { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args QuoteArgs, + ) -> flatbuffers::WIPOffset> { + let mut builder = QuoteBuilder::new(_fbb); + builder.add_price(args.price); + builder.add_timestamp(args.timestamp); + builder.finish() + } + + pub fn unpack(&self) -> QuoteT { + let timestamp = self.timestamp(); + let price = self.price(); + QuoteT { timestamp, price } + } + + #[inline] + pub fn timestamp(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Quote::VT_TIMESTAMP, Some(0)).unwrap() } + } + #[inline] + pub fn price(&self) -> f64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Quote::VT_PRICE, Some(0.0)).unwrap() } + } + } + + impl flatbuffers::Verifiable for Quote<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? + .visit_field::("price", Self::VT_PRICE, false)? + .finish(); + Ok(()) + } + } + pub struct QuoteArgs { + pub timestamp: u32, + pub price: f64, + } + impl<'a> Default for QuoteArgs { + #[inline] + fn default() -> Self { + QuoteArgs { + timestamp: 0, + price: 0.0, + } + } + } + + pub struct QuoteBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> QuoteBuilder<'a, 'b> { + #[inline] + pub fn add_timestamp(&mut self, timestamp: u32) { + self.fbb_ + .push_slot::(Quote::VT_TIMESTAMP, timestamp, 0); + } + #[inline] + pub fn add_price(&mut self, price: f64) { + self.fbb_.push_slot::(Quote::VT_PRICE, price, 0.0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> QuoteBuilder<'a, 'b> { + let start = _fbb.start_table(); + QuoteBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Quote<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Quote"); + ds.field("timestamp", &self.timestamp()); + ds.field("price", &self.price()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct QuoteT { + pub timestamp: u32, + pub price: f64, + } + impl Default for QuoteT { + fn default() -> Self { + Self { + timestamp: 0, + price: 0.0, + } + } + } + impl QuoteT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let timestamp = self.timestamp; + let price = self.price; + Quote::create(_fbb, &QuoteArgs { timestamp, price }) + } + } + pub enum QuoteVecOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct QuoteVec<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for QuoteVec<'a> { + type Inner = QuoteVec<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> QuoteVec<'a> { + pub const VT_VALUES: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + QuoteVec { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args QuoteVecArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = QuoteVecBuilder::new(_fbb); + if let Some(x) = args.values { + builder.add_values(x); + } + builder.finish() + } + + pub fn unpack(&self) -> QuoteVecT { + let values = self + .values() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + QuoteVecT { values } + } + + #[inline] + pub fn values( + &self, + ) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(QuoteVec::VT_VALUES, None) + } + } + } + + impl flatbuffers::Verifiable for QuoteVec<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("values", Self::VT_VALUES, false)? + .finish(); + Ok(()) + } + } + pub struct QuoteVecArgs<'a> { + pub values: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for QuoteVecArgs<'a> { + #[inline] + fn default() -> Self { + QuoteVecArgs { values: None } + } + } + + pub struct QuoteVecBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> QuoteVecBuilder<'a, 'b> { + #[inline] + pub fn add_values( + &mut self, + values: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_ + .push_slot_always::>(QuoteVec::VT_VALUES, values); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> QuoteVecBuilder<'a, 'b> { + let start = _fbb.start_table(); + QuoteVecBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for QuoteVec<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("QuoteVec"); + ds.field("values", &self.values()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct QuoteVecT { + pub values: Option>, + } + impl Default for QuoteVecT { + fn default() -> Self { + Self { values: None } + } + } + impl QuoteVecT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let values = self.values.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + QuoteVec::create(_fbb, &QuoteVecArgs { values }) + } + } + pub enum SpendingOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Spending<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Spending<'a> { + type Inner = Spending<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Spending<'a> { + pub const VT_RECIPIENT: flatbuffers::VOffsetT = 4; + pub const VT_AMOUNT: flatbuffers::VOffsetT = 6; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Spending { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args SpendingArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = SpendingBuilder::new(_fbb); + builder.add_amount(args.amount); + if let Some(x) = args.recipient { + builder.add_recipient(x); + } + builder.finish() + } + + pub fn unpack(&self) -> SpendingT { + let recipient = self.recipient().map(|x| x.to_string()); + let amount = self.amount(); + SpendingT { recipient, amount } + } + + #[inline] + pub fn recipient(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Spending::VT_RECIPIENT, None) + } + } + #[inline] + pub fn amount(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Spending::VT_AMOUNT, Some(0)).unwrap() } + } + } + + impl flatbuffers::Verifiable for Spending<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>( + "recipient", + Self::VT_RECIPIENT, + false, + )? + .visit_field::("amount", Self::VT_AMOUNT, false)? + .finish(); + Ok(()) + } + } + pub struct SpendingArgs<'a> { + pub recipient: Option>, + pub amount: u64, + } + impl<'a> Default for SpendingArgs<'a> { + #[inline] + fn default() -> Self { + SpendingArgs { + recipient: None, + amount: 0, + } + } + } + + pub struct SpendingBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> SpendingBuilder<'a, 'b> { + #[inline] + pub fn add_recipient(&mut self, recipient: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Spending::VT_RECIPIENT, recipient); + } + #[inline] + pub fn add_amount(&mut self, amount: u64) { + self.fbb_.push_slot::(Spending::VT_AMOUNT, amount, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SpendingBuilder<'a, 'b> { + let start = _fbb.start_table(); + SpendingBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Spending<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Spending"); + ds.field("recipient", &self.recipient()); + ds.field("amount", &self.amount()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct SpendingT { + pub recipient: Option, + pub amount: u64, + } + impl Default for SpendingT { + fn default() -> Self { + Self { + recipient: None, + amount: 0, + } + } + } + impl SpendingT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let recipient = self.recipient.as_ref().map(|x| _fbb.create_string(x)); + let amount = self.amount; + Spending::create(_fbb, &SpendingArgs { recipient, amount }) + } + } + pub enum SpendingVecOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct SpendingVec<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for SpendingVec<'a> { + type Inner = SpendingVec<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> SpendingVec<'a> { + pub const VT_VALUES: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + SpendingVec { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args SpendingVecArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = SpendingVecBuilder::new(_fbb); + if let Some(x) = args.values { + builder.add_values(x); + } + builder.finish() + } + + pub fn unpack(&self) -> SpendingVecT { + let values = self + .values() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + SpendingVecT { values } + } + + #[inline] + pub fn values( + &self, + ) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(SpendingVec::VT_VALUES, None) + } + } + } + + impl flatbuffers::Verifiable for SpendingVec<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("values", Self::VT_VALUES, false)? + .finish(); + Ok(()) + } + } + pub struct SpendingVecArgs<'a> { + pub values: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for SpendingVecArgs<'a> { + #[inline] + fn default() -> Self { + SpendingVecArgs { values: None } + } + } + + pub struct SpendingVecBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> SpendingVecBuilder<'a, 'b> { + #[inline] + pub fn add_values( + &mut self, + values: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_ + .push_slot_always::>(SpendingVec::VT_VALUES, values); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SpendingVecBuilder<'a, 'b> { + let start = _fbb.start_table(); + SpendingVecBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for SpendingVec<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("SpendingVec"); + ds.field("values", &self.values()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct SpendingVecT { + pub values: Option>, + } + impl Default for SpendingVecT { + fn default() -> Self { + Self { values: None } + } + } + impl SpendingVecT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let values = self.values.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + SpendingVec::create(_fbb, &SpendingVecArgs { values }) + } + } + pub enum AddressBalanceOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct AddressBalance<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for AddressBalance<'a> { + type Inner = AddressBalance<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> AddressBalance<'a> { + pub const VT_INDEX: flatbuffers::VOffsetT = 4; + pub const VT_ADDRESS: flatbuffers::VOffsetT = 6; + pub const VT_BALANCE: flatbuffers::VOffsetT = 8; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + AddressBalance { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args AddressBalanceArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = AddressBalanceBuilder::new(_fbb); + builder.add_balance(args.balance); + if let Some(x) = args.address { + builder.add_address(x); + } + builder.add_index(args.index); + builder.finish() + } + + pub fn unpack(&self) -> AddressBalanceT { + let index = self.index(); + let address = self.address().map(|x| x.to_string()); + let balance = self.balance(); + AddressBalanceT { + index, + address, + balance, + } + } + + #[inline] + pub fn index(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(AddressBalance::VT_INDEX, Some(0)) + .unwrap() + } + } + #[inline] + pub fn address(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(AddressBalance::VT_ADDRESS, None) + } + } + #[inline] + pub fn balance(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(AddressBalance::VT_BALANCE, Some(0)) + .unwrap() + } + } + } + + impl flatbuffers::Verifiable for AddressBalance<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("index", Self::VT_INDEX, false)? + .visit_field::>( + "address", + Self::VT_ADDRESS, + false, + )? + .visit_field::("balance", Self::VT_BALANCE, false)? + .finish(); + Ok(()) + } + } + pub struct AddressBalanceArgs<'a> { + pub index: u32, + pub address: Option>, + pub balance: u64, + } + impl<'a> Default for AddressBalanceArgs<'a> { + #[inline] + fn default() -> Self { + AddressBalanceArgs { + index: 0, + address: None, + balance: 0, + } + } + } + + pub struct AddressBalanceBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> AddressBalanceBuilder<'a, 'b> { + #[inline] + pub fn add_index(&mut self, index: u32) { + self.fbb_ + .push_slot::(AddressBalance::VT_INDEX, index, 0); + } + #[inline] + pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(AddressBalance::VT_ADDRESS, address); + } + #[inline] + pub fn add_balance(&mut self, balance: u64) { + self.fbb_ + .push_slot::(AddressBalance::VT_BALANCE, balance, 0); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> AddressBalanceBuilder<'a, 'b> { + let start = _fbb.start_table(); + AddressBalanceBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for AddressBalance<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("AddressBalance"); + ds.field("index", &self.index()); + ds.field("address", &self.address()); + ds.field("balance", &self.balance()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct AddressBalanceT { + pub index: u32, + pub address: Option, + pub balance: u64, + } + impl Default for AddressBalanceT { + fn default() -> Self { + Self { + index: 0, + address: None, + balance: 0, + } + } + } + impl AddressBalanceT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let index = self.index; + let address = self.address.as_ref().map(|x| _fbb.create_string(x)); + let balance = self.balance; + AddressBalance::create( + _fbb, + &AddressBalanceArgs { + index, + address, + balance, + }, + ) + } + } + pub enum AddressBalanceVecOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct AddressBalanceVec<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for AddressBalanceVec<'a> { + type Inner = AddressBalanceVec<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> AddressBalanceVec<'a> { + pub const VT_VALUES: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + AddressBalanceVec { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args AddressBalanceVecArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = AddressBalanceVecBuilder::new(_fbb); + if let Some(x) = args.values { + builder.add_values(x); + } + builder.finish() + } + + pub fn unpack(&self) -> AddressBalanceVecT { + let values = self + .values() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + AddressBalanceVecT { values } + } + + #[inline] + pub fn values( + &self, + ) -> Option>>> + { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(AddressBalanceVec::VT_VALUES, None) + } + } + } + + impl flatbuffers::Verifiable for AddressBalanceVec<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("values", Self::VT_VALUES, false)? + .finish(); + Ok(()) + } + } + pub struct AddressBalanceVecArgs<'a> { + pub values: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for AddressBalanceVecArgs<'a> { + #[inline] + fn default() -> Self { + AddressBalanceVecArgs { values: None } + } + } + + pub struct AddressBalanceVecBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> AddressBalanceVecBuilder<'a, 'b> { + #[inline] + pub fn add_values( + &mut self, + values: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_.push_slot_always::>( + AddressBalanceVec::VT_VALUES, + values, + ); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> AddressBalanceVecBuilder<'a, 'b> { + let start = _fbb.start_table(); + AddressBalanceVecBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for AddressBalanceVec<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("AddressBalanceVec"); + ds.field("values", &self.values()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct AddressBalanceVecT { + pub values: Option>, + } + impl Default for AddressBalanceVecT { + fn default() -> Self { + Self { values: None } + } + } + impl AddressBalanceVecT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let values = self.values.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + AddressBalanceVec::create(_fbb, &AddressBalanceVecArgs { values }) + } + } + pub enum CheckpointOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Checkpoint<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Checkpoint<'a> { + type Inner = Checkpoint<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Checkpoint<'a> { + pub const VT_HEIGHT: flatbuffers::VOffsetT = 4; + pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 6; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Checkpoint { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args CheckpointArgs, + ) -> flatbuffers::WIPOffset> { + let mut builder = CheckpointBuilder::new(_fbb); + builder.add_timestamp(args.timestamp); + builder.add_height(args.height); + builder.finish() + } + + pub fn unpack(&self) -> CheckpointT { + let height = self.height(); + let timestamp = self.timestamp(); + CheckpointT { height, timestamp } + } + + #[inline] + pub fn height(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Checkpoint::VT_HEIGHT, Some(0)) + .unwrap() + } + } + #[inline] + pub fn timestamp(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Checkpoint::VT_TIMESTAMP, Some(0)) + .unwrap() + } + } + } + + impl flatbuffers::Verifiable for Checkpoint<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("height", Self::VT_HEIGHT, false)? + .visit_field::("timestamp", Self::VT_TIMESTAMP, false)? + .finish(); + Ok(()) + } + } + pub struct CheckpointArgs { + pub height: u32, + pub timestamp: u32, + } + impl<'a> Default for CheckpointArgs { + #[inline] + fn default() -> Self { + CheckpointArgs { + height: 0, + timestamp: 0, + } + } + } + + pub struct CheckpointBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> CheckpointBuilder<'a, 'b> { + #[inline] + pub fn add_height(&mut self, height: u32) { + self.fbb_.push_slot::(Checkpoint::VT_HEIGHT, height, 0); + } + #[inline] + pub fn add_timestamp(&mut self, timestamp: u32) { + self.fbb_ + .push_slot::(Checkpoint::VT_TIMESTAMP, timestamp, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> CheckpointBuilder<'a, 'b> { + let start = _fbb.start_table(); + CheckpointBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Checkpoint<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Checkpoint"); + ds.field("height", &self.height()); + ds.field("timestamp", &self.timestamp()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct CheckpointT { + pub height: u32, + pub timestamp: u32, + } + impl Default for CheckpointT { + fn default() -> Self { + Self { + height: 0, + timestamp: 0, + } + } + } + impl CheckpointT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let height = self.height; + let timestamp = self.timestamp; + Checkpoint::create(_fbb, &CheckpointArgs { height, timestamp }) + } + } + pub enum CheckpointVecOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct CheckpointVec<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for CheckpointVec<'a> { + type Inner = CheckpointVec<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> CheckpointVec<'a> { + pub const VT_VALUES: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + CheckpointVec { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args CheckpointVecArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = CheckpointVecBuilder::new(_fbb); + if let Some(x) = args.values { + builder.add_values(x); + } + builder.finish() + } + + pub fn unpack(&self) -> CheckpointVecT { + let values = self + .values() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + CheckpointVecT { values } + } + + #[inline] + pub fn values( + &self, + ) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(CheckpointVec::VT_VALUES, None) + } + } + } + + impl flatbuffers::Verifiable for CheckpointVec<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("values", Self::VT_VALUES, false)? + .finish(); + Ok(()) + } + } + pub struct CheckpointVecArgs<'a> { + pub values: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for CheckpointVecArgs<'a> { + #[inline] + fn default() -> Self { + CheckpointVecArgs { values: None } + } + } + + pub struct CheckpointVecBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> CheckpointVecBuilder<'a, 'b> { + #[inline] + pub fn add_values( + &mut self, + values: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_ + .push_slot_always::>(CheckpointVec::VT_VALUES, values); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> CheckpointVecBuilder<'a, 'b> { + let start = _fbb.start_table(); + CheckpointVecBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for CheckpointVec<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("CheckpointVec"); + ds.field("values", &self.values()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct CheckpointVecT { + pub values: Option>, + } + impl Default for CheckpointVecT { + fn default() -> Self { + Self { values: None } + } + } + impl CheckpointVecT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let values = self.values.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + CheckpointVec::create(_fbb, &CheckpointVecArgs { values }) + } + } + pub enum BackupOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Backup<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Backup<'a> { + type Inner = Backup<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Backup<'a> { + pub const VT_NAME: flatbuffers::VOffsetT = 4; + pub const VT_SEED: flatbuffers::VOffsetT = 6; + pub const VT_INDEX: flatbuffers::VOffsetT = 8; + pub const VT_SK: flatbuffers::VOffsetT = 10; + pub const VT_FVK: flatbuffers::VOffsetT = 12; + pub const VT_UVK: flatbuffers::VOffsetT = 14; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Backup { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args BackupArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = BackupBuilder::new(_fbb); + if let Some(x) = args.uvk { + builder.add_uvk(x); + } + if let Some(x) = args.fvk { + builder.add_fvk(x); + } + if let Some(x) = args.sk { + builder.add_sk(x); + } + builder.add_index(args.index); + if let Some(x) = args.seed { + builder.add_seed(x); + } + if let Some(x) = args.name { + builder.add_name(x); + } + builder.finish() + } + + pub fn unpack(&self) -> BackupT { + let name = self.name().map(|x| x.to_string()); + let seed = self.seed().map(|x| x.to_string()); + let index = self.index(); + let sk = self.sk().map(|x| x.to_string()); + let fvk = self.fvk().map(|x| x.to_string()); + let uvk = self.uvk().map(|x| x.to_string()); + BackupT { + name, + seed, + index, + sk, + fvk, + uvk, + } + } + + #[inline] + pub fn name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Backup::VT_NAME, None) + } + } + #[inline] + pub fn seed(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Backup::VT_SEED, None) + } + } + #[inline] + pub fn index(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Backup::VT_INDEX, Some(0)).unwrap() } + } + #[inline] + pub fn sk(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Backup::VT_SK, None) + } + } + #[inline] + pub fn fvk(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Backup::VT_FVK, None) + } + } + #[inline] + pub fn uvk(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Backup::VT_UVK, None) + } + } + } + + impl flatbuffers::Verifiable for Backup<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>("name", Self::VT_NAME, false)? + .visit_field::>("seed", Self::VT_SEED, false)? + .visit_field::("index", Self::VT_INDEX, false)? + .visit_field::>("sk", Self::VT_SK, false)? + .visit_field::>("fvk", Self::VT_FVK, false)? + .visit_field::>("uvk", Self::VT_UVK, false)? + .finish(); + Ok(()) + } + } + pub struct BackupArgs<'a> { + pub name: Option>, + pub seed: Option>, + pub index: u32, + pub sk: Option>, + pub fvk: Option>, + pub uvk: Option>, + } + impl<'a> Default for BackupArgs<'a> { + #[inline] + fn default() -> Self { + BackupArgs { + name: None, + seed: None, + index: 0, + sk: None, + fvk: None, + uvk: None, + } + } + } + + pub struct BackupBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> BackupBuilder<'a, 'b> { + #[inline] + pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Backup::VT_NAME, name); + } + #[inline] + pub fn add_seed(&mut self, seed: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Backup::VT_SEED, seed); + } + #[inline] + pub fn add_index(&mut self, index: u32) { + self.fbb_.push_slot::(Backup::VT_INDEX, index, 0); + } + #[inline] + pub fn add_sk(&mut self, sk: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Backup::VT_SK, sk); + } + #[inline] + pub fn add_fvk(&mut self, fvk: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Backup::VT_FVK, fvk); + } + #[inline] + pub fn add_uvk(&mut self, uvk: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Backup::VT_UVK, uvk); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BackupBuilder<'a, 'b> { + let start = _fbb.start_table(); + BackupBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Backup<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Backup"); + ds.field("name", &self.name()); + ds.field("seed", &self.seed()); + ds.field("index", &self.index()); + ds.field("sk", &self.sk()); + ds.field("fvk", &self.fvk()); + ds.field("uvk", &self.uvk()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct BackupT { + pub name: Option, + pub seed: Option, + pub index: u32, + pub sk: Option, + pub fvk: Option, + pub uvk: Option, + } + impl Default for BackupT { + fn default() -> Self { + Self { + name: None, + seed: None, + index: 0, + sk: None, + fvk: None, + uvk: None, + } + } + } + impl BackupT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let name = self.name.as_ref().map(|x| _fbb.create_string(x)); + let seed = self.seed.as_ref().map(|x| _fbb.create_string(x)); + let index = self.index; + let sk = self.sk.as_ref().map(|x| _fbb.create_string(x)); + let fvk = self.fvk.as_ref().map(|x| _fbb.create_string(x)); + let uvk = self.uvk.as_ref().map(|x| _fbb.create_string(x)); + Backup::create( + _fbb, + &BackupArgs { + name, + seed, + index, + sk, + fvk, + uvk, + }, + ) + } + } + pub enum RaptorQDropsOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct RaptorQDrops<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for RaptorQDrops<'a> { + type Inner = RaptorQDrops<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> RaptorQDrops<'a> { + pub const VT_DROPS: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + RaptorQDrops { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args RaptorQDropsArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = RaptorQDropsBuilder::new(_fbb); + if let Some(x) = args.drops { + builder.add_drops(x); + } + builder.finish() + } + + pub fn unpack(&self) -> RaptorQDropsT { + let drops = self + .drops() + .map(|x| x.iter().map(|s| s.to_string()).collect()); + RaptorQDropsT { drops } + } + + #[inline] + pub fn drops( + &self, + ) -> Option>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(RaptorQDrops::VT_DROPS, None) + } + } + } + + impl flatbuffers::Verifiable for RaptorQDrops<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("drops", Self::VT_DROPS, false)? + .finish(); + Ok(()) + } + } + pub struct RaptorQDropsArgs<'a> { + pub drops: Option< + flatbuffers::WIPOffset>>, + >, + } + impl<'a> Default for RaptorQDropsArgs<'a> { + #[inline] + fn default() -> Self { + RaptorQDropsArgs { drops: None } + } + } + + pub struct RaptorQDropsBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> RaptorQDropsBuilder<'a, 'b> { + #[inline] + pub fn add_drops( + &mut self, + drops: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset<&'b str>>, + >, + ) { + self.fbb_ + .push_slot_always::>(RaptorQDrops::VT_DROPS, drops); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> RaptorQDropsBuilder<'a, 'b> { + let start = _fbb.start_table(); + RaptorQDropsBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for RaptorQDrops<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("RaptorQDrops"); + ds.field("drops", &self.drops()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct RaptorQDropsT { + pub drops: Option>, + } + impl Default for RaptorQDropsT { + fn default() -> Self { + Self { drops: None } + } + } + impl RaptorQDropsT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let drops = self.drops.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|s| _fbb.create_string(s)).collect(); + _fbb.create_vector(&w) + }); + RaptorQDrops::create(_fbb, &RaptorQDropsArgs { drops }) + } + } + pub enum AGEKeysOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct AGEKeys<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for AGEKeys<'a> { + type Inner = AGEKeys<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> AGEKeys<'a> { + pub const VT_SK: flatbuffers::VOffsetT = 4; + pub const VT_PK: flatbuffers::VOffsetT = 6; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + AGEKeys { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args AGEKeysArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = AGEKeysBuilder::new(_fbb); + if let Some(x) = args.pk { + builder.add_pk(x); + } + if let Some(x) = args.sk { + builder.add_sk(x); + } + builder.finish() + } + + pub fn unpack(&self) -> AGEKeysT { + let sk = self.sk().map(|x| x.to_string()); + let pk = self.pk().map(|x| x.to_string()); + AGEKeysT { sk, pk } + } + + #[inline] + pub fn sk(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(AGEKeys::VT_SK, None) + } + } + #[inline] + pub fn pk(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(AGEKeys::VT_PK, None) + } + } + } + + impl flatbuffers::Verifiable for AGEKeys<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>("sk", Self::VT_SK, false)? + .visit_field::>("pk", Self::VT_PK, false)? + .finish(); + Ok(()) + } + } + pub struct AGEKeysArgs<'a> { + pub sk: Option>, + pub pk: Option>, + } + impl<'a> Default for AGEKeysArgs<'a> { + #[inline] + fn default() -> Self { + AGEKeysArgs { sk: None, pk: None } + } + } + + pub struct AGEKeysBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> AGEKeysBuilder<'a, 'b> { + #[inline] + pub fn add_sk(&mut self, sk: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(AGEKeys::VT_SK, sk); + } + #[inline] + pub fn add_pk(&mut self, pk: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(AGEKeys::VT_PK, pk); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AGEKeysBuilder<'a, 'b> { + let start = _fbb.start_table(); + AGEKeysBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for AGEKeys<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("AGEKeys"); + ds.field("sk", &self.sk()); + ds.field("pk", &self.pk()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct AGEKeysT { + pub sk: Option, + pub pk: Option, + } + impl Default for AGEKeysT { + fn default() -> Self { + Self { sk: None, pk: None } + } + } + impl AGEKeysT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let sk = self.sk.as_ref().map(|x| _fbb.create_string(x)); + let pk = self.pk.as_ref().map(|x| _fbb.create_string(x)); + AGEKeys::create(_fbb, &AGEKeysArgs { sk, pk }) + } + } + pub enum ServersOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Servers<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Servers<'a> { + type Inner = Servers<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Servers<'a> { + pub const VT_URLS: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Servers { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args ServersArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = ServersBuilder::new(_fbb); + if let Some(x) = args.urls { + builder.add_urls(x); + } + builder.finish() + } + + pub fn unpack(&self) -> ServersT { + let urls = self + .urls() + .map(|x| x.iter().map(|s| s.to_string()).collect()); + ServersT { urls } + } + + #[inline] + pub fn urls( + &self, + ) -> Option>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(Servers::VT_URLS, None) + } + } + } + + impl flatbuffers::Verifiable for Servers<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("urls", Self::VT_URLS, false)? + .finish(); + Ok(()) + } + } + pub struct ServersArgs<'a> { + pub urls: Option< + flatbuffers::WIPOffset>>, + >, + } + impl<'a> Default for ServersArgs<'a> { + #[inline] + fn default() -> Self { + ServersArgs { urls: None } + } + } + + pub struct ServersBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> ServersBuilder<'a, 'b> { + #[inline] + pub fn add_urls( + &mut self, + urls: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset<&'b str>>, + >, + ) { + self.fbb_ + .push_slot_always::>(Servers::VT_URLS, urls); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ServersBuilder<'a, 'b> { + let start = _fbb.start_table(); + ServersBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Servers<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Servers"); + ds.field("urls", &self.urls()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct ServersT { + pub urls: Option>, + } + impl Default for ServersT { + fn default() -> Self { + Self { urls: None } + } + } + impl ServersT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let urls = self.urls.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|s| _fbb.create_string(s)).collect(); + _fbb.create_vector(&w) + }); + Servers::create(_fbb, &ServersArgs { urls }) + } + } + pub enum ProgressOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Progress<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Progress<'a> { + type Inner = Progress<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Progress<'a> { + pub const VT_HEIGHT: flatbuffers::VOffsetT = 4; + pub const VT_TRIAL_DECRYPTIONS: flatbuffers::VOffsetT = 6; + pub const VT_DOWNLOADED: flatbuffers::VOffsetT = 8; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Progress { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args ProgressArgs, + ) -> flatbuffers::WIPOffset> { + let mut builder = ProgressBuilder::new(_fbb); + builder.add_downloaded(args.downloaded); + builder.add_trial_decryptions(args.trial_decryptions); + builder.add_height(args.height); + builder.finish() + } + + pub fn unpack(&self) -> ProgressT { + let height = self.height(); + let trial_decryptions = self.trial_decryptions(); + let downloaded = self.downloaded(); + ProgressT { + height, + trial_decryptions, + downloaded, + } + } + + #[inline] + pub fn height(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Progress::VT_HEIGHT, Some(0)).unwrap() } + } + #[inline] + pub fn trial_decryptions(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Progress::VT_TRIAL_DECRYPTIONS, Some(0)) + .unwrap() + } + } + #[inline] + pub fn downloaded(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Progress::VT_DOWNLOADED, Some(0)) + .unwrap() + } + } + } + + impl flatbuffers::Verifiable for Progress<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("height", Self::VT_HEIGHT, false)? + .visit_field::("trial_decryptions", Self::VT_TRIAL_DECRYPTIONS, false)? + .visit_field::("downloaded", Self::VT_DOWNLOADED, false)? + .finish(); + Ok(()) + } + } + pub struct ProgressArgs { + pub height: u32, + pub trial_decryptions: u64, + pub downloaded: u64, + } + impl<'a> Default for ProgressArgs { + #[inline] + fn default() -> Self { + ProgressArgs { + height: 0, + trial_decryptions: 0, + downloaded: 0, + } + } + } + + pub struct ProgressBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> ProgressBuilder<'a, 'b> { + #[inline] + pub fn add_height(&mut self, height: u32) { + self.fbb_.push_slot::(Progress::VT_HEIGHT, height, 0); + } + #[inline] + pub fn add_trial_decryptions(&mut self, trial_decryptions: u64) { + self.fbb_ + .push_slot::(Progress::VT_TRIAL_DECRYPTIONS, trial_decryptions, 0); + } + #[inline] + pub fn add_downloaded(&mut self, downloaded: u64) { + self.fbb_ + .push_slot::(Progress::VT_DOWNLOADED, downloaded, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ProgressBuilder<'a, 'b> { + let start = _fbb.start_table(); + ProgressBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Progress<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Progress"); + ds.field("height", &self.height()); + ds.field("trial_decryptions", &self.trial_decryptions()); + ds.field("downloaded", &self.downloaded()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct ProgressT { + pub height: u32, + pub trial_decryptions: u64, + pub downloaded: u64, + } + impl Default for ProgressT { + fn default() -> Self { + Self { + height: 0, + trial_decryptions: 0, + downloaded: 0, + } + } + } + impl ProgressT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let height = self.height; + let trial_decryptions = self.trial_decryptions; + let downloaded = self.downloaded; + Progress::create( + _fbb, + &ProgressArgs { + height, + trial_decryptions, + downloaded, + }, + ) + } + } + pub enum KeyPackOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct KeyPack<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for KeyPack<'a> { + type Inner = KeyPack<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> KeyPack<'a> { + pub const VT_T_ADDR: flatbuffers::VOffsetT = 4; + pub const VT_T_KEY: flatbuffers::VOffsetT = 6; + pub const VT_Z_ADDR: flatbuffers::VOffsetT = 8; + pub const VT_Z_KEY: flatbuffers::VOffsetT = 10; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + KeyPack { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args KeyPackArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = KeyPackBuilder::new(_fbb); + if let Some(x) = args.z_key { + builder.add_z_key(x); + } + if let Some(x) = args.z_addr { + builder.add_z_addr(x); + } + if let Some(x) = args.t_key { + builder.add_t_key(x); + } + if let Some(x) = args.t_addr { + builder.add_t_addr(x); + } + builder.finish() + } + + pub fn unpack(&self) -> KeyPackT { + let t_addr = self.t_addr().map(|x| x.to_string()); + let t_key = self.t_key().map(|x| x.to_string()); + let z_addr = self.z_addr().map(|x| x.to_string()); + let z_key = self.z_key().map(|x| x.to_string()); + KeyPackT { + t_addr, + t_key, + z_addr, + z_key, + } + } + + #[inline] + pub fn t_addr(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(KeyPack::VT_T_ADDR, None) + } + } + #[inline] + pub fn t_key(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(KeyPack::VT_T_KEY, None) + } + } + #[inline] + pub fn z_addr(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(KeyPack::VT_Z_ADDR, None) + } + } + #[inline] + pub fn z_key(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(KeyPack::VT_Z_KEY, None) + } + } + } + + impl flatbuffers::Verifiable for KeyPack<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>( + "t_addr", + Self::VT_T_ADDR, + false, + )? + .visit_field::>("t_key", Self::VT_T_KEY, false)? + .visit_field::>( + "z_addr", + Self::VT_Z_ADDR, + false, + )? + .visit_field::>("z_key", Self::VT_Z_KEY, false)? + .finish(); + Ok(()) + } + } + pub struct KeyPackArgs<'a> { + pub t_addr: Option>, + pub t_key: Option>, + pub z_addr: Option>, + pub z_key: Option>, + } + impl<'a> Default for KeyPackArgs<'a> { + #[inline] + fn default() -> Self { + KeyPackArgs { + t_addr: None, + t_key: None, + z_addr: None, + z_key: None, + } + } + } + + pub struct KeyPackBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> KeyPackBuilder<'a, 'b> { + #[inline] + pub fn add_t_addr(&mut self, t_addr: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(KeyPack::VT_T_ADDR, t_addr); + } + #[inline] + pub fn add_t_key(&mut self, t_key: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(KeyPack::VT_T_KEY, t_key); + } + #[inline] + pub fn add_z_addr(&mut self, z_addr: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(KeyPack::VT_Z_ADDR, z_addr); + } + #[inline] + pub fn add_z_key(&mut self, z_key: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(KeyPack::VT_Z_KEY, z_key); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> KeyPackBuilder<'a, 'b> { + let start = _fbb.start_table(); + KeyPackBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for KeyPack<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("KeyPack"); + ds.field("t_addr", &self.t_addr()); + ds.field("t_key", &self.t_key()); + ds.field("z_addr", &self.z_addr()); + ds.field("z_key", &self.z_key()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct KeyPackT { + pub t_addr: Option, + pub t_key: Option, + pub z_addr: Option, + pub z_key: Option, + } + impl Default for KeyPackT { + fn default() -> Self { + Self { + t_addr: None, + t_key: None, + z_addr: None, + z_key: None, + } + } + } + impl KeyPackT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let t_addr = self.t_addr.as_ref().map(|x| _fbb.create_string(x)); + let t_key = self.t_key.as_ref().map(|x| _fbb.create_string(x)); + let z_addr = self.z_addr.as_ref().map(|x| _fbb.create_string(x)); + let z_key = self.z_key.as_ref().map(|x| _fbb.create_string(x)); + KeyPack::create( + _fbb, + &KeyPackArgs { + t_addr, + t_key, + z_addr, + z_key, + }, + ) + } + } + pub enum RecipientOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Recipient<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Recipient<'a> { + type Inner = Recipient<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Recipient<'a> { + pub const VT_ADDRESS: flatbuffers::VOffsetT = 4; + pub const VT_AMOUNT: flatbuffers::VOffsetT = 6; + pub const VT_FEE_INCLUDED: flatbuffers::VOffsetT = 8; + pub const VT_REPLY_TO: flatbuffers::VOffsetT = 10; + pub const VT_SUBJECT: flatbuffers::VOffsetT = 12; + pub const VT_MEMO: flatbuffers::VOffsetT = 14; + pub const VT_MAX_AMOUNT_PER_NOTE: flatbuffers::VOffsetT = 16; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Recipient { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args RecipientArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = RecipientBuilder::new(_fbb); + builder.add_max_amount_per_note(args.max_amount_per_note); + builder.add_amount(args.amount); + if let Some(x) = args.memo { + builder.add_memo(x); + } + if let Some(x) = args.subject { + builder.add_subject(x); + } + if let Some(x) = args.address { + builder.add_address(x); + } + builder.add_reply_to(args.reply_to); + builder.add_fee_included(args.fee_included); + builder.finish() + } + + pub fn unpack(&self) -> RecipientT { + let address = self.address().map(|x| x.to_string()); + let amount = self.amount(); + let fee_included = self.fee_included(); + let reply_to = self.reply_to(); + let subject = self.subject().map(|x| x.to_string()); + let memo = self.memo().map(|x| x.to_string()); + let max_amount_per_note = self.max_amount_per_note(); + RecipientT { + address, + amount, + fee_included, + reply_to, + subject, + memo, + max_amount_per_note, + } + } + + #[inline] + pub fn address(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Recipient::VT_ADDRESS, None) + } + } + #[inline] + pub fn amount(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(Recipient::VT_AMOUNT, Some(0)).unwrap() } + } + #[inline] + pub fn fee_included(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Recipient::VT_FEE_INCLUDED, Some(false)) + .unwrap() + } + } + #[inline] + pub fn reply_to(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Recipient::VT_REPLY_TO, Some(false)) + .unwrap() + } + } + #[inline] + pub fn subject(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Recipient::VT_SUBJECT, None) + } + } + #[inline] + pub fn memo(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(Recipient::VT_MEMO, None) + } + } + #[inline] + pub fn max_amount_per_note(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(Recipient::VT_MAX_AMOUNT_PER_NOTE, Some(0)) + .unwrap() + } + } + } + + impl flatbuffers::Verifiable for Recipient<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>( + "address", + Self::VT_ADDRESS, + false, + )? + .visit_field::("amount", Self::VT_AMOUNT, false)? + .visit_field::("fee_included", Self::VT_FEE_INCLUDED, false)? + .visit_field::("reply_to", Self::VT_REPLY_TO, false)? + .visit_field::>( + "subject", + Self::VT_SUBJECT, + false, + )? + .visit_field::>("memo", Self::VT_MEMO, false)? + .visit_field::("max_amount_per_note", Self::VT_MAX_AMOUNT_PER_NOTE, false)? + .finish(); + Ok(()) + } + } + pub struct RecipientArgs<'a> { + pub address: Option>, + pub amount: u64, + pub fee_included: bool, + pub reply_to: bool, + pub subject: Option>, + pub memo: Option>, + pub max_amount_per_note: u64, + } + impl<'a> Default for RecipientArgs<'a> { + #[inline] + fn default() -> Self { + RecipientArgs { + address: None, + amount: 0, + fee_included: false, + reply_to: false, + subject: None, + memo: None, + max_amount_per_note: 0, + } + } + } + + pub struct RecipientBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> RecipientBuilder<'a, 'b> { + #[inline] + pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Recipient::VT_ADDRESS, address); + } + #[inline] + pub fn add_amount(&mut self, amount: u64) { + self.fbb_.push_slot::(Recipient::VT_AMOUNT, amount, 0); + } + #[inline] + pub fn add_fee_included(&mut self, fee_included: bool) { + self.fbb_ + .push_slot::(Recipient::VT_FEE_INCLUDED, fee_included, false); + } + #[inline] + pub fn add_reply_to(&mut self, reply_to: bool) { + self.fbb_ + .push_slot::(Recipient::VT_REPLY_TO, reply_to, false); + } + #[inline] + pub fn add_subject(&mut self, subject: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Recipient::VT_SUBJECT, subject); + } + #[inline] + pub fn add_memo(&mut self, memo: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(Recipient::VT_MEMO, memo); + } + #[inline] + pub fn add_max_amount_per_note(&mut self, max_amount_per_note: u64) { + self.fbb_ + .push_slot::(Recipient::VT_MAX_AMOUNT_PER_NOTE, max_amount_per_note, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RecipientBuilder<'a, 'b> { + let start = _fbb.start_table(); + RecipientBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Recipient<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Recipient"); + ds.field("address", &self.address()); + ds.field("amount", &self.amount()); + ds.field("fee_included", &self.fee_included()); + ds.field("reply_to", &self.reply_to()); + ds.field("subject", &self.subject()); + ds.field("memo", &self.memo()); + ds.field("max_amount_per_note", &self.max_amount_per_note()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct RecipientT { + pub address: Option, + pub amount: u64, + pub fee_included: bool, + pub reply_to: bool, + pub subject: Option, + pub memo: Option, + pub max_amount_per_note: u64, + } + impl Default for RecipientT { + fn default() -> Self { + Self { + address: None, + amount: 0, + fee_included: false, + reply_to: false, + subject: None, + memo: None, + max_amount_per_note: 0, + } + } + } + impl RecipientT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let address = self.address.as_ref().map(|x| _fbb.create_string(x)); + let amount = self.amount; + let fee_included = self.fee_included; + let reply_to = self.reply_to; + let subject = self.subject.as_ref().map(|x| _fbb.create_string(x)); + let memo = self.memo.as_ref().map(|x| _fbb.create_string(x)); + let max_amount_per_note = self.max_amount_per_note; + Recipient::create( + _fbb, + &RecipientArgs { + address, + amount, + fee_included, + reply_to, + subject, + memo, + max_amount_per_note, + }, + ) + } + } + pub enum RecipientsOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct Recipients<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for Recipients<'a> { + type Inner = Recipients<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> Recipients<'a> { + pub const VT_VALUES: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + Recipients { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args RecipientsArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = RecipientsBuilder::new(_fbb); + if let Some(x) = args.values { + builder.add_values(x); + } + builder.finish() + } + + pub fn unpack(&self) -> RecipientsT { + let values = self + .values() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + RecipientsT { values } + } + + #[inline] + pub fn values( + &self, + ) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(Recipients::VT_VALUES, None) + } + } + } + + impl flatbuffers::Verifiable for Recipients<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("values", Self::VT_VALUES, false)? + .finish(); + Ok(()) + } + } + pub struct RecipientsArgs<'a> { + pub values: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for RecipientsArgs<'a> { + #[inline] + fn default() -> Self { + RecipientsArgs { values: None } + } + } + + pub struct RecipientsBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> RecipientsBuilder<'a, 'b> { + #[inline] + pub fn add_values( + &mut self, + values: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_ + .push_slot_always::>(Recipients::VT_VALUES, values); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RecipientsBuilder<'a, 'b> { + let start = _fbb.start_table(); + RecipientsBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for Recipients<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("Recipients"); + ds.field("values", &self.values()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct RecipientsT { + pub values: Option>, + } + impl Default for RecipientsT { + fn default() -> Self { + Self { values: None } + } + } + impl RecipientsT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let values = self.values.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + Recipients::create(_fbb, &RecipientsArgs { values }) + } + } + pub enum RecipientSummaryOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct RecipientSummary<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for RecipientSummary<'a> { + type Inner = RecipientSummary<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> RecipientSummary<'a> { + pub const VT_AMOUNT: flatbuffers::VOffsetT = 4; + pub const VT_ADDRESS: flatbuffers::VOffsetT = 6; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + RecipientSummary { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args RecipientSummaryArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = RecipientSummaryBuilder::new(_fbb); + builder.add_amount(args.amount); + if let Some(x) = args.address { + builder.add_address(x); + } + builder.finish() + } + + pub fn unpack(&self) -> RecipientSummaryT { + let amount = self.amount(); + let address = self.address().map(|x| x.to_string()); + RecipientSummaryT { amount, address } + } + + #[inline] + pub fn amount(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(RecipientSummary::VT_AMOUNT, Some(0)) + .unwrap() + } + } + #[inline] + pub fn address(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(RecipientSummary::VT_ADDRESS, None) + } + } + } + + impl flatbuffers::Verifiable for RecipientSummary<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("amount", Self::VT_AMOUNT, false)? + .visit_field::>( + "address", + Self::VT_ADDRESS, + false, + )? + .finish(); + Ok(()) + } + } + pub struct RecipientSummaryArgs<'a> { + pub amount: u64, + pub address: Option>, + } + impl<'a> Default for RecipientSummaryArgs<'a> { + #[inline] + fn default() -> Self { + RecipientSummaryArgs { + amount: 0, + address: None, + } + } + } + + pub struct RecipientSummaryBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> RecipientSummaryBuilder<'a, 'b> { + #[inline] + pub fn add_amount(&mut self, amount: u64) { + self.fbb_ + .push_slot::(RecipientSummary::VT_AMOUNT, amount, 0); + } + #[inline] + pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>( + RecipientSummary::VT_ADDRESS, + address, + ); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> RecipientSummaryBuilder<'a, 'b> { + let start = _fbb.start_table(); + RecipientSummaryBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for RecipientSummary<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("RecipientSummary"); + ds.field("amount", &self.amount()); + ds.field("address", &self.address()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct RecipientSummaryT { + pub amount: u64, + pub address: Option, + } + impl Default for RecipientSummaryT { + fn default() -> Self { + Self { + amount: 0, + address: None, + } + } + } + impl RecipientSummaryT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let amount = self.amount; + let address = self.address.as_ref().map(|x| _fbb.create_string(x)); + RecipientSummary::create(_fbb, &RecipientSummaryArgs { amount, address }) + } + } + pub enum UnsignedTxSummaryOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct UnsignedTxSummary<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for UnsignedTxSummary<'a> { + type Inner = UnsignedTxSummary<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> UnsignedTxSummary<'a> { + pub const VT_RECIPIENTS: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + UnsignedTxSummary { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args UnsignedTxSummaryArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = UnsignedTxSummaryBuilder::new(_fbb); + if let Some(x) = args.recipients { + builder.add_recipients(x); + } + builder.finish() + } + + pub fn unpack(&self) -> UnsignedTxSummaryT { + let recipients = self + .recipients() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + UnsignedTxSummaryT { recipients } + } + + #[inline] + pub fn recipients( + &self, + ) -> Option>>> + { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(UnsignedTxSummary::VT_RECIPIENTS, None) + } + } + } + + impl flatbuffers::Verifiable for UnsignedTxSummary<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("recipients", Self::VT_RECIPIENTS, false)? + .finish(); + Ok(()) + } + } + pub struct UnsignedTxSummaryArgs<'a> { + pub recipients: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + } + impl<'a> Default for UnsignedTxSummaryArgs<'a> { + #[inline] + fn default() -> Self { + UnsignedTxSummaryArgs { recipients: None } + } + } + + pub struct UnsignedTxSummaryBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> UnsignedTxSummaryBuilder<'a, 'b> { + #[inline] + pub fn add_recipients( + &mut self, + recipients: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_.push_slot_always::>( + UnsignedTxSummary::VT_RECIPIENTS, + recipients, + ); + } + #[inline] + pub fn new( + _fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, + ) -> UnsignedTxSummaryBuilder<'a, 'b> { + let start = _fbb.start_table(); + UnsignedTxSummaryBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for UnsignedTxSummary<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("UnsignedTxSummary"); + ds.field("recipients", &self.recipients()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct UnsignedTxSummaryT { + pub recipients: Option>, + } + impl Default for UnsignedTxSummaryT { + fn default() -> Self { + Self { recipients: None } + } + } + impl UnsignedTxSummaryT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let recipients = self.recipients.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + UnsignedTxSummary::create(_fbb, &UnsignedTxSummaryArgs { recipients }) + } + } + pub enum TxOutputOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct TxOutput<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for TxOutput<'a> { + type Inner = TxOutput<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> TxOutput<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_ADDRESS: flatbuffers::VOffsetT = 6; + pub const VT_AMOUNT: flatbuffers::VOffsetT = 8; + pub const VT_POOL: flatbuffers::VOffsetT = 10; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + TxOutput { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args TxOutputArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = TxOutputBuilder::new(_fbb); + builder.add_amount(args.amount); + if let Some(x) = args.address { + builder.add_address(x); + } + builder.add_id(args.id); + builder.add_pool(args.pool); + builder.finish() + } + + pub fn unpack(&self) -> TxOutputT { + let id = self.id(); + let address = self.address().map(|x| x.to_string()); + let amount = self.amount(); + let pool = self.pool(); + TxOutputT { + id, + address, + amount, + pool, + } + } + + #[inline] + pub fn id(&self) -> u32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(TxOutput::VT_ID, Some(0)).unwrap() } + } + #[inline] + pub fn address(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::>(TxOutput::VT_ADDRESS, None) + } + } + #[inline] + pub fn amount(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(TxOutput::VT_AMOUNT, Some(0)).unwrap() } + } + #[inline] + pub fn pool(&self) -> u8 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(TxOutput::VT_POOL, Some(0)).unwrap() } + } + } + + impl flatbuffers::Verifiable for TxOutput<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>( + "address", + Self::VT_ADDRESS, + false, + )? + .visit_field::("amount", Self::VT_AMOUNT, false)? + .visit_field::("pool", Self::VT_POOL, false)? + .finish(); + Ok(()) + } + } + pub struct TxOutputArgs<'a> { + pub id: u32, + pub address: Option>, + pub amount: u64, + pub pool: u8, + } + impl<'a> Default for TxOutputArgs<'a> { + #[inline] + fn default() -> Self { + TxOutputArgs { + id: 0, + address: None, + amount: 0, + pool: 0, + } + } + } + + pub struct TxOutputBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> TxOutputBuilder<'a, 'b> { + #[inline] + pub fn add_id(&mut self, id: u32) { + self.fbb_.push_slot::(TxOutput::VT_ID, id, 0); + } + #[inline] + pub fn add_address(&mut self, address: flatbuffers::WIPOffset<&'b str>) { + self.fbb_ + .push_slot_always::>(TxOutput::VT_ADDRESS, address); + } + #[inline] + pub fn add_amount(&mut self, amount: u64) { + self.fbb_.push_slot::(TxOutput::VT_AMOUNT, amount, 0); + } + #[inline] + pub fn add_pool(&mut self, pool: u8) { + self.fbb_.push_slot::(TxOutput::VT_POOL, pool, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TxOutputBuilder<'a, 'b> { + let start = _fbb.start_table(); + TxOutputBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for TxOutput<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("TxOutput"); + ds.field("id", &self.id()); + ds.field("address", &self.address()); + ds.field("amount", &self.amount()); + ds.field("pool", &self.pool()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct TxOutputT { + pub id: u32, + pub address: Option, + pub amount: u64, + pub pool: u8, + } + impl Default for TxOutputT { + fn default() -> Self { + Self { + id: 0, + address: None, + amount: 0, + pool: 0, + } + } + } + impl TxOutputT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let id = self.id; + let address = self.address.as_ref().map(|x| _fbb.create_string(x)); + let amount = self.amount; + let pool = self.pool; + TxOutput::create( + _fbb, + &TxOutputArgs { + id, + address, + amount, + pool, + }, + ) + } + } + pub enum TxReportOffset {} + #[derive(Copy, Clone, PartialEq)] + + pub struct TxReport<'a> { + pub _tab: flatbuffers::Table<'a>, + } + + impl<'a> flatbuffers::Follow<'a> for TxReport<'a> { + type Inner = TxReport<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { + _tab: flatbuffers::Table::new(buf, loc), + } + } + } + + impl<'a> TxReport<'a> { + pub const VT_OUTPUTS: flatbuffers::VOffsetT = 4; + pub const VT_TRANSPARENT: flatbuffers::VOffsetT = 6; + pub const VT_SAPLING: flatbuffers::VOffsetT = 8; + pub const VT_ORCHARD: flatbuffers::VOffsetT = 10; + pub const VT_NET_SAPLING: flatbuffers::VOffsetT = 12; + pub const VT_NET_ORCHARD: flatbuffers::VOffsetT = 14; + pub const VT_FEE: flatbuffers::VOffsetT = 16; + pub const VT_PRIVACY_LEVEL: flatbuffers::VOffsetT = 18; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + TxReport { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args TxReportArgs<'args>, + ) -> flatbuffers::WIPOffset> { + let mut builder = TxReportBuilder::new(_fbb); + builder.add_fee(args.fee); + builder.add_net_orchard(args.net_orchard); + builder.add_net_sapling(args.net_sapling); + builder.add_orchard(args.orchard); + builder.add_sapling(args.sapling); + builder.add_transparent(args.transparent); + if let Some(x) = args.outputs { + builder.add_outputs(x); + } + builder.add_privacy_level(args.privacy_level); + builder.finish() + } + + pub fn unpack(&self) -> TxReportT { + let outputs = self + .outputs() + .map(|x| x.iter().map(|t| t.unpack()).collect()); + let transparent = self.transparent(); + let sapling = self.sapling(); + let orchard = self.orchard(); + let net_sapling = self.net_sapling(); + let net_orchard = self.net_orchard(); + let fee = self.fee(); + let privacy_level = self.privacy_level(); + TxReportT { + outputs, + transparent, + sapling, + orchard, + net_sapling, + net_orchard, + fee, + privacy_level, + } + } + + #[inline] + pub fn outputs( + &self, + ) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab.get::>, + >>(TxReport::VT_OUTPUTS, None) + } + } + #[inline] + pub fn transparent(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(TxReport::VT_TRANSPARENT, Some(0)) + .unwrap() + } + } + #[inline] + pub fn sapling(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(TxReport::VT_SAPLING, Some(0)).unwrap() } + } + #[inline] + pub fn orchard(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(TxReport::VT_ORCHARD, Some(0)).unwrap() } + } + #[inline] + pub fn net_sapling(&self) -> i64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(TxReport::VT_NET_SAPLING, Some(0)) + .unwrap() + } + } + #[inline] + pub fn net_orchard(&self) -> i64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(TxReport::VT_NET_ORCHARD, Some(0)) + .unwrap() + } + } + #[inline] + pub fn fee(&self) -> u64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(TxReport::VT_FEE, Some(0)).unwrap() } + } + #[inline] + pub fn privacy_level(&self) -> u8 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { + self._tab + .get::(TxReport::VT_PRIVACY_LEVEL, Some(0)) + .unwrap() + } + } + } + + impl flatbuffers::Verifiable for TxReport<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, + pos: usize, + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>, + >>("outputs", Self::VT_OUTPUTS, false)? + .visit_field::("transparent", Self::VT_TRANSPARENT, false)? + .visit_field::("sapling", Self::VT_SAPLING, false)? + .visit_field::("orchard", Self::VT_ORCHARD, false)? + .visit_field::("net_sapling", Self::VT_NET_SAPLING, false)? + .visit_field::("net_orchard", Self::VT_NET_ORCHARD, false)? + .visit_field::("fee", Self::VT_FEE, false)? + .visit_field::("privacy_level", Self::VT_PRIVACY_LEVEL, false)? + .finish(); + Ok(()) + } + } + pub struct TxReportArgs<'a> { + pub outputs: Option< + flatbuffers::WIPOffset< + flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset>>, + >, + >, + pub transparent: u64, + pub sapling: u64, + pub orchard: u64, + pub net_sapling: i64, + pub net_orchard: i64, + pub fee: u64, + pub privacy_level: u8, + } + impl<'a> Default for TxReportArgs<'a> { + #[inline] + fn default() -> Self { + TxReportArgs { + outputs: None, + transparent: 0, + sapling: 0, + orchard: 0, + net_sapling: 0, + net_orchard: 0, + fee: 0, + privacy_level: 0, + } + } + } + + pub struct TxReportBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, + } + impl<'a: 'b, 'b> TxReportBuilder<'a, 'b> { + #[inline] + pub fn add_outputs( + &mut self, + outputs: flatbuffers::WIPOffset< + flatbuffers::Vector<'b, flatbuffers::ForwardsUOffset>>, + >, + ) { + self.fbb_ + .push_slot_always::>(TxReport::VT_OUTPUTS, outputs); + } + #[inline] + pub fn add_transparent(&mut self, transparent: u64) { + self.fbb_ + .push_slot::(TxReport::VT_TRANSPARENT, transparent, 0); + } + #[inline] + pub fn add_sapling(&mut self, sapling: u64) { + self.fbb_.push_slot::(TxReport::VT_SAPLING, sapling, 0); + } + #[inline] + pub fn add_orchard(&mut self, orchard: u64) { + self.fbb_.push_slot::(TxReport::VT_ORCHARD, orchard, 0); + } + #[inline] + pub fn add_net_sapling(&mut self, net_sapling: i64) { + self.fbb_ + .push_slot::(TxReport::VT_NET_SAPLING, net_sapling, 0); + } + #[inline] + pub fn add_net_orchard(&mut self, net_orchard: i64) { + self.fbb_ + .push_slot::(TxReport::VT_NET_ORCHARD, net_orchard, 0); + } + #[inline] + pub fn add_fee(&mut self, fee: u64) { + self.fbb_.push_slot::(TxReport::VT_FEE, fee, 0); + } + #[inline] + pub fn add_privacy_level(&mut self, privacy_level: u8) { + self.fbb_ + .push_slot::(TxReport::VT_PRIVACY_LEVEL, privacy_level, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TxReportBuilder<'a, 'b> { + let start = _fbb.start_table(); + TxReportBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } + } + + impl core::fmt::Debug for TxReport<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("TxReport"); + ds.field("outputs", &self.outputs()); + ds.field("transparent", &self.transparent()); + ds.field("sapling", &self.sapling()); + ds.field("orchard", &self.orchard()); + ds.field("net_sapling", &self.net_sapling()); + ds.field("net_orchard", &self.net_orchard()); + ds.field("fee", &self.fee()); + ds.field("privacy_level", &self.privacy_level()); + ds.finish() + } + } + #[non_exhaustive] + #[derive(Debug, Clone, PartialEq)] + pub struct TxReportT { + pub outputs: Option>, + pub transparent: u64, + pub sapling: u64, + pub orchard: u64, + pub net_sapling: i64, + pub net_orchard: i64, + pub fee: u64, + pub privacy_level: u8, + } + impl Default for TxReportT { + fn default() -> Self { + Self { + outputs: None, + transparent: 0, + sapling: 0, + orchard: 0, + net_sapling: 0, + net_orchard: 0, + fee: 0, + privacy_level: 0, + } + } + } + impl TxReportT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b>, + ) -> flatbuffers::WIPOffset> { + let outputs = self.outputs.as_ref().map(|x| { + let w: Vec<_> = x.iter().map(|t| t.pack(_fbb)).collect(); + _fbb.create_vector(&w) + }); + let transparent = self.transparent; + let sapling = self.sapling; + let orchard = self.orchard; + let net_sapling = self.net_sapling; + let net_orchard = self.net_orchard; + let fee = self.fee; + let privacy_level = self.privacy_level; + TxReport::create( + _fbb, + &TxReportArgs { + outputs, + transparent, + sapling, + orchard, + net_sapling, + net_orchard, + fee, + privacy_level, + }, + ) + } + } +} // pub mod fb diff --git a/src/ledger/builder.rs b/src/ledger/builder.rs index 252e941..cc24e46 100644 --- a/src/ledger/builder.rs +++ b/src/ledger/builder.rs @@ -2,18 +2,19 @@ use blake2b_simd::Params; use blake2b_simd::State; use byteorder::WriteBytesExt; use byteorder::LE; -use ff::{Field, PrimeField}; -use group::GroupEncoding; +use ff::Field; use hex_literal::hex; -use jubjub::{Fq, Fr}; +use jubjub::Fr; +use orchard::circuit::ProvingKey; +use crate::ledger::builder::orchard_bundle::OrchardBuilder; use crate::ledger::builder::sapling_bundle::SaplingBuilder; use crate::ledger::builder::transparent_bundle::TransparentBuilder; use crate::ledger::transport::*; use crate::{CompactTxStreamerClient, Destination, RawTransaction, Source, TransactionPlan}; use anyhow::{anyhow, Result}; -use rand::{rngs::OsRng, RngCore, SeedableRng}; +use rand::{RngCore, SeedableRng}; use rand_chacha::ChaChaRng; use ripemd::{Digest, Ripemd160}; use secp256k1::PublicKey; @@ -30,24 +31,9 @@ use zcash_primitives::zip32::ExtendedFullViewingKey; use zcash_primitives::{ consensus::{BlockHeight, BranchId, MainNetwork}, - constants::PROOF_GENERATION_KEY_GENERATOR, - merkle_tree::IncrementalWitness, - sapling::{ - note_encryption::sapling_note_encryption, - prover::TxProver, - redjubjub::Signature, - value::{NoteValue, ValueCommitment, ValueSum}, - Diversifier, Node, Note, Nullifier, PaymentAddress, Rseed, - }, - transaction::{ - components::{ - sapling::{Authorized as SapAuthorized, Bundle}, - Amount, OutputDescription, SpendDescription, GROTH_PROOF_SIZE, - }, - Authorized, TransactionData, TxVersion, - }, + transaction::{Authorized, TransactionData, TxVersion}, }; -use zcash_proofs::{prover::LocalTxProver, sapling::SaplingProvingContext}; +use zcash_proofs::prover::LocalTxProver; mod orchard_bundle; mod sapling_bundle; @@ -95,7 +81,8 @@ pub async fn build_broadcast_tx( let mut transparent_builder = TransparentBuilder::new(network, &pubkey); if transparent_builder.taddr != tx_plan.taddr { - anyhow::bail!("This ledger wallet has a different address"); + anyhow::bail!("This ledger wallet has a different address {} != {}", + transparent_builder.taddr, tx_plan.taddr); } // Compute header digest @@ -116,10 +103,20 @@ pub async fn build_broadcast_tx( // let dfvk = extsk.to_diversifiable_full_viewing_key(); let dfvk: zcash_primitives::zip32::DiversifiableFullViewingKey = ledger_get_dfvk().await?; - let proofgen_key: zcash_primitives::sapling::ProofGenerationKey = ledger_get_proofgen_key().await?; + let proofgen_key: zcash_primitives::sapling::ProofGenerationKey = + ledger_get_proofgen_key().await?; let mut sapling_builder = SaplingBuilder::new(prover, dfvk, proofgen_key); + let orchard_fvk: [u8; 96] = hex::decode(&tx_plan.orchard_fvk) + .unwrap() + .try_into() + .unwrap(); + let orchard_fvk = orchard::keys::FullViewingKey::from_bytes(&orchard_fvk).unwrap(); + let anchor = orchard::Anchor::from_bytes(tx_plan.orchard_anchor).unwrap(); + + let mut orchard_builder = OrchardBuilder::new(&orchard_fvk, anchor); + let o_fvk: [u8; 96] = ledger_get_o_fvk().await?.try_into().unwrap(); let _o_fvk = orchard::keys::FullViewingKey::from_bytes(&o_fvk).ok_or(anyhow!("Invalid Orchard FVK"))?; @@ -157,10 +154,14 @@ pub async fn build_broadcast_tx( } => { let alpha = Fr::random(&mut alpha_rng); println!("ALPHA {}", hex::encode(&alpha.to_bytes())); - - sapling_builder.add_spend(alpha, diversifier, rseed, witness, sp.amount).await?; + + sapling_builder + .add_spend(alpha, diversifier, rseed, witness, sp.amount) + .await?; + } + Source::Orchard { diversifier, rseed, rho, ref witness, .. } => { + orchard_builder.add_spend(diversifier, rseed, rho, &witness, sp.amount)?; } - Source::Orchard { .. } => {} } } ledger_set_stage(2).await?; @@ -172,25 +173,40 @@ pub async fn build_broadcast_tx( .await?; } } + transparent_builder.set_merkle_proof().await?; ledger_set_stage(3).await?; for output in tx_plan.outputs.iter() { - if let Destination::Sapling(raw_address) = output.destination { - let mut rseed = [0u8; 32]; - rseed_rng.fill_bytes(&mut rseed); - sapling_builder.add_output(rseed, raw_address, &output.memo, output.amount).await?; + match output.destination { + Destination::Sapling(raw_address) => { + let mut rseed = [0u8; 32]; + rseed_rng.fill_bytes(&mut rseed); + sapling_builder + .add_output(rseed, raw_address, &output.memo, output.amount) + .await?; + } + Destination::Orchard(raw_address) => { + orchard_builder.add_output(raw_address, output.amount, &output.memo)?; + } + _ => {} } } + sapling_builder.set_merkle_proof(tx_plan.net_chg[0]).await?; ledger_set_stage(4).await?; - transparent_builder.set_merkle_proof().await?; + let pk = ProvingKey::build(); + orchard_builder.prepare(tx_plan.net_chg[1], &pk, &mut alpha_rng, &mut rseed_rng).await?; ledger_set_stage(5).await?; + ledger_confirm_fee().await?; transparent_builder.sign().await?; + sapling_builder.sign().await?; + orchard_builder.sign().await?; let transparent_bundle = transparent_builder.build(); - let sapling_bundle = sapling_builder.build(tx_plan.net_chg[0]).await?; + let sapling_bundle = sapling_builder.build().await?; + let orchard_bundle = orchard_builder.build()?; let authed_tx: TransactionData = TransactionData { version: TxVersion::Zip225, @@ -200,7 +216,7 @@ pub async fn build_broadcast_tx( transparent_bundle, sprout_bundle: None, sapling_bundle, - orchard_bundle: None, + orchard_bundle, }; let tx = authed_tx.freeze().unwrap(); @@ -216,7 +232,7 @@ pub async fn build_broadcast_tx( })) .await? .into_inner(); - log::info!("{}", response.error_message); + println!("{}", response.error_message); Ok(response.error_message) } diff --git a/src/ledger/builder/orchard_bundle.rs b/src/ledger/builder/orchard_bundle.rs index 8f1d7df..fb3cb38 100644 --- a/src/ledger/builder/orchard_bundle.rs +++ b/src/ledger/builder/orchard_bundle.rs @@ -20,7 +20,8 @@ use orchard::{ value::{NoteValue, ValueCommitTrapdoor, ValueCommitment, ValueSum}, Action, Address, Anchor, Bundle, Note, Proof, }; -use rand::{RngCore, SeedableRng}; + +use rand::{rngs::OsRng, RngCore, SeedableRng}; use rand_chacha::ChaCha20Rng; use ripemd::Digest; @@ -35,6 +36,7 @@ use hex_literal::hex; use nonempty::NonEmpty; use zcash_primitives::{ consensus::{BlockHeight, BranchId}, + memo::MemoBytes, transaction::{ components::Amount, sighash::SignableInput, sighash_v5, txid::TxIdDigester, Authorized as TxAuthorized, Transaction, TransactionData, TxVersion, Unauthorized, @@ -43,6 +45,8 @@ use zcash_primitives::{ use crate::{Destination, Source}; +use super::create_hasher; + #[derive(Debug)] pub struct NoAuth; @@ -50,6 +54,279 @@ impl Authorization for NoAuth { type SpendAuth = (); } +pub struct OrchardBuilder { + orchard_fvk: FullViewingKey, + anchor: Anchor, + + spends: Vec, + outputs: Vec, + padded_inouts: Vec<(OrchardSpend, OrchardOutput)>, + + actions: Vec>, + auth_actions: Vec>>, + + net_value: ValueSum, + net_rcv: ValueCommitTrapdoor, + proof: Proof, + + sig_hash: Vec +} + +impl OrchardBuilder { + pub fn new(orchard_fvk: &FullViewingKey, anchor: Anchor) -> Self { + OrchardBuilder { + orchard_fvk: orchard_fvk.clone(), + anchor, + + spends: vec![], + outputs: vec![], + padded_inouts: vec![], + + actions: vec![], + auth_actions: vec![], + + proof: Proof::new(vec![]), + net_value: ValueSum::default(), + net_rcv: ValueCommitTrapdoor::zero(), + + sig_hash: vec![], + } + } + + pub fn add_spend( + &mut self, + diversifier: [u8; 11], + rseed: [u8; 32], + rho: [u8; 32], + witness: &[u8], + amount: u64, + ) -> Result<()> { + let diversifier = Diversifier::from_bytes(diversifier); + let address = self.orchard_fvk.address(diversifier, Scope::External); + let rho = Nullifier::from_bytes(&rho).unwrap(); + let rseed = RandomSeed::from_bytes(rseed, &rho).unwrap(); + let note = Note::from_parts(address, NoteValue::from_raw(amount), rho, rseed).unwrap(); + let merkle_path = decode_orchard_merkle_path(0, &witness).unwrap(); + self.spends.push(OrchardSpend { + ask: None, + fvk: self.orchard_fvk.clone(), + note, + merkle_path, + }); + Ok(()) + } + + pub fn add_output(&mut self, address: [u8; 43], amount: u64, memo: &MemoBytes) -> Result<()> { + let address = Address::from_raw_address_bytes(&address).unwrap(); + let output = OrchardOutput { + recipient: address, + amount: NoteValue::from_raw(amount), + memo: memo.as_array().clone(), + }; + self.outputs.push(output); + Ok(()) + } + + pub async fn prepare( + &mut self, + netchg: i64, + pk: &ProvingKey, + mut alpha_rng: R, + mut rseed_rng: R, + ) -> Result<()> { + let mut orchard_memos_hasher = create_hasher(b"ZTxIdOrcActMHash"); + let mut orchard_nc_hasher = create_hasher(b"ZTxIdOrcActNHash"); + + let num_actions = self.spends.len().max(self.outputs.len()); + let mut circuits = vec![]; + let mut instances = vec![]; + + for i in 0..num_actions { + // pad with dummy spends/outputs + let spend = if i < self.spends.len() { + self.spends[i].clone() + } else { + OrchardSpend::dummy(&mut OsRng) + }; + + let output = if i < self.outputs.len() { + self.outputs[i].clone() + } else { + OrchardOutput::dummy(&mut OsRng) + }; + self.padded_inouts.push((spend.clone(), output.clone())); + + let rcv = ValueCommitTrapdoor::random(&mut OsRng); + self.net_rcv = self.net_rcv.clone() + &rcv; + let alpha = pasta_curves::Fq::random(&mut alpha_rng); + let ak: SpendValidatingKey = spend.fvk.clone().into(); + let rk = ak.randomize(&alpha); + + let rho = spend.note.nullifier(&spend.fvk); + let mut rseed = [0u8; 32]; + rseed_rng.fill_bytes(&mut rseed); + let rseed = RandomSeed::from_bytes(rseed, &rho).unwrap(); + + let v_net: ValueSum = spend.note.value() - output.amount; + self.net_value = (self.net_value + v_net).unwrap(); + let cv_net = ValueCommitment::derive(v_net, rcv.clone()); + + let spend_info = SpendInfo::new( + spend.fvk.clone(), + spend.note.clone(), + spend.merkle_path.clone(), + ) + .unwrap(); + let output_note = Note::from_parts( + output.recipient.clone(), + output.amount.clone(), + rho.clone(), + rseed, + ) + .unwrap(); + let cmx: ExtractedNoteCommitment = output_note.commitment().into(); + + let encryptor = OrchardNoteEncryption::new( + Some(self.orchard_fvk.to_ovk(Scope::External)), + output_note.clone(), + output.recipient.clone(), + output.memo.clone(), + ); + + let epk = encryptor.epk().to_bytes().0; + let enc = encryptor.encrypt_note_plaintext(); + let out = encryptor.encrypt_outgoing_plaintext(&cv_net.clone(), &cmx, &mut OsRng); + let encrypted_note = TransmittedNoteCiphertext { + epk_bytes: epk.clone(), + enc_ciphertext: enc.clone(), + out_ciphertext: out.clone(), + }; + + let rk_bytes: [u8; 32] = rk.clone().0.into(); + orchard_memos_hasher.update(&enc[52..564]); + orchard_nc_hasher.update(&cv_net.to_bytes()); + orchard_nc_hasher.update(&rk_bytes); + orchard_nc_hasher.update(&enc[564..]); + orchard_nc_hasher.update(&out); + + println!( + "d/pkd {}", + hex::encode(&output.recipient.to_raw_address_bytes()) + ); + println!("rho {}", hex::encode(&rho.to_bytes())); + println!( + "amount {}", + hex::encode(&output.amount.inner().to_le_bytes()) + ); + println!("rseed {}", hex::encode(&rseed.as_bytes())); + println!("cmx {}", hex::encode(&cmx.to_bytes())); + + let action: Action = Action::from_parts( + rho.clone(), + rk.clone(), + cmx.clone(), + encrypted_note, + cv_net.clone(), + SigningMetadata { + dummy_ask: None, + parts: SigningParts { ak, alpha }, + }, + ); + self.actions.push(action); + + let circuit = + Circuit::from_action_context(spend_info, output_note, alpha, rcv.clone()).unwrap(); + circuits.push(circuit); + let instance = Instance::from_parts(self.anchor, cv_net, rho.clone(), rk, cmx, true, true); + instances.push(instance); + } + + self.proof = Proof::create(&pk, &circuits, &instances, &mut OsRng).unwrap(); + + for (a, (_, ref o)) in self.actions.iter().zip(self.padded_inouts.iter()) { + let nf = a.nullifier().to_bytes(); + let epk = a.encrypted_note().epk_bytes; + ledger_add_o_action( + &nf, + o.amount.inner(), + &epk, + &o.recipient.to_raw_address_bytes(), + &a.encrypted_note().enc_ciphertext[0..52], + ) + .await + .unwrap(); + } + + ledger_set_orchard_merkle_proof( + &self.anchor.to_bytes(), + orchard_memos_hasher.finalize().as_bytes(), + orchard_nc_hasher.finalize().as_bytes(), + ) + .await + .unwrap(); + + ledger_set_net_orchard(-netchg).await?; + + Ok(()) + } + + + pub async fn sign(&mut self) -> Result<()> { + self.sig_hash = ledger_get_sighash().await?; + + for (a, (ref s, _)) in self.actions.iter().zip(self.padded_inouts.iter()) { + println!("alpha {:?}", a.authorization().parts.alpha); + + let signature = + match s.ask { + Some(ref ask) => { // dummy spend (we have a dummy key) + println!("DUMMY SPEND"); + let rsk = ask.randomize(&a.authorization().parts.alpha); + rsk.sign(&mut OsRng, &self.sig_hash) + } + None => { + let sig_bytes: [u8; 64] = ledger_sign_orchard().await.unwrap().try_into().unwrap(); + let signature: Signature = sig_bytes.into(); + signature + } + }; + + let auth_action = Action::from_parts( + a.nullifier().clone(), + a.rk().clone(), + a.cmx().clone(), + a.encrypted_note().clone(), + a.cv_net().clone(), + signature, + ); + self.auth_actions.push(auth_action); + } + Ok(()) + } + + pub fn build(self) -> Result>> { + if self.auth_actions.is_empty() { return Ok(None); } + let auth_actions = NonEmpty::from_slice(&self.auth_actions).unwrap(); + + let nv = i64::try_from(self.net_value).unwrap(); + let amount = Amount::from_i64(nv).unwrap(); + let bsk = self.net_rcv.into_bsk(); + + let flags = Flags::from_parts(true, true); + let binding_signature = bsk.sign(&mut OsRng, &self.sig_hash); + + let bundle: Bundle = Bundle::from_parts( + auth_actions, + flags, + amount, + self.anchor.clone(), + Authorized::from_parts(self.proof, binding_signature), + ); + + Ok(Some(bundle)) + } +} + pub async fn build_orchard() -> Result<()> { dotenv::dotenv()?; let mut prng = ChaCha20Rng::from_seed([0; 32]); @@ -102,6 +379,7 @@ pub async fn build_orchard() -> Result<()> { Note::from_parts(address, NoteValue::from_raw(s.amount), rho, rseed).unwrap(); let merkle_path = decode_orchard_merkle_path(0, &witness).unwrap(); Some(OrchardSpend { + ask: None, fvk: orchard_fvk.clone(), note, merkle_path, @@ -143,9 +421,8 @@ pub async fn build_orchard() -> Result<()> { let mut actions = vec![]; let mut circuits = vec![]; let mut instances = vec![]; - let mut net_value = ValueSum::default(); let mut sum_rcv = ValueCommitTrapdoor::zero(); - + let mut net_value = ValueSum::default(); let mut padded_outputs = vec![]; for i in 0..num_actions { // pad with dummy spends/outputs @@ -165,7 +442,7 @@ pub async fn build_orchard() -> Result<()> { let rcv = ValueCommitTrapdoor::random(&mut prng); sum_rcv = sum_rcv + &rcv; let alpha = pasta_curves::Fq::random(&mut alpha_rng); - let ak: SpendValidatingKey = orchard_fvk.clone().into(); + let ak: SpendValidatingKey = spend.fvk.clone().into(); let rk = ak.randomize(&alpha); let rho = spend.note.nullifier(&orchard_fvk); @@ -380,6 +657,7 @@ pub async fn build_orchard() -> Result<()> { #[derive(Clone, Debug)] struct OrchardSpend { + ask: Option, fvk: FullViewingKey, note: Note, merkle_path: MerklePath, @@ -387,9 +665,11 @@ struct OrchardSpend { impl OrchardSpend { pub fn dummy(rng: &mut R) -> Self { - let (_, fvk, dummy_note) = Note::dummy(rng, None); + let (sk, fvk, dummy_note) = Note::dummy(rng, None); + let ask = SpendAuthorizingKey::from(&sk); let dummy_path = MerklePath::dummy(rng); OrchardSpend { + ask: Some(ask), fvk, note: dummy_note, merkle_path: dummy_path, diff --git a/src/ledger/builder/sapling_bundle.rs b/src/ledger/builder/sapling_bundle.rs index 18b1516..6e47cc5 100644 --- a/src/ledger/builder/sapling_bundle.rs +++ b/src/ledger/builder/sapling_bundle.rs @@ -1,38 +1,22 @@ -use blake2b_simd::Params; use blake2b_simd::State; -use byteorder::WriteBytesExt; -use byteorder::LE; -use ff::{Field, PrimeField}; + +use ff::PrimeField; use group::GroupEncoding; -use hex_literal::hex; + use jubjub::{Fq, Fr}; use zcash_primitives::memo::MemoBytes; use zcash_primitives::sapling::ProofGenerationKey; use zcash_primitives::zip32::DiversifiableFullViewingKey; -use crate::ledger::builder::transparent_bundle::TransparentBuilder; use crate::ledger::transport::*; -use crate::{CompactTxStreamerClient, Destination, RawTransaction, Source, TransactionPlan}; use anyhow::{anyhow, Result}; -use rand::{rngs::OsRng, RngCore, SeedableRng}; -use rand_chacha::ChaChaRng; -use ripemd::{Digest, Ripemd160}; -use secp256k1::PublicKey; -use sha2::Sha256; -use tonic::{transport::Channel, Request}; -use zcash_client_backend::encoding::{ - encode_extended_full_viewing_key, encode_transparent_address, -}; -use zcash_primitives::consensus::Network; -use zcash_primitives::consensus::Parameters; -use zcash_primitives::legacy::TransparentAddress; +use rand::rngs::OsRng; -use zcash_primitives::zip32::ExtendedFullViewingKey; +use ripemd::Digest; use zcash_primitives::{ - consensus::{BlockHeight, BranchId, MainNetwork}, - constants::PROOF_GENERATION_KEY_GENERATOR, + consensus::MainNetwork, merkle_tree::IncrementalWitness, sapling::{ note_encryption::sapling_note_encryption, @@ -41,12 +25,9 @@ use zcash_primitives::{ value::{NoteValue, ValueCommitment, ValueSum}, Diversifier, Node, Note, Nullifier, PaymentAddress, Rseed, }, - transaction::{ - components::{ - sapling::{Authorized as SapAuthorized, Bundle}, - Amount, OutputDescription, SpendDescription, GROTH_PROOF_SIZE, - }, - Authorized, TransactionData, TxVersion, + transaction::components::{ + sapling::{Authorized as SapAuthorized, Bundle}, + Amount, OutputDescription, SpendDescription, GROTH_PROOF_SIZE, }, }; use zcash_proofs::{prover::LocalTxProver, sapling::SaplingProvingContext}; @@ -81,15 +62,19 @@ pub struct SaplingBuilder<'a> { signatures: Vec, } -impl <'a> SaplingBuilder<'a> { - pub fn new(prover: &'a LocalTxProver, dfvk: DiversifiableFullViewingKey, proofgen_key: ProofGenerationKey) -> Self { +impl<'a> SaplingBuilder<'a> { + pub fn new( + prover: &'a LocalTxProver, + dfvk: DiversifiableFullViewingKey, + proofgen_key: ProofGenerationKey, + ) -> Self { let spends_compact_hasher = create_hasher(b"ZTxIdSSpendCHash"); let spends_non_compact_hasher = create_hasher(b"ZTxIdSSpendNHash"); let output_memos_hasher = create_hasher(b"ZTxIdSOutM__Hash"); let output_non_compact_hasher = create_hasher(b"ZTxIdSOutN__Hash"); - SaplingBuilder { + SaplingBuilder { prover, dfvk, proofgen_key, @@ -109,9 +94,18 @@ impl <'a> SaplingBuilder<'a> { } } - pub async fn add_spend(&mut self, alpha: Fr, diversifier: [u8; 11], rseed: [u8; 32], witness: &[u8], amount: u64) -> Result<()> { + pub async fn add_spend( + &mut self, + alpha: Fr, + diversifier: [u8; 11], + rseed: [u8; 32], + witness: &[u8], + amount: u64, + ) -> Result<()> { let diversifier = Diversifier(diversifier); - let z_address = self.dfvk.fvk + let z_address = self + .dfvk + .fvk .vk .to_payment_address(diversifier) .ok_or(anyhow!("Invalid diversifier"))?; @@ -126,7 +120,8 @@ impl <'a> SaplingBuilder<'a> { let nf_key = self.proofgen_key.to_viewing_key().nk; let nullifier = note.nf(&nf_key, merkle_path.position); - let (zkproof, cv, rk) = self.prover + let (zkproof, cv, rk) = self + .prover .spend_proof( &mut self.sapling_context, self.proofgen_key.clone(), @@ -139,7 +134,8 @@ impl <'a> SaplingBuilder<'a> { OsRng, ) .map_err(|_| anyhow!("Error generating spend"))?; - self.value_balance = (self.value_balance + note.value()).ok_or(anyhow!("Invalid amount"))?; + self.value_balance = + (self.value_balance + note.value()).ok_or(anyhow!("Invalid amount"))?; self.spends_compact_hasher.update(nullifier.as_ref()); self.spends_non_compact_hasher.update(&cv.to_bytes()); @@ -156,7 +152,13 @@ impl <'a> SaplingBuilder<'a> { Ok(()) } - pub async fn add_output(&mut self, rseed: [u8; 32], raw_address: [u8; 43], memo: &MemoBytes, amount: u64) -> Result<()> { + pub async fn add_output( + &mut self, + rseed: [u8; 32], + raw_address: [u8; 43], + memo: &MemoBytes, + amount: u64, + ) -> Result<()> { let recipient = PaymentAddress::from_bytes(&raw_address).unwrap(); let rseed = Rseed::AfterZip212(rseed); @@ -201,8 +203,10 @@ impl <'a> SaplingBuilder<'a> { let memo = &enc_ciphertext[52..564]; self.output_memos_hasher.update(memo); - self.output_non_compact_hasher.update(&cv.as_inner().to_bytes()); - self.output_non_compact_hasher.update(&enc_ciphertext[564..]); + self.output_non_compact_hasher + .update(&cv.as_inner().to_bytes()); + self.output_non_compact_hasher + .update(&enc_ciphertext[564..]); self.output_non_compact_hasher.update(&out_ciphertext); let ephemeral_key = epk.to_bytes(); @@ -217,6 +221,36 @@ impl <'a> SaplingBuilder<'a> { Ok(()) } + pub async fn set_merkle_proof(&mut self, net_chg: i64) -> Result<()> { + let spends_compact_digest = self.spends_compact_hasher.finalize(); + log::info!("C SPENDS {}", hex::encode(spends_compact_digest)); + let spends_non_compact_digest = self.spends_non_compact_hasher.finalize(); + log::info!("NC SPENDS {}", hex::encode(spends_non_compact_digest)); + + let mut spends_hasher = create_hasher(b"ZTxIdSSpendsHash"); + if !self.shielded_spends.is_empty() { + spends_hasher.update(spends_compact_digest.as_bytes()); + spends_hasher.update(spends_non_compact_digest.as_bytes()); + } + let spends_digest = spends_hasher.finalize(); + log::info!("SPENDS {}", hex::encode(spends_digest)); + + let memos_digest = self.output_memos_hasher.finalize(); + log::info!("MEMOS {}", hex::encode(memos_digest)); + let outputs_nc_digest = self.output_non_compact_hasher.finalize(); + log::info!("NC OUTPUTS {}", hex::encode(outputs_nc_digest)); + + ledger_set_sapling_merkle_proof( + spends_digest.as_bytes(), + memos_digest.as_bytes(), + outputs_nc_digest.as_bytes(), + ) + .await?; + ledger_set_net_sapling(-net_chg).await?; + + Ok(()) + } + pub async fn sign(&mut self) -> Result<()> { for _sp in self.shielded_spends.iter() { let signature = ledger_sign_sapling().await?; @@ -234,29 +268,14 @@ impl <'a> SaplingBuilder<'a> { Ok(()) } - pub async fn build(self, net_chg: i64) -> Result>> { - let spends_compact_digest = self.spends_compact_hasher.finalize(); - log::info!("C SPENDS {}", hex::encode(spends_compact_digest)); - let spends_non_compact_digest = self.spends_non_compact_hasher.finalize(); - log::info!("NC SPENDS {}", hex::encode(spends_non_compact_digest)); - - let mut spends_hasher = create_hasher(b"ZTxIdSSpendsHash"); - if !self.shielded_spends.is_empty() { - spends_hasher.update(spends_compact_digest.as_bytes()); - spends_hasher.update(spends_non_compact_digest.as_bytes()); - } - let spends_digest = spends_hasher.finalize(); - log::info!("SPENDS {}", hex::encode(spends_digest)); - - let memos_digest = self.output_memos_hasher.finalize(); - log::info!("MEMOS {}", hex::encode(memos_digest)); - let outputs_nc_digest = self.output_non_compact_hasher.finalize(); - log::info!("NC OUTPUTS {}", hex::encode(outputs_nc_digest)); - + pub async fn build(self) -> Result>> { let has_sapling = !self.shielded_spends.is_empty() || !self.shielded_outputs.is_empty(); - if !has_sapling { return Ok(None); } + if !has_sapling { + return Ok(None); + } - let shielded_spends: Vec<_> = self.shielded_spends + let shielded_spends: Vec<_> = self + .shielded_spends .into_iter() .zip(self.signatures.into_iter()) .map(|(sp, spend_auth_sig)| SpendDescription:: { @@ -274,18 +293,11 @@ impl <'a> SaplingBuilder<'a> { let sighash = ledger_get_sighash().await?; log::info!("TXID {}", hex::encode(&sighash)); - let binding_sig = self.sapling_context + let binding_sig = self + .sapling_context .binding_sig(value, &sighash.try_into().unwrap()) .unwrap(); - ledger_set_sapling_merkle_proof( - spends_digest.as_bytes(), - memos_digest.as_bytes(), - outputs_nc_digest.as_bytes(), - ) - .await?; - - ledger_set_net_sapling(-net_chg).await?; let sapling_bundle = Bundle::<_>::from_parts( shielded_spends, self.shielded_outputs, @@ -295,5 +307,4 @@ impl <'a> SaplingBuilder<'a> { Ok(Some(sapling_bundle)) } - -} \ No newline at end of file +} diff --git a/src/ledger/transport.rs b/src/ledger/transport.rs index e85fe8b..730ec85 100644 --- a/src/ledger/transport.rs +++ b/src/ledger/transport.rs @@ -155,7 +155,7 @@ pub async fn ledger_set_orchard_merkle_proof( pub async fn ledger_add_t_input(amount: u64) -> Result<()> { let mut bb: Vec = vec![]; - bb.write_all(&hex!("E015000008"))?; + bb.write_all(&hex!("E015010008"))?; bb.write_u64::(amount)?; apdu(&bb).await?; Ok(()) @@ -222,7 +222,7 @@ pub async fn ledger_set_net_orchard(net: i64) -> Result<()> { pub async fn ledger_confirm_fee() -> Result<()> { let mut bb: Vec = vec![]; - bb.write_all(&hex!("E01B000000"))?; + bb.write_all(&hex!("E01B010000"))?; apdu(&bb).await?; Ok(()) } diff --git a/src/main/wallet.rs b/src/main/wallet.rs index 0065319..c547813 100644 --- a/src/main/wallet.rs +++ b/src/main/wallet.rs @@ -15,7 +15,7 @@ fn main() -> Result<()> { let mut started = false; let mut key = String::new(); let mut next_line_is_key = true; - for (i, line) in reader.lines().enumerate() { + for (_i, line) in reader.lines().enumerate() { let ln = line?.trim_start().to_string(); if ln == "HEADER=END" { started = true;