carbon-drift-v2-decoder 2.0.0

Drift v2 Decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
use {
    crate::types::graphql::{
        AMMGraphQL, ContractTierGraphQL, ContractTypeGraphQL, InsuranceClaimGraphQL,
        MarketStatusGraphQL, PoolBalanceGraphQL,
    },
    carbon_core::graphql::primitives::{Pubkey, I64, U32, U64, U8},
    juniper::GraphQLObject,
};

#[derive(Debug, Clone, GraphQLObject)]
#[graphql(name = "PerpMarket")]
pub struct PerpMarketGraphQL {
    pub account_metadata: crate::accounts::graphql::AccountMetadataGraphQL,
    pub pubkey: Pubkey,
    pub amm: AMMGraphQL,
    pub pnl_pool: PoolBalanceGraphQL,
    pub name: Vec<U8>,
    pub insurance_claim: InsuranceClaimGraphQL,
    pub unrealized_pnl_max_imbalance: U64,
    pub expiry_ts: I64,
    pub expiry_price: I64,
    pub next_fill_record_id: U64,
    pub next_funding_rate_record_id: U64,
    pub next_curve_record_id: U64,
    pub imf_factor: U32,
    pub unrealized_pnl_imf_factor: U32,
    pub liquidator_fee: U32,
    pub if_liquidation_fee: U32,
    pub margin_ratio_initial: U32,
    pub margin_ratio_maintenance: U32,
    pub unrealized_pnl_initial_asset_weight: U32,
    pub unrealized_pnl_maintenance_asset_weight: U32,
    pub number_of_users_with_base: U32,
    pub number_of_users: U32,
    pub market_index: i32,
    pub status: MarketStatusGraphQL,
    pub contract_type: ContractTypeGraphQL,
    pub contract_tier: ContractTierGraphQL,
    pub paused_operations: U8,
    pub quote_spot_market_index: i32,
    pub fee_adjustment: i32,
    pub fuel_boost_position: U8,
    pub fuel_boost_taker: U8,
    pub fuel_boost_maker: U8,
    pub pool_id: U8,
    pub high_leverage_margin_ratio_initial: i32,
    pub high_leverage_margin_ratio_maintenance: i32,
    pub protected_maker_limit_price_divisor: U8,
    pub protected_maker_dynamic_divisor: U8,
    pub lp_fee_transfer_scalar: U8,
    pub lp_status: U8,
    pub lp_paused_operations: U8,
    pub lp_exchange_fee_excluscion_scalar: U8,
    pub last_fill_price: U64,
    pub lp_pool_id: U8,
    pub market_config: U8,
    pub padding: Vec<U8>,
}

impl TryFrom<crate::accounts::postgres::PerpMarketRow> for PerpMarketGraphQL {
    type Error = carbon_core::error::Error;
    fn try_from(row: crate::accounts::postgres::PerpMarketRow) -> Result<Self, Self::Error> {
        Ok(Self {
            account_metadata: row.account_metadata.into(),
            pubkey: carbon_core::graphql::primitives::Pubkey(row.pubkey.0),
            amm: row.amm.0.into(),
            pnl_pool: row.pnl_pool.0.into(),
            name: row
                .name
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
            insurance_claim: row.insurance_claim.0.into(),
            unrealized_pnl_max_imbalance: carbon_core::graphql::primitives::U64(
                *row.unrealized_pnl_max_imbalance,
            ),
            expiry_ts: carbon_core::graphql::primitives::I64(row.expiry_ts),
            expiry_price: carbon_core::graphql::primitives::I64(row.expiry_price),
            next_fill_record_id: carbon_core::graphql::primitives::U64(*row.next_fill_record_id),
            next_funding_rate_record_id: carbon_core::graphql::primitives::U64(
                *row.next_funding_rate_record_id,
            ),
            next_curve_record_id: carbon_core::graphql::primitives::U64(*row.next_curve_record_id),
            imf_factor: carbon_core::graphql::primitives::U32((*row.imf_factor) as u32),
            unrealized_pnl_imf_factor: carbon_core::graphql::primitives::U32(
                (*row.unrealized_pnl_imf_factor) as u32,
            ),
            liquidator_fee: carbon_core::graphql::primitives::U32((*row.liquidator_fee) as u32),
            if_liquidation_fee: carbon_core::graphql::primitives::U32(
                (*row.if_liquidation_fee) as u32,
            ),
            margin_ratio_initial: carbon_core::graphql::primitives::U32(
                (*row.margin_ratio_initial) as u32,
            ),
            margin_ratio_maintenance: carbon_core::graphql::primitives::U32(
                (*row.margin_ratio_maintenance) as u32,
            ),
            unrealized_pnl_initial_asset_weight: carbon_core::graphql::primitives::U32(
                (*row.unrealized_pnl_initial_asset_weight) as u32,
            ),
            unrealized_pnl_maintenance_asset_weight: carbon_core::graphql::primitives::U32(
                (*row.unrealized_pnl_maintenance_asset_weight) as u32,
            ),
            number_of_users_with_base: carbon_core::graphql::primitives::U32(
                (*row.number_of_users_with_base) as u32,
            ),
            number_of_users: carbon_core::graphql::primitives::U32((*row.number_of_users) as u32),
            market_index: *row.market_index,
            status: row.status.0.into(),
            contract_type: row.contract_type.0.into(),
            contract_tier: row.contract_tier.0.into(),
            paused_operations: carbon_core::graphql::primitives::U8((*row.paused_operations) as u8),
            quote_spot_market_index: *row.quote_spot_market_index,
            fee_adjustment: row.fee_adjustment as i32,
            fuel_boost_position: carbon_core::graphql::primitives::U8(
                (*row.fuel_boost_position) as u8,
            ),
            fuel_boost_taker: carbon_core::graphql::primitives::U8((*row.fuel_boost_taker) as u8),
            fuel_boost_maker: carbon_core::graphql::primitives::U8((*row.fuel_boost_maker) as u8),
            pool_id: carbon_core::graphql::primitives::U8((*row.pool_id) as u8),
            high_leverage_margin_ratio_initial: *row.high_leverage_margin_ratio_initial,
            high_leverage_margin_ratio_maintenance: *row.high_leverage_margin_ratio_maintenance,
            protected_maker_limit_price_divisor: carbon_core::graphql::primitives::U8(
                (*row.protected_maker_limit_price_divisor) as u8,
            ),
            protected_maker_dynamic_divisor: carbon_core::graphql::primitives::U8(
                (*row.protected_maker_dynamic_divisor) as u8,
            ),
            lp_fee_transfer_scalar: carbon_core::graphql::primitives::U8(
                (*row.lp_fee_transfer_scalar) as u8,
            ),
            lp_status: carbon_core::graphql::primitives::U8((*row.lp_status) as u8),
            lp_paused_operations: carbon_core::graphql::primitives::U8(
                (*row.lp_paused_operations) as u8,
            ),
            lp_exchange_fee_excluscion_scalar: carbon_core::graphql::primitives::U8(
                (*row.lp_exchange_fee_excluscion_scalar) as u8,
            ),
            last_fill_price: carbon_core::graphql::primitives::U64(*row.last_fill_price),
            lp_pool_id: carbon_core::graphql::primitives::U8((*row.lp_pool_id) as u8),
            market_config: carbon_core::graphql::primitives::U8((*row.market_config) as u8),
            padding: row
                .padding
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
        })
    }
}