light_token_interface/instructions/extensions/
mod.rs1pub mod compressed_only;
2pub mod compressible;
3pub mod token_metadata;
4pub use compressed_only::{
5 CompressedOnlyExtensionInstructionData, ZCompressedOnlyExtensionInstructionData,
6};
7pub use compressible::{CompressToPubkey, CompressibleExtensionInstructionData};
8use light_compressible::compression_info::CompressionInfo;
9use light_zero_copy::ZeroCopy;
10pub use token_metadata::{TokenMetadataInstructionData, ZTokenMetadataInstructionData};
11
12use crate::{AnchorDeserialize, AnchorSerialize};
13
14#[derive(Debug, Clone, PartialEq, Eq, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
15#[repr(C)]
16pub enum ExtensionInstructionData {
17 Placeholder0,
18 Placeholder1,
19 Placeholder2,
20 Placeholder3,
21 Placeholder4,
22 Placeholder5,
23 Placeholder6,
24 Placeholder7,
25 Placeholder8,
26 Placeholder9,
27 Placeholder10,
28 Placeholder11,
29 Placeholder12,
30 Placeholder13,
31 Placeholder14,
32 Placeholder15,
33 Placeholder16,
34 Placeholder17,
35 Placeholder18,
36 TokenMetadata(TokenMetadataInstructionData),
37 Placeholder20,
38 Placeholder21,
39 Placeholder22,
40 Placeholder23,
41 Placeholder24,
42 Placeholder25,
43 Placeholder26,
44 Placeholder27,
46 Placeholder28,
48 Placeholder29,
49 Placeholder30,
50 CompressedOnly(CompressedOnlyExtensionInstructionData),
52 Compressible(CompressionInfo),
55}
56
57#[inline(always)]
59pub fn find_compressed_only<'a>(
60 tlv: &'a [ZExtensionInstructionData<'a>],
61) -> Option<&'a ZCompressedOnlyExtensionInstructionData<'a>> {
62 tlv.iter().find_map(|ext| match ext {
63 ZExtensionInstructionData::CompressedOnly(data) => Some(data),
64 _ => None,
65 })
66}