carbon-wavebreak-decoder 2.0.0

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

#[derive(Debug, Clone, GraphQLObject)]
#[graphql(name = "BondingCurve")]
pub struct BondingCurveGraphQL {
    pub account_metadata: crate::accounts::graphql::AccountMetadataGraphQL,
    pub base_mint: Pubkey,
    pub quote_mint: Pubkey,
    pub creator: Pubkey,
    pub retain_mint_authority: bool,
    pub buy_requires_permission: bool,
    pub buy_permission_bitmap: Vec<U8>,
    pub sell_requires_permission: bool,
    pub sell_permission_bitmap: Vec<U8>,
    pub quote_fee_bps: i32,
    pub base_fee_bps: i32,
    pub control_points: Vec<i32>,
    pub start_price: U128,
    pub end_price: U128,
    pub quote_amount: U64,
    pub base_amount: U64,
    pub launch_time: I64,
    pub creator_reward: U64,
    pub graduation_target: U64,
    pub graduation_time: I64,
    pub graduation_reward: U64,
    pub max_buy_amount: U64,
    pub max_sell_amount: U64,
    pub swap_fee_bps: i32,
    pub base_allocation_bps: i32,
    pub graduation_methods: Vec<GraduationMethodDataGraphQL>,
    pub min_reserve_bps: i32,
    pub padding1: Vec<U8>,
    pub preminted_supply: U64,
    pub padding2: Vec<U8>,
}

impl TryFrom<crate::accounts::postgres::BondingCurveRow> for BondingCurveGraphQL {
    type Error = carbon_core::error::Error;
    fn try_from(row: crate::accounts::postgres::BondingCurveRow) -> Result<Self, Self::Error> {
        Ok(Self {
            account_metadata: row.account_metadata.into(),
            base_mint: carbon_core::graphql::primitives::Pubkey(row.base_mint.0),
            quote_mint: carbon_core::graphql::primitives::Pubkey(row.quote_mint.0),
            creator: carbon_core::graphql::primitives::Pubkey(row.creator.0),
            retain_mint_authority: row.retain_mint_authority,
            buy_requires_permission: row.buy_requires_permission,
            buy_permission_bitmap: row
                .buy_permission_bitmap
                .into_iter()
                .map(|x| carbon_core::graphql::primitives::U8((*x) as u8))
                .collect(),
            sell_requires_permission: row.sell_requires_permission,
            sell_permission_bitmap: row
                .sell_permission_bitmap
                .into_iter()
                .map(|x| carbon_core::graphql::primitives::U8((*x) as u8))
                .collect(),
            quote_fee_bps: *row.quote_fee_bps,
            base_fee_bps: *row.base_fee_bps,
            control_points: row.control_points.into_iter().map(|item| *item).collect(),
            start_price: carbon_core::graphql::primitives::U128(*row.start_price),
            end_price: carbon_core::graphql::primitives::U128(*row.end_price),
            quote_amount: carbon_core::graphql::primitives::U64(*row.quote_amount),
            base_amount: carbon_core::graphql::primitives::U64(*row.base_amount),
            launch_time: carbon_core::graphql::primitives::I64(row.launch_time),
            creator_reward: carbon_core::graphql::primitives::U64(*row.creator_reward),
            graduation_target: carbon_core::graphql::primitives::U64(*row.graduation_target),
            graduation_time: carbon_core::graphql::primitives::I64(row.graduation_time),
            graduation_reward: carbon_core::graphql::primitives::U64(*row.graduation_reward),
            max_buy_amount: carbon_core::graphql::primitives::U64(*row.max_buy_amount),
            max_sell_amount: carbon_core::graphql::primitives::U64(*row.max_sell_amount),
            swap_fee_bps: *row.swap_fee_bps,
            base_allocation_bps: *row.base_allocation_bps,
            graduation_methods: row
                .graduation_methods
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            min_reserve_bps: *row.min_reserve_bps,
            padding1: row
                .padding1
                .into_iter()
                .map(|x| carbon_core::graphql::primitives::U8((*x) as u8))
                .collect(),
            preminted_supply: carbon_core::graphql::primitives::U64(*row.preminted_supply),
            padding2: row
                .padding2
                .into_iter()
                .map(|x| carbon_core::graphql::primitives::U8((*x) as u8))
                .collect(),
        })
    }
}