use super::*;
use carbon_core::{borsh, CarbonDeserialize};
#[derive(
CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
)]
pub enum Event {
BondingCurveCreated {
creation_type: BondingCurveCreationType,
base_mint: solana_pubkey::Pubkey,
quote_mint: solana_pubkey::Pubkey,
creator: solana_pubkey::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_slot: u64,
creator_reward: u64,
graduation_methods: Box<[GraduationMethodData; 8]>,
graduation_target: u64,
graduation_slot: u64,
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: solana_pubkey::Pubkey,
base_token_program: solana_pubkey::Pubkey,
quote_token_decimals: u8,
base_token_decimals: u8,
},
TokenBought {
buyer: solana_pubkey::Pubkey,
base_mint: solana_pubkey::Pubkey,
quote_mint: solana_pubkey::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: solana_pubkey::Pubkey,
base_mint: solana_pubkey::Pubkey,
quote_mint: solana_pubkey::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: solana_pubkey::Pubkey,
base_mint: solana_pubkey::Pubkey,
quote_mint: solana_pubkey::Pubkey,
price: u128,
quote_amount: u64,
base_amount: u64,
},
BondingCurveGraduated {
graduator: solana_pubkey::Pubkey,
base_mint: solana_pubkey::Pubkey,
quote_mint: solana_pubkey::Pubkey,
final_price: u128,
graduation_methods: Box<[GraduationMethodData; 8]>,
},
BondingCurveClosed {
bonding_curve: solana_pubkey::Pubkey,
},
}