import { parseAbi } from "viem";
const tokenAbi = parseAbi([
"function name() view returns (string)",
"function symbol() view returns (string)",
"function decimals() view returns (uint8)",
"function totalSupply() view returns (uint256)",
"function logo() view returns (string)",
"function description() view returns (string)",
"function socials() view returns (string twitter, string telegram, string discord, string website, string farcaster)",
"function deployer() view returns (address)",
"function pairToken() view returns (address)",
"function poolFee() view returns (uint24)",
"function liquidityPool() view returns (address)",
]);
const factoryAbi = parseAbi([
"function getLaunchedToken(address token) view returns ((address token, address deployer, address pairedToken, address pool, address positionManager, uint256 positionId, uint256 dexId, uint256 launchConfigId, uint256 restrictionsEndBlock, uint256 launchedAt, uint256 supply, bool isToken0, uint24 poolFee, bool exists, uint256 initialBuyAmount, uint256 liquidityTokenAmount, uint256 lockedTokenDust) launched)",
"function graduationStatus(address token) view returns (uint256 pairedPrincipal, uint256 threshold, bool liveGraduated, bool reachedEver)",
]);
const [name, symbol, decimals, totalSupply, logo, socials, pool, launched] =
await Promise.all([
client.readContract({ address: token, abi: tokenAbi, functionName: "name" }),
client.readContract({ address: token, abi: tokenAbi, functionName: "symbol" }),
client.readContract({ address: token, abi: tokenAbi, functionName: "decimals" }),
client.readContract({ address: token, abi: tokenAbi, functionName: "totalSupply" }),
client.readContract({ address: token, abi: tokenAbi, functionName: "logo" }),
client.readContract({ address: token, abi: tokenAbi, functionName: "socials" }),
client.readContract({ address: token, abi: tokenAbi, functionName: "liquidityPool" }),
client.readContract({
address: launchFactory,
abi: factoryAbi,
functionName: "getLaunchedToken",
args: [token],
}),
]);