Skip to content

Hooks ​

Git Source

This library contains functions that should be used to interact with hooks

State Variables ​

BEFORE_SWAP_FLAG ​

solidity
bytes32 internal constant BEFORE_SWAP_FLAG = bytes32(uint256(1 << 160));

AFTER_SWAP_FLAG ​

solidity
bytes32 internal constant AFTER_SWAP_FLAG = bytes32(uint256(1 << 161));

BEFORE_FLASH_LOAN_FLAG ​

solidity
bytes32 internal constant BEFORE_FLASH_LOAN_FLAG = bytes32(uint256(1 << 162));

AFTER_FLASH_LOAN_FLAG ​

solidity
bytes32 internal constant AFTER_FLASH_LOAN_FLAG = bytes32(uint256(1 << 163));

BEFORE_MINT_FLAG ​

solidity
bytes32 internal constant BEFORE_MINT_FLAG = bytes32(uint256(1 << 164));

AFTER_MINT_FLAG ​

solidity
bytes32 internal constant AFTER_MINT_FLAG = bytes32(uint256(1 << 165));

BEFORE_BURN_FLAG ​

solidity
bytes32 internal constant BEFORE_BURN_FLAG = bytes32(uint256(1 << 166));

AFTER_BURN_FLAG ​

solidity
bytes32 internal constant AFTER_BURN_FLAG = bytes32(uint256(1 << 167));

BEFORE_TRANSFER_FLAG ​

solidity
bytes32 internal constant BEFORE_TRANSFER_FLAG = bytes32(uint256(1 << 168));

AFTER_TRANSFER_FLAG ​

solidity
bytes32 internal constant AFTER_TRANSFER_FLAG = bytes32(uint256(1 << 169));

Functions ​

encode ​

Helper function to encode the hooks parameters to a single bytes32 value

solidity
function encode(Parameters memory parameters) internal pure returns (bytes32 hooksParameters);

Parameters

NameTypeDescription
parametersParametersThe hooks parameters

Returns

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters

decode ​

Helper function to decode the hooks parameters from a single bytes32 value

solidity
function decode(bytes32 hooksParameters) internal pure returns (Parameters memory parameters);

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters

Returns

NameTypeDescription
parametersParametersThe hooks parameters

getHooks ​

Helper function to get the hooks address from the encoded hooks parameters

solidity
function getHooks(bytes32 hooksParameters) internal pure returns (address hooks);

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters

Returns

NameTypeDescription
hooksaddressThe hooks address

setHooks ​

Helper function to set the hooks address in the encoded hooks parameters

solidity
function setHooks(bytes32 hooksParameters, address newHooks) internal pure returns (bytes32);

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
newHooksaddressThe new hooks address

Returns

NameTypeDescription
<none>bytes32hooksParameters The updated hooks parameters

getFlags ​

Helper function to get the flags from the encoded hooks parameters

solidity
function getFlags(bytes32 hooksParameters) internal pure returns (bytes12 flags);

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters

Returns

NameTypeDescription
flagsbytes12The flags

onHooksSet ​

Helper function call the onHooksSet function on the hooks contract, only if the
hooksParameters is not 0

solidity
function onHooksSet(bytes32 hooksParameters, bytes calldata onHooksSetData) internal;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
onHooksSetDatabytesThe data to pass to the onHooksSet function

beforeSwap ​

Helper function to call the beforeSwap function on the hooks contract, only if the
BEFORE_SWAP_FLAG is set in the hooksParameters

solidity
function beforeSwap(bytes32 hooksParameters, address sender, address to, bool swapForY, bytes32 amountsIn) internal;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
senderaddressThe sender
toaddressThe recipient
swapForYboolWhether the swap is for Y
amountsInbytes32The amounts in

afterSwap ​

Helper function to call the afterSwap function on the hooks contract, only if the
AFTER_SWAP_FLAG is set in the hooksParameters

solidity
function afterSwap(bytes32 hooksParameters, address sender, address to, bool swapForY, bytes32 amountsOut) internal;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
senderaddressThe sender
toaddressThe recipient
swapForYboolWhether the swap is for Y
amountsOutbytes32The amounts out

beforeFlashLoan ​

Helper function to call the beforeFlashLoan function on the hooks contract, only if the
BEFORE_FLASH_LOAN_FLAG is set in the hooksParameters

