Using our ABIs to Build Your Own Telegram Bots

Welcome to the Dx.fun end-user guide on using our ABI (Application Binary Interface) to build your own Telegram bots. This guide will help you understand how to set up your own bot to monitor and notify you of important token-related events on the blockchain.

What is the Event Tracker ABI?

The Event Tracker is a set of predefined events and functions that allow you to track activities such as token creation, buying, selling, and listing on Dx.fun. By using this ABI, you can create a Telegram bot that provides real-time updates on these activities. The following is the JSON file to our Event Tracker ABI:

Event Tracker ABI
[
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_funStorage",
            "type":"address"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"constructor"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"previousOwner",
            "type":"address"
         }
      ],
      "name":"OwnershipRenounced",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"previousOwner",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"newOwner",
            "type":"address"
         }
      ],
      "name":"OwnershipTransferred",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"buyer",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"funContract",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"buyAmount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"tokenReceived",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"index",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"timestamp",
            "type":"uint256"
         }
      ],
      "name":"buyCall",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"creator",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"funContract",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"tokenAddress",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"string",
            "name":"name",
            "type":"string"
         },
         {
            "indexed":false,
            "internalType":"string",
            "name":"symbol",
            "type":"string"
         },
         {
            "indexed":false,
            "internalType":"string",
            "name":"data",
            "type":"string"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"totalSupply",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"initialReserve",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"timestamp",
            "type":"uint256"
         }
      ],
      "name":"funCreated",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"user",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"tokenAddress",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"router",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"liquidityAmount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"tokenAmount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"time",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"totalVolume",
            "type":"uint256"
         }
      ],
      "name":"listed",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"seller",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"funContract",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"sellAmount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"nativeReceived",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"index",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"timestamp",
            "type":"uint256"
         }
      ],
      "name":"sellCall",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"caller",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"funContract",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"outAmount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"inAmount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"index",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"timestamp",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"string",
            "name":"tradeType",
            "type":"string"
         }
      ],
      "name":"tradeCall",
      "type":"event"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newDeployer",
            "type":"address"
         }
      ],
      "name":"addDeployer",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_buyer",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_funContract",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"_buyAmount",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"_tokenRecieved",
            "type":"uint256"
         }
      ],
      "name":"buyEvent",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"buyEventCount",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"creator",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"funContract",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"tokenAddress",
            "type":"address"
         },
         {
            "internalType":"string",
            "name":"name",
            "type":"string"
         },
         {
            "internalType":"string",
            "name":"symbol",
            "type":"string"
         },
         {
            "internalType":"string",
            "name":"data",
            "type":"string"
         },
         {
            "internalType":"uint256",
            "name":"totalSupply",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"initialReserve",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"timestamp",
            "type":"uint256"
         }
      ],
      "name":"createFunEvent",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"funContractCreatedByDeployer",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"funContractDeployer",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"funContractIndex",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"funRegistry",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"user",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"tokenAddress",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"router",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"liquidityAmount",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"tokenAmount",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"_time",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"totalVolume",
            "type":"uint256"
         }
      ],
      "name":"listEvent",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"owner",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_deployer",
            "type":"address"
         }
      ],
      "name":"removeDeployer",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"renounceOwnership",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_seller",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_funContract",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"_sellAmount",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"_nativeRecieved",
            "type":"uint256"
         }
      ],
      "name":"sellEvent",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"sellEventCount",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newOwner",
            "type":"address"
         }
      ],
      "name":"transferOwnership",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   }
]

What is the Fun Pool ABI?

The Fun Pool handles the creation, management, and trading of tokens. Automated Trading Bots can use buyTokens and sellTokens functions to automate trading actions based on specific conditions. The following is the JSON file to our Fun Contract ABI:

