Skip to content

Instantly share code, notes, and snippets.

@ether-wan
Created March 17, 2025 16:24
Show Gist options
  • Select an option

  • Save ether-wan/f615a0ab41213c716bc759cb6876d179 to your computer and use it in GitHub Desktop.

Select an option

Save ether-wan/f615a0ab41213c716bc759cb6876d179 to your computer and use it in GitHub Desktop.
[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"},{"internalType":"address","name":"_feeWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"provider","type":"address","indexed":true},{"internalType":"uint256","name":"tokenAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"taraAmount","type":"uint256","indexed":false}],"type":"event","name":"LiquidityAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address","indexed":true},{"internalType":"address","name":"router","type":"address","indexed":true},{"internalType":"address","name":"pair","type":"address","indexed":true},{"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","indexed":false}],"type":"event","name":"listed","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address","indexed":true},{"internalType":"address","name":"funContract","type":"address","indexed":true},{"internalType":"uint256","name":"inAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"outAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"reserveTARA","type":"uint256","indexed":false},{"internalType":"uint256","name":"reserveTokens","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false},{"internalType":"string","name":"tradeType","type":"string","indexed":false}],"type":"event","name":"tradeCall","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASIS_POINTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LPManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_deployer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addDeployer"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"allowedDeployers","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_funToken","type":"address"},{"internalType":"uint256","name":"_minTokens","type":"uint256"},{"internalType":"address","name":"_affiliate","type":"address"}],"stateMutability":"payable","type":"function","name":"buyTokens"},{"inputs":[{"internalType":"address","name":"_funToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"checkMaxBuyPerWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"emergencyWithdrawTARA"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"emergencyWithdrawToken"},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_funToken","type":"address"},{"internalType":"uint256","name":"_amountIn","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAmountOutTARA","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_funToken","type":"address"},{"internalType":"uint256","name":"_amountIn","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAmountOutTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_funToken","type":"address"}],"stateMutability":"view","type":"function","name":"getBaseToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_funToken","type":"address"}],"stateMutability":"view","type":"function","name":"getCurrentCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_funToken","type":"address"}],"stateMutability":"view","type":"function","name":"getFuntokenPool","outputs":[{"internalType":"struct FunPool.FunTokenPool","name":"","type":"tuple","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"},{"internalType":"struct FunPool.FunTokenPoolData","name":"pool","type":"tuple","components":[{"internalType":"uint256","name":"reserveTokens","type":"uint256"},{"internalType":"uint256","name":"reserveTARA","type":"uint256"},{"internalType":"uint256","name":"volume","type":"uint256"},{"internalType":"uint256","name":"listThreshold","type":"uint256"},{"internalType":"uint256","name":"initialReserveTARA","type":"uint256"},{"internalType":"uint256","name":"maxBuyPerWallet","type":"uint256"},{"internalType":"bool","name":"tradeActive","type":"bool"},{"internalType":"bool","name":"royalemitted","type":"bool"}]}]}]},{"inputs":[{"internalType":"address[]","name":"_funTokens","type":"address[]"}],"stateMutability":"view","type":"function","name":"getFuntokenPools","outputs":[{"internalType":"struct FunPool.FunTokenPool[]","name":"","type":"tuple[]","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"},{"internalType":"struct FunPool.FunTokenPoolData","name":"pool","type":"tuple","components":[{"internalType":"uint256","name":"reserveTokens","type":"uint256"},{"internalType":"uint256","name":"reserveTARA","type":"uint256"},{"internalType":"uint256","name":"volume","type":"uint256"},{"internalType":"uint256","name":"listThreshold","type":"uint256"},{"internalType":"uint256","name":"initialReserveTARA","type":"uint256"},{"internalType":"uint256","name":"maxBuyPerWallet","type":"uint256"},{"internalType":"bool","name":"tradeActive","type":"bool"},{"internalType":"bool","name":"royalemitted","type":"bool"}]}]}]},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"stateMutability":"view","type":"function","name":"getUserFuntokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string[2]","name":"_name_symbol","type":"string[2]"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256[2]","name":"listThreshold_initReserveTARA","type":"uint256[2]"},{"internalType":"uint256","name":"_maxBuyPerWallet","type":"uint256"}],"stateMutability":"payable","type":"function","name":"initFun","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"oracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"positionManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_deployer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeDeployer"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"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"}],"stateMutability":"nonpayable","type":"function","name":"sellTokens"},{"inputs":[{"internalType":"address","name":"_newFactory","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFactory"},{"inputs":[{"internalType":"address","name":"_newfeeWallet","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFeeWallet"},{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setImplementation"},{"inputs":[{"internalType":"address","name":"_newLPManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setLPManager"},{"inputs":[{"internalType":"address","name":"_newPositionManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPositionManager"},{"inputs":[{"internalType":"address","name":"_newRouter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRouter"},{"inputs":[{"internalType":"address","name":"_newStableAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStableAddress"},{"inputs":[{"internalType":"uint24","name":"_newuniswapPoolFee","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"setUniswapPoolFee"},{"inputs":[{"internalType":"address","name":"_newwtara","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setWTARA"},{"inputs":[],"stateMutability":"view","type":"function","name":"stable","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","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"},{"internalType":"struct FunPool.FunTokenPoolData","name":"pool","type":"tuple","components":[{"internalType":"uint256","name":"reserveTokens","type":"uint256"},{"internalType":"uint256","name":"reserveTARA","type":"uint256"},{"internalType":"uint256","name":"volume","type":"uint256"},{"internalType":"uint256","name":"listThreshold","type":"uint256"},{"internalType":"uint256","name":"initialReserveTARA","type":"uint256"},{"internalType":"uint256","name":"maxBuyPerWallet","type":"uint256"},{"internalType":"bool","name":"tradeActive","type":"bool"},{"internalType":"bool","name":"royalemitted","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"uniswapPoolFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"userFunTokens","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wtara","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}]
import { createPublicClient, fallback, http } from "viem";
import { taraxa } from 'viem/chains';
import poolABI from "./pool-abi.json";
const blockchainClient: any = createPublicClient({
chain: taraxa,
transport: fallback([
http(`https://841.rpc.thirdweb.com/THIRDWEB_SECRET`),
], { rank : true }),
batch: {
multicall: true
},
pollingInterval: 500
});
export const poolSC = {
address: "0x10e8fCE09e9c1F990F9452853d8dBc0cA9c39B0a",
abi: poolABI
};
const watchTradeCallEvents = async (
client: any
) => {
const startWatching = async () => {
try {
client.watchContractEvent({
address: poolSC.address,
abi: poolSC.abi,
eventName: 'tradeCall',
onLogs: async (logs: any) => {
try {
console.log("[TradeCall] event", logs);
// here ok Trade event well received
// ...
} catch (error) {
console.error('Error processing tradeCall event:', error);
}
},
onError: (error:any) => {
console.error('Error in [TradeCall] watcher:', error);
},
});
console.log('[TradeCall] watcher started successfully');
} catch (error) {
console.error('Error starting [TradeCall] watcher:', error);
}
};
await startWatching();
};
watchTradeCallEvents(blockchainClient);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment