carbon-bubblegum-decoder 0.11.0

Bubblegum Program Decoder
Documentation
use super::BubblegumDecoder;
pub mod burn;
pub mod burn_v2;
pub mod cancel_redeem;
pub mod collect_v2;
pub mod compress;
pub mod create_tree;
pub mod create_tree_v2;
pub mod decompress_v1;
pub mod delegate;
pub mod delegate_and_freeze_v2;
pub mod delegate_v2;
pub mod freeze_v2;
pub mod mint_to_collection_v1;
pub mod mint_v1;
pub mod mint_v2;
pub mod redeem;
pub mod set_and_verify_collection;
pub mod set_collection_v2;
pub mod set_decompressable_state;
pub mod set_decompressible_state;
pub mod set_non_transferable_v2;
pub mod set_tree_delegate;
pub mod thaw_and_revoke_v2;
pub mod thaw_v2;
pub mod transfer;
pub mod transfer_v2;
pub mod unverify_collection;
pub mod unverify_creator;
pub mod unverify_creator_v2;
pub mod update_asset_data_v2;
pub mod update_metadata;
pub mod update_metadata_v2;
pub mod verify_collection;
pub mod verify_creator;
pub mod verify_creator_v2;

#[derive(
    carbon_core::InstructionType,
    serde::Serialize,
    serde::Deserialize,
    PartialEq,
    Eq,
    Debug,
    Clone,
    Hash,
)]
pub enum BubblegumInstruction {
    Burn(burn::Burn),
    BurnV2(burn_v2::BurnV2),
    CancelRedeem(cancel_redeem::CancelRedeem),
    CollectV2(collect_v2::CollectV2),
    Compress(compress::Compress),
    CreateTree(create_tree::CreateTree),
    CreateTreeV2(create_tree_v2::CreateTreeV2),
    DecompressV1(decompress_v1::DecompressV1),
    Delegate(delegate::Delegate),
    DelegateAndFreezeV2(delegate_and_freeze_v2::DelegateAndFreezeV2),
    DelegateV2(delegate_v2::DelegateV2),
    FreezeV2(freeze_v2::FreezeV2),
    MintToCollectionV1(mint_to_collection_v1::MintToCollectionV1),
    MintV1(mint_v1::MintV1),
    MintV2(mint_v2::MintV2),
    Redeem(redeem::Redeem),
    SetAndVerifyCollection(set_and_verify_collection::SetAndVerifyCollection),
    SetCollectionV2(set_collection_v2::SetCollectionV2),
    SetDecompressableState(set_decompressable_state::SetDecompressableState),
    SetDecompressibleState(set_decompressible_state::SetDecompressibleState),
    SetNonTransferableV2(set_non_transferable_v2::SetNonTransferableV2),
    SetTreeDelegate(set_tree_delegate::SetTreeDelegate),
    ThawAndRevokeV2(thaw_and_revoke_v2::ThawAndRevokeV2),
    ThawV2(thaw_v2::ThawV2),
    Transfer(transfer::Transfer),
    TransferV2(transfer_v2::TransferV2),
    UnverifyCollection(unverify_collection::UnverifyCollection),
    UnverifyCreator(unverify_creator::UnverifyCreator),
    UnverifyCreatorV2(unverify_creator_v2::UnverifyCreatorV2),
    UpdateAssetDataV2(update_asset_data_v2::UpdateAssetDataV2),
    UpdateMetadata(update_metadata::UpdateMetadata),
    UpdateMetadataV2(update_metadata_v2::UpdateMetadataV2),
    VerifyCollection(verify_collection::VerifyCollection),
    VerifyCreator(verify_creator::VerifyCreator),
    VerifyCreatorV2(verify_creator_v2::VerifyCreatorV2),
}

impl carbon_core::instruction::InstructionDecoder<'_> for BubblegumDecoder {
    type InstructionType = BubblegumInstruction;

    fn decode_instruction(
        &self,
        instruction: &solana_instruction::Instruction,
    ) -> Option<carbon_core::instruction::DecodedInstruction<Self::InstructionType>> {
        carbon_core::try_decode_instructions!(instruction,
            BubblegumInstruction::Burn => burn::Burn,
            BubblegumInstruction::BurnV2 => burn_v2::BurnV2,
            BubblegumInstruction::CancelRedeem => cancel_redeem::CancelRedeem,
            BubblegumInstruction::CollectV2 => collect_v2::CollectV2,
            BubblegumInstruction::Compress => compress::Compress,
            BubblegumInstruction::CreateTree => create_tree::CreateTree,
            BubblegumInstruction::CreateTreeV2 => create_tree_v2::CreateTreeV2,
            BubblegumInstruction::DecompressV1 => decompress_v1::DecompressV1,
            BubblegumInstruction::Delegate => delegate::Delegate,
            BubblegumInstruction::DelegateAndFreezeV2 => delegate_and_freeze_v2::DelegateAndFreezeV2,
            BubblegumInstruction::DelegateV2 => delegate_v2::DelegateV2,
            BubblegumInstruction::FreezeV2 => freeze_v2::FreezeV2,
            BubblegumInstruction::MintToCollectionV1 => mint_to_collection_v1::MintToCollectionV1,
            BubblegumInstruction::MintV1 => mint_v1::MintV1,
            BubblegumInstruction::MintV2 => mint_v2::MintV2,
            BubblegumInstruction::Redeem => redeem::Redeem,
            BubblegumInstruction::SetAndVerifyCollection => set_and_verify_collection::SetAndVerifyCollection,
            BubblegumInstruction::SetCollectionV2 => set_collection_v2::SetCollectionV2,
            BubblegumInstruction::SetDecompressableState => set_decompressable_state::SetDecompressableState,
            BubblegumInstruction::SetDecompressibleState => set_decompressible_state::SetDecompressibleState,
            BubblegumInstruction::SetNonTransferableV2 => set_non_transferable_v2::SetNonTransferableV2,
            BubblegumInstruction::SetTreeDelegate => set_tree_delegate::SetTreeDelegate,
            BubblegumInstruction::ThawAndRevokeV2 => thaw_and_revoke_v2::ThawAndRevokeV2,
            BubblegumInstruction::ThawV2 => thaw_v2::ThawV2,
            BubblegumInstruction::Transfer => transfer::Transfer,
            BubblegumInstruction::TransferV2 => transfer_v2::TransferV2,
            BubblegumInstruction::UnverifyCollection => unverify_collection::UnverifyCollection,
            BubblegumInstruction::UnverifyCreator => unverify_creator::UnverifyCreator,
            BubblegumInstruction::UnverifyCreatorV2 => unverify_creator_v2::UnverifyCreatorV2,
            BubblegumInstruction::UpdateAssetDataV2 => update_asset_data_v2::UpdateAssetDataV2,
            BubblegumInstruction::UpdateMetadata => update_metadata::UpdateMetadata,
            BubblegumInstruction::UpdateMetadataV2 => update_metadata_v2::UpdateMetadataV2,
            BubblegumInstruction::VerifyCollection => verify_collection::VerifyCollection,
            BubblegumInstruction::VerifyCreator => verify_creator::VerifyCreator,
            BubblegumInstruction::VerifyCreatorV2 => verify_creator_v2::VerifyCreatorV2,
        )
    }
}