Fun Pool ABI
[
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_implementation",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_feeContract",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_lpLockDeployer",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_stableAddress",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_eventTracker",
            "type":"address"
         },
         {
            "internalType":"uint16",
            "name":"_feePer",
            "type":"uint16"
         }
      ],
      "stateMutability":"payable",
      "type":"constructor"
   },
   {
      "inputs":[
         
      ],
      "name":"FailedDeployment",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"balance",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"needed",
            "type":"uint256"
         }
      ],
      "name":"InsufficientBalance",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ReentrancyGuardReentrantCall",
      "type":"error"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"provider",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"tokenAmount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"ethAmount",
            "type":"uint256"
         }
      ],
      "name":"LiquidityAdded",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"previousOwner",
            "type":"address"
         }
      ],
      "name":"OwnershipRenounced",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"previousOwner",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"newOwner",
            "type":"address"
         }
      ],
      "name":"OwnershipTransferred",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"user",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"amountIn",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"amountOut",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"_time",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"reserveEth",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"reserveTokens",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"totalVolume",
            "type":"uint256"
         }
      ],
      "name":"bought",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"user",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"amountIn",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"amountOut",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"_time",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"reserveEth",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"reserveTokens",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"string",
            "name":"tradeType",
            "type":"string"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"totalVolume",
            "type":"uint256"
         }
      ],
      "name":"funTradeCall",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"user",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"tokenAddress",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"router",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"liquidityAmount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"tokenAmount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"_time",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"totalVolume",
            "type":"uint256"
         }
      ],
      "name":"listed",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"user",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"amountIn",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"amountOut",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"_time",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"reserveEth",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"reserveTokens",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"totalVolume",
            "type":"uint256"
         }
      ],
      "name":"sold",
      "type":"event"
   },
   {
      "inputs":[
         
      ],
      "name":"BASIS_POINTS",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"DEAD",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"HUNDRED",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_deployer",
            "type":"address"
         }
      ],
      "name":"addDeployer",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"allowedDeployers",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"funToken",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"minTokens",
            "type":"uint256"
         },
         {
            "internalType":"address",
            "name":"_affiliate",
            "type":"address"
         }
      ],
      "name":"buyTokens",
      "outputs":[
         
      ],
      "stateMutability":"payable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"funToken",
            "type":"address"
         },
         {
            "internalType":"uint8",
            "name":"_newNativePer",
            "type":"uint8"
         }
      ],
      "name":"changeNativePer",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"string[2]",
            "name":"_name_symbol",
            "type":"string[2]"
         },
         {
            "internalType":"uint256",
            "name":"_totalSupply",
            "type":"uint256"
         },
         {
            "internalType":"address",
            "name":"_creator",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_baseToken",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_router",
            "type":"address"
         },
         {
            "internalType":"uint256[2]",
            "name":"listThreshold_initReserveEth",
            "type":"uint256[2]"
         },
         {
            "internalType":"bool",
            "name":"lpBurn",
            "type":"bool"
         }
      ],
      "name":"createFun",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"payable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"eventTracker",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"feeContract",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"feePer",
      "outputs":[
         {
            "internalType":"uint16",
            "name":"",
            "type":"uint16"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"funToken",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"amountIn",
            "type":"uint256"
         }
      ],
      "name":"getAmountOutETH",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"amountOut",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"funToken",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"amountIn",
            "type":"uint256"
         }
      ],
      "name":"getAmountOutTokens",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"amountOut",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"funToken",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_tokenAddress",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"_ethIN",
            "type":"uint256"
         }
      ],
      "name":"getAmountsMinToken",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"funToken",
            "type":"address"
         }
      ],
      "name":"getBaseToken",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"funToken",
            "type":"address"
         }
      ],
      "name":"getCurrentCap",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"funToken",
            "type":"address"
         }
      ],
      "name":"getFuntokenPool",
      "outputs":[
         {
            "components":[
               {
                  "internalType":"address",
                  "name":"creator",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"token",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"baseToken",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"router",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"lockerAddress",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"storedLPAddress",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"deployer",
                  "type":"address"
               },
               {
                  "components":[
                     {
                        "internalType":"uint256",
                        "name":"reserveTokens",
                        "type":"uint256"
                     },
                     {
                        "internalType":"uint256",
                        "name":"reserveETH",
                        "type":"uint256"
                     },
                     {
                        "internalType":"uint256",
                        "name":"volume",
                        "type":"uint256"
                     },
                     {
                        "internalType":"uint256",
                        "name":"listThreshold",
                        "type":"uint256"
                     },
                     {
                        "internalType":"uint256",
                        "name":"initialReserveEth",
                        "type":"uint256"
                     },
                     {
                        "internalType":"uint8",
                        "name":"nativePer",
                        "type":"uint8"
                     },
                     {
                        "internalType":"bool",
                        "name":"tradeActive",
                        "type":"bool"
                     },
                     {
                        "internalType":"bool",
                        "name":"lpBurn",
                        "type":"bool"
                     },
                     {
                        "internalType":"bool",
                        "name":"royalemitted",
                        "type":"bool"
                     }
                  ],
                  "internalType":"struct FunPool.FunTokenPoolData",
                  "name":"pool",
                  "type":"tuple"
               }
            ],
            "internalType":"struct FunPool.FunTokenPool",
            "name":"",
            "type":"tuple"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address[]",
            "name":"funTokens",
            "type":"address[]"
         }
      ],
      "name":"getFuntokenPools",
      "outputs":[
         {
            "components":[
               {
                  "internalType":"address",
                  "name":"creator",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"token",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"baseToken",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"router",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"lockerAddress",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"storedLPAddress",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"deployer",
                  "type":"address"
               },
               {
                  "components":[
                     {
                        "internalType":"uint256",
                        "name":"reserveTokens",
                        "type":"uint256"
                     },
                     {
                        "internalType":"uint256",
                        "name":"reserveETH",
                        "type":"uint256"
                     },
                     {
                        "internalType":"uint256",
                        "name":"volume",
                        "type":"uint256"
                     },
                     {
                        "internalType":"uint256",
                        "name":"listThreshold",
                        "type":"uint256"
                     },
                     {
                        "internalType":"uint256",
                        "name":"initialReserveEth",
                        "type":"uint256"
                     },
                     {
                        "internalType":"uint8",
                        "name":"nativePer",
                        "type":"uint8"
                     },
                     {
                        "internalType":"bool",
                        "name":"tradeActive",
                        "type":"bool"
                     },
                     {
                        "internalType":"bool",
                        "name":"lpBurn",
                        "type":"bool"
                     },
                     {
                        "internalType":"bool",
                        "name":"royalemitted",
                        "type":"bool"
                     }
                  ],
                  "internalType":"struct FunPool.FunTokenPoolData",
                  "name":"pool",
                  "type":"tuple"
               }
            ],
            "internalType":"struct FunPool.FunTokenPool[]",
            "name":"",
            "type":"tuple[]"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"user",
            "type":"address"
         }
      ],
      "name":"getUserFuntokens",
      "outputs":[
         {
            "internalType":"address[]",
            "name":"",
            "type":"address[]"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"funToken",
            "type":"address"
         }
      ],
      "name":"getWrapAddr",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"implementation",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"lpLockDeployer",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"owner",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_deployer",
            "type":"address"
         }
      ],
      "name":"removeDeployer",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"renounceOwnership",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"funToken",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"tokenAmount",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"minEth",
            "type":"uint256"
         },
         {
            "internalType":"address",
            "name":"_affiliate",
            "type":"address"
         }
      ],
      "name":"sellTokens",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         },
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"stableAddress",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"tokenPools",
      "outputs":[
         {
            "internalType":"address",
            "name":"creator",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"token",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"baseToken",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"router",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"lockerAddress",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"storedLPAddress",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"deployer",
            "type":"address"
         },
         {
            "components":[
               {
                  "internalType":"uint256",
                  "name":"reserveTokens",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"reserveETH",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"volume",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"listThreshold",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"initialReserveEth",
                  "type":"uint256"
               },
               {
                  "internalType":"uint8",
                  "name":"nativePer",
                  "type":"uint8"
               },
               {
                  "internalType":"bool",
                  "name":"tradeActive",
                  "type":"bool"
               },
               {
                  "internalType":"bool",
                  "name":"lpBurn",
                  "type":"bool"
               },
               {
                  "internalType":"bool",
                  "name":"royalemitted",
                  "type":"bool"
               }
            ],
            "internalType":"struct FunPool.FunTokenPoolData",
            "name":"pool",
            "type":"tuple"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newOwner",
            "type":"address"
         }
      ],
      "name":"transferOwnership",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newEventTracker",
            "type":"address"
         }
      ],
      "name":"updateEventTracker",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newFeeContract",
            "type":"address"
         }
      ],
      "name":"updateFeeContract",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_implementation",
            "type":"address"
         }
      ],
      "name":"updateImplementation",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newLpLockDeployer",
            "type":"address"
         }
      ],
      "name":"updateLpLockDeployer",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newStableAddress",
            "type":"address"
         }
      ],
      "name":"updateStableAddress",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint16",
            "name":"_newFeePer",
            "type":"uint16"
         }
      ],
      "name":"updateteamFeeper",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"userFunTokens",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"voter",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   }
]

What is the Fun Storage ABI?

The Fun Storage contract acts as a registry and storage system for all Fun Contracts deployed. By using this ABI, bots can access the registry to get information about all deployed Fun Contracts that includes up-to-date information on total supply, initial liquidity, owner details, etc. The following is the JSON file Fun Storage ABI:

Fun Storage ABI
[
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"previousOwner",
            "type":"address"
         }
      ],
      "name":"OwnershipRenounced",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"previousOwner",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"newOwner",
            "type":"address"
         }
      ],
      "name":"OwnershipTransferred",
      "type":"event"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_deployer",
            "type":"address"
         }
      ],
      "name":"addDeployer",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_funOwner",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_funAddress",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_tokenAddress",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_routerAddress",
            "type":"address"
         },
         {
            "internalType":"string",
            "name":"_name",
            "type":"string"
         },
         {
            "internalType":"string",
            "name":"_symbol",
            "type":"string"
         },
         {
            "internalType":"string",
            "name":"_data",
            "type":"string"
         },
         {
            "internalType":"uint256",
            "name":"_totalSupply",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"_initialLiquidity",
            "type":"uint256"
         }
      ],
      "name":"addFunContract",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"deployer",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"emergencyWithdraw",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"funContractToIndex",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"funContractToOwner",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"funContractToOwnerCount",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"funContracts",
      "outputs":[
         {
            "internalType":"address",
            "name":"funAddress",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"tokenAddress",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"funOwner",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"router",
            "type":"address"
         },
         {
            "internalType":"string",
            "name":"name",
            "type":"string"
         },
         {
            "internalType":"string",
            "name":"symbol",
            "type":"string"
         },
         {
            "internalType":"string",
            "name":"data",
            "type":"string"
         },
         {
            "internalType":"uint256",
            "name":"totalSupply",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"initialLiquidity",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"createdOn",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"funCount",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"index",
            "type":"uint256"
         }
      ],
      "name":"getFunContract",
      "outputs":[
         {
            "components":[
               {
                  "internalType":"address",
                  "name":"funAddress",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"tokenAddress",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"funOwner",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"router",
                  "type":"address"
               },
               {
                  "internalType":"string",
                  "name":"name",
                  "type":"string"
               },
               {
                  "internalType":"string",
                  "name":"symbol",
                  "type":"string"
               },
               {
                  "internalType":"string",
                  "name":"data",
                  "type":"string"
               },
               {
                  "internalType":"uint256",
                  "name":"totalSupply",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"initialLiquidity",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"createdOn",
                  "type":"uint256"
               }
            ],
            "internalType":"struct FunStorage.FunDetails",
            "name":"",
            "type":"tuple"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_funContract",
            "type":"address"
         }
      ],
      "name":"getFunContractIndex",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_funContract",
            "type":"address"
         }
      ],
      "name":"getFunContractOwner",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"getTotalContracts",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"owner",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"ownerIndexToStorageIndex",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"ownerToFunCount",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_deployer",
            "type":"address"
         }
      ],
      "name":"removeDeployer",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"renounceOwnership",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"tokenContractToIndex",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newOwner",
            "type":"address"
         }
      ],
      "name":"transferOwnership",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_funOwner",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"_ownerFunIndex",
            "type":"uint256"
         },
         {
            "internalType":"string",
            "name":"_data",
            "type":"string"
         }
      ],
      "name":"updateData",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"voter",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   }
]

