UNPKG

orca-clmm-agent

Version:

Orca Whirlpool clmm library for automated position management

48 lines (47 loc) 2.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); //TODO: wont work since web3 package, use solana/kit instead const web3_js_1 = require("@solana/web3.js"); const spl_token_1 = require("@solana/spl-token"); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); async function findZeroBalanceAccounts() { // Load keypair const keypairPath = path_1.default.join(__dirname, "keypair.json"); const keypairData = fs_1.default.readFileSync(keypairPath, "utf-8"); const keypairBytes = Uint8Array.from(JSON.parse(keypairData)); // Get wallet address from keypair const walletAddress = "3oygBmi6XwSvMPvZz6YjQrQ8Euud1s6Lg6rJ4er3Jw9p"; // Connect to Solana const connection = new web3_js_1.Connection("https://api.mainnet-beta.solana.com", "confirmed"); console.log(`Finding token accounts for wallet: ${walletAddress}`); // Get all token accounts const tokenAccounts = await connection.getParsedTokenAccountsByOwner(new web3_js_1.PublicKey(walletAddress), { programId: spl_token_1.TOKEN_PROGRAM_ID }); console.log(`Total token accounts found: ${tokenAccounts.value.length}`); // Filter for zero balance accounts const zeroBalanceAccounts = tokenAccounts.value.filter((account) => { const amount = account.account.data.parsed.info.tokenAmount.amount; return amount === "0"; }); console.log(`\nZero balance accounts (${zeroBalanceAccounts.length}):`); if (zeroBalanceAccounts.length === 0) { console.log("No zero balance accounts found."); } else { // Display zero balance accounts with details zeroBalanceAccounts.forEach((account, index) => { const { mint, tokenAmount } = account.account.data.parsed.info; const accountAddress = account.pubkey.toString(); console.log(`\n${index + 1}. Account: ${accountAddress}`); console.log(` Mint: ${mint}`); console.log(` Balance: ${tokenAmount.uiAmount} (${tokenAmount.decimals} decimals)`); console.log(` Command to close: spl-token close ${accountAddress} --owner ${walletAddress}`); }); } console.log("\nTo close an account and reclaim rent, use:"); console.log("spl-token close <ACCOUNT_ADDRESS> --owner <WALLET_ADDRESS>"); } findZeroBalanceAccounts().catch((err) => console.error(err));