chia_sdk_driver/primitives/nft/
metadata_update.rs1use chia_sdk_types::puzzles::NftMetadataUpdater;
2
3use crate::{DriverError, Spend, SpendContext};
4
5#[derive(Debug, Clone, PartialEq, Eq)]
6pub struct MetadataUpdate {
7 pub kind: UriKind,
8 pub uri: String,
9}
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq)]
12pub enum UriKind {
13 Data,
14 Metadata,
15 License,
16}
17
18impl MetadataUpdate {
19 pub fn spend(&self, ctx: &mut SpendContext) -> Result<Spend, DriverError> {
20 let solution = ctx.alloc(&match self.kind {
21 UriKind::Data => ("u", &self.uri),
22 UriKind::Metadata => ("mu", &self.uri),
23 UriKind::License => ("lu", &self.uri),
24 })?;
25 Ok(Spend::new(ctx.alloc_mod::<NftMetadataUpdater>()?, solution))
26 }
27}