What is the Fun Deployer ABI?

The Fun Deployer contract is used for Fun Contracts to be deployed. The following is the JSON file Fun Deployer ABI:

Fun Deployer ABI
[
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_funPool",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_creationFeeContract",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_funStorage",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_eventTracker",
            "type":"address"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"constructor"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"previousOwner",
            "type":"address"
         }
      ],
      "name":"OwnershipRenounced",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"previousOwner",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"newOwner",
            "type":"address"
         }
      ],
      "name":"OwnershipTransferred",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"creator",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"funContract",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"tokenAddress",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"string",
            "name":"name",
            "type":"string"
         },
         {
            "indexed":false,
            "internalType":"string",
            "name":"symbol",
            "type":"string"
         },
         {
            "indexed":false,
            "internalType":"string",
            "name":"data",
            "type":"string"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"totalSupply",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"initialReserve",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"timestamp",
            "type":"uint256"
         }
      ],
      "name":"funCreated",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"funContract",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"tokenAddress",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"router",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"address",
            "name":"baseAddress",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"liquidityAmount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"tokenAmount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"_time",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"totalVolume",
            "type":"uint256"
         }
      ],
      "name":"royal",
      "type":"event"
   },
   {
      "inputs":[
         {
            "internalType":"string",
            "name":"_name",
            "type":"string"
         },
         {
            "internalType":"string",
            "name":"_symbol",
            "type":"string"
         },
         {
            "internalType":"string",
            "name":"_data",
            "type":"string"
         },
         {
            "internalType":"uint256",
            "name":"_totalSupply",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"_liquidityETHAmount",
            "type":"uint256"
         },
         {
            "internalType":"address",
            "name":"_baseToken",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_router",
            "type":"address"
         },
         {
            "internalType":"bool",
            "name":"_antiSnipe",
            "type":"bool"
         },
         {
            "internalType":"uint256",
            "name":"_amountAntiSnipe",
            "type":"uint256"
         }
      ],
      "name":"CreateFun",
      "outputs":[
         
      ],
      "stateMutability":"payable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_baseTokenAddress",
            "type":"address"
         }
      ],
      "name":"addBaseToken",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_routerAddress",
            "type":"address"
         }
      ],
      "name":"addRouter",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"affiliatePer",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"affiliateSpecial",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"affiliateSpecialPer",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"antiSnipePer",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"baseAdded",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"baseCount",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"baseStorage",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"baseValid",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"creationFeeDistributionContract",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_baseTokenAddress",
            "type":"address"
         }
      ],
      "name":"disableBaseToken",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_routerAddress",
            "type":"address"
         }
      ],
      "name":"disableRouter",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"emergencyWithdraw",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"funContract",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"tokenAddress",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"router",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"baseAddress",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"liquidityAmount",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"tokenAmount",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"_time",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"totalVolume",
            "type":"uint256"
         }
      ],
      "name":"emitRoyal",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_baseTokenAddress",
            "type":"address"
         }
      ],
      "name":"enableBasetoken",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_routerAddress",
            "type":"address"
         }
      ],
      "name":"enableRouter",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"eventTracker",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"funPool",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"funStorage",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_affiliateAddrs",
            "type":"address"
         }
      ],
      "name":"getAffiliatePer",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"getOwnerPer",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_affiliateAddrs",
            "type":"address"
         }
      ],
      "name":"getSpecialAffiliateValidity",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"initialReserveEth",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"listThreshold",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"lpBurn",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"owner",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"ownerFeePer",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"renounceOwnership",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"routerAdded",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"routerCount",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"routerStorage",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"routerValid",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bool",
            "name":"_state",
            "type":"bool"
         }
      ],
      "name":"stateChangeLPBurn",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bool",
            "name":"_lockState",
            "type":"bool"
         }
      ],
      "name":"stateChangeSupplyLock",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"supplyLock",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"supplyValue",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"teamFee",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"teamFeePer",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newOwner",
            "type":"address"
         }
      ],
      "name":"transferOwnership",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"_newAffPer",
            "type":"uint256"
         }
      ],
      "name":"updateAffiliatePerBaseTenK",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"_newAntiSnipePer",
            "type":"uint256"
         }
      ],
      "name":"updateAntiSnipePer",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newCreationFeeContract",
            "type":"address"
         }
      ],
      "name":"updateCreationFeeContract",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newEventContract",
            "type":"address"
         }
      ],
      "name":"updateEventContract",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"_ownerFunCount",
            "type":"uint256"
         },
         {
            "internalType":"string",
            "name":"_newData",
            "type":"string"
         }
      ],
      "name":"updateFunData",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newfunPool",
            "type":"address"
         }
      ],
      "name":"updateFunPool",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"_newVal",
            "type":"uint256"
         }
      ],
      "name":"updateInitResEthVal",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"_newListThreshold",
            "type":"uint256"
         }
      ],
      "name":"updateListThreshold",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_affiliateAddrs",
            "type":"address"
         },
         {
            "internalType":"bool",
            "name":"_status",
            "type":"bool"
         },
         {
            "internalType":"uint256",
            "name":"_specialPer",
            "type":"uint256"
         }
      ],
      "name":"updateSpecialAffiliateData",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_newStorageContract",
            "type":"address"
         }
      ],
      "name":"updateStorageContract",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"_newSupplyVal",
            "type":"uint256"
         }
      ],
      "name":"updateSupplyValue",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"_newTeamFeeInWei",
            "type":"uint256"
         }
      ],
      "name":"updateTeamFee",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"_newOwnerFeeBaseTenK",
            "type":"uint256"
         }
      ],
      "name":"updateownerFee",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"_newFeePer",
            "type":"uint256"
         }
      ],
      "name":"updateteamFeeper",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"voter",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   }
]

