diff --git a/CHANGELOG.md b/CHANGELOG.md index e8039bd84..3b670ca9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ The minor version will be incremented upon a breaking change and the patch versi * spl: Add `create_metadata_accounts_v3` and `set_collection_size` wrappers ([#2119](https://github.com/coral-xyz/anchor/pull/2119)) * spl: Add `MetadataAccount` account deserialization. ([#2014](https://github.com/coral-xyz/anchor/pull/2014)). * spl: Add `update_primary_sale_happened_via_token` wrapper ([#2173](https://github.com/coral-xyz/anchor/pull/2173)). +* spl: Add `sign_metadata` and `remove_creator_verification` wrappers ([#2175](https://github.com/coral-xyz/anchor/pull/2175)). * lang: Add parsing for consts from impl blocks for IDL PDA seeds generation ([#2128](https://github.com/coral-xyz/anchor/pull/2014)) * lang: Account closing reassigns to system program and reallocates ([#2169](https://github.com/coral-xyz/anchor/pull/2169)). * ts: Add coders for SPL programs ([#2143](https://github.com/coral-xyz/anchor/pull/2143)). diff --git a/spl/src/metadata.rs b/spl/src/metadata.rs index f95372d52..d1f551270 100644 --- a/spl/src/metadata.rs +++ b/spl/src/metadata.rs @@ -251,6 +251,38 @@ pub fn update_primary_sale_happened_via_token<'info>( Ok(()) } +pub fn sign_metadata<'info>(ctx: CpiContext<'_, '_, '_, 'info, SignMetadata<'info>>) -> Result<()> { + let ix = mpl_token_metadata::instruction::sign_metadata( + ID, + *ctx.accounts.metadata.key, + *ctx.accounts.creator.key, + ); + + solana_program::program::invoke_signed( + &ix, + &ToAccountInfos::to_account_infos(&ctx), + ctx.signer_seeds, + )?; + Ok(()) +} + +pub fn remove_creator_verification<'info>( + ctx: CpiContext<'_, '_, '_, 'info, RemoveCreatorVerification<'info>>, +) -> Result<()> { + let ix = mpl_token_metadata::instruction::remove_creator_verification( + ID, + *ctx.accounts.metadata.key, + *ctx.accounts.creator.key, + ); + + solana_program::program::invoke_signed( + &ix, + &ToAccountInfos::to_account_infos(&ctx), + ctx.signer_seeds, + )?; + Ok(()) +} + #[derive(Accounts)] pub struct CreateMetadataAccountsV2<'info> { pub metadata: AccountInfo<'info>, @@ -353,6 +385,18 @@ pub struct UpdatePrimarySaleHappenedViaToken<'info> { pub token: AccountInfo<'info>, } +#[derive(Accounts)] +pub struct SignMetadata<'info> { + pub creator: AccountInfo<'info>, + pub metadata: AccountInfo<'info>, +} + +#[derive(Accounts)] +pub struct RemoveCreatorVerification<'info> { + pub creator: AccountInfo<'info>, + pub metadata: AccountInfo<'info>, +} + #[derive(Clone, Debug, PartialEq)] pub struct MetadataAccount(mpl_token_metadata::state::Metadata);