solidity
function beforeFlashLoan(bytes32 hooksParameters, address sender, address to, bytes32 amounts) internal;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
senderaddressThe sender
toaddressThe recipient
amountsbytes32The amounts

afterFlashLoan ​

Helper function to call the afterFlashLoan function on the hooks contract, only if the
AFTER_FLASH_LOAN_FLAG is set in the hooksParameters

solidity
function afterFlashLoan(bytes32 hooksParameters, address sender, address to, bytes32 fees, bytes32 feesReceived)
    internal;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
senderaddressThe sender
toaddressThe recipient
feesbytes32The fees
feesReceivedbytes32The fees received

beforeMint ​

Helper function to call the beforeMint function on the hooks contract, only if the
BEFORE_MINT_FLAG is set in the hooksParameters

solidity
function beforeMint(
    bytes32 hooksParameters,
    address sender,
    address to,
    bytes32[] calldata liquidityConfigs,
    bytes32 amountsReceived
) internal;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
senderaddressThe sender
toaddressThe recipient
liquidityConfigsbytes32[]The liquidity configs
amountsReceivedbytes32The amounts received

afterMint ​

Helper function to call the afterMint function on the hooks contract, only if the
AFTER_MINT_FLAG is set in the hooksParameters

solidity
function afterMint(
    bytes32 hooksParameters,
    address sender,
    address to,
    bytes32[] calldata liquidityConfigs,
    bytes32 amountsIn
) internal;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
senderaddressThe sender
toaddressThe recipient
liquidityConfigsbytes32[]The liquidity configs
amountsInbytes32The amounts in

beforeBurn ​

Helper function to call the beforeBurn function on the hooks contract, only if the
BEFORE_BURN_FLAG is set in the hooksParameters

solidity
function beforeBurn(
    bytes32 hooksParameters,
    address sender,
    address from,
    address to,
    uint256[] calldata ids,
    uint256[] calldata amountsToBurn
) internal;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
senderaddressThe sender
fromaddressThe sender
toaddressThe recipient
idsuint256[]The ids
amountsToBurnuint256[]The amounts to burn

afterBurn ​

Helper function to call the afterBurn function on the hooks contract, only if the
AFTER_BURN_FLAG is set in the hooksParameters

solidity
function afterBurn(
    bytes32 hooksParameters,
    address sender,
    address from,
    address to,
    uint256[] calldata ids,
    uint256[] calldata amountsToBurn
) internal;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
senderaddressThe sender
fromaddressThe sender
toaddressThe recipient
idsuint256[]The ids
amountsToBurnuint256[]The amounts to burn

beforeBatchTransferFrom ​

Helper function to call the beforeTransferFrom function on the hooks contract, only if the
BEFORE_TRANSFER_FLAG is set in the hooksParameters

solidity
function beforeBatchTransferFrom(
    bytes32 hooksParameters,
    address sender,
    address from,
    address to,
    uint256[] calldata ids,
    uint256[] calldata amounts
) internal;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
senderaddressThe sender
fromaddressThe sender
toaddressThe recipient
idsuint256[]The list of ids
amountsuint256[]The list of amounts

afterBatchTransferFrom ​

Helper function to call the afterTransferFrom function on the hooks contract, only if the
AFTER_TRANSFER_FLAG is set in the hooksParameters

solidity
function afterBatchTransferFrom(
    bytes32 hooksParameters,
    address sender,
    address from,
    address to,
    uint256[] calldata ids,
    uint256[] calldata amounts
) internal;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
senderaddressThe sender
fromaddressThe sender
toaddressThe recipient
idsuint256[]The list of ids
amountsuint256[]The list of amounts

_safeCall ​

Helper function to call the hooks contract and verify the call was successful
by matching the expected selector with the returned data

solidity
function _safeCall(bytes32 hooksParameters, bytes memory data) private;

Parameters

NameTypeDescription
hooksParametersbytes32The encoded hooks parameters
databytesThe data to pass to the hooks contract

Errors ​

Hooks__CallFailed ​

solidity
error Hooks__CallFailed();

Structs ​

Parameters ​

solidity
struct Parameters {
    address hooks;
    bool beforeSwap;
    bool afterSwap;
    bool beforeFlashLoan;
    bool afterFlashLoan;
    bool beforeMint;
    bool afterMint;
    bool beforeBurn;
    bool afterBurn;
    bool beforeBatchTransferFrom;
    bool afterBatchTransferFrom;
}