Contract Addresses

NetworkFun DeployerFun PoolFun StorageEvent Tracker

Base

0xCDF72821AF1e78Af720E506744195B622ffbeb89

0xFaE1701bC57FC694F836F0704642E15E43C88d3A

0x41d9138FEace47B22Afce190Fd118b0f5eeEA62d

0x4bEb2Fd73a0eDd5D911965d057276a757E1be9F1

BSC

0xCDF72821AF1e78Af720E506744195B622ffbeb89

0xFaE1701bC57FC694F836F0704642E15E43C88d3A

0x41d9138FEace47B22Afce190Fd118b0f5eeEA62d

0x4bEb2Fd73a0eDd5D911965d057276a757E1be9F1

Ethereum

0xCDF72821AF1e78Af720E506744195B622ffbeb89

0xFaE1701bC57FC694F836F0704642E15E43C88d3A

0x41d9138FEace47B22Afce190Fd118b0f5eeEA62d

0x4bEb2Fd73a0eDd5D911965d057276a757E1be9F1

Arbitrum

0xCDF72821AF1e78Af720E506744195B622ffbeb89

0xFaE1701bC57FC694F836F0704642E15E43C88d3A

0x41d9138FEace47B22Afce190Fd118b0f5eeEA62d

0x4bEb2Fd73a0eDd5D911965d057276a757E1be9F1

