chia_sdk_driver/primitives/nft/
metadata_update.rs

1use 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}