import { Filter, FilterResult } from "./pool-filters"; import { Connection } from "@solana/web3.js"; import { LiquidityPoolKeysV4 } from "@raydium-io/raydium-sdk"; import { logger } from "../helpers"; export class BurnFilter implements Filter { private cachedResult: FilterResult | undefined = undefined; constructor(private readonly connection: Connection) {} async execute(poolKeys: LiquidityPoolKeysV4): Promise { if (this.cachedResult) { return this.cachedResult; } try { const amount = await this.connection.getTokenSupply(poolKeys.lpMint, this.connection.commitment); const burned = amount.value.uiAmount === 0; const result = { ok: burned, message: burned ? undefined : "Burned -> Creator didn't burn LP" }; if (result.ok) { this.cachedResult = result; } return result; } catch (e: any) { if (e.code == -32602) { return { ok: true }; } logger.error({ mint: poolKeys.baseMint }, `Failed to check if LP is burned`); } return { ok: false, message: "Failed to check if LP is burned" }; } }