Step-by-Step Guide

Step 1: Set Up Your Environment

Before you start, make sure you have the necessary tools installed on your computer:

  • Node.js

  • Web3.js

  • Telegram Bot API library

You can install these tools by running the following commands in your terminal:

npm install web3 node-telegram-bot-api

Step 2: Create a Telegram Bot

  1. Create a bot on Telegram using the BotFather and obtain your bot token. Follow this guide if you need help.

  2. Set up your bot to start listening for events.

Step 3: Initialize Your Project

Create a new JavaScript file, e.g., bot.js, and initialize your project with the following code:

const Web3 = require('web3');
const TelegramBot = require('node-telegram-bot-api');

// Initialize Web3 and connect to the blockchain
const web3 = new Web3('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID');

// Initialize the Telegram bot
const bot = new TelegramBot('YOUR_TELEGRAM_BOT_TOKEN', { polling: true });

// Contract address and ABI
const contractAddress = 'YOUR_CONTRACT_ADDRESS';
const ABI = [ /* ABI from above */ ];

// Create contract instance
const contract = new web3.eth.Contract(ABI, contractAddress);

Replace YOUR_INFURA_PROJECT_ID, YOUR_TELEGRAM_BOT_TOKEN, and YOUR_CONTRACT_ADDRESS with your actual Infura project ID, Telegram bot token, and contract address.

