carbon-zeta-decoder 2.0.0

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

#[derive(Debug, Clone, GraphQLObject)]
#[graphql(name = "State")]
pub struct StateGraphQL {
    pub account_metadata: crate::accounts::graphql::AccountMetadataGraphQL,
    pub admin: Pubkey,
    pub state_nonce: U8,
    pub serum_nonce: U8,
    pub mint_auth_nonce: U8,
    pub num_underlyings: U8,
    pub num_flex_underlyings: U8,
    pub null: Vec<U8>,
    pub strike_initialization_threshold_seconds: U32,
    pub pricing_frequency_seconds: U32,
    pub liquidator_liquidation_percentage: U32,
    pub insurance_vault_liquidation_percentage: U32,
    pub native_d1_trade_fee_percentage: U64,
    pub native_d1_underlying_fee_percentage: U64,
    pub native_whitelist_underlying_fee_percentage: U64,
    pub native_deposit_limit: U64,
    pub expiration_threshold_seconds: U32,
    pub position_movement_fee_bps: U8,
    pub margin_concession_percentage: U8,
    pub treasury_wallet_nonce: U8,
    pub native_option_trade_fee_percentage: U64,
    pub native_option_underlying_fee_percentage: U64,
    pub referrals_admin: Pubkey,
    pub referrals_rewards_wallet_nonce: U8,
    pub max_perp_delta_age: i32,
    pub secondary_admin: Pubkey,
    pub vault_nonce: U8,
    pub insurance_vault_nonce: U8,
    pub deprecated_total_insurance_vault_deposits: U64,
    pub native_withdraw_limit: U64,
    pub withdraw_limit_epoch_seconds: U32,
    pub native_open_interest_limit: U64,
    pub halt_states: Vec<HaltStateV2GraphQL>,
    pub halt_states_padding: Vec<HaltStateV2GraphQL>,
    pub padding: Vec<U8>,
}

impl TryFrom<crate::accounts::postgres::StateRow> for StateGraphQL {
    type Error = carbon_core::error::Error;
    fn try_from(row: crate::accounts::postgres::StateRow) -> Result<Self, Self::Error> {
        Ok(Self {
            account_metadata: row.account_metadata.into(),
            admin: carbon_core::graphql::primitives::Pubkey(row.admin.0),
            state_nonce: carbon_core::graphql::primitives::U8((*row.state_nonce) as u8),
            serum_nonce: carbon_core::graphql::primitives::U8((*row.serum_nonce) as u8),
            mint_auth_nonce: carbon_core::graphql::primitives::U8((*row.mint_auth_nonce) as u8),
            num_underlyings: carbon_core::graphql::primitives::U8((*row.num_underlyings) as u8),
            num_flex_underlyings: carbon_core::graphql::primitives::U8(
                (*row.num_flex_underlyings) as u8,
            ),
            null: row
                .null
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
            strike_initialization_threshold_seconds: carbon_core::graphql::primitives::U32(
                (*row.strike_initialization_threshold_seconds) as u32,
            ),
            pricing_frequency_seconds: carbon_core::graphql::primitives::U32(
                (*row.pricing_frequency_seconds) as u32,
            ),
            liquidator_liquidation_percentage: carbon_core::graphql::primitives::U32(
                (*row.liquidator_liquidation_percentage) as u32,
            ),
            insurance_vault_liquidation_percentage: carbon_core::graphql::primitives::U32(
                (*row.insurance_vault_liquidation_percentage) as u32,
            ),
            native_d1_trade_fee_percentage: carbon_core::graphql::primitives::U64(
                *row.native_d1_trade_fee_percentage,
            ),
            native_d1_underlying_fee_percentage: carbon_core::graphql::primitives::U64(
                *row.native_d1_underlying_fee_percentage,
            ),
            native_whitelist_underlying_fee_percentage: carbon_core::graphql::primitives::U64(
                *row.native_whitelist_underlying_fee_percentage,
            ),
            native_deposit_limit: carbon_core::graphql::primitives::U64(*row.native_deposit_limit),
            expiration_threshold_seconds: carbon_core::graphql::primitives::U32(
                (*row.expiration_threshold_seconds) as u32,
            ),
            position_movement_fee_bps: carbon_core::graphql::primitives::U8(
                (*row.position_movement_fee_bps) as u8,
            ),
            margin_concession_percentage: carbon_core::graphql::primitives::U8(
                (*row.margin_concession_percentage) as u8,
            ),
            treasury_wallet_nonce: carbon_core::graphql::primitives::U8(
                (*row.treasury_wallet_nonce) as u8,
            ),
            native_option_trade_fee_percentage: carbon_core::graphql::primitives::U64(
                *row.native_option_trade_fee_percentage,
            ),
            native_option_underlying_fee_percentage: carbon_core::graphql::primitives::U64(
                *row.native_option_underlying_fee_percentage,
            ),
            referrals_admin: carbon_core::graphql::primitives::Pubkey(row.referrals_admin.0),
            referrals_rewards_wallet_nonce: carbon_core::graphql::primitives::U8(
                (*row.referrals_rewards_wallet_nonce) as u8,
            ),
            max_perp_delta_age: *row.max_perp_delta_age,
            secondary_admin: carbon_core::graphql::primitives::Pubkey(row.secondary_admin.0),
            vault_nonce: carbon_core::graphql::primitives::U8((*row.vault_nonce) as u8),
            insurance_vault_nonce: carbon_core::graphql::primitives::U8(
                (*row.insurance_vault_nonce) as u8,
            ),
            deprecated_total_insurance_vault_deposits: carbon_core::graphql::primitives::U64(
                *row.deprecated_total_insurance_vault_deposits,
            ),
            native_withdraw_limit: carbon_core::graphql::primitives::U64(
                *row.native_withdraw_limit,
            ),
            withdraw_limit_epoch_seconds: carbon_core::graphql::primitives::U32(
                (*row.withdraw_limit_epoch_seconds) as u32,
            ),
            native_open_interest_limit: carbon_core::graphql::primitives::U64(
                *row.native_open_interest_limit,
            ),
            halt_states: row
                .halt_states
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            halt_states_padding: row
                .halt_states_padding
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            padding: row
                .padding
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
        })
    }
}