UNPKG

@uniswap/v4-core

Version:

🦄 Core smart contracts of Uniswap v4

1 lines • 65.9 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_manager","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"LIQUIDITY_FEE","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"SWAP_FEE_BIPS","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"TOTAL_BIPS","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"afterAddLiquidity","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","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"}]},{"name":"","type":"tuple","internalType":"struct ModifyLiquidityParams","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"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"","type":"int256","internalType":"BalanceDelta"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterDonate","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"tuple","internalType":"struct PoolKey","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"}]},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterInitialize","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"tuple","internalType":"struct PoolKey","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"}]},{"name":"","type":"uint160","internalType":"uint160"},{"name":"","type":"int24","internalType":"int24"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterRemoveLiquidity","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","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"}]},{"name":"","type":"tuple","internalType":"struct ModifyLiquidityParams","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"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"","type":"int256","internalType":"BalanceDelta"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterSwap","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","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"}]},{"name":"params","type":"tuple","internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeAddLiquidity","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"tuple","internalType":"struct PoolKey","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"}]},{"name":"","type":"tuple","internalType":"struct ModifyLiquidityParams","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"}]},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeDonate","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"tuple","internalType":"struct PoolKey","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"}]},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeInitialize","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"tuple","internalType":"struct PoolKey","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"}]},{"name":"","type":"uint160","internalType":"uint160"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeRemoveLiquidity","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"tuple","internalType":"struct PoolKey","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"}]},{"name":"","type":"tuple","internalType":"struct ModifyLiquidityParams","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"}]},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeSwap","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"tuple","internalType":"struct PoolKey","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"}]},{"name":"","type":"tuple","internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BeforeSwapDelta"},{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"nonpayable"},{"type":"error","name":"HookNotImplemented","inputs":[]}],"bytecode":{"object":"0x60a034607457601f61101f38819003918201601f19168301916001600160401b03831184841017607857808492602094604052833981010312607457516001600160a01b0381168103607457608052604051610f92908161008d82396080518181816102140152818161047801526107cc0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f803560e01c918263129a686814610b255750816321d0ee7014610b20578163259982e514610b2057816353ab431b14610ae6578163575e24b414610a0e5781636c2bbe7e146107a15781636fe7e6eb146107015781637dc63812146106c75781639f063efc1461044c578163b47b2fb114610148578163b6a8b0fa146100ad578163dc98354e146100b2575063e1b4af69146100ad575f80fd5b610d96565b346101455760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610145576100e9610b5c565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101455760049061011f610d73565b507f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b80fd5b34610145576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014557610180610b5c565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101455760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126101455761012435906101443567ffffffffffffffff8111610448576101fb903690600401610b7f565b505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168033036104485760c4358015158091036103d1578260e43512145f146104125760443573ffffffffffffffffffffffffffffffffffffffff811681036103d15792607b90600f0b5b808481600f0b12610402575b506fffffffffffffffffffffffffffffffff16026fffffffffffffffffffffffffffffffff81169081036103d5576127106fffffffffffffffffffffffffffffffff91041692813b156103d15773ffffffffffffffffffffffffffffffffffffffff606484928360405195869485937f0b0d9c090000000000000000000000000000000000000000000000000000000085521660048401523060248401528860448401525af180156103c6579082916103b1575b50506f80000000000000000000000000000000821015610389576040828151907fb47b2fb1000000000000000000000000000000000000000000000000000000008252600f0b6020820152f35b807f93dafdf10000000000000000000000000000000000000000000000000000000060049252fd5b816103bb91610ee8565b61014557808361033c565b6040513d84823e3d90fd5b8280fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b61040c9150610f56565b85610288565b60243573ffffffffffffffffffffffffffffffffffffffff811690818103610444575092607b9060801d600f0b61027c565b8380fd5b5080fd5b346101455761045a36610c9e565b5050509250508273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803303610448576127106fffffffffffffffffffffffffffffffff6104f66104e483836104eb6104e48b60801d6104df8d8c8084600f0b131591826106b9575b5050610e32565b610f56565b8216610e66565b160497600f0b610f56565b16049261050281610ec7565b823b15610444576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201523060248201526fffffffffffffffffffffffffffffffff86166044820152838160648183875af19081156106ae578491610699575b505060206105909101610ec7565b90803b156103d1576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301523060248301526fffffffffffffffffffffffffffffffff8416604483015282908290606490829084905af180156103c657610684575b50506fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff000000000000000000000000000000009160405194507f9f063efc000000000000000000000000000000000000000000000000000000008552169160801b1617602082015260408180030190f35b8161068e91610ee8565b6103d1578284610612565b816106a391610ee8565b6103d1578287610582565b6040513d86823e3d90fd5b600f0b131590508c8f6104d8565b3461014557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101455760206040516127108152f35b34610145576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014557610739610b5c565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101455761076c610d73565b5060e4358060020b0361014557807f0a85dc290000000000000000000000000000000000000000000000000000000060049252fd5b346109fc576107af36610c9e565b50505092505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168033036109fc576127106fffffffffffffffffffffffffffffffff61083382826108298860801d5f81600f0b121580610a00575b6104e490610e32565b1604958216610e66565b16049161083f81610ec7565b823b156109fc576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201523060248201526fffffffffffffffffffffffffffffffff851660448201525f8160648183875af180156109f1576109d4575b50906108cb6020869301610ec7565b90803b156103d1576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301523060248301526fffffffffffffffffffffffffffffffff8416604483015282908290606490829084905af180156103c6576109bf575b50506fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff000000000000000000000000000000009160405194507f6c2bbe7e000000000000000000000000000000000000000000000000000000008552169160801b1617602082015260408180030190f35b816109c991610ee8565b6103d157828461094d565b602095505f6109e591939293610ee8565b5f9450906108cb6108bc565b6040513d5f823e3d90fd5b5f80fd5b505f600f8b900b1215610820565b346109fc576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109fc57610a46610b5c565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126109fc5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126109fc576101243567ffffffffffffffff81116109fc57610abc903690600401610b7f565b50507f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b346109fc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109fc57602060405161021f8152f35b610bad565b346109fc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109fc5780607b60209252f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036109fc57565b9181601f840112156109fc5782359167ffffffffffffffff83116109fc57602083818601950101116109fc57565b346109fc576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109fc5760043573ffffffffffffffffffffffffffffffffffffffff811681036109fc575060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126109fc5760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126109fc576101443567ffffffffffffffff81116109fc57610c73903690600401610b7f565b9050507f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b906101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126109fc5760043573ffffffffffffffffffffffffffffffffffffffff811681036109fc579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201126109fc5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c8301126109fc5760c49161014435916101643591610184359067ffffffffffffffff82116109fc57610d6f91600401610b7f565b9091565b60c4359073ffffffffffffffffffffffffffffffffffffffff821682036109fc57565b346109fc576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109fc5760043573ffffffffffffffffffffffffffffffffffffffff811681036109fc575060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126109fc576101043567ffffffffffffffff81116109fc57610c73903690600401610b7f565b15610e3957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b6fffffffffffffffffffffffffffffffff61021f911602906fffffffffffffffffffffffffffffffff8216918203610e9a57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b3573ffffffffffffffffffffffffffffffffffffffff811681036109fc5790565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610f2957604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610e9a575f039056fea164736f6c634300081a000a","sourceMap":"569:2999:76:-:0;;;;;;;;;;;;;-1:-1:-1;;569:2999:76;;;;-1:-1:-1;;;;;569:2999:76;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;569:2999:76;;;;;;789:18;;569:2999;;;;;;;;789:18;569:2999;;;;;;;;;;;;;;;;;-1:-1:-1;569:2999:76;;;;;;-1:-1:-1;569:2999:76;;;;;-1:-1:-1;569:2999:76","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f803560e01c918263129a686814610b255750816321d0ee7014610b20578163259982e514610b2057816353ab431b14610ae6578163575e24b414610a0e5781636c2bbe7e146107a15781636fe7e6eb146107015781637dc63812146106c75781639f063efc1461044c578163b47b2fb114610148578163b6a8b0fa146100ad578163dc98354e146100b2575063e1b4af69146100ad575f80fd5b610d96565b346101455760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610145576100e9610b5c565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101455760049061011f610d73565b507f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b80fd5b34610145576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014557610180610b5c565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101455760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126101455761012435906101443567ffffffffffffffff8111610448576101fb903690600401610b7f565b505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168033036104485760c4358015158091036103d1578260e43512145f146104125760443573ffffffffffffffffffffffffffffffffffffffff811681036103d15792607b90600f0b5b808481600f0b12610402575b506fffffffffffffffffffffffffffffffff16026fffffffffffffffffffffffffffffffff81169081036103d5576127106fffffffffffffffffffffffffffffffff91041692813b156103d15773ffffffffffffffffffffffffffffffffffffffff606484928360405195869485937f0b0d9c090000000000000000000000000000000000000000000000000000000085521660048401523060248401528860448401525af180156103c6579082916103b1575b50506f80000000000000000000000000000000821015610389576040828151907fb47b2fb1000000000000000000000000000000000000000000000000000000008252600f0b6020820152f35b807f93dafdf10000000000000000000000000000000000000000000000000000000060049252fd5b816103bb91610ee8565b61014557808361033c565b6040513d84823e3d90fd5b8280fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b61040c9150610f56565b85610288565b60243573ffffffffffffffffffffffffffffffffffffffff811690818103610444575092607b9060801d600f0b61027c565b8380fd5b5080fd5b346101455761045a36610c9e565b5050509250508273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803303610448576127106fffffffffffffffffffffffffffffffff6104f66104e483836104eb6104e48b60801d6104df8d8c8084600f0b131591826106b9575b5050610e32565b610f56565b8216610e66565b160497600f0b610f56565b16049261050281610ec7565b823b15610444576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201523060248201526fffffffffffffffffffffffffffffffff86166044820152838160648183875af19081156106ae578491610699575b505060206105909101610ec7565b90803b156103d1576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301523060248301526fffffffffffffffffffffffffffffffff8416604483015282908290606490829084905af180156103c657610684575b50506fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff000000000000000000000000000000009160405194507f9f063efc000000000000000000000000000000000000000000000000000000008552169160801b1617602082015260408180030190f35b8161068e91610ee8565b6103d1578284610612565b816106a391610ee8565b6103d1578287610582565b6040513d86823e3d90fd5b600f0b131590508c8f6104d8565b3461014557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101455760206040516127108152f35b34610145576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014557610739610b5c565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101455761076c610d73565b5060e4358060020b0361014557807f0a85dc290000000000000000000000000000000000000000000000000000000060049252fd5b346109fc576107af36610c9e565b50505092505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168033036109fc576127106fffffffffffffffffffffffffffffffff61083382826108298860801d5f81600f0b121580610a00575b6104e490610e32565b1604958216610e66565b16049161083f81610ec7565b823b156109fc576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201523060248201526fffffffffffffffffffffffffffffffff851660448201525f8160648183875af180156109f1576109d4575b50906108cb6020869301610ec7565b90803b156103d1576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301523060248301526fffffffffffffffffffffffffffffffff8416604483015282908290606490829084905af180156103c6576109bf575b50506fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff000000000000000000000000000000009160405194507f6c2bbe7e000000000000000000000000000000000000000000000000000000008552169160801b1617602082015260408180030190f35b816109c991610ee8565b6103d157828461094d565b602095505f6109e591939293610ee8565b5f9450906108cb6108bc565b6040513d5f823e3d90fd5b5f80fd5b505f600f8b900b1215610820565b346109fc576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109fc57610a46610b5c565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126109fc5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126109fc576101243567ffffffffffffffff81116109fc57610abc903690600401610b7f565b50507f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b346109fc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109fc57602060405161021f8152f35b610bad565b346109fc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109fc5780607b60209252f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036109fc57565b9181601f840112156109fc5782359167ffffffffffffffff83116109fc57602083818601950101116109fc57565b346109fc576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109fc5760043573ffffffffffffffffffffffffffffffffffffffff811681036109fc575060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126109fc5760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126109fc576101443567ffffffffffffffff81116109fc57610c73903690600401610b7f565b9050507f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b906101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126109fc5760043573ffffffffffffffffffffffffffffffffffffffff811681036109fc579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201126109fc5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c8301126109fc5760c49161014435916101643591610184359067ffffffffffffffff82116109fc57610d6f91600401610b7f565b9091565b60c4359073ffffffffffffffffffffffffffffffffffffffff821682036109fc57565b346109fc576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109fc5760043573ffffffffffffffffffffffffffffffffffffffff811681036109fc575060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126109fc576101043567ffffffffffffffff81116109fc57610c73903690600401610b7f565b15610e3957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b6fffffffffffffffffffffffffffffffff61021f911602906fffffffffffffffffffffffffffffffff8216918203610e9a57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b3573ffffffffffffffffffffffffffffffffffffffff811681036109fc5790565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610f2957604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610e9a575f039056fea164736f6c634300081a000a","sourceMap":"569:2999:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;1853:20:68;;;;569:2999:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;887:7;;569:2999;887:7;569:2999;865:10;;:30;569:2999;;;;;;;;;;;;;1454:22;569:2999;1454:26;:47;1568:89;1454:47;;;1591:13;569:2999;;;;;;;;;;;2241:89:105;;1568::76;1512:145;569:2999;;;;1734:14;1730:44;;1568:89;1805:35;569:2999;;;;;;;;;;;;;1805:48;569:2999;;1863:51;;;;;;569:2999;1863:51;569:2999;;;;;1863:51;;;;;569:2999;1863:51;;569:2999;;1863:51;;569:2999;1897:4;569:2999;;;;;;;;;1863:51;;;;;;;;;;;1568:89;2172:13:59;;2177:8;2172:13;;;2168:57;;569:2999:76;;;;;1933:25;569:2999;;;;;;;;;2168:57:59;814:96:46;2187:25:59;569:2999:76;814:96:46;;;1863:51:76;;;;;:::i;:::-;569:2999;;1863:51;;;;;569:2999;;;;;;;;;1863:51;569:2999;;;;;;;;;;;;;1730:44;1763:11;;;;:::i;:::-;1730:44;;;1568:89;569:2999;;;;;;;;;;;-1:-1:-1;569:2999:76;;;2052:83:105;;569:2999:76;;1568:89;;569:2999;;;;;;;;;;;;;;;:::i;:::-;887:7;;;;;;;569:2999;887:7;569:2999;865:10;;:30;569:2999;;;;3267:41;3275:16;2052:83:105;;3182:41:76;3190:16;2052:83:105;;;3098:52:76;569:2999;;;;;;3105:20;;:44;;;;569:2999;3098:52;;;:::i;:::-;3190:16;:::i;:::-;569:2999;;3182:41;:::i;:::-;569:2999;;2241:89:105;569:2999:76;2241:89:105;3275:16:76;:::i;3267:41::-;569:2999;;3345:13;;;;:::i;:::-;3332:54;;;;;569:2999;;;3332:54;;569:2999;;;;;;3332:54;;569:2999;3368:4;569:2999;;;;;;;;;;;;;;;;3332:54;;;;;;;;;;;;569:2999;3409:13;;;;;;;:::i;:::-;3396:54;;;;;;569:2999;;;3396:54;;569:2999;;;;;;3396:54;;569:2999;3368:4;569:2999;;;;;;;;;;;;;;;;;;;;;3396:54;;;;;;;;569:2999;;;;553:115:105;569:2999:76;;;;;3469:33;569:2999;;;553:115:105;2052:83;553:115;;;3409:13:76;569:2999;;;;;;;;;;3396:54;;;;;:::i;:::-;569:2999;;3396:54;;;;3332;;;;;:::i;:::-;569:2999;;3332:54;;;;;569:2999;;;;;;;;;3105:44;569:2999;2241:89:105;3129:20:76;;;-1:-1:-1;3105:44:76;;;;569:2999;;;;;;;;;;;;;;1097:5;569:2999;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;1853:20:68;;569:2999:76;1853:20:68;;;569:2999:76;;;;;;;:::i;:::-;887:7;;;;;;569:2999;887:7;569:2999;865:10;;:30;569:2999;;;;2478:40;2052:83:105;;2394:40:76;2052:83:105;;;569:2999:76;;;;2317:20;;:44;;;569:2999;2310:52;;;:::i;2394:40::-;569:2999;;;;;2478:40;:::i;:::-;569:2999;;2555:13;;;;:::i;:::-;2542:54;;;;;569:2999;;;2542:54;;569:2999;;;;;;2542:54;;569:2999;2578:4;569:2999;;;;;;;;;;;-1:-1:-1;569:2999:76;;;-1:-1:-1;2542:54:76;;;;;;;;;569:2999;2619:13;;;;;;;;:::i;:::-;2606:54;;;;;;569:2999;;;2606:54;;569:2999;;;;;;2606:54;;569:2999;2578:4;569:2999;;;;;;;;;;;;;;;;;;;;;2606:54;;;;;;;;569:2999;;;;553:115:105;569:2999:76;;;;;2679:36;569:2999;;;553:115:105;2052:83;553:115;;;2619:13:76;569:2999;;;;;;;;;;2606:54;;;;;:::i;:::-;569:2999;;2606:54;;;;2542;2619:13;2542:54;;569:2999;2542:54;;;;;;:::i;:::-;569:2999;;-1:-1:-1;2542:54:76;2619:13;2542:54;;;569:2999;;;;;;;;;2542:54;569:2999;;;2317:44;-1:-1:-1;569:2999:76;;2241:89:105;;;2341:20:76;;2317:44;;569:2999;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1853:20:68;;;569:2999:76;1853:20:68;569:2999:76;;1853:20:68;569:2999:76;;;;;;;;;;;;;;960:3;569:2999;;;;;:::i;:::-;;;;;;;;;;;;1030:3;569:2999;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1853:20:68;;-1:-1:-1;1853:20:68;569:2999:76;-1:-1:-1;1853:20:68;569:2999:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;569:2999:76;;;;;-1:-1:-1;569:2999:76;;;;;;;;;;;;:::o","linkReferences":{},"immutableReferences":{"52013":[{"start":532,"length":32},{"start":1144,"length":32},{"start":1996,"length":32}]}},"methodIdentifiers":{"LIQUIDITY_FEE()":"53ab431b","SWAP_FEE_BIPS()":"129a6868","TOTAL_BIPS()":"7dc63812","afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":"9f063efc","afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":"e1b4af69","afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)":"6fe7e6eb","afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":"6c2bbe7e","afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)":"b47b2fb1","beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"259982e5","beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":"b6a8b0fa","beforeInitialize(address,(address,address,uint24,int24,address),uint160)":"dc98354e","beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"21d0ee70","beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)":"575e24b4"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"_manager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"HookNotImplemented\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LIQUIDITY_FEE\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SWAP_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOTAL_BIPS\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct ModifyLiquidityParams\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"},{\"internalType\":\"BalanceDelta\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"afterAddLiquidity\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"BalanceDelta\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"afterDonate\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"name\":\"afterInitialize\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct ModifyLiquidityParams\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"},{\"internalType\":\"BalanceDelta\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"afterRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"BalanceDelta\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct SwapParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"afterSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct ModifyLiquidityParams\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"beforeAddLiquidity\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"beforeDonate\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"name\":\"beforeInitialize\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct ModifyLiquidityParams\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"beforeRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct SwapParams\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"beforeSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"BeforeSwapDelta\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/FeeTakingHook.sol\":\"FeeTakingHook\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb\",\"dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx\"]},\"src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475\",\"dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J\"]},\"src/libraries/ParseBytes.sol\":{\"keccak256\":\"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17\",\"dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa\"]},\"src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"src/test/BaseTestHooks.sol\":{\"keccak256\":\"0x8bb1b533b9df117bc4c85ef9d4c2afa7758771581a752e0a2a69dcae1041e546\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://eebf2728b8bda26bfd0e8c9726950f9cad3f2b8ffa5951117f2c2a9534e37ba6\",\"dweb:/ipfs/QmPCbUDp3e3sF5EPfte4v3VEF9Lhz8db6jLhZQJxXDvBSE\"]},\"src/test/FeeTakingHook.sol\":{\"keccak256\":\"0x9c1efc474e0bb2db36130a7cae8c2f00ee96d83f9044e5b670d2326fcb85cab2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4cc3cfc2dd0de71eeec7b961057b4f891239837a7143f6ec1dd28013d00f74c7\",\"dweb:/ipfs/QmZcECxXF19x954RXj4PskYEGVd5e71KFwFPBFKXvUEq8E\"]},\"src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPoolManager","name":"_manager","type":"address"}],"stateMutabilit