carbon-drift-v2-decoder 2.0.0

Drift v2 Decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
use {
    crate::types::graphql::{FeeStructureGraphQL, OracleGuardRailsGraphQL},
    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 whitelist_mint: Pubkey,
    pub discount_mint: Pubkey,
    pub signer: Pubkey,
    pub srm_vault: Pubkey,
    pub perp_fee_structure: FeeStructureGraphQL,
    pub spot_fee_structure: FeeStructureGraphQL,
    pub oracle_guard_rails: OracleGuardRailsGraphQL,
    pub number_of_authorities: U64,
    pub number_of_sub_accounts: U64,
    pub lp_cooldown_time: U64,
    pub liquidation_margin_buffer_ratio: U32,
    pub settlement_duration: i32,
    pub number_of_markets: i32,
    pub number_of_spot_markets: i32,
    pub signer_nonce: U8,
    pub min_perp_auction_duration: U8,
    pub default_market_order_time_in_force: U8,
    pub default_spot_auction_duration: U8,
    pub exchange_status: U8,
    pub liquidation_duration: U8,
    pub initial_pct_to_liquidate: i32,
    pub max_number_of_sub_accounts: i32,
    pub max_initialize_user_fee: i32,
    pub feature_bit_flags: U8,
    pub lp_pool_feature_bit_flags: U8,
    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),
            whitelist_mint: carbon_core::graphql::primitives::Pubkey(row.whitelist_mint.0),
            discount_mint: carbon_core::graphql::primitives::Pubkey(row.discount_mint.0),
            signer: carbon_core::graphql::primitives::Pubkey(row.signer.0),
            srm_vault: carbon_core::graphql::primitives::Pubkey(row.srm_vault.0),
            perp_fee_structure: row.perp_fee_structure.0.into(),
            spot_fee_structure: row.spot_fee_structure.0.into(),
            oracle_guard_rails: row.oracle_guard_rails.0.into(),
            number_of_authorities: carbon_core::graphql::primitives::U64(
                *row.number_of_authorities,
            ),
            number_of_sub_accounts: carbon_core::graphql::primitives::U64(
                *row.number_of_sub_accounts,
            ),
            lp_cooldown_time: carbon_core::graphql::primitives::U64(*row.lp_cooldown_time),
            liquidation_margin_buffer_ratio: carbon_core::graphql::primitives::U32(
                (*row.liquidation_margin_buffer_ratio) as u32,
            ),
            settlement_duration: *row.settlement_duration,
            number_of_markets: *row.number_of_markets,
            number_of_spot_markets: *row.number_of_spot_markets,
            signer_nonce: carbon_core::graphql::primitives::U8((*row.signer_nonce) as u8),
            min_perp_auction_duration: carbon_core::graphql::primitives::U8(
                (*row.min_perp_auction_duration) as u8,
            ),
            default_market_order_time_in_force: carbon_core::graphql::primitives::U8(
                (*row.default_market_order_time_in_force) as u8,
            ),
            default_spot_auction_duration: carbon_core::graphql::primitives::U8(
                (*row.default_spot_auction_duration) as u8,
            ),
            exchange_status: carbon_core::graphql::primitives::U8((*row.exchange_status) as u8),
            liquidation_duration: carbon_core::graphql::primitives::U8(
                (*row.liquidation_duration) as u8,
            ),
            initial_pct_to_liquidate: *row.initial_pct_to_liquidate,
            max_number_of_sub_accounts: *row.max_number_of_sub_accounts,
            max_initialize_user_fee: *row.max_initialize_user_fee,
            feature_bit_flags: carbon_core::graphql::primitives::U8((*row.feature_bit_flags) as u8),
            lp_pool_feature_bit_flags: carbon_core::graphql::primitives::U8(
                (*row.lp_pool_feature_bit_flags) as u8,
            ),
            padding: row
                .padding
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
        })
    }
}