Step 4: Listen for Events

Now, let's set up the bot to listen for specific events and send notifications to your Telegram chat.

Listening for Buy Events

contract.events.buyCall({
  fromBlock: 'latest'
})
.on('data', (event) => {
  const { buyer, funContract, buyAmount, tokenReceived, timestamp } = event.returnValues;
  const message = `New buy transaction!
  Buyer: ${buyer}
  Contract: ${funContract}
  Amount Spent: ${web3.utils.fromWei(buyAmount, 'ether')} ETH
  Tokens Received: ${tokenReceived}
  Time: ${new Date(timestamp * 1000).toLocaleString()}`;
  
  bot.sendMessage('YOUR_TELEGRAM_CHAT_ID', message);
})
.on('error', console.error);

Listening for Sell Events

contract.events.sellCall({
  fromBlock: 'latest'
})
.on('data', (event) => {
  const { seller, funContract, sellAmount, nativeReceived, timestamp } = event.returnValues;
  const message = `New sell transaction!
  Seller: ${seller}
  Contract: ${funContract}
  Amount Sold: ${sellAmount}
  ETH Received: ${web3.utils.fromWei(nativeReceived, 'ether')}
  Time: ${new Date(timestamp * 1000).toLocaleString()}`;
  
  bot.sendMessage('YOUR_TELEGRAM_CHAT_ID', message);
})
.on('error', console.error);

Replace YOUR_TELEGRAM_CHAT_ID with your actual Telegram chat ID.

Step 5: Deploy Your Bot

Once your bot is set up and configured to listen for events, you can deploy it to a server to keep it running continuously. This ensures you receive real-time notifications about token activities.

Benefits of Using Dx.fun’s ABIs

  • Real-Time Notifications: Receive instant notifications about important events such as token buys, sells, creation, and listings.

  • Transparency: All events are tracked on the blockchain, ensuring accuracy and trust.

  • Automation: Automatically receive notifications without manual monitoring.

  • Enhanced Trading Capabilities: Create automated trading bots that execute trades based on predefined conditions and access comprehensive details about each trade enabling better analysis and decision-making.

  • Centralized Registry and Information Access: Maintain a centralized registry of all Fun Contracts, making it easy to manage and access information about all deployed contracts.

  • Customization: Build a bot that suits your specific needs, whether for personal use or to engage a community.

By following this guide, you can create powerful and engaging Telegram bots that provide valuable real-time information about your tokens. Whether you’re a developer or a token enthusiast, using the Dx.fun Event Track ABI enables you to stay updated and connected to your blockchain activities.

Last updated