use light_compressed_account::Pubkey;
use light_zero_copy::ZeroCopy;
use crate::{AnchorDeserialize, AnchorSerialize};
#[repr(C)]
#[derive(Debug, Clone, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
pub struct UpdateMetadataFieldAction {
pub extension_index: u8, pub field_type: u8, pub key: Vec<u8>, pub value: Vec<u8>, }
#[repr(C)]
#[derive(Debug, Clone, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
pub struct UpdateMetadataAuthorityAction {
pub extension_index: u8, pub new_authority: Pubkey, }
#[repr(C)]
#[derive(Debug, Clone, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
pub struct RemoveMetadataKeyAction {
pub extension_index: u8, pub key: Vec<u8>, pub idempotent: u8, }
#[derive(Debug, Clone, PartialEq, Eq, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
#[repr(C, u8)]
pub enum MetadataUpdate {
UpdateAuthority(UpdateMetadataAuthority),
UpdateKey(UpdateKey),
RemoveKey(RemoveKey),
}
#[repr(C)]
#[derive(Debug, Clone, PartialEq, Eq, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
pub struct UpdateKey {
pub extension_index: u8,
pub key_index: u8,
pub key: Vec<u8>,
pub value: Vec<u8>,
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
pub struct RemoveKey {
pub extension_index: u8,
pub key_index: u8,
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
pub struct UpdateMetadataAuthority {
pub extension_index: u8,
pub new_authority: Pubkey,
}