sendfun_sdk/launchpad/generated/events/
send_launchpad_events.rs1#![allow(
2 clippy::all,
3 clippy::pedantic,
4 clippy::nursery,
5 clippy::expect_used,
6 clippy::unwrap_used,
7 clippy::indexing_slicing,
8 clippy::allow_attributes,
9 clippy::allow_attributes_without_reason,
10 clippy::mem_forget,
11 unfulfilled_lint_expectations,
12 unexpected_cfgs,
13 unused_imports
14)]
15
16use crate::launchpad::generated::events::COMPLETE_EVENT_DISCRIMINATOR;
24use crate::launchpad::generated::events::CREATOR_CLAIM_EVENT_DISCRIMINATOR;
25use crate::launchpad::generated::events::CompleteEvent;
26use crate::launchpad::generated::events::CreatorClaimEvent;
27use crate::launchpad::generated::events::MIGRATE_EVENT_DISCRIMINATOR;
28use crate::launchpad::generated::events::MigrateEvent;
29use crate::launchpad::generated::events::PROTOCOL_CLAIM_EVENT_DISCRIMINATOR;
30use crate::launchpad::generated::events::ProtocolClaimEvent;
31use crate::launchpad::generated::events::RECYCLE_EVENT_DISCRIMINATOR;
32use crate::launchpad::generated::events::RecycleEvent;
33use crate::launchpad::generated::events::TOKEN_CREATE_EVENT_DISCRIMINATOR;
34use crate::launchpad::generated::events::TRADE_EVENT_DISCRIMINATOR;
35use crate::launchpad::generated::events::TokenCreateEvent;
36use crate::launchpad::generated::events::TradeEvent;
37use borsh::BorshDeserialize;
38
39pub const ANCHOR_EVENT_CPI_DISCRIMINATOR: [u8; 8] =
42 [228, 69, 165, 46, 81, 203, 154, 29];
43
44#[derive(Clone, Debug, Eq, PartialEq)]
46pub enum SendLaunchpadEventKind {
47 CompleteEvent,
48 CreatorClaimEvent,
49 MigrateEvent,
50 ProtocolClaimEvent,
51 RecycleEvent,
52 TokenCreateEvent,
53 TradeEvent,
54}
55
56pub fn identify_send_launchpad_event(
62 program_id: &solana_address::Address,
63 data: &[u8],
64) -> Option<SendLaunchpadEventKind> {
65 if program_id != &crate::launchpad::generated::SEND_LAUNCHPAD_ID {
66 return None;
67 }
68 if data.get(..ANCHOR_EVENT_CPI_DISCRIMINATOR.len())
69 == Some(&ANCHOR_EVENT_CPI_DISCRIMINATOR[..])
70 {
71 if data.get(8..16) == Some(&COMPLETE_EVENT_DISCRIMINATOR[..]) {
72 return Some(SendLaunchpadEventKind::CompleteEvent);
73 }
74 if data.get(8..16) == Some(&CREATOR_CLAIM_EVENT_DISCRIMINATOR[..]) {
75 return Some(SendLaunchpadEventKind::CreatorClaimEvent);
76 }
77 if data.get(8..16) == Some(&MIGRATE_EVENT_DISCRIMINATOR[..]) {
78 return Some(SendLaunchpadEventKind::MigrateEvent);
79 }
80 if data.get(8..16) == Some(&PROTOCOL_CLAIM_EVENT_DISCRIMINATOR[..]) {
81 return Some(SendLaunchpadEventKind::ProtocolClaimEvent);
82 }
83 if data.get(8..16) == Some(&RECYCLE_EVENT_DISCRIMINATOR[..]) {
84 return Some(SendLaunchpadEventKind::RecycleEvent);
85 }
86 if data.get(8..16) == Some(&TOKEN_CREATE_EVENT_DISCRIMINATOR[..]) {
87 return Some(SendLaunchpadEventKind::TokenCreateEvent);
88 }
89 if data.get(8..16) == Some(&TRADE_EVENT_DISCRIMINATOR[..]) {
90 return Some(SendLaunchpadEventKind::TradeEvent);
91 }
92 }
93 None
94}
95
96#[derive(Clone, Debug, Eq, PartialEq)]
98pub enum SendLaunchpadEvent {
99 CompleteEvent(CompleteEvent),
100 CreatorClaimEvent(CreatorClaimEvent),
101 MigrateEvent(MigrateEvent),
102 ProtocolClaimEvent(ProtocolClaimEvent),
103 RecycleEvent(RecycleEvent),
104 TokenCreateEvent(TokenCreateEvent),
105 TradeEvent(TradeEvent),
106}
107
108pub fn try_parse_send_launchpad_event(
121 program_id: &solana_address::Address,
122 data: &[u8],
123) -> Option<Result<SendLaunchpadEvent, std::io::Error>> {
124 let event_kind = identify_send_launchpad_event(program_id, data)?;
125 Some(match event_kind {
126 SendLaunchpadEventKind::CompleteEvent => {
127 let mut data = &data[16..];
129 CompleteEvent::deserialize(&mut data)
130 .map(SendLaunchpadEvent::CompleteEvent)
131 }
132 SendLaunchpadEventKind::CreatorClaimEvent => {
133 let mut data = &data[16..];
135 CreatorClaimEvent::deserialize(&mut data)
136 .map(SendLaunchpadEvent::CreatorClaimEvent)
137 }
138 SendLaunchpadEventKind::MigrateEvent => {
139 let mut data = &data[16..];
141 MigrateEvent::deserialize(&mut data)
142 .map(SendLaunchpadEvent::MigrateEvent)
143 }
144 SendLaunchpadEventKind::ProtocolClaimEvent => {
145 let mut data = &data[16..];
147 ProtocolClaimEvent::deserialize(&mut data)
148 .map(SendLaunchpadEvent::ProtocolClaimEvent)
149 }
150 SendLaunchpadEventKind::RecycleEvent => {
151 let mut data = &data[16..];
153 RecycleEvent::deserialize(&mut data)
154 .map(SendLaunchpadEvent::RecycleEvent)
155 }
156 SendLaunchpadEventKind::TokenCreateEvent => {
157 let mut data = &data[16..];
159 TokenCreateEvent::deserialize(&mut data)
160 .map(SendLaunchpadEvent::TokenCreateEvent)
161 }
162 SendLaunchpadEventKind::TradeEvent => {
163 let mut data = &data[16..];
165 TradeEvent::deserialize(&mut data)
166 .map(SendLaunchpadEvent::TradeEvent)
167 }
168 })
169}