orca-clmm-agent
Version:
Orca Whirlpool clmm library for automated position management
48 lines (47 loc) • 2.54 kB
JavaScript
;
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));