use {
crate::types::{BondingCurveCreationType, GraduationMethodData},
solana_pubkey::Pubkey,
};
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
pub enum Event {
BondingCurveCreated {
creation_type: BondingCurveCreationType,
base_mint: Pubkey,
quote_mint: Pubkey,
creator: Pubkey,
start_price: u128,
end_price: u128,
control_points: [u16; 4],
swap_fee_bps: u16,
quote_fee_bps: u16,
base_fee_bps: u16,
base_allocation_bps: u16,
launch_time: i64,
creator_reward: u64,
graduation_methods: [GraduationMethodData; 8],
graduation_target: u64,
graduation_time: i64,
graduation_reward: u64,
retain_mint_authority: bool,
min_reserve_bps: u16,
buy_requires_permission: bool,
buy_permission_bitmap: [u8; 32],
max_buy_amount: u64,
sell_requires_permission: bool,
sell_permission_bitmap: [u8; 32],
max_sell_amount: u64,
quote_token_program: Pubkey,
base_token_program: Pubkey,
quote_token_decimals: u8,
base_token_decimals: u8,
},
TokenBought {
buyer: Pubkey,
base_mint: Pubkey,
quote_mint: Pubkey,
amount_in: u64,
amount_out: u64,
price_before: u128,
price_after: u128,
quote_amount_before: u64,
quote_amount_after: u64,
base_amount_before: u64,
base_amount_after: u64,
protocol_fee: u64,
},
TokenSold {
seller: Pubkey,
base_mint: Pubkey,
quote_mint: Pubkey,
amount_in: u64,
amount_out: u64,
price_before: u128,
price_after: u128,
quote_amount_before: u64,
quote_amount_after: u64,
base_amount_before: u64,
base_amount_after: u64,
protocol_fee: u64,
},
TokenRefunded {
signer: Pubkey,
base_mint: Pubkey,
quote_mint: Pubkey,
price: u128,
quote_amount: u64,
base_amount: u64,
},
BondingCurveGraduated {
graduator: Pubkey,
base_mint: Pubkey,
quote_mint: Pubkey,
final_price: u128,
graduation_methods: [GraduationMethodData; 8],
},
BondingCurveClosed {
bonding_curve: Pubkey,
},
}