use crate::{MplCoreDecoder, PROGRAM_ID};
#[cfg(feature = "postgres")]
pub mod postgres;
#[cfg(feature = "graphql")]
pub mod graphql;
pub mod add_assets_to_group_v1;
pub mod add_collection_external_plugin_adapter_v1;
pub mod add_collection_plugin_v1;
pub mod add_collections_to_group_v1;
pub mod add_external_plugin_adapter_v1;
pub mod add_groups_to_group_v1;
pub mod add_plugin_v1;
pub mod approve_collection_plugin_authority_v1;
pub mod approve_plugin_authority_v1;
pub mod burn_collection_v1;
pub mod burn_v1;
pub mod close_group_v1;
pub mod collect;
pub mod compress_v1;
pub mod create_collection_v1;
pub mod create_collection_v2;
pub mod create_group_v1;
pub mod create_v1;
pub mod create_v2;
pub mod decompress_v1;
pub mod execute_v1;
pub mod remove_assets_from_group_v1;
pub mod remove_collection_external_plugin_adapter_v1;
pub mod remove_collection_plugin_v1;
pub mod remove_collections_from_group_v1;
pub mod remove_external_plugin_adapter_v1;
pub mod remove_groups_from_group_v1;
pub mod remove_plugin_v1;
pub mod revoke_collection_plugin_authority_v1;
pub mod revoke_plugin_authority_v1;
pub mod transfer_v1;
pub mod update_collection_external_plugin_adapter_v1;
pub mod update_collection_info_v1;
pub mod update_collection_plugin_v1;
pub mod update_collection_v1;
pub mod update_external_plugin_adapter_v1;
pub mod update_group_v1;
pub mod update_plugin_v1;
pub mod update_v1;
pub mod update_v2;
pub mod write_collection_external_plugin_adapter_data_v1;
pub mod write_external_plugin_adapter_data_v1;
pub use self::{
add_assets_to_group_v1::*, add_collection_external_plugin_adapter_v1::*,
add_collection_plugin_v1::*, add_collections_to_group_v1::*, add_external_plugin_adapter_v1::*,
add_groups_to_group_v1::*, add_plugin_v1::*, approve_collection_plugin_authority_v1::*,
approve_plugin_authority_v1::*, burn_collection_v1::*, burn_v1::*, close_group_v1::*,
collect::*, compress_v1::*, create_collection_v1::*, create_collection_v2::*,
create_group_v1::*, create_v1::*, create_v2::*, decompress_v1::*, execute_v1::*,
remove_assets_from_group_v1::*, remove_collection_external_plugin_adapter_v1::*,
remove_collection_plugin_v1::*, remove_collections_from_group_v1::*,
remove_external_plugin_adapter_v1::*, remove_groups_from_group_v1::*, remove_plugin_v1::*,
revoke_collection_plugin_authority_v1::*, revoke_plugin_authority_v1::*, transfer_v1::*,
update_collection_external_plugin_adapter_v1::*, update_collection_info_v1::*,
update_collection_plugin_v1::*, update_collection_v1::*, update_external_plugin_adapter_v1::*,
update_group_v1::*, update_plugin_v1::*, update_v1::*, update_v2::*,
write_collection_external_plugin_adapter_data_v1::*, write_external_plugin_adapter_data_v1::*,
};
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
pub enum MplCoreInstruction {
AddAssetsToGroupV1 {
program_id: solana_pubkey::Pubkey,
data: AddAssetsToGroupV1,
accounts: AddAssetsToGroupV1InstructionAccounts,
},
AddCollectionExternalPluginAdapterV1 {
program_id: solana_pubkey::Pubkey,
data: AddCollectionExternalPluginAdapterV1,
accounts: AddCollectionExternalPluginAdapterV1InstructionAccounts,
},
AddCollectionPluginV1 {
program_id: solana_pubkey::Pubkey,
data: AddCollectionPluginV1,
accounts: AddCollectionPluginV1InstructionAccounts,
},
AddCollectionsToGroupV1 {
program_id: solana_pubkey::Pubkey,
data: AddCollectionsToGroupV1,
accounts: AddCollectionsToGroupV1InstructionAccounts,
},
AddExternalPluginAdapterV1 {
program_id: solana_pubkey::Pubkey,
data: AddExternalPluginAdapterV1,
accounts: AddExternalPluginAdapterV1InstructionAccounts,
},
AddGroupsToGroupV1 {
program_id: solana_pubkey::Pubkey,
data: AddGroupsToGroupV1,
accounts: AddGroupsToGroupV1InstructionAccounts,
},
AddPluginV1 {
program_id: solana_pubkey::Pubkey,
data: AddPluginV1,
accounts: AddPluginV1InstructionAccounts,
},
ApproveCollectionPluginAuthorityV1 {
program_id: solana_pubkey::Pubkey,
data: ApproveCollectionPluginAuthorityV1,
accounts: ApproveCollectionPluginAuthorityV1InstructionAccounts,
},
ApprovePluginAuthorityV1 {
program_id: solana_pubkey::Pubkey,
data: ApprovePluginAuthorityV1,
accounts: ApprovePluginAuthorityV1InstructionAccounts,
},
BurnCollectionV1 {
program_id: solana_pubkey::Pubkey,
data: BurnCollectionV1,
accounts: BurnCollectionV1InstructionAccounts,
},
BurnV1 {
program_id: solana_pubkey::Pubkey,
data: BurnV1,
accounts: BurnV1InstructionAccounts,
},
CloseGroupV1 {
program_id: solana_pubkey::Pubkey,
data: CloseGroupV1,
accounts: CloseGroupV1InstructionAccounts,
},
Collect {
program_id: solana_pubkey::Pubkey,
data: Collect,
accounts: CollectInstructionAccounts,
},
CompressV1 {
program_id: solana_pubkey::Pubkey,
data: CompressV1,
accounts: CompressV1InstructionAccounts,
},
CreateCollectionV1 {
program_id: solana_pubkey::Pubkey,
data: CreateCollectionV1,
accounts: CreateCollectionV1InstructionAccounts,
},
CreateCollectionV2 {
program_id: solana_pubkey::Pubkey,
data: CreateCollectionV2,
accounts: CreateCollectionV2InstructionAccounts,
},
CreateGroupV1 {
program_id: solana_pubkey::Pubkey,
data: CreateGroupV1,
accounts: CreateGroupV1InstructionAccounts,
},
CreateV1 {
program_id: solana_pubkey::Pubkey,
data: CreateV1,
accounts: CreateV1InstructionAccounts,
},
CreateV2 {
program_id: solana_pubkey::Pubkey,
data: CreateV2,
accounts: CreateV2InstructionAccounts,
},
DecompressV1 {
program_id: solana_pubkey::Pubkey,
data: DecompressV1,
accounts: DecompressV1InstructionAccounts,
},
ExecuteV1 {
program_id: solana_pubkey::Pubkey,
data: ExecuteV1,
accounts: ExecuteV1InstructionAccounts,
},
RemoveAssetsFromGroupV1 {
program_id: solana_pubkey::Pubkey,
data: RemoveAssetsFromGroupV1,
accounts: RemoveAssetsFromGroupV1InstructionAccounts,
},
RemoveCollectionExternalPluginAdapterV1 {
program_id: solana_pubkey::Pubkey,
data: RemoveCollectionExternalPluginAdapterV1,
accounts: RemoveCollectionExternalPluginAdapterV1InstructionAccounts,
},
RemoveCollectionPluginV1 {
program_id: solana_pubkey::Pubkey,
data: RemoveCollectionPluginV1,
accounts: RemoveCollectionPluginV1InstructionAccounts,
},
RemoveCollectionsFromGroupV1 {
program_id: solana_pubkey::Pubkey,
data: RemoveCollectionsFromGroupV1,
accounts: RemoveCollectionsFromGroupV1InstructionAccounts,
},
RemoveExternalPluginAdapterV1 {
program_id: solana_pubkey::Pubkey,
data: RemoveExternalPluginAdapterV1,
accounts: RemoveExternalPluginAdapterV1InstructionAccounts,
},
RemoveGroupsFromGroupV1 {
program_id: solana_pubkey::Pubkey,
data: RemoveGroupsFromGroupV1,
accounts: RemoveGroupsFromGroupV1InstructionAccounts,
},
RemovePluginV1 {
program_id: solana_pubkey::Pubkey,
data: RemovePluginV1,
accounts: RemovePluginV1InstructionAccounts,
},
RevokeCollectionPluginAuthorityV1 {
program_id: solana_pubkey::Pubkey,
data: RevokeCollectionPluginAuthorityV1,
accounts: RevokeCollectionPluginAuthorityV1InstructionAccounts,
},
RevokePluginAuthorityV1 {
program_id: solana_pubkey::Pubkey,
data: RevokePluginAuthorityV1,
accounts: RevokePluginAuthorityV1InstructionAccounts,
},
TransferV1 {
program_id: solana_pubkey::Pubkey,
data: TransferV1,
accounts: TransferV1InstructionAccounts,
},
UpdateCollectionExternalPluginAdapterV1 {
program_id: solana_pubkey::Pubkey,
data: UpdateCollectionExternalPluginAdapterV1,
accounts: UpdateCollectionExternalPluginAdapterV1InstructionAccounts,
},
UpdateCollectionInfoV1 {
program_id: solana_pubkey::Pubkey,
data: UpdateCollectionInfoV1,
accounts: UpdateCollectionInfoV1InstructionAccounts,
},
UpdateCollectionPluginV1 {
program_id: solana_pubkey::Pubkey,
data: UpdateCollectionPluginV1,
accounts: UpdateCollectionPluginV1InstructionAccounts,
},
UpdateCollectionV1 {
program_id: solana_pubkey::Pubkey,
data: UpdateCollectionV1,
accounts: UpdateCollectionV1InstructionAccounts,
},
UpdateExternalPluginAdapterV1 {
program_id: solana_pubkey::Pubkey,
data: UpdateExternalPluginAdapterV1,
accounts: UpdateExternalPluginAdapterV1InstructionAccounts,
},
UpdateGroupV1 {
program_id: solana_pubkey::Pubkey,
data: UpdateGroupV1,
accounts: UpdateGroupV1InstructionAccounts,
},
UpdatePluginV1 {
program_id: solana_pubkey::Pubkey,
data: UpdatePluginV1,
accounts: UpdatePluginV1InstructionAccounts,
},
UpdateV1 {
program_id: solana_pubkey::Pubkey,
data: UpdateV1,
accounts: UpdateV1InstructionAccounts,
},
UpdateV2 {
program_id: solana_pubkey::Pubkey,
data: UpdateV2,
accounts: UpdateV2InstructionAccounts,
},
WriteCollectionExternalPluginAdapterDataV1 {
program_id: solana_pubkey::Pubkey,
data: WriteCollectionExternalPluginAdapterDataV1,
accounts: WriteCollectionExternalPluginAdapterDataV1InstructionAccounts,
},
WriteExternalPluginAdapterDataV1 {
program_id: solana_pubkey::Pubkey,
data: WriteExternalPluginAdapterDataV1,
accounts: WriteExternalPluginAdapterDataV1InstructionAccounts,
},
}
impl carbon_core::instruction::InstructionDecoder<'_> for MplCoreDecoder {
type InstructionType = MplCoreInstruction;
fn decode_instruction(
&self,
instruction: &solana_instruction::Instruction,
) -> Option<Self::InstructionType> {
if instruction.program_id != PROGRAM_ID {
return None;
}
carbon_core::try_decode_instructions!(
instruction,
PROGRAM_ID,
MplCoreInstruction::AddAssetsToGroupV1 => AddAssetsToGroupV1,
MplCoreInstruction::AddCollectionExternalPluginAdapterV1 => AddCollectionExternalPluginAdapterV1,
MplCoreInstruction::AddCollectionPluginV1 => AddCollectionPluginV1,
MplCoreInstruction::AddCollectionsToGroupV1 => AddCollectionsToGroupV1,
MplCoreInstruction::AddExternalPluginAdapterV1 => AddExternalPluginAdapterV1,
MplCoreInstruction::AddGroupsToGroupV1 => AddGroupsToGroupV1,
MplCoreInstruction::AddPluginV1 => AddPluginV1,
MplCoreInstruction::ApproveCollectionPluginAuthorityV1 => ApproveCollectionPluginAuthorityV1,
MplCoreInstruction::ApprovePluginAuthorityV1 => ApprovePluginAuthorityV1,
MplCoreInstruction::BurnCollectionV1 => BurnCollectionV1,
MplCoreInstruction::BurnV1 => BurnV1,
MplCoreInstruction::CloseGroupV1 => CloseGroupV1,
MplCoreInstruction::Collect => Collect,
MplCoreInstruction::CompressV1 => CompressV1,
MplCoreInstruction::CreateCollectionV1 => CreateCollectionV1,
MplCoreInstruction::CreateCollectionV2 => CreateCollectionV2,
MplCoreInstruction::CreateGroupV1 => CreateGroupV1,
MplCoreInstruction::CreateV1 => CreateV1,
MplCoreInstruction::CreateV2 => CreateV2,
MplCoreInstruction::DecompressV1 => DecompressV1,
MplCoreInstruction::ExecuteV1 => ExecuteV1,
MplCoreInstruction::RemoveAssetsFromGroupV1 => RemoveAssetsFromGroupV1,
MplCoreInstruction::RemoveCollectionExternalPluginAdapterV1 => RemoveCollectionExternalPluginAdapterV1,
MplCoreInstruction::RemoveCollectionPluginV1 => RemoveCollectionPluginV1,
MplCoreInstruction::RemoveCollectionsFromGroupV1 => RemoveCollectionsFromGroupV1,
MplCoreInstruction::RemoveExternalPluginAdapterV1 => RemoveExternalPluginAdapterV1,
MplCoreInstruction::RemoveGroupsFromGroupV1 => RemoveGroupsFromGroupV1,
MplCoreInstruction::RemovePluginV1 => RemovePluginV1,
MplCoreInstruction::RevokeCollectionPluginAuthorityV1 => RevokeCollectionPluginAuthorityV1,
MplCoreInstruction::RevokePluginAuthorityV1 => RevokePluginAuthorityV1,
MplCoreInstruction::TransferV1 => TransferV1,
MplCoreInstruction::UpdateCollectionExternalPluginAdapterV1 => UpdateCollectionExternalPluginAdapterV1,
MplCoreInstruction::UpdateCollectionInfoV1 => UpdateCollectionInfoV1,
MplCoreInstruction::UpdateCollectionPluginV1 => UpdateCollectionPluginV1,
MplCoreInstruction::UpdateCollectionV1 => UpdateCollectionV1,
MplCoreInstruction::UpdateExternalPluginAdapterV1 => UpdateExternalPluginAdapterV1,
MplCoreInstruction::UpdateGroupV1 => UpdateGroupV1,
MplCoreInstruction::UpdatePluginV1 => UpdatePluginV1,
MplCoreInstruction::UpdateV1 => UpdateV1,
MplCoreInstruction::UpdateV2 => UpdateV2,
MplCoreInstruction::WriteCollectionExternalPluginAdapterDataV1 => WriteCollectionExternalPluginAdapterDataV1,
MplCoreInstruction::WriteExternalPluginAdapterDataV1 => WriteExternalPluginAdapterDataV1,
)
}
}