// SPDX-License-Identifier: MIT pragma solidity ^0.8.26; // The small slice of Pons V2 (Robinhood Chain 4663) the sign games call. Checked against the // verified mainnet sources: factory 0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e, hook // 0xE5e702641Ea86F4ae6cC3cDaeD2B886f976Be044, fee escrow 0xd3AFEB2a57f70eF218Aa82451c51B2fb0416Ac9e. enum GraduationPhase { NotGraduated, Swept, PoolCreated, Rescued } struct LaunchedToken { address token; address curve; address deployer; address creatorFeeRecipient; address pairToken; uint256 graduationThreshold; uint24 poolFee; int24 tickSpacing; uint16 creatorTaxBps; bool buybackEnabled; GraduationPhase phase; uint256 sweptQuote; uint256 sweptTokens; uint256 sweptAt; bool exists; } interface IPonsFactory { function getLaunchedToken(address token) external view returns (LaunchedToken memory); function memeHook() external view returns (address); function poolManager() external view returns (address); function feeEscrow() external view returns (address); /// Only the current creator fee recipient may call this. It takes effect at once. function transferCreatorFeeRecipient(address token, address newRecipient) external; } interface IPonsCurve { function buy(uint256 quoteIn, uint256 minTokensOut, address recipient) external payable returns (uint256); /// Callable by the creator fee recipient while buyback is off. function sweepFees(uint256 minBuybackTokensOut) external; function graduated() external view returns (bool); /// Trading reserves, excluding fees waiting to be swept. function getReserves() external view returns (uint256 quoteReserve, uint256 tokenReserve); function feeBps() external view returns (uint256); function creatorTaxBps() external view returns (uint256); /// Pons's own share of `feeBps`; the creator fee recipient gets the rest of it, plus all of the creator tax. function protocolFeeShareBps() external view returns (uint16); } interface IPonsHook { /// The creator fee recipient may call this only while no fee is waiting in the memecoin; /// otherwise only the Pons sweep operator can. function sweepPoolFees(bytes32 poolId, uint256 minConversionQuoteOut, uint256 minBuybackTokensOut) external; function hookFeeBps() external view returns (uint256); /// Pons's share of the hook fee for new pools (each pool keeps the share it was created with). function protocolFeeShareBps() external view returns (uint256); } interface IPonsFeeEscrow { function balanceOf(address recipient) external view returns (uint256); /// Pays out the caller's whole native balance; reverts when it is zero. function claim() external returns (uint256); }