Skip to main content

carbon_mpl_token_metadata_decoder/accounts/
mod.rs

1//! This code was AUTOGENERATED using the Codama library.
2use crate::{MplTokenMetadataDecoder, PROGRAM_ID};
3
4#[cfg(feature = "postgres")]
5pub mod postgres;
6
7#[cfg(feature = "graphql")]
8pub mod graphql;
9
10pub mod collection_authority_record;
11pub mod edition;
12pub mod edition_marker;
13pub mod edition_marker_v2;
14pub mod holder_delegate_record;
15pub mod master_edition_v1;
16pub mod master_edition_v2;
17pub mod metadata;
18pub mod metadata_delegate_record;
19pub mod reservation_list_v1;
20pub mod reservation_list_v2;
21pub mod token_owned_escrow;
22pub mod token_record;
23pub mod use_authority_record;
24
25#[derive(Debug, Clone, PartialEq)]
26#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
27#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
28pub enum MplTokenMetadataAccount {
29    CollectionAuthorityRecord(Box<collection_authority_record::CollectionAuthorityRecord>),
30    Edition(Box<edition::Edition>),
31    EditionMarker(Box<edition_marker::EditionMarker>),
32    EditionMarkerV2(Box<edition_marker_v2::EditionMarkerV2>),
33    HolderDelegateRecord(Box<holder_delegate_record::HolderDelegateRecord>),
34    MasterEditionV1(Box<master_edition_v1::MasterEditionV1>),
35    MasterEditionV2(Box<master_edition_v2::MasterEditionV2>),
36    Metadata(Box<metadata::Metadata>),
37    MetadataDelegateRecord(Box<metadata_delegate_record::MetadataDelegateRecord>),
38    ReservationListV1(Box<reservation_list_v1::ReservationListV1>),
39    ReservationListV2(Box<reservation_list_v2::ReservationListV2>),
40    TokenOwnedEscrow(Box<token_owned_escrow::TokenOwnedEscrow>),
41    TokenRecord(Box<token_record::TokenRecord>),
42    UseAuthorityRecord(Box<use_authority_record::UseAuthorityRecord>),
43}
44
45impl<'a> carbon_core::account::AccountDecoder<'a> for MplTokenMetadataDecoder {
46    type AccountType = MplTokenMetadataAccount;
47
48    fn decode_account(
49        &self,
50        account: &'a solana_account::Account,
51    ) -> Option<carbon_core::account::DecodedAccount<Self::AccountType>> {
52        if account.owner != PROGRAM_ID {
53            return None;
54        }
55
56        let data = account.data.as_slice();
57
58        {
59            if let Some(decoded) =
60                collection_authority_record::CollectionAuthorityRecord::decode(data)
61            {
62                return Some(carbon_core::account::DecodedAccount {
63                    lamports: account.lamports,
64                    data: MplTokenMetadataAccount::CollectionAuthorityRecord(Box::new(decoded)),
65                    owner: account.owner,
66                    executable: account.executable,
67                    rent_epoch: account.rent_epoch,
68                });
69            }
70        }
71        {
72            if let Some(decoded) = metadata_delegate_record::MetadataDelegateRecord::decode(data) {
73                return Some(carbon_core::account::DecodedAccount {
74                    lamports: account.lamports,
75                    data: MplTokenMetadataAccount::MetadataDelegateRecord(Box::new(decoded)),
76                    owner: account.owner,
77                    executable: account.executable,
78                    rent_epoch: account.rent_epoch,
79                });
80            }
81        }
82        {
83            if let Some(decoded) = holder_delegate_record::HolderDelegateRecord::decode(data) {
84                return Some(carbon_core::account::DecodedAccount {
85                    lamports: account.lamports,
86                    data: MplTokenMetadataAccount::HolderDelegateRecord(Box::new(decoded)),
87                    owner: account.owner,
88                    executable: account.executable,
89                    rent_epoch: account.rent_epoch,
90                });
91            }
92        }
93        {
94            if let Some(decoded) = edition::Edition::decode(data) {
95                return Some(carbon_core::account::DecodedAccount {
96                    lamports: account.lamports,
97                    data: MplTokenMetadataAccount::Edition(Box::new(decoded)),
98                    owner: account.owner,
99                    executable: account.executable,
100                    rent_epoch: account.rent_epoch,
101                });
102            }
103        }
104        {
105            if let Some(decoded) = edition_marker::EditionMarker::decode(data) {
106                return Some(carbon_core::account::DecodedAccount {
107                    lamports: account.lamports,
108                    data: MplTokenMetadataAccount::EditionMarker(Box::new(decoded)),
109                    owner: account.owner,
110                    executable: account.executable,
111                    rent_epoch: account.rent_epoch,
112                });
113            }
114        }
115        {
116            if let Some(decoded) = edition_marker_v2::EditionMarkerV2::decode(data) {
117                return Some(carbon_core::account::DecodedAccount {
118                    lamports: account.lamports,
119                    data: MplTokenMetadataAccount::EditionMarkerV2(Box::new(decoded)),
120                    owner: account.owner,
121                    executable: account.executable,
122                    rent_epoch: account.rent_epoch,
123                });
124            }
125        }
126        {
127            if let Some(decoded) = token_owned_escrow::TokenOwnedEscrow::decode(data) {
128                return Some(carbon_core::account::DecodedAccount {
129                    lamports: account.lamports,
130                    data: MplTokenMetadataAccount::TokenOwnedEscrow(Box::new(decoded)),
131                    owner: account.owner,
132                    executable: account.executable,
133                    rent_epoch: account.rent_epoch,
134                });
135            }
136        }
137        {
138            if let Some(decoded) = master_edition_v2::MasterEditionV2::decode(data) {
139                return Some(carbon_core::account::DecodedAccount {
140                    lamports: account.lamports,
141                    data: MplTokenMetadataAccount::MasterEditionV2(Box::new(decoded)),
142                    owner: account.owner,
143                    executable: account.executable,
144                    rent_epoch: account.rent_epoch,
145                });
146            }
147        }
148        {
149            if let Some(decoded) = master_edition_v1::MasterEditionV1::decode(data) {
150                return Some(carbon_core::account::DecodedAccount {
151                    lamports: account.lamports,
152                    data: MplTokenMetadataAccount::MasterEditionV1(Box::new(decoded)),
153                    owner: account.owner,
154                    executable: account.executable,
155                    rent_epoch: account.rent_epoch,
156                });
157            }
158        }
159        {
160            if let Some(decoded) = metadata::Metadata::decode(data) {
161                return Some(carbon_core::account::DecodedAccount {
162                    lamports: account.lamports,
163                    data: MplTokenMetadataAccount::Metadata(Box::new(decoded)),
164                    owner: account.owner,
165                    executable: account.executable,
166                    rent_epoch: account.rent_epoch,
167                });
168            }
169        }
170        {
171            if let Some(decoded) = token_record::TokenRecord::decode(data) {
172                return Some(carbon_core::account::DecodedAccount {
173                    lamports: account.lamports,
174                    data: MplTokenMetadataAccount::TokenRecord(Box::new(decoded)),
175                    owner: account.owner,
176                    executable: account.executable,
177                    rent_epoch: account.rent_epoch,
178                });
179            }
180        }
181        {
182            if let Some(decoded) = reservation_list_v2::ReservationListV2::decode(data) {
183                return Some(carbon_core::account::DecodedAccount {
184                    lamports: account.lamports,
185                    data: MplTokenMetadataAccount::ReservationListV2(Box::new(decoded)),
186                    owner: account.owner,
187                    executable: account.executable,
188                    rent_epoch: account.rent_epoch,
189                });
190            }
191        }
192        {
193            if let Some(decoded) = reservation_list_v1::ReservationListV1::decode(data) {
194                return Some(carbon_core::account::DecodedAccount {
195                    lamports: account.lamports,
196                    data: MplTokenMetadataAccount::ReservationListV1(Box::new(decoded)),
197                    owner: account.owner,
198                    executable: account.executable,
199                    rent_epoch: account.rent_epoch,
200                });
201            }
202        }
203        {
204            if let Some(decoded) = use_authority_record::UseAuthorityRecord::decode(data) {
205                return Some(carbon_core::account::DecodedAccount {
206                    lamports: account.lamports,
207                    data: MplTokenMetadataAccount::UseAuthorityRecord(Box::new(decoded)),
208                    owner: account.owner,
209                    executable: account.executable,
210                    rent_epoch: account.rent_epoch,
211                });
212            }
213        }
214
215        None
216    }
217}