@mercurial-finance/dynamic-amm-sdk
Version:
Mercurial Vaults SDK is a typescript library that allows you to interact with Mercurial v2's AMM.
60 lines • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mockWallet = exports.getOrCreateATA = exports.airDropSolIfBalanceNotEnough = exports.airDropSol = exports.wrapSol = void 0;
const anchor_1 = require("@coral-xyz/anchor");
const spl_token_1 = require("@solana/spl-token");
const web3_js_1 = require("@solana/web3.js");
const utils_1 = require("../../utils");
const wrapSol = async (connection, amount, user) => {
const userAta = (0, utils_1.getAssociatedTokenAccount)(spl_token_1.NATIVE_MINT, user.publicKey);
const wrapSolIx = (0, utils_1.wrapSOLInstruction)(user.publicKey, userAta, BigInt(amount.toString()));
const latestBlockHash = await connection.getLatestBlockhash();
const tx = new web3_js_1.Transaction({
feePayer: user.publicKey,
...latestBlockHash,
}).add(...wrapSolIx);
tx.sign(user);
const txHash = await connection.sendRawTransaction(tx.serialize());
await connection.confirmTransaction(txHash, 'finalized');
};
exports.wrapSol = wrapSol;
const airDropSol = async (connection, publicKey, amount = 1) => {
try {
const airdropSignature = await connection.requestAirdrop(publicKey, amount * web3_js_1.LAMPORTS_PER_SOL);
const latestBlockHash = await connection.getLatestBlockhash();
await connection.confirmTransaction({
blockhash: latestBlockHash.blockhash,
lastValidBlockHeight: latestBlockHash.lastValidBlockHeight,
signature: airdropSignature,
}, connection.commitment);
}
catch (error) {
console.error(error);
throw error;
}
};
exports.airDropSol = airDropSol;
const airDropSolIfBalanceNotEnough = async (connection, publicKey, balance = 1) => {
const walletBalance = await connection.getBalance(publicKey);
if (walletBalance < balance * web3_js_1.LAMPORTS_PER_SOL) {
await (0, exports.airDropSol)(connection, publicKey);
}
};
exports.airDropSolIfBalanceNotEnough = airDropSolIfBalanceNotEnough;
const getOrCreateATA = async (connection, mint, owner, payer) => {
const ata = await (0, spl_token_1.getOrCreateAssociatedTokenAccount)(connection, payer, mint, owner, true);
return ata.address;
};
exports.getOrCreateATA = getOrCreateATA;
exports.mockWallet = new anchor_1.Wallet(web3_js_1.Keypair.generate());
// export const MAINNET = {
// connection: new Connection(process.env.MAINNET_RPC_ENDPOINT as string),
// cluster: 'mainnet-beta',
// };
// export const DEVNET = {
// connection: new Connection('https://api.devnet.solana.com/', {
// commitment: 'confirmed',
// }),
// cluster: 'devnet',
// };
//# sourceMappingURL=index.js.map