@renec-foundation/metaplex-js
Version:
Metaplex JavaScript API
53 lines (49 loc) • 1.63 kB
text/typescript
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,
});
};