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
  • Functions
  • verifyFee
  • verifyProtocolShare
  • getFeeAmountFrom
  • getFeeAmount
  • getCompositionFee
  • getProtocolFeeAmount
  • _verifyFee
  • Errors
  • FeeHelper__FeeTooLarge
  • FeeHelper__ProtocolShareTooLarge
  1. Contracts
  2. Libraries

FeeHelper

PreviousConstantsNextHooks

Last updated 8 days ago

Author: Trader Joe

This library contains functions to calculate fees

Functions

verifyFee

Modifier to check that the fee is not too large

modifier verifyFee(uint128 fee);

Parameters

Name
Type
Description

fee

uint128

The fee

verifyProtocolShare

Modifier to check that the protocol share is not too large

modifier verifyProtocolShare(uint128 protocolShare);

Parameters

Name
Type
Description

protocolShare

uint128

The protocol share

getFeeAmountFrom

Calculates the fee amount from the amount with fees, rounding up

function getFeeAmountFrom(uint128 amountWithFees, uint128 totalFee)
    internal
    pure
    verifyFee(totalFee)
    returns (uint128);

Parameters

Name
Type
Description

amountWithFees

uint128

The amount with fees

totalFee

uint128

The total fee

Returns

Name
Type
Description

<none>

uint128

feeAmount The fee amount

getFeeAmount

Calculates the fee amount that will be charged, rounding up

function getFeeAmount(uint128 amount, uint128 totalFee) internal pure verifyFee(totalFee) returns (uint128);

Parameters

Name
Type
Description

amount

uint128

The amount

totalFee

uint128

The total fee

Returns

Name
Type
Description

<none>

uint128

feeAmount The fee amount

getCompositionFee

Calculates the composition fee amount from the amount with fees, rounding down

function getCompositionFee(uint128 amountWithFees, uint128 totalFee)
    internal
    pure
    verifyFee(totalFee)
    returns (uint128);

Parameters

Name
Type
Description

amountWithFees

uint128

The amount with fees

totalFee

uint128

The total fee

Returns

Name
Type
Description

<none>

uint128

The amount with fees

getProtocolFeeAmount

Calculates the protocol fee amount from the fee amount and the protocol share, rounding down

function getProtocolFeeAmount(uint128 feeAmount, uint128 protocolShare)
    internal
    pure
    verifyProtocolShare(protocolShare)
    returns (uint128);

Parameters

Name
Type
Description

feeAmount

uint128

The fee amount

protocolShare

uint128

The protocol share

Returns

Name
Type
Description

<none>

uint128

protocolFeeAmount The protocol fee amount

_verifyFee

Internal function to check that the fee is not too large

function _verifyFee(uint128 fee) private pure;

Parameters

Name
Type
Description

fee

uint128

The fee

Errors

FeeHelper__FeeTooLarge

error FeeHelper__FeeTooLarge();

FeeHelper__ProtocolShareTooLarge

error FeeHelper__ProtocolShareTooLarge();
Git Source