carbon-marginfi-v2-decoder 1.0.0

MarginfiV2 Decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
use {
    crate::types::graphql::{
        BankCacheGraphQL, BankConfigGraphQL, BankRateLimiterGraphQL, EmodeSettingsGraphQL,
        WrappedI80F48GraphQL,
    },
    carbon_core::graphql::primitives::{Pubkey, I64, U64, U8},
    juniper::GraphQLObject,
};

#[derive(Debug, Clone, GraphQLObject)]
#[graphql(name = "Bank")]
pub struct BankGraphQL {
    pub account_metadata: crate::accounts::graphql::AccountMetadataGraphQL,
    pub mint: Pubkey,
    pub mint_decimals: U8,
    pub group: Pubkey,
    pub pad0: Vec<U8>,
    pub asset_share_value: WrappedI80F48GraphQL,
    pub liability_share_value: WrappedI80F48GraphQL,
    pub liquidity_vault: Pubkey,
    pub liquidity_vault_bump: U8,
    pub liquidity_vault_authority_bump: U8,
    pub insurance_vault: Pubkey,
    pub insurance_vault_bump: U8,
    pub insurance_vault_authority_bump: U8,
    pub pad1: Vec<U8>,
    pub collected_insurance_fees_outstanding: WrappedI80F48GraphQL,
    pub fee_vault: Pubkey,
    pub fee_vault_bump: U8,
    pub fee_vault_authority_bump: U8,
    pub pad2: Vec<U8>,
    pub collected_group_fees_outstanding: WrappedI80F48GraphQL,
    pub total_liability_shares: WrappedI80F48GraphQL,
    pub total_asset_shares: WrappedI80F48GraphQL,
    pub last_update: I64,
    pub config: BankConfigGraphQL,
    pub flags: U64,
    pub emissions_rate: U64,
    pub emissions_remaining: WrappedI80F48GraphQL,
    pub emissions_mint: Pubkey,
    pub collected_program_fees_outstanding: WrappedI80F48GraphQL,
    pub emode: EmodeSettingsGraphQL,
    pub fees_destination_account: Pubkey,
    pub cache: BankCacheGraphQL,
    pub lending_position_count: i32,
    pub borrowing_position_count: i32,
    pub padding0: Vec<U8>,
    pub integration_acc1: Pubkey,
    pub integration_acc2: Pubkey,
    pub integration_acc3: Pubkey,
    pub rate_limiter: BankRateLimiterGraphQL,
    pub pad0_1: Vec<U8>,
    pub padding1: Vec<Vec<U64>>,
}

impl TryFrom<crate::accounts::postgres::BankRow> for BankGraphQL {
    type Error = carbon_core::error::Error;
    fn try_from(row: crate::accounts::postgres::BankRow) -> Result<Self, Self::Error> {
        Ok(Self {
            account_metadata: row.account_metadata.into(),
            mint: carbon_core::graphql::primitives::Pubkey(row.mint.0),
            mint_decimals: carbon_core::graphql::primitives::U8((*row.mint_decimals) as u8),
            group: carbon_core::graphql::primitives::Pubkey(row.group.0),
            pad0: row
                .pad0
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
            asset_share_value: row.asset_share_value.0.into(),
            liability_share_value: row.liability_share_value.0.into(),
            liquidity_vault: carbon_core::graphql::primitives::Pubkey(row.liquidity_vault.0),
            liquidity_vault_bump: carbon_core::graphql::primitives::U8(
                (*row.liquidity_vault_bump) as u8,
            ),
            liquidity_vault_authority_bump: carbon_core::graphql::primitives::U8(
                (*row.liquidity_vault_authority_bump) as u8,
            ),
            insurance_vault: carbon_core::graphql::primitives::Pubkey(row.insurance_vault.0),
            insurance_vault_bump: carbon_core::graphql::primitives::U8(
                (*row.insurance_vault_bump) as u8,
            ),
            insurance_vault_authority_bump: carbon_core::graphql::primitives::U8(
                (*row.insurance_vault_authority_bump) as u8,
            ),
            pad1: row
                .pad1
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
            collected_insurance_fees_outstanding: row.collected_insurance_fees_outstanding.0.into(),
            fee_vault: carbon_core::graphql::primitives::Pubkey(row.fee_vault.0),
            fee_vault_bump: carbon_core::graphql::primitives::U8((*row.fee_vault_bump) as u8),
            fee_vault_authority_bump: carbon_core::graphql::primitives::U8(
                (*row.fee_vault_authority_bump) as u8,
            ),
            pad2: row
                .pad2
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
            collected_group_fees_outstanding: row.collected_group_fees_outstanding.0.into(),
            total_liability_shares: row.total_liability_shares.0.into(),
            total_asset_shares: row.total_asset_shares.0.into(),
            last_update: carbon_core::graphql::primitives::I64(row.last_update),
            config: row.config.0.into(),
            flags: carbon_core::graphql::primitives::U64(*row.flags),
            emissions_rate: carbon_core::graphql::primitives::U64(*row.emissions_rate),
            emissions_remaining: row.emissions_remaining.0.into(),
            emissions_mint: carbon_core::graphql::primitives::Pubkey(row.emissions_mint.0),
            collected_program_fees_outstanding: row.collected_program_fees_outstanding.0.into(),
            emode: row.emode.0.into(),
            fees_destination_account: carbon_core::graphql::primitives::Pubkey(
                row.fees_destination_account.0,
            ),
            cache: row.cache.0.into(),
            lending_position_count: row.lending_position_count,
            borrowing_position_count: row.borrowing_position_count,
            padding0: row
                .padding0
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
            integration_acc1: carbon_core::graphql::primitives::Pubkey(row.integration_acc1.0),
            integration_acc2: carbon_core::graphql::primitives::Pubkey(row.integration_acc2.0),
            integration_acc3: carbon_core::graphql::primitives::Pubkey(row.integration_acc3.0),
            rate_limiter: row.rate_limiter.0.into(),
            pad0_1: row
                .pad0_1
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
            padding1: row
                .padding1
                .0
                .into_iter()
                .map(|item| {
                    item.into_iter()
                        .map(|item| carbon_core::graphql::primitives::U64(*item))
                        .collect()
                })
                .collect(),
        })
    }
}