export const UNISWAP_V4_HOOK_ABI = [
"function BPS_DENOMINATOR() view returns (uint256)",
"function PLATFORM_FEE_BPS() view returns (uint256)",
"function BORROW_FEE_BPS() view returns (uint256)",
"function BASE_FLOOR_RATIO_BPS() view returns (uint256)",
"function FLOOR_RESERVE_MAX_BPS() view returns (uint256)",
"function COLLATERAL_RATIO_BPS() view returns (uint256)",
"function MAX_SUPPLY() view returns (uint256)",
"function DUST_THRESHOLD() view returns (uint256)",
"function TARGET_ETH() view returns (uint256)",
"function SQRT_TARGET_ETH() view returns (uint256)",
"function MIN_SWEEP_AMOUNT() view returns (uint256)",
"function POOL_FEE() view returns (uint24)",
"function POOL_MANAGER() view returns (address)",
"function FACTORY() view returns (address)",
"function K() view returns (uint256)",
"function tokenStates(bytes32 poolId) view returns (address token, uint256 totalFeeBps, uint256 floorPrice, uint256 realETH, uint256 virtualETH, uint256 totalBorrowedETH, uint256 collateralSupply, uint256 floorBoostPool, uint256 totalReserveAccumulated, uint256 allTimeHighPrice, bool initialized)",
"function tokenToPoolId(address token) view returns (bytes32)",
"function borrowedETH(bytes32 poolId, address user) view returns (uint256)",
"function collateralBalance(bytes32 poolId, address user) view returns (uint256)",
"function totalPurchasedETH(address user) view returns (uint256)",
"function registerToken(address token, bytes32 poolId, uint256 totalFeeBps)",
"function effectiveETH(bytes32 poolId) view returns (uint256)",
"function getEffectivePrice(bytes32 poolId) view returns (uint256)",
"function circulatingSupply(bytes32 poolId) view returns (uint256)",
"function estimateBuy(bytes32 poolId, uint256 ethIn) view returns (uint256 tokensOut, uint256 platformFee, uint256 floorBoostFee)",
"function estimateSell(bytes32 poolId, uint256 tokenAmount) view returns (uint256 ethOut, uint256 platformFee, uint256 floorBoostFee)",
"function estimateBorrowMore(bytes32 poolId, address user) view returns (uint256 additionalEth, uint256 fee)",
"function getHookPermissions() pure returns (tuple(bool beforeInitialize, bool afterInitialize, bool beforeAddLiquidity, bool afterAddLiquidity, bool beforeRemoveLiquidity, bool afterRemoveLiquidity, bool beforeSwap, bool afterSwap, bool beforeDonate, bool afterDonate, bool beforeSwapReturnDelta, bool afterSwapReturnDelta, bool afterAddLiquidityReturnDelta, bool afterRemoveLiquidityReturnDelta))",
"function borrow(bytes32 poolId, uint256 amount)",
"function borrowMore(bytes32 poolId)",
"function repay(bytes32 poolId) payable",
"function beforeInitialize(address, tuple(address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) key, uint160) returns (bytes4)",
"function beforeAddLiquidity(address, tuple(address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks), tuple(int24 tickLower, int24 tickUpper, int256 liquidityDelta, bytes32 salt), bytes) returns (bytes4)",
"function beforeSwap(address, tuple(address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) key, tuple(bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96) params, bytes hookData) returns (bytes4 selector, int256 delta, uint24 lpFeeOverride)",
"event TokenRegistered(address indexed token, bytes32 indexed poolId, uint256 totalFeeBps)",
"event Buy(bytes32 indexed poolId, address indexed buyer, uint256 ethIn, uint256 tokensOut, uint256 newPrice)",
"event Sell(bytes32 indexed poolId, address indexed seller, uint256 tokensIn, uint256 ethOut, uint256 newPrice)",
"event FloorRaised(bytes32 indexed poolId, uint256 oldFloor, uint256 newFloor)",
"event ATHUpdated(bytes32 indexed poolId, uint256 oldATH, uint256 newATH)",
"event Borrow(bytes32 indexed poolId, address indexed user, uint256 tokensLocked, uint256 ethBorrowed, uint256 fee)",
"event BorrowMore(bytes32 indexed poolId, address indexed user, uint256 additionalEth, uint256 fee)",
"event Repay(bytes32 indexed poolId, address indexed user, uint256 ethRepaid, uint256 tokensUnlocked)",
"event Sweep(bytes32 indexed poolId, uint256 amount)",
"event DustCollected(bytes32 indexed poolId, uint256 amount)",
] as const;