# Get Pool Burn Percentage

The best way to check if a token is trying to rug your or not is to see how much <mark style="color:yellow;">liquidity</mark> is locked inside the token's pool. Whenever liquidity is added to a pool on Raydium, <mark style="color:yellow;">lpMint</mark> tokens are minted to the liquidity provider.

If anyone wants to remove the liquidity, they need the orginal minted <mark style="color:yellow;">lpMint</mark> tokens. If those lpMint tokens are <mark style="color:yellow;">burnt</mark>, then it means the liquidity is locked inside the pool and cannot be withdrawn. We can see how easy it is to fetch this info with GraphQL APIs and RPC calls.

```typescript
import { gql, GraphQLClient } from "graphql-request";
import * as solana from '@solana/web3.js';

const gqlEndpoint = `https://programs.shyft.to/v0/graphql/?api_key=YOUR-KEY`;
const rpcEndpoint = `https://rpc.shyft.to/?api_key=YOUR-KEY`

const graphQLClient = new GraphQLClient(gqlEndpoint, {
  method: `POST`,
  jsonSerializer: {
    parse: JSON.parse,
    stringify: JSON.stringify,
  },
});

const connection = new solana.Connection(rpcEndpoint);

async function queryLpMintInfo(address: string) {
  // See how we are only querying what we need
  const query = gql`
    query MyQuery ($where: Raydium_LiquidityPoolv4_bool_exp) {
  Raydium_LiquidityPoolv4(
    where: $where
  ) {
    baseMint
    lpMint
    lpReserve
  }
}`;

  const variables = {
    where: {
      pubkey: {
        _eq: address,
      },
    },
  };

  return await graphQLClient.request(query, variables);
}

/*
This is taken from Raydium's FE code
https://github.com/raydium-io/raydium-frontend/blob/572e4973656e899d04e30bfad1f528efbf79f975/src/pages/liquidity/add.tsx#L646
*/
function getBurnPercentage(lpReserve: number, actualSupply: number): number {
  const maxLpSupply = Math.max(actualSupply, (lpReserve - 1));
  const burnAmt = (maxLpSupply - actualSupply)
  console.log(`burn amt: ${burnAmt}`)
  return (burnAmt / maxLpSupply) * 100;
}

//This is Jup-Sol pool addres
const info = await queryLpMintInfo("7RJ5qmsgmvUKK5QtCLT9qHpQMegkiULppHRBNuWso12E");
const lpMint = info.Raydium_LiquidityPoolv4[0].lpMint


//Once we have the lpMint address, we need to fetch the current token supply and decimals
const parsedAccInfo = await connection.getParsedAccountInfo(new solana.PublicKey(lpMint));
const mintInfo = parsedAccInfo?.value?.data?.parsed?.info

//We divide the values based on the mint decimals
const lpReserve = info.Raydium_LiquidityPoolv4[0].lpReserve / Math.pow(10, mintInfo?.decimals)
const actualSupply = mintInfo?.supply / Math.pow(10, mintInfo?.decimals)
console.log(`lpMint: ${lpMint}, Reserve: ${lpReserve}, Actual Supply: ${actualSupply}`);

//Calculate burn percentage
const burnPct = getBurnPercentage(lpReserve, actualSupply)
console.log(`${burnPct} LP burned`);


```

In order to find LP burned for a token, instead of fetching by pool's <mark style="color:yellow;">pubkey</mark> you can fetch pools by <mark style="color:yellow;">baseMint,</mark> and then follow the above outlined approach.

[Get Pools By Token Address](/solana-indexers/case-studies/raydium/get-pools-by-token-address.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.shyft.to/solana-indexers/case-studies/raydium/get-pool-burn-percentage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
