LFJ Developer Docs
  • Liquidity Book
  • Introduction
  • LB V2.2 Key Changes
  • Guides
    • Swap Tokens
    • Add/Remove Liquidity
    • Tracking Volume
    • Tracking Pool Balances
    • Finding The Best Quote
    • Byte32 Decoding
    • Price From Bin Id
    • Bin Id From Price
    • Finding Liquidity Depth
    • User Balances
  • Concepts
    • Concentrated Liquidity
    • Bin Math
    • Bin Liquidity
    • Swaps
    • Fees
    • Oracle
  • Contracts
    • Interfaces
      • ILBLegacyFactory
      • ILBLegacyToken
      • ILBLegacyPair
      • ILBLegacyRouter
      • ILBFlashLoanCallback
      • IPendingOwnable
      • IJoeFactory
      • IJoePair
      • IJoeRouter01
      • IJoeRouter02
      • IWNATIVE
      • ILBFactory
      • ILBHooks
      • ILBPair
      • ILBRouter
      • ILBToken
    • Libraries
      • Math
        • BitMath
        • Encoded
        • LiquidityConfigurations
        • PackedUint128Math
        • SafeCast
        • SampleMath
        • TreeMath
        • Uint128x128Math
        • Uint256x256Math
      • BinHelper
      • Clone
      • Constants
      • FeeHelper
      • Hooks
      • ImmutableClone
      • JoeLibrary
      • OracleHelper
      • PairParameterHelper
      • PriceHelper
      • ReentrancyGuardUpgradeable
      • TokenHelper
    • LBBaseHooks
    • LBFactory
    • LBPair
    • LBQuoter
    • LBRouter
    • LBToken
  • Deployment Addresses
    • Avalanche C-Chain
    • Fuji Testnet
    • Arbitrum One
    • Binance Smart Chain
    • Binance Smart Chain Testnet
    • Ethereum Mainnet
    • Monad Testnet
  • SDK
    • Introduction
    • Making a Trade
    • Adding Liquidity
    • Removing Liquidity
  • Audits
  • AMM
    • Joe V1 Contracts
    • Joe V1 Audits
  • LFJ DEX API
    • Dex Analytics
    • Pools
    • Rewards
    • User
    • User Lifetime Stats
    • Vaults
    • Models
  • LFJ Aggregator API
    • Default
    • Models
Powered by GitBook
On this page
  • State Variables
  • BEFORE_SWAP_FLAG
  • AFTER_SWAP_FLAG
  • BEFORE_FLASH_LOAN_FLAG
  • AFTER_FLASH_LOAN_FLAG
  • BEFORE_MINT_FLAG
  • AFTER_MINT_FLAG
  • BEFORE_BURN_FLAG
  • AFTER_BURN_FLAG
  • BEFORE_TRANSFER_FLAG
  • AFTER_TRANSFER_FLAG
  • Functions
  • encode
  • decode
  • getHooks
  • setHooks
  • getFlags
  • onHooksSet
  • beforeSwap
  • afterSwap
  • beforeFlashLoan
  • afterFlashLoan
  • beforeMint
  • afterMint
  • beforeBurn
  • afterBurn
  • beforeBatchTransferFrom
  • afterBatchTransferFrom
  • _safeCall
  • Errors
  • Hooks__CallFailed
  • Structs
  • Parameters
  1. Contracts
  2. Libraries

Hooks

PreviousFeeHelperNextImmutableClone

Last updated 8 days ago

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

State Variables

BEFORE_SWAP_FLAG

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

AFTER_SWAP_FLAG

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

BEFORE_FLASH_LOAN_FLAG

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

AFTER_FLASH_LOAN_FLAG

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

BEFORE_MINT_FLAG

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

AFTER_MINT_FLAG

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

BEFORE_BURN_FLAG

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

AFTER_BURN_FLAG

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

BEFORE_TRANSFER_FLAG

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

AFTER_TRANSFER_FLAG

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

Functions

encode

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

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

Parameters

Name
Type
Description

parameters

Parameters

The hooks parameters

Returns

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

decode

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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

Returns

Name
Type
Description

parameters

Parameters

The hooks parameters

getHooks

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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

Returns

Name
Type
Description

hooks

address

The hooks address

setHooks

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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

newHooks

address

The new hooks address

Returns

Name
Type
Description

<none>

bytes32

hooksParameters The updated hooks parameters

getFlags

Helper function to get the flags from the encoded hooks parameters

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

Returns

Name
Type
Description

flags

bytes12

The flags

onHooksSet

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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

onHooksSetData

bytes

The 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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

sender

address

The sender

to

address

The recipient

swapForY

bool

Whether the swap is for Y

amountsIn

bytes32

The 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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

sender

address

The sender

to

address

The recipient

swapForY

bool

Whether the swap is for Y

amountsOut

bytes32

The 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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

sender

address

The sender

to

address

The recipient

amounts

bytes32

The 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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

sender

address

The sender

to

address

The recipient

fees

bytes32

The fees

feesReceived

bytes32

The 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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

sender

address

The sender

to

address

The recipient

liquidityConfigs

bytes32[]

The liquidity configs

amountsReceived

bytes32

The 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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

sender

address

The sender

to

address

The recipient

liquidityConfigs

bytes32[]

The liquidity configs

amountsIn

bytes32

The 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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

sender

address

The sender

from

address

The sender

to

address

The recipient

ids

uint256[]

The ids

amountsToBurn

uint256[]

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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

sender

address

The sender

from

address

The sender

to

address

The recipient

ids

uint256[]

The ids

amountsToBurn

uint256[]

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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

sender

address

The sender

from

address

The sender

to

address

The recipient

ids

uint256[]

The list of ids

amounts

uint256[]

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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

sender

address

The sender

from

address

The sender

to

address

The recipient

ids

uint256[]

The list of ids

amounts

uint256[]

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

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

Parameters

Name
Type
Description

hooksParameters

bytes32

The encoded hooks parameters

data

bytes

The data to pass to the hooks contract

Errors

Hooks__CallFailed

error Hooks__CallFailed();

Structs

Parameters

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