light_token_interface/instructions/mint_action/
update_metadata.rs1use light_compressed_account::Pubkey;
2use light_zero_copy::ZeroCopy;
3
4use crate::{AnchorDeserialize, AnchorSerialize};
5
6#[repr(C)]
7#[derive(Debug, Clone, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
8pub struct UpdateMetadataFieldAction {
9 pub extension_index: u8, pub field_type: u8, pub key: Vec<u8>, pub value: Vec<u8>, }
14
15#[repr(C)]
16#[derive(Debug, Clone, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
17pub struct UpdateMetadataAuthorityAction {
18 pub extension_index: u8, pub new_authority: Pubkey, }
21
22#[repr(C)]
23#[derive(Debug, Clone, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
24pub struct RemoveMetadataKeyAction {
25 pub extension_index: u8, pub key: Vec<u8>, pub idempotent: u8, }
29
30#[derive(Debug, Clone, PartialEq, Eq, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
32#[repr(C, u8)]
33pub enum MetadataUpdate {
34 UpdateAuthority(UpdateMetadataAuthority),
35 UpdateKey(UpdateKey),
36 RemoveKey(RemoveKey),
37}
38
39#[repr(C)]
40#[derive(Debug, Clone, PartialEq, Eq, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
41pub struct UpdateKey {
42 pub extension_index: u8,
43 pub key_index: u8,
44 pub key: Vec<u8>,
45 pub value: Vec<u8>,
46}
47
48#[repr(C)]
49#[derive(Debug, Clone, Copy, PartialEq, Eq, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
50pub struct RemoveKey {
51 pub extension_index: u8,
52 pub key_index: u8,
53}
54
55#[repr(C)]
56#[derive(Debug, Clone, Copy, PartialEq, Eq, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
57pub struct UpdateMetadataAuthority {
58 pub extension_index: u8,
59 pub new_authority: Pubkey,
60}