ABI
Human-readable ABIs of DropLaunchpad and DropHook, for viem and other clients.
These ABIs cover the public functions, events, and errors that integrations use. The guides import them from ./abi.
They leave out functions that only PoolManager and DropHook can call.
import { parseAbi } from "viem";
export const launchpadAbi = parseAbi([
"struct PoolRequest { address quote; uint16 supplyBps; int24 initialTick; }",
"struct DevBuy { uint128 amountIn; address recipient; }",
"struct LaunchParams { string name; string symbol; string contractURI; bytes32 salt; uint32 partnerId; address tokenDeployer; address creatorFeeRecipient; PoolRequest[] pools; DevBuy devBuy; }",
"struct PoolKey { address currency0; address currency1; uint24 fee; int24 tickSpacing; address hooks; }",
// Launch
"function launchDrop(LaunchParams params) payable returns (address token)",
// Fees
"function collectFees(address quote, address token) returns (uint256 quoteAmount, uint256 tokenAmount)",
"function claimFees(address[] assets, address recipient) returns (uint256[] amounts)",
"function collectAndClaimFees(address quote, address token, address recipient) returns (uint256 quoteAmount, uint256 tokenAmount)",
"function setCreatorFeeRecipient(address token, address newRecipient)",
// Partners
"function registerPartner(address feeRecipient, uint16 shareBps, uint24 lpFee) returns (uint32 partnerId)",
"function setPartnerFeeRecipient(uint32 partnerId, address newRecipient)",
// Reads
"function poolManager() view returns (address)",
"function hook() view returns (address)",
"function partnerCount() view returns (uint32)",
"function isTokenDeployer(address deployer) view returns (bool)",
"function partners(uint32 partnerId) view returns (address feeRecipient, uint16 shareBps, uint24 lpFee)",
"function drops(address token) view returns (address creatorFeeRecipient, uint32 partnerId, address creator, uint64 launchedAt)",
"function positions(bytes32 poolId) view returns (address token, int24 tickLower, int24 tickUpper)",
"function claimable(address recipient, address asset) view returns (uint256)",
"function poolKey(address quote, address token) view returns (PoolKey)",
// Events
"event TokenDeployerAdded(address indexed tokenDeployer)",
"event PartnerRegistered(uint32 indexed partnerId, address indexed feeRecipient, uint16 shareBps, uint24 lpFee)",
"event PartnerFeeRecipientUpdated(uint32 indexed partnerId, address indexed oldRecipient, address indexed newRecipient)",
"event DropCreated(address indexed creator, address indexed token, uint32 indexed partnerId, address tokenDeployer, address feeRecipient)",
"event DropPoolCreated(address indexed token, address indexed quote, bytes32 indexed poolId, uint16 supplyBps, uint160 sqrtPriceX96)",
"event DropDevBuy(address indexed token, address indexed recipient, uint256 quoteAmount, uint256 tokenAmount)",
"event DropPartnerFeesCollected(uint32 indexed partnerId, bytes32 indexed poolId, address indexed recipient, uint256 quoteAmount, uint256 tokenAmount)",
"event DropCreatorFeesCollected(bytes32 indexed poolId, address indexed recipient, uint256 quoteAmount, uint256 tokenAmount)",
"event FeesClaimed(address indexed recipient, address indexed asset, uint256 amount)",
"event CreatorFeeRecipientUpdated(address indexed token, address indexed oldRecipient, address indexed newRecipient)",
// Errors
"error DropLaunchpad__InvalidShare()",
"error DropLaunchpad__InvalidPools(uint256 errorCode)",
"error DropLaunchpad__InvalidSupply()",
"error DropLaunchpad__InvalidTick(uint256 errorCode)",
"error DropLaunchpad__InvalidFee()",
"error DropLaunchpad__UnknownPartner()",
"error DropLaunchpad__UnknownTokenDeployer()",
"error DropLaunchpad__UnknownPool()",
"error DropLaunchpad__NotFeeRecipient()",
"error DropLaunchpad__InvalidRecipient(uint256 errorCode)",
"error DropLaunchpad__InvalidDevBuy()",
]);
export const hookAbi = parseAbi([
"function launchpad() view returns (address)",
"function poolManager() view returns (address)",
"function collectedAt(bytes32 poolId) view returns (uint256 timestamp)",
"event DropSwap(bytes32 indexed poolId, int128 amount0, int128 amount1, uint160 sqrtPriceX96)",
"error DropHook__InvalidInitializationSender()",
"error DropHook__LiquidityLocked()",
]);Addresses
The guides also import the addresses of the chain. This file has the Base addresses. See Deployments for other chains.
export const LAUNCHPAD = "0xB194C3257be0BbF6b7AC2e3a58d1f6cbce3Be7ac";
export const HOOK = "0xa945beBB1Dd13b8366245093c144C9C946b5aa40";
export const ERC20_DEPLOYER = "0x7C117F318A90712B2A61c7Bb4c76cA12979A47Df";
export const B20_DEPLOYER = "0x73162Ca2F4A5cF10861534b470dEAD27DcB5B405";
export const USDC = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
export const BURN_ADDRESS = "0x000000000000000000000000000000000000dEaD";