pub use super::super::events;
use carbon_core::{borsh, deserialize::ArrangeAccounts};
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(
Debug,
Clone,
carbon_core::borsh::BorshSerialize,
carbon_core::borsh::BorshDeserialize,
PartialEq,
)]
pub enum CpiEvent {
EvtClaimCreatorTradingFee(events::evt_claim_creator_trading_fee::EvtClaimCreatorTradingFeeEvent),
EvtClaimPoolCreationFee(events::evt_claim_pool_creation_fee::EvtClaimPoolCreationFeeEvent),
EvtClaimProtocolFee(events::evt_claim_protocol_fee::EvtClaimProtocolFeeEvent),
EvtClaimProtocolLiquidityMigrationFee(events::evt_claim_protocol_liquidity_migration_fee::EvtClaimProtocolLiquidityMigrationFeeEvent),
EvtClaimTradingFee(events::evt_claim_trading_fee::EvtClaimTradingFeeEvent),
EvtCloseClaimFeeOperator(events::evt_close_claim_fee_operator::EvtCloseClaimFeeOperatorEvent),
EvtCreateClaimFeeOperator(events::evt_create_claim_fee_operator::EvtCreateClaimFeeOperatorEvent),
EvtCreateConfig(events::evt_create_config::EvtCreateConfigEvent),
EvtCreateConfigV2(events::evt_create_config_v2::EvtCreateConfigV2Event),
EvtCreateMeteoraMigrationMetadata(events::evt_create_meteora_migration_metadata::EvtCreateMeteoraMigrationMetadataEvent),
EvtCreatorWithdrawSurplus(events::evt_creator_withdraw_surplus::EvtCreatorWithdrawSurplusEvent),
EvtCurveComplete(events::evt_curve_complete::EvtCurveCompleteEvent),
EvtInitializePool(events::evt_initialize_pool::EvtInitializePoolEvent),
EvtPartnerClaimPoolCreationFee(events::evt_partner_claim_pool_creation_fee::EvtPartnerClaimPoolCreationFeeEvent),
EvtPartnerMetadata(events::evt_partner_metadata::EvtPartnerMetadataEvent),
EvtPartnerWithdrawMigrationFee(events::evt_partner_withdraw_migration_fee::EvtPartnerWithdrawMigrationFeeEvent),
EvtPartnerWithdrawSurplus(events::evt_partner_withdraw_surplus::EvtPartnerWithdrawSurplusEvent),
EvtSwap(events::evt_swap::EvtSwapEvent),
EvtSwap2(events::evt_swap2::EvtSwap2Event),
EvtUpdatePoolCreator(events::evt_update_pool_creator::EvtUpdatePoolCreatorEvent),
EvtVirtualPoolMetadata(events::evt_virtual_pool_metadata::EvtVirtualPoolMetadataEvent),
EvtWithdrawLeftover(events::evt_withdraw_leftover::EvtWithdrawLeftoverEvent),
EvtWithdrawMigrationFee(events::evt_withdraw_migration_fee::EvtWithdrawMigrationFeeEvent),
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CpiEventInstructionAccounts {
pub program: solana_pubkey::Pubkey,
pub event_authority: solana_pubkey::Pubkey,
pub remaining: Vec<solana_instruction::AccountMeta>,
}
impl CpiEvent {
pub fn decode(data: &[u8]) -> Option<Self> {
if data.len() < 8 {
return None;
}
let discriminator = &data[0..8];
if discriminator != [228, 69, 165, 46, 81, 203, 154, 29] {
return None;
}
let event_data = &data[8..];
if let Some(decoded) =
events::evt_claim_creator_trading_fee::EvtClaimCreatorTradingFeeEvent::decode(
event_data,
)
{
return Some(CpiEvent::EvtClaimCreatorTradingFee(decoded));
}
if let Some(decoded) =
events::evt_claim_pool_creation_fee::EvtClaimPoolCreationFeeEvent::decode(event_data)
{
return Some(CpiEvent::EvtClaimPoolCreationFee(decoded));
}
if let Some(decoded) =
events::evt_claim_protocol_fee::EvtClaimProtocolFeeEvent::decode(event_data)
{
return Some(CpiEvent::EvtClaimProtocolFee(decoded));
}
if let Some(decoded) = events::evt_claim_protocol_liquidity_migration_fee::EvtClaimProtocolLiquidityMigrationFeeEvent::decode(event_data) {
return Some(CpiEvent::EvtClaimProtocolLiquidityMigrationFee(decoded));
}
if let Some(decoded) =
events::evt_claim_trading_fee::EvtClaimTradingFeeEvent::decode(event_data)
{
return Some(CpiEvent::EvtClaimTradingFee(decoded));
}
if let Some(decoded) =
events::evt_close_claim_fee_operator::EvtCloseClaimFeeOperatorEvent::decode(event_data)
{
return Some(CpiEvent::EvtCloseClaimFeeOperator(decoded));
}
if let Some(decoded) =
events::evt_create_claim_fee_operator::EvtCreateClaimFeeOperatorEvent::decode(
event_data,
)
{
return Some(CpiEvent::EvtCreateClaimFeeOperator(decoded));
}
if let Some(decoded) = events::evt_create_config::EvtCreateConfigEvent::decode(event_data) {
return Some(CpiEvent::EvtCreateConfig(decoded));
}
if let Some(decoded) =
events::evt_create_config_v2::EvtCreateConfigV2Event::decode(event_data)
{
return Some(CpiEvent::EvtCreateConfigV2(decoded));
}
if let Some(decoded) = events::evt_create_meteora_migration_metadata::EvtCreateMeteoraMigrationMetadataEvent::decode(event_data) {
return Some(CpiEvent::EvtCreateMeteoraMigrationMetadata(decoded));
}
if let Some(decoded) =
events::evt_creator_withdraw_surplus::EvtCreatorWithdrawSurplusEvent::decode(event_data)
{
return Some(CpiEvent::EvtCreatorWithdrawSurplus(decoded));
}
if let Some(decoded) = events::evt_curve_complete::EvtCurveCompleteEvent::decode(event_data)
{
return Some(CpiEvent::EvtCurveComplete(decoded));
}
if let Some(decoded) =
events::evt_initialize_pool::EvtInitializePoolEvent::decode(event_data)
{
return Some(CpiEvent::EvtInitializePool(decoded));
}
if let Some(decoded) =
events::evt_partner_claim_pool_creation_fee::EvtPartnerClaimPoolCreationFeeEvent::decode(
event_data,
)
{
return Some(CpiEvent::EvtPartnerClaimPoolCreationFee(decoded));
}
if let Some(decoded) =
events::evt_partner_metadata::EvtPartnerMetadataEvent::decode(event_data)
{
return Some(CpiEvent::EvtPartnerMetadata(decoded));
}
if let Some(decoded) =
events::evt_partner_withdraw_migration_fee::EvtPartnerWithdrawMigrationFeeEvent::decode(
event_data,
)
{
return Some(CpiEvent::EvtPartnerWithdrawMigrationFee(decoded));
}
if let Some(decoded) =
events::evt_partner_withdraw_surplus::EvtPartnerWithdrawSurplusEvent::decode(event_data)
{
return Some(CpiEvent::EvtPartnerWithdrawSurplus(decoded));
}
if let Some(decoded) = events::evt_swap::EvtSwapEvent::decode(event_data) {
return Some(CpiEvent::EvtSwap(decoded));
}
if let Some(decoded) = events::evt_swap2::EvtSwap2Event::decode(event_data) {
return Some(CpiEvent::EvtSwap2(decoded));
}
if let Some(decoded) =
events::evt_update_pool_creator::EvtUpdatePoolCreatorEvent::decode(event_data)
{
return Some(CpiEvent::EvtUpdatePoolCreator(decoded));
}
if let Some(decoded) =
events::evt_virtual_pool_metadata::EvtVirtualPoolMetadataEvent::decode(event_data)
{
return Some(CpiEvent::EvtVirtualPoolMetadata(decoded));
}
if let Some(decoded) =
events::evt_withdraw_leftover::EvtWithdrawLeftoverEvent::decode(event_data)
{
return Some(CpiEvent::EvtWithdrawLeftover(decoded));
}
if let Some(decoded) =
events::evt_withdraw_migration_fee::EvtWithdrawMigrationFeeEvent::decode(event_data)
{
return Some(CpiEvent::EvtWithdrawMigrationFee(decoded));
}
None
}
}
impl ArrangeAccounts for CpiEvent {
type ArrangedAccounts = CpiEventInstructionAccounts;
fn arrange_accounts(
accounts: &[solana_instruction::AccountMeta],
) -> Option<Self::ArrangedAccounts> {
match accounts {
[program, event_authority, remaining @ ..] => Some(CpiEventInstructionAccounts {
program: program.pubkey,
event_authority: event_authority.pubkey,
remaining: remaining.to_vec(),
}),
[event_authority] => Some(CpiEventInstructionAccounts {
program: crate::PROGRAM_ID,
event_authority: event_authority.pubkey,
remaining: Vec::new(),
}),
_ => None,
}
}
}