carbon-zeta-decoder 2.0.0

Zeta Program Decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
use {
    crate::types::graphql::{
        AnchorDecimalGraphQL, MarginParametersGraphQL, PerpParametersGraphQL, ProductGraphQL,
    },
    carbon_core::graphql::primitives::{Pubkey, I64, U64, U8},
    juniper::GraphQLObject,
};

#[derive(Debug, Clone, GraphQLObject)]
#[graphql(name = "Pricing")]
pub struct PricingGraphQL {
    pub account_metadata: crate::accounts::graphql::AccountMetadataGraphQL,
    pub nonce: U8,
    pub mark_prices: Vec<U64>,
    pub mark_prices_padding: Vec<U64>,
    pub update_timestamps: Vec<U64>,
    pub update_timestamps_padding: Vec<U64>,
    pub funding_deltas: Vec<AnchorDecimalGraphQL>,
    pub funding_deltas_padding: Vec<AnchorDecimalGraphQL>,
    pub latest_funding_rates: Vec<AnchorDecimalGraphQL>,
    pub latest_funding_rates_padding: Vec<AnchorDecimalGraphQL>,
    pub latest_midpoints: Vec<U64>,
    pub latest_midpoints_padding: Vec<U64>,
    pub oracles: Vec<Pubkey>,
    pub oracles_padding: Vec<Pubkey>,
    pub oracle_backup_feeds: Vec<Pubkey>,
    pub oracle_backup_feeds_padding: Vec<Pubkey>,
    pub markets: Vec<Pubkey>,
    pub markets_padding: Vec<Pubkey>,
    pub perp_sync_queues: Vec<Pubkey>,
    pub perp_sync_queues_padding: Vec<Pubkey>,
    pub perp_parameters: Vec<PerpParametersGraphQL>,
    pub perp_parameters_padding: Vec<PerpParametersGraphQL>,
    pub margin_parameters: Vec<MarginParametersGraphQL>,
    pub margin_parameters_padding: Vec<MarginParametersGraphQL>,
    pub products: Vec<ProductGraphQL>,
    pub products_padding: Vec<ProductGraphQL>,
    pub zeta_group_keys: Vec<Pubkey>,
    pub zeta_group_keys_padding: Vec<Pubkey>,
    pub total_insurance_vault_deposits: U64,
    pub last_withdraw_timestamp: U64,
    pub net_outflow_sum: I64,
    pub halt_force_pricing: Vec<bool>,
    pub halt_force_pricing_padding: Vec<bool>,
    pub padding: Vec<U8>,
}

impl TryFrom<crate::accounts::postgres::PricingRow> for PricingGraphQL {
    type Error = carbon_core::error::Error;
    fn try_from(row: crate::accounts::postgres::PricingRow) -> Result<Self, Self::Error> {
        Ok(Self {
            account_metadata: row.account_metadata.into(),
            nonce: carbon_core::graphql::primitives::U8((*row.nonce) as u8),
            mark_prices: row
                .mark_prices
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            mark_prices_padding: row
                .mark_prices_padding
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            update_timestamps: row
                .update_timestamps
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            update_timestamps_padding: row
                .update_timestamps_padding
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            funding_deltas: row
                .funding_deltas
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            funding_deltas_padding: row
                .funding_deltas_padding
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            latest_funding_rates: row
                .latest_funding_rates
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            latest_funding_rates_padding: row
                .latest_funding_rates_padding
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            latest_midpoints: row
                .latest_midpoints
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            latest_midpoints_padding: row
                .latest_midpoints_padding
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            oracles: row
                .oracles
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::Pubkey(item.0))
                .collect(),
            oracles_padding: row
                .oracles_padding
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::Pubkey(item.0))
                .collect(),
            oracle_backup_feeds: row
                .oracle_backup_feeds
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::Pubkey(item.0))
                .collect(),
            oracle_backup_feeds_padding: row
                .oracle_backup_feeds_padding
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::Pubkey(item.0))
                .collect(),
            markets: row
                .markets
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::Pubkey(item.0))
                .collect(),
            markets_padding: row
                .markets_padding
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::Pubkey(item.0))
                .collect(),
            perp_sync_queues: row
                .perp_sync_queues
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::Pubkey(item.0))
                .collect(),
            perp_sync_queues_padding: row
                .perp_sync_queues_padding
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::Pubkey(item.0))
                .collect(),
            perp_parameters: row
                .perp_parameters
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            perp_parameters_padding: row
                .perp_parameters_padding
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            margin_parameters: row
                .margin_parameters
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            margin_parameters_padding: row
                .margin_parameters_padding
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            products: row.products.0.into_iter().map(|item| item.into()).collect(),
            products_padding: row
                .products_padding
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            zeta_group_keys: row
                .zeta_group_keys
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::Pubkey(item.0))
                .collect(),
            zeta_group_keys_padding: row
                .zeta_group_keys_padding
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::Pubkey(item.0))
                .collect(),
            total_insurance_vault_deposits: carbon_core::graphql::primitives::U64(
                *row.total_insurance_vault_deposits,
            ),
            last_withdraw_timestamp: carbon_core::graphql::primitives::U64(
                *row.last_withdraw_timestamp,
            ),
            net_outflow_sum: carbon_core::graphql::primitives::I64(row.net_outflow_sum),
            halt_force_pricing: row.halt_force_pricing.to_vec(),
            halt_force_pricing_padding: row.halt_force_pricing_padding.to_vec(),
            padding: row
                .padding
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
        })
    }
}