{"abi":[{"type":"constructor","inputs":[{"name":"manager","type":"address","internalType":"contract IPoolManager"},{"name":"initialOwner","type":"address","internalType":"address"},{"name":"initialProtocolFeeRecipient","type":"address","internalType":"address"},{"name":"initialBases","type":"tuple[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"ethPool","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"}],"internalType":"struct ERC20THook.ExternalBaseConfig[]"}],"stateMutability":"nonpayable"},{"name":"AlreadyInitialized","type":"error","inputs":[]},{"name":"ExactOutputNotAllowed","type":"error","inputs":[]},{"name":"ExternalBaseAlreadyRegistered","type":"error","inputs":[]},{"name":"ExternalBaseDisabled","type":"error","inputs":[]},{"name":"ExternalBaseNotRegistered","type":"error","inputs":[]},{"name":"ExternalLiquidityDisabled","type":"error","inputs":[]},{"name":"HookNotImplemented","type":"error","inputs":[]},{"name":"InvalidAddress","type":"error","inputs":[]},{"name":"InvalidExternalBase","type":"error","inputs":[]},{"name":"InvalidPool","type":"error","inputs":[]},{"name":"InvalidSwapDelta","type":"error","inputs":[]},{"name":"InvalidTax","type":"error","inputs":[]},{"name":"NewOwnerIsZeroAddress","type":"error","inputs":[]},{"name":"NoHandoverRequest","type":"error","inputs":[]},{"name":"NotLaunching","type":"error","inputs":[]},{"name":"NotPoolManager","type":"error","inputs":[]},{"name":"PairingDisabled","type":"error","inputs":[]},{"name":"PartialFeeSwap","type":"error","inputs":[]},{"name":"PoolAlreadyInitialized","type":"error","inputs":[]},{"name":"Reentrancy","type":"error","inputs":[]},{"name":"Unauthorized","type":"error","inputs":[]},{"name":"DistributorSet","type":"event","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"allowed","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"name":"ExternalBaseEnabledSet","type":"event","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"enabled","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"name":"ExternalBaseRegistered","type":"event","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"ethPoolId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"name":"FeeDecay","type":"event","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"ethFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"HookFee","type":"event","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"tokenFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"OwnershipHandoverCanceled","type":"event","inputs":[{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"OwnershipHandoverRequested","type":"event","inputs":[{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"OwnershipTransferred","type":"event","inputs":[{"name":"oldOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"PoolLaunched","type":"event","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"poolId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"name":"ProtocolFee","type":"event","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"ethFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"ProtocolFeeRecipientSet","type":"event","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"PROTOCOL_FEE_BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"name":"afterAddLiquidity","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"},{"name":"params","type":"tuple","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"internalType":"struct ModifyLiquidityParams"},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"name":"afterDonate","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"name":"afterInitialize","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"tick","type":"int24","internalType":"int24"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"name":"afterRemoveLiquidity","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"},{"name":"params","type":"tuple","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"internalType":"struct ModifyLiquidityParams"},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"name":"afterSwap","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"},{"name":"params","type":"tuple","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"internalType":"struct SwapParams"},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"nonpayable"},{"name":"beforeAddLiquidity","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"},{"name":"params","type":"tuple","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"internalType":"struct ModifyLiquidityParams"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"name":"beforeDonate","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"name":"beforeInitialize","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"name":"beforeRemoveLiquidity","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"},{"name":"params","type":"tuple","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"internalType":"struct ModifyLiquidityParams"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"name":"beforeSwap","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"},{"name":"params","type":"tuple","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"internalType":"struct SwapParams"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BeforeSwapDelta"},{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"nonpayable"},{"name":"cancelOwnershipHandover","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"completeOwnershipHandover","type":"function","inputs":[{"name":"pendingOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"name":"externalBasePool","type":"function","inputs":[{"name":"base","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"}],"stateMutability":"view"},{"name":"externalBases","type":"function","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"registered","type":"bool","internalType":"bool"},{"name":"enabled","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"getHookPermissions","type":"function","inputs":[],"outputs":[{"name":"permissions","type":"tuple","components":[{"name":"beforeInitialize","type":"bool","internalType":"bool"},{"name":"afterInitialize","type":"bool","internalType":"bool"},{"name":"beforeAddLiquidity","type":"bool","internalType":"bool"},{"name":"afterAddLiquidity","type":"bool","internalType":"bool"},{"name":"beforeRemoveLiquidity","type":"bool","internalType":"bool"},{"name":"afterRemoveLiquidity","type":"bool","internalType":"bool"},{"name":"beforeSwap","type":"bool","internalType":"bool"},{"name":"afterSwap","type":"bool","internalType":"bool"},{"name":"beforeDonate","type":"bool","internalType":"bool"},{"name":"afterDonate","type":"bool","internalType":"bool"},{"name":"beforeSwapReturnDelta","type":"bool","internalType":"bool"},{"name":"afterSwapReturnDelta","type":"bool","internalType":"bool"},{"name":"afterAddLiquidityReturnDelta","type":"bool","internalType":"bool"},{"name":"afterRemoveLiquidityReturnDelta","type":"bool","internalType":"bool"}],"internalType":"struct Hooks.Permissions"}],"stateMutability":"pure"},{"name":"isDistributor","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"owner","type":"function","inputs":[],"outputs":[{"name":"result","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"ownershipHandoverExpiresAt","type":"function","inputs":[{"name":"pendingOwner","type":"address","internalType":"address"}],"outputs":[{"name":"result","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"poolInitialized","type":"function","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"initialized","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"poolManager","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"view"},{"name":"poolToken","type":"function","inputs":[{"name":"id","type":"bytes32","internalType":"PoolId"}],"outputs":[{"name":"token","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"protocolFeeRecipient","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"registerExternalBase","type":"function","inputs":[{"name":"base","type":"address","internalType":"address"},{"name":"ethPool","type":"tuple","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"internalType":"struct PoolKey"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"renounceOwnership","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"requestOwnershipHandover","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"setDistributors","type":"function","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"allowed","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setExternalBaseEnabled","type":"function","inputs":[{"name":"base","type":"address","internalType":"address"},{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setProtocolFeeRecipient","type":"function","inputs":[{"name":"recipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"transferOwnership","type":"function","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"receive","stateMutability":"payable"}],"matchId":"56267001","creationMatch":"match","runtimeMatch":"match","verifiedAt":"2026-10-17T01:23:34Z","match":"match","chainId":"1","address":"0xed9A04Fa6693e754661A22502524DF9b1857e544"}