SHOOK / OFFICIAL PROTOCOLDocumentation
MAINNET EDITIONOpen SHOOK

SHOOKVanillaHook

Complete compiled interface, including inherited methods.

Solidity 0.8.36+commit.8a079791 · Download ABI ↓ ·

Constructor 1

nonpayableconstructor(address, address, address)
{
  "type": "constructor",
  "inputs": [
    {
      "name": "poolManager_",
      "type": "address",
      "internalType": "contract IPoolManager"
    },
    {
      "name": "shook_",
      "type": "address",
      "internalType": "address"
    },
    {
      "name": "initializer_",
      "type": "address",
      "internalType": "address"
    }
  ],
  "stateMutability": "nonpayable"
}

Functions 16

nonpayableafterAddLiquidity(address, (address,address,uint24,int24,address), (int24,int24,int256,bytes32), int256, int256, bytes)
{
  "type": "function",
  "name": "afterAddLiquidity",
  "inputs": [
    {
      "name": "sender",
      "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 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": "feesAccrued",
      "type": "int256",
      "internalType": "BalanceDelta"
    },
    {
      "name": "hookData",
      "type": "bytes",
      "internalType": "bytes"
    }
  ],
  "outputs": [
    {
      "name": "",
      "type": "bytes4",
      "internalType": "bytes4"
    },
    {
      "name": "",
      "type": "int256",
      "internalType": "BalanceDelta"
    }
  ],
  "stateMutability": "nonpayable"
}
nonpayableafterDonate(address, (address,address,uint24,int24,address), uint256, uint256, bytes)
{
  "type": "function",
  "name": "afterDonate",
  "inputs": [
    {
      "name": "sender",
      "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": "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"
}
nonpayableafterInitialize(address, (address,address,uint24,int24,address), uint160, int24)
{
  "type": "function",
  "name": "afterInitialize",
  "inputs": [
    {
      "name": "sender",
      "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": "sqrtPriceX96",
      "type": "uint160",
      "internalType": "uint160"
    },
    {
      "name": "tick",
      "type": "int24",
      "internalType": "int24"
    }
  ],
  "outputs": [
    {
      "name": "",
      "type": "bytes4",
      "internalType": "bytes4"
    }
  ],
  "stateMutability": "nonpayable"
}
nonpayableafterRemoveLiquidity(address, (address,address,uint24,int24,address), (int24,int24,int256,bytes32), int256, int256, bytes)
{
  "type": "function",
  "name": "afterRemoveLiquidity",
  "inputs": [
    {
      "name": "sender",
      "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 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": "feesAccrued",
      "type": "int256",
      "internalType": "BalanceDelta"
    },
    {
      "name": "hookData",
      "type": "bytes",
      "internalType": "bytes"
    }
  ],
  "outputs": [
    {
      "name": "",
      "type": "bytes4",
      "internalType": "bytes4"
    },
    {
      "name": "",
      "type": "int256",
      "internalType": "BalanceDelta"
    }
  ],
  "stateMutability": "nonpayable"
}
nonpayableafterSwap(address, (address,address,uint24,int24,address), (bool,int256,uint160), int256, bytes)
{
  "type": "function",
  "name": "afterSwap",
  "inputs": [
    {
      "name": "sender",
      "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": "hookData",
      "type": "bytes",
      "internalType": "bytes"
    }
  ],
  "outputs": [
    {
      "name": "",
      "type": "bytes4",
      "internalType": "bytes4"
    },
    {
      "name": "",
      "type": "int128",
      "internalType": "int128"
    }
  ],
  "stateMutability": "nonpayable"
}
nonpayablebeforeAddLiquidity(address, (address,address,uint24,int24,address), (int24,int24,int256,bytes32), bytes)
{
  "type": "function",
  "name": "beforeAddLiquidity",
  "inputs": [
    {
      "name": "sender",
      "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 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": "hookData",
      "type": "bytes",
      "internalType": "bytes"
    }
  ],
  "outputs": [
    {
      "name": "",
      "type": "bytes4",
      "internalType": "bytes4"
    }
  ],
  "stateMutability": "nonpayable"
}
nonpayablebeforeDonate(address, (address,address,uint24,int24,address), uint256, uint256, bytes)
{
  "type": "function",
  "name": "beforeDonate",
  "inputs": [
    {
      "name": "sender",
      "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": "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"
}
nonpayablebeforeInitialize(address, (address,address,uint24,int24,address), uint160)
{
  "type": "function",
  "name": "beforeInitialize",
  "inputs": [
    {
      "name": "sender",
      "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": "sqrtPriceX96",
      "type": "uint160",
      "internalType": "uint160"
    }
  ],
  "outputs": [
    {
      "name": "",
      "type": "bytes4",
      "internalType": "bytes4"
    }
  ],
  "stateMutability": "nonpayable"
}
nonpayablebeforeRemoveLiquidity(address, (address,address,uint24,int24,address), (int24,int24,int256,bytes32), bytes)
{
  "type": "function",
  "name": "beforeRemoveLiquidity",
  "inputs": [
    {
      "name": "sender",
      "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 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": "hookData",
      "type": "bytes",
      "internalType": "bytes"
    }
  ],
  "outputs": [
    {
      "name": "",
      "type": "bytes4",
      "internalType": "bytes4"
    }
  ],
  "stateMutability": "nonpayable"
}
nonpayablebeforeSwap(address, (address,address,uint24,int24,address), (bool,int256,uint160), bytes)
{
  "type": "function",
  "name": "beforeSwap",
  "inputs": [
    {
      "name": "sender",
      "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": "hookData",
      "type": "bytes",
      "internalType": "bytes"
    }
  ],
  "outputs": [
    {
      "name": "",
      "type": "bytes4",
      "internalType": "bytes4"
    },
    {
      "name": "",
      "type": "int256",
      "internalType": "BeforeSwapDelta"
    },
    {
      "name": "",
      "type": "uint24",
      "internalType": "uint24"
    }
  ],
  "stateMutability": "nonpayable"
}
puregetHookPermissions()
{
  "type": "function",
  "name": "getHookPermissions",
  "inputs": [],
  "outputs": [
    {
      "name": "permissions",
      "type": "tuple",
      "internalType": "struct Hooks.Permissions",
      "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"
        }
      ]
    }
  ],
  "stateMutability": "pure"
}
viewinitializer()
{
  "type": "function",
  "name": "initializer",
  "inputs": [],
  "outputs": [
    {
      "name": "",
      "type": "address",
      "internalType": "address"
    }
  ],
  "stateMutability": "view"
}
viewLP_FEE()
{
  "type": "function",
  "name": "LP_FEE",
  "inputs": [],
  "outputs": [
    {
      "name": "",
      "type": "uint24",
      "internalType": "uint24"
    }
  ],
  "stateMutability": "view"
}
viewpoolManager()
{
  "type": "function",
  "name": "poolManager",
  "inputs": [],
  "outputs": [
    {
      "name": "",
      "type": "address",
      "internalType": "contract IPoolManager"
    }
  ],
  "stateMutability": "view"
}
viewshook()
{
  "type": "function",
  "name": "shook",
  "inputs": [],
  "outputs": [
    {
      "name": "",
      "type": "address",
      "internalType": "address"
    }
  ],
  "stateMutability": "view"
}
viewTICK_SPACING()
{
  "type": "function",
  "name": "TICK_SPACING",
  "inputs": [],
  "outputs": [
    {
      "name": "",
      "type": "int24",
      "internalType": "int24"
    }
  ],
  "stateMutability": "view"
}

Errors 4

errorHookNotImplemented()
{
  "type": "error",
  "name": "HookNotImplemented",
  "inputs": []
}
errorInvalidInitialization()
{
  "type": "error",
  "name": "InvalidInitialization",
  "inputs": []
}
errorInvalidPool()
{
  "type": "error",
  "name": "InvalidPool",
  "inputs": []
}
errorNotPoolManager()
{
  "type": "error",
  "name": "NotPoolManager",
  "inputs": []
}

Source and provenance

Imported source files 21

Supporting contracts, interfaces, and libraries imported by the sources above, including their dependencies.

Source fingerprint: 3bd3d956c6f288981dec6d4461fdc153ced375792324983f9c7e5bdd67656a31. Download manifest.