{
  "_note": "Human-readable (ethers v6) ABI fragments for HyperPad. Generated from frontend/abi.js by regen-abi.mjs — do not edit by hand. lpFeeVault is the LP fee-split vault (collect/releaseV3), NOT the buyer ClaimVault (which has no agent-facing surface).",
  "factory": [
    "function allSalesLength() view returns (uint256)",
    "function allSales(uint256) view returns (address)",
    "function creationFee() view returns (uint256)",
    "function platformFeeBps() view returns (uint256)",
    "function owner() view returns (address)",
    "function lpLocker() view returns (address)",
    "function permissionedLaunch() view returns (bool)",
    "function createSale((address,address,uint256,uint256,uint256,uint256,uint256,uint64,uint64,bytes32,uint16,uint64,uint64,address,uint16,uint256,uint64,bytes,bool,uint8,address,uint256,uint64,(uint64,uint64,uint256,uint256,uint256,bytes32)[])) payable returns (address)",
    "function createSaleWithNewToken((address,address,uint256,uint256,uint256,uint256,uint256,uint64,uint64,bytes32,uint16,uint64,uint64,address,uint16,uint256,uint64,bytes,bool,uint8,address,uint256,uint64,(uint64,uint64,uint256,uint256,uint256,bytes32)[]),(string,string,uint8,uint256,uint16,uint64,uint64,uint64,address,bytes32,address,uint32,uint256,uint64)) payable returns (address,address,address)",
    "function byoTokenEnabled() view returns (bool)",
    "function setByoTokenEnabled(bool enabled)",
    "function paused() view returns (bool)",
    "function setPaused(bool paused)",
    "function referralFeeBps() view returns (uint16)",
    "function setReferralFee(uint16 bps)",
    "event SaleCreated(address indexed sale, address indexed creator, address indexed saleToken)"
  ],
  "sale": [
    "function getSaleData() view returns ((address,address,uint256,uint256,uint256,uint256,uint256,uint64,uint64,bytes32,uint16,uint64,uint64,address,uint16,uint8,uint256,uint256,uint256,uint64,uint64,bool,bool,bool,address,uint256,uint256,bool,bool,uint8,address,uint256,uint256,uint64,uint256,bool))",
    "function getPhases() view returns ((uint64,uint64,uint256,uint256,uint256,bytes32)[])",
    "function contributed(address) view returns (uint256)",
    "function contributedUsd(address) view returns (uint256)",
    "function purchased(address) view returns (uint256)",
    "function claimed(address) view returns (uint256)",
    "function claimable(address) view returns (uint256)",
    "function tokensRequired() view returns (uint256)",
    "function buy(uint256 amount, bytes32[] proof) payable",
    "function buyWithReferral(uint256 amount, bytes32[] proof, address referrer) payable",
    "function claimReferral()",
    "function referralReserve() view returns (uint256)",
    "function referredVolume(address) view returns (uint256)",
    "function referralClaimed(address) view returns (bool)",
    "function claim()",
    "function refund()",
    "function depositTokens()",
    "function finalize()",
    "function createLiquidity()",
    "function finalizeAndCreateLiquidity()",
    "function failPostFinalize()",
    "function withdrawRaisedFunds()",
    "function withdrawUnsoldTokens()",
    "function recoverExcessSaleTokens(address to)",
    "function claimVault() view returns (address)",
    "function launchToken() view returns (address)",
    "function escaped() view returns (bool)",
    "function softCapReached() view returns (bool)",
    "function cancel()",
    "function setSoftCapReached()",
    "function endSaleEarly()",
    "function emergencyEscape(address to)",
    "function rescueToken(address token, address to)",
    "function rescueNative(address to)"
  ],
  "erc20": [
    "function symbol() view returns (string)",
    "function name() view returns (string)",
    "function decimals() view returns (uint8)",
    "function balanceOf(address) view returns (uint256)",
    "function allowance(address,address) view returns (uint256)",
    "function approve(address,uint256) returns (bool)"
  ],
  "lpFeeVault": [
    "function collect(uint256 id) returns (uint256 amount0, uint256 amount1)",
    "function releaseV3(uint256 id)",
    "function feePositions(uint256) view returns (address npm, uint256 tokenId, address token0, address token1, address platform, address project, uint16 shareBps, uint64 unlockAt, bool released)"
  ],
  "saleViewKeys": [
    "saleToken",
    "quoteToken",
    "tokensPerQuoteUnit",
    "softCap",
    "hardCap",
    "minBuy",
    "maxBuy",
    "startsAt",
    "endsAt",
    "merkleRoot",
    "tgeBps",
    "cliffDuration",
    "vestingDuration",
    "lpAdapter",
    "lpBps",
    "state",
    "totalRaised",
    "totalTokensSold",
    "saleAllocation",
    "finalizedAt",
    "claimsOpenAt",
    "deposited",
    "cancelled",
    "lpCreated",
    "projectOwner",
    "quoteDecimalScale",
    "platformFeeBps",
    "escaped",
    "closedEarly",
    "pricingMode",
    "priceFeed",
    "tokenPriceUsd",
    "totalRaisedUsd",
    "lpLockDuration",
    "lpTokensAmount",
    "burnUnsold"
  ]
}
