use serde::{Deserialize, Serialize};
use tidepool_core::Creator;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct NoopOverride {
pub leaf_index: u64,
pub nonce: u64,
pub id: [u8; 32],
pub owner: [u8; 32],
pub delegate: [u8; 32],
pub data_hash: [u8; 32],
pub creator_hash: [u8; 32],
pub leaf_hash: [u8; 32],
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct TreeInfo {
pub tree: [u8; 32],
pub depth: u8,
pub max_buffer_size: u32,
pub num_minted: u64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MintMetadata {
pub name: String,
pub symbol: String,
pub uri: String,
pub seller_fee_basis_points: u16,
pub primary_sale_happened: bool,
pub is_mutable: bool,
pub creators: Vec<Creator>,
pub collection: Option<([u8; 32], bool)>,
pub data_hash_input: Vec<u8>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct LeafRecord {
pub asset_id: [u8; 32],
pub tree: [u8; 32],
pub nonce: u64,
pub leaf_index: u64,
pub mint_metadata: MintMetadata,
pub owner: [u8; 32],
pub delegate: [u8; 32],
pub data_hash: [u8; 32],
pub creator_hash: [u8; 32],
pub leaf_hash: [u8; 32],
pub burned: bool,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CnftEvent {
CreateTree {
tree: [u8; 32],
depth: u8,
max_buffer_size: u32,
},
Mint {
tree: [u8; 32],
owner: [u8; 32],
delegate: [u8; 32],
metadata: MintMetadata,
verify_collection: Option<[u8; 32]>,
noop: Option<NoopOverride>,
},
Transfer {
tree: [u8; 32],
leaf_index: u64,
nonce: u64,
new_owner: [u8; 32],
new_delegate: [u8; 32],
data_hash: [u8; 32],
creator_hash: [u8; 32],
noop: Option<NoopOverride>,
},
Burn {
tree: [u8; 32],
leaf_index: u64,
nonce: u64,
noop: Option<NoopOverride>,
},
Delegate {
tree: [u8; 32],
leaf_index: u64,
nonce: u64,
new_delegate: [u8; 32],
data_hash: [u8; 32],
creator_hash: [u8; 32],
noop: Option<NoopOverride>,
},
VerifyCreator {
tree: [u8; 32],
creator: [u8; 32],
noop: NoopOverride,
},
UnverifyCreator {
tree: [u8; 32],
creator: [u8; 32],
noop: NoopOverride,
},
VerifyCollection {
tree: [u8; 32],
collection: [u8; 32],
noop: NoopOverride,
},
UnverifyCollection {
tree: [u8; 32],
collection: [u8; 32],
noop: NoopOverride,
},
SetAndVerifyCollection {
tree: [u8; 32],
collection: [u8; 32],
noop: NoopOverride,
},
UpdateMetadata {
tree: [u8; 32],
new_metadata: MintMetadata,
noop: NoopOverride,
},
}