48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import {
|
|
ConfirmOptions,
|
|
Connection,
|
|
PublicKey,
|
|
sendAndConfirmTransaction,
|
|
Signer,
|
|
Transaction,
|
|
TransactionSignature,
|
|
} from '@solana/web3.js';
|
|
import { TOKEN_PROGRAM_ID } from '../constants';
|
|
import { createMintToInstruction } from '../instructions/index';
|
|
import { getSigners } from './internal';
|
|
|
|
/**
|
|
* Mint tokens to an account
|
|
*
|
|
* @param connection Connection to use
|
|
* @param payer Payer of the transaction fees
|
|
* @param mint Mint for the account
|
|
* @param destination Address of the account to mint to
|
|
* @param authority Minting authority
|
|
* @param amount Amount to mint
|
|
* @param multiSigners Signing accounts if `authority` is a multisig
|
|
* @param confirmOptions Options for confirming the transaction
|
|
* @param programId SPL Token program account
|
|
*
|
|
* @return Signature of the confirmed transaction
|
|
*/
|
|
export async function mintTo(
|
|
connection: Connection,
|
|
payer: Signer,
|
|
mint: PublicKey,
|
|
destination: PublicKey,
|
|
authority: Signer | PublicKey,
|
|
amount: number | bigint,
|
|
multiSigners: Signer[] = [],
|
|
confirmOptions?: ConfirmOptions,
|
|
programId = TOKEN_PROGRAM_ID
|
|
): Promise<TransactionSignature> {
|
|
const [authorityPublicKey, signers] = getSigners(authority, multiSigners);
|
|
|
|
const transaction = new Transaction().add(
|
|
createMintToInstruction(mint, destination, authorityPublicKey, amount, multiSigners, programId)
|
|
);
|
|
|
|
return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);
|
|
}
|