import * as anchor from "@project-serum/anchor"; import keccak256 from "keccak256"; import MerkleTree from "merkletreejs"; export const getShellProvider = (connection: anchor.web3.Connection) => { return new anchor.AnchorProvider(connection, null, null); }; export const getMerkleTree = (mints: anchor.web3.PublicKey[]) => { const leaves = mints.map((x) => keccak256(x.toBuffer())); const tree = new MerkleTree(leaves, keccak256, { sort: true }); const root = tree.getRoot(); return { root: [...root], tree }; }; export const getMerkleProof = ( mints: anchor.web3.PublicKey[], mint: anchor.web3.PublicKey ) => { const { tree } = getMerkleTree(mints); const leaf = keccak256(mint.toBuffer()); const proof: Buffer[] = tree.getProof(leaf).map((x) => x.data); return proof.map((x) => [...x]); };