1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import { PROGRAM_ID as BUBBLEGUM_PROGRAM_ID } from '@metaplex-foundation/mpl-bubblegum/dist/src/generated';
- import { PROGRAM_ID as TOKEN_METADATA_PROGRAM_ID } from '@metaplex-foundation/mpl-token-metadata/dist/src/generated';
- import { SPL_ACCOUNT_COMPRESSION_PROGRAM_ID, SPL_NOOP_PROGRAM_ID } from '@solana/spl-account-compression';
- import { type AccountMeta, PublicKey, SystemProgram } from '@solana/web3.js';
- import * as bs58 from 'bs58';
- export function decode(stuff: string) {
- return bufferToArray(bs58.decode(stuff));
- }
- function bufferToArray(buffer: Buffer): number[] {
- const nums: number[] = [];
- for (let i = 0; i < buffer.length; i++) {
- nums.push(buffer[i]);
- }
- return nums;
- }
- export const mapProof = (assetProof: { proof: string[] }): AccountMeta[] => {
- if (!assetProof.proof || assetProof.proof.length === 0) {
- throw new Error('Proof is empty');
- }
- return assetProof.proof.map((node) => ({
- pubkey: new PublicKey(node),
- isSigner: false,
- isWritable: false,
- }));
- };
- export function getAccounts(collectionMint: PublicKey, tree: PublicKey) {
- // treeAuth
- const [treeAuthority] = PublicKey.findProgramAddressSync([tree.toBuffer()], BUBBLEGUM_PROGRAM_ID);
- // derive a PDA (owned by Bubblegum) to act as the signer of the compressed minting
- const [bubblegumSigner] = PublicKey.findProgramAddressSync(
- // `collection_cpi` is a custom prefix required by the Bubblegum program
- [Buffer.from('collection_cpi', 'utf8')],
- BUBBLEGUM_PROGRAM_ID,
- );
- // collection metadata account
- const [metadataAccount] = PublicKey.findProgramAddressSync(
- [Buffer.from('metadata', 'utf8'), TOKEN_METADATA_PROGRAM_ID.toBuffer(), collectionMint.toBuffer()],
- TOKEN_METADATA_PROGRAM_ID,
- );
- // collection master edition
- const [masterEditionAccount] = PublicKey.findProgramAddressSync(
- [Buffer.from('metadata', 'utf8'), TOKEN_METADATA_PROGRAM_ID.toBuffer(), collectionMint.toBuffer(), Buffer.from('edition', 'utf8')],
- TOKEN_METADATA_PROGRAM_ID,
- );
- return {
- treeAuthority,
- collectionMint,
- collectionMetadata: metadataAccount,
- editionAccount: masterEditionAccount,
- merkleTree: tree,
- bubblegumSigner,
- logWrapper: SPL_NOOP_PROGRAM_ID,
- compressionProgram: SPL_ACCOUNT_COMPRESSION_PROGRAM_ID,
- tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,
- bubblegumProgram: BUBBLEGUM_PROGRAM_ID,
- systemProgram: SystemProgram.programId,
- };
- }
|