UNPKG

@candy-swap/candy-sdk

Version:

Candy SDK for Solana

46 lines (45 loc) 2.62 kB
"use strict"; 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 anchor_1 = require("@coral-xyz/anchor"); const index_1 = __importDefault(require("./index")); const bytes_1 = require("@coral-xyz/anchor/dist/cjs/utils/bytes"); const dotenv_1 = __importDefault(require("dotenv")); dotenv_1.default.config(); async function main() { // Business flow: Monitor pool LaunchEvent, then trigger the following process // Extract internal liquidity to specified account, default to signer account const connection = new web3_js_1.Connection("https://devnet.helius-rpc.com/?api-key=e6a535c8-ab44-42c7-b60c-02a36d2fe73d", "confirmed"); const secretKey = process.env.SECRET_KEY; if (!secretKey) { throw new Error("SECRET_KEY is required in environment variables"); } const keypair = web3_js_1.Keypair.fromSecretKey(bytes_1.bs58.decode(secretKey)); const provider = new anchor_1.AnchorProvider(connection, new anchor_1.Wallet(keypair), { commitment: "confirmed" }); const mint = new web3_js_1.PublicKey("FtNNoayczDPYbGsiNyVzhpNnzdG2dd2334akPMjU12yG"); const solBalanceBefore = await connection.getBalance(keypair.publicKey); const tokenBalanceBefore = await connection.getTokenAccountBalance(mint); const programId = new web3_js_1.PublicKey("FhMqMYk6qy76gLC6ZnDahu25783M7jP47UiXLtz7qJdH"); const sdk = new index_1.default(programId, provider); await sdk.ammPrepare(mint); const solBalanceAfter = await connection.getBalance(keypair.publicKey); const tokenBalanceAfter = await connection.getTokenAccountBalance(mint); console.log('solBalanceBefore', solBalanceBefore); console.log('solBalanceAfter', solBalanceAfter); console.log('tokenBalanceBefore', tokenBalanceBefore); console.log('tokenBalanceAfter', tokenBalanceAfter); // Add liquidity to Raydium external pool // const tokenAmount = new BN(tokenBalanceAfter.value.amount).sub(new BN(tokenBalanceBefore.value.amount)); // SOL amount to be added // Calculation rule: Total liquidity 85 SOL - 2 SOL - 0.3 SOL = 82.7 SOL // 2 SOL is Raydium fee, 0.3 SOL is contract fee // const fee = 300000000; // 0.3 sol // const maxAmt = 85000000000 - 2000000000 - fee; // const quoteAmount = new BN(maxAmt); // const solAmount = new BN(solBalanceAfter).sub(new BN(solBalanceBefore)); // await sdk.createCpmmPool(mint.toBase58(), tokenAmount, solAmount); } main();