anchor/tests/ido-pool/tests/utils/index.js

55 lines
1.3 KiB
JavaScript

const spl = require("@solana/spl-token");
const anchor = require("@coral-xyz/anchor");
const serumCmn = require("@project-serum/common");
const TokenInstructions = require("@project-serum/serum").TokenInstructions;
// TODO: remove this constant once @project-serum/serum uses the same version
// of @solana/web3.js as anchor (or switch packages).
const TOKEN_PROGRAM_ID = new anchor.web3.PublicKey(
TokenInstructions.TOKEN_PROGRAM_ID.toString()
);
// Our own sleep function.
function sleep(ms) {
console.log("Sleeping for", ms / 1000, "seconds");
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function getTokenAccount(provider, addr) {
return await serumCmn.getTokenAccount(provider, addr);
}
async function createMint(provider, authority) {
if (authority === undefined) {
authority = provider.wallet.publicKey;
}
const mint = await spl.Token.createMint(
provider.connection,
provider.wallet.payer,
authority,
null,
6,
TOKEN_PROGRAM_ID
);
return mint;
}
async function createTokenAccount(provider, mint, owner) {
const token = new spl.Token(
provider.connection,
mint,
TOKEN_PROGRAM_ID,
provider.wallet.payer
);
let vault = await token.createAccount(owner);
return vault;
}
module.exports = {
TOKEN_PROGRAM_ID,
sleep,
getTokenAccount,
createTokenAccount,
createMint,
};