UNPKG

@renec-foundation/metaplex-js

Version:

Metaplex JavaScript API

53 lines (49 loc) 1.63 kB
import { Connection, PublicKey } from '@solana/web3.js'; import { Wallet } from '../wallet'; import { CreateMetadata, Metadata, MetadataDataData, } from '@renec-foundation/mpl-token-metadata'; import { sendTransaction } from './transactions'; /** * Parameters for {@link createMetadata} */ export interface CreateMetadataParams { connection: Connection; /** Will be used as the fee payer, mint authority and a default update authority if {@link updateAuthority} isn't specified **/ wallet: Wallet; /** Can be any mint with 0 decimals **/ editionMint: PublicKey; metadataData: MetadataDataData; /** * You can optionally specify an updateAuthority different from the provided {@link wallet} * @default The updateAuthority will be set to the provided {@link wallet} address if not otherwise specified. **/ updateAuthority?: PublicKey; } /** * Creates a Metadata program account. This action is used in {@link mintNFT}. * @return This action returns the resulting transaction id once it has been executed */ export const createMetadata = async ( { connection, wallet, editionMint, metadataData, updateAuthority } = {} as CreateMetadataParams, ): Promise<string> => { const metadata = await Metadata.getPDA(editionMint); const createMetadataTx = new CreateMetadata( { feePayer: wallet.publicKey }, { metadata, metadataData, updateAuthority: updateAuthority ?? wallet.publicKey, mint: editionMint, mintAuthority: wallet.publicKey, }, ); return sendTransaction({ connection, signers: [], txs: [createMetadataTx], wallet, }); };