Browse Source

add wrappers for mpl `sign_metadata` and `remove_creator_verification` (#2175)

* add wrappers for mpl creator verification ix

* update changelog
Matthew Callens 3 years ago
parent
commit
f155996c3c
2 changed files with 45 additions and 0 deletions
  1. 1 0
      CHANGELOG.md
  2. 44 0
      spl/src/metadata.rs

+ 1 - 0
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)).

+ 44 - 0
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);