@mercurial-finance/dynamic-amm-sdk
Version:
Mercurial Vaults SDK is a typescript library that allows you to interact with Mercurial v2's AMM.
30 lines • 1.59 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const web3_js_1 = require("@solana/web3.js");
const bn_js_1 = __importDefault(require("bn.js"));
const anchor_1 = require("@coral-xyz/anchor");
const amm_1 = __importDefault(require("../amm"));
const idl_1 = require("../amm/idl");
const constants_1 = require("../amm/constants");
const mainnetConnection = new web3_js_1.Connection('https://api.mainnet-beta.solana.com');
const mockWallet = new anchor_1.Wallet(new web3_js_1.Keypair());
const provider = new anchor_1.AnchorProvider(mainnetConnection, mockWallet, {
commitment: 'confirmed',
});
async function swapQuote(poolAddress, swapAmount, swapAtoB) {
const ammProgram = new anchor_1.Program(idl_1.IDL, constants_1.PROGRAM_ID, provider);
let poolState = await ammProgram.account.pool.fetch(poolAddress);
const pool = await amm_1.default.create(provider.connection, poolAddress);
let inTokenMint = swapAtoB ? poolState.tokenAMint : poolState.tokenBMint;
let swapQuote = pool.getSwapQuote(inTokenMint, swapAmount, 100);
console.log("🚀 ~ swapQuote:", swapQuote);
console.log("SwapInAmount %s swapOutAmount %s", swapQuote.swapInAmount.toString(), swapQuote.swapOutAmount.toString());
}
async function main() {
await swapQuote(new web3_js_1.PublicKey("5yuefgbJJpmFNK2iiYbLSpv1aZXq7F9AUKkZKErTYCvs"), new bn_js_1.default(10_000_000_000), true);
}
main();
//# sourceMappingURL=swap_quote.js.map