@candy-swap/candy-sdk
Version:
Candy SDK for Solana
46 lines (45 loc) • 2.62 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 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();