use solana_pubkey::Pubkey;
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
pub struct MintConfig {
pub instruction_discriminator: u8,
pub quote_mint: Pubkey,
pub create_requires_permission: bool,
pub create_permission_bitmap: [u8; 32],
pub default_buy_requires_permission: bool,
pub default_buy_permission_bitmap: [u8; 32],
pub default_sell_requires_permission: bool,
pub default_sell_permission_bitmap: [u8; 32],
pub padding1: [u8; 3],
pub default_creator_reward: u64,
pub default_graduation_reward: u64,
pub default_graduation_target: u64,
pub default_max_buy_amount: u64,
pub default_max_sell_amount: u64,
pub default_start_price: u128,
pub default_end_price: u128,
pub default_control_points: [u16; 4],
pub default_swap_fee_bps: u16,
pub default_quote_fee_bps: u16,
pub default_base_fee_bps: u16,
#[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))]
pub padding2: [u8; 1826],
}
impl MintConfig {
pub fn decode(data: &[u8]) -> Option<Self> {
let mut data_slice = data;
borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
}
}