@blockassetlabs/minter
Version:
Blockasset Minter
56 lines (51 loc) • 1.24 kB
text/typescript
import type { Wallet } from "@saberhq/solana-contrib";
import type {
AccountMeta,
Connection,
PublicKey,
Transaction,
} from "@solana/web3.js";
import { withFindOrInitAssociatedTokenAccount } from "../../utils";
import { getMetadataId } from "./pda";
export const withRemainingAccountsForMint = async (
transaction: Transaction,
connection: Connection,
wallet: Wallet,
params: {
mints: PublicKey[];
}
) => {
const res = await Promise.all(
params.mints.map(async (mintId) => {
const [mintTokenAccount, mintMetadataId] = await Promise.all([
withFindOrInitAssociatedTokenAccount(
transaction,
connection,
mintId,
wallet.publicKey,
wallet.publicKey
),
getMetadataId(mintId),
]);
return [
{
pubkey: mintId,
isSigner: false,
isWritable: false,
},
{
pubkey: mintMetadataId,
isSigner: false,
isWritable: false,
},
{
pubkey: mintTokenAccount,
isSigner: false,
isWritable: false,
},
];
})
);
const remainingAccounts: AccountMeta[] = res.flat();
return remainingAccounts;
};