Mangrove
Developper
Developper
  • Welcome
  • Protocol
    • Introduction
    • Technical References
      • Overview
      • Ticks, ratios, and prices
      • Offer-list
        • Views on offers
      • Market-order
        • Delegation
      • Creating & Updating offers
        • Maker contract
        • Offer provisions
        • Gas requirement
        • Public data structures
        • Executing offers
      • Cleaning offers
      • Governance-parameters
        • Global variables
        • Local variables
        • Data structures and views
      • Periphery Contracts
        • MgvReader
        • MgvOracle
      • Literate Source Code
    • Background
      • Taking available liquidity
      • Making liquidity available
      • Reneging on offers
  • Strat Lib
    • What is the Strat Library?
    • Getting-started
      • Set Up Your Local Environment
      • Post a Smart Offer
    • Guides
      • Unlocking liquidity
      • Reposting an offer in the posthook
      • Using last look to renege trades
      • Determining gas requirements
      • Creating a Direct contract
      • Deploying your contract
      • Testing a maker contract
      • Safe offer logic guidelines
      • Approvals
    • Technical references
      • Principal hooks
      • Liquidity routing
      • API preferences
        • Core
          • SRC
            • IMangrove
        • Strats
          • SRC
            • Strategies
              • MangroveOffer
              • MangroveOrder
              • Integrations
                • AaveV3Borrower
                • AaveV3BorrowerImplementation
                • AaveV3BorrowerStorage
                • AaveV3Lender
                • CompoundModule
              • Interfaces
                • IForwarder
                • ILiquidityProvider
                • IOfferLogic
                • IOrderLogic
              • Offer_forwarder
                • Abstract
                  • Forwarder
              • Offer_maker
                • Abstract
                  • Direct
                • Market_making
                  • Kandel
                    • AaveKandel
                    • AaveKandelSeeder
                    • KandelSeeder
                    • Abstract
                      • AbstractKandelSeeder
                      • CoreKandel
                      • DirectWithBidsAndAsksDistribution
                      • GeometricKandel
                      • HasIndexedBidsAndAsks
                      • KandelLib
                      • TradesBaseQuotePair
              • Routeurs
                • SimpleRouter
                • Abstract
                  • AbstractRouter
                • Integrations
                  • AavePooledRouter
                  • HasAaveBalanceMemoizer
              • Utils
                • AccessControlled
              • Vendor
                • AAVE
                  • V3
                    • Contracts
                      • Dependencies
                        • Oppenzeppelin
                          • Contracts
                            • IERC20
                      • Interfaces
                        • IAToken
                        • IAaveIncentivesController
                        • IAaveOracle
                        • ICreditDelegationToken
                        • IInitializableAToken
                        • IPool
                        • IPoolAddressesProvider
                        • IPriceOracleGetter
                        • IScaledBalanceToken
                      • Protocol
                        • Libraries
                          • Configurations
                            • ReserveConfiguration
                          • Helpers
                            • Errors
                          • Types
                            • DataTypes
                    • Periphery
                      • Contracts
                        • MISC
                          • Interfaces
                            • IEACAggregatorProxy
                        • Rewards
                          • Interfaces
                            • IRewardsController
                            • IRewardsDistributor
                            • ITransferStrategyBase
                          • Libraries
                            • RewardsDataTypes
                • Compound
                  • CarefulMath
                  • Exponential
                  • ExponentialNoError
                  • ICompound
    • Background
      • Building Blocks
        • MangroveOffer
        • Direct
        • Forwarder
  • Vaults
    • Understanding vaults
      • Oracles
    • Managing a vault (CLI)
      • Deploying an oracle
      • Creating a vault
      • Monitoring the vault
      • Setting the vault position
      • Setting the fee data
      • Rebalancing
      • Adding or removing liquidity
    • Custom interactions
      • Oracles
      • Vault Factory
      • Managing a vault
        • Setting the position
        • Rebalancing
        • Setting a manager
        • Setting fee
  • Keeper Bots
    • Keeper Bots
    • Guides
      • Using borrowed funds for cleaning
    • Backgroud
      • The role of cleaning bots in Mangrove
      • The role of gas price updater bots in Mangrove
  • Adresses
    • Deployment Addresses
  • Quick Links
    • Glossary
    • Website
    • Whitepaper
Powered by GitBook
On this page
  • IS_FIRST_PULLER
  • constructor
  • Parameters
  • isOverlying
  • Parameters
  • Return Values
  • initialize
  • Parameters
  • setRouter
  • depositFunds
  • Parameters
  • withdrawFundsForToken
  • Parameters
  • reserveBalance
  • Parameters
  • Return Values
  • lastLook
  • Parameters
  • Return Values
  • posthookSuccess
  1. Strat Lib
  2. Technical references
  3. API preferences
  4. Strats
  5. SRC
  6. Strategies
  7. Offer_maker
  8. Market_making
  9. Kandel

AaveKandel

IS_FIRST_PULLER

bytes32 IS_FIRST_PULLER

Indication that this is first puller (returned from lastLook) so posthook should deposit liquidity on AAVE

constructor

constructor(contract IMangrove mgv, struct OLKey olKeyBaseQuote, address reserveId) public

Constructor

Parameters

Name
Type
Description

mgv

contract IMangrove

The Mangrove deployment.

olKeyBaseQuote

struct OLKey

The OLKey for the outbound_tkn base and inbound_tkn quote offer list Kandel will act on, the flipped OLKey is used for the opposite offer list.

reserveId

address

identifier of this contract's reserve when using a router.

isOverlying

function isOverlying(address token) internal view returns (bool)

Verifies that token is not an official AAVE overlying.

Parameters

Name
Type
Description

token

address

the token to verify.

Return Values

Name
Type
Description

[0]

bool

true if overlying; otherwise, false.

initialize

function initialize(contract AavePooledRouter router_, uint256 gasreq) external

Sets the AaveRouter as router and activates router for base and quote

Parameters

Name
Type
Description

router_

contract AavePooledRouter

the Aave router to use.

gasreq

uint256

the gas required to execute an offer of this Kandel strat

setRouter

function setRouter(contract AbstractRouter router) public virtual

depositFunds

function depositFunds(uint256 baseAmount, uint256 quoteAmount) public

deposits funds to be available for being offered. Will increase pending.

Parameters

Name
Type
Description

baseAmount

uint256

the amount of base tokens to deposit.

quoteAmount

uint256

the amount of quote tokens to deposit.

withdrawFundsForToken

function withdrawFundsForToken(contract IERC20 token, uint256 amount, address recipient) internal

tries to withdraw funds on this contract's balance and then reaches out to the router available funds for the remainder

Parameters

Name
Type
Description

token

contract IERC20

the token to withdraw.

amount

uint256

the amount of tokens to withdraw. Use type(uint).max to denote the entire reserve balance.

recipient

address

the address to which the withdrawn funds should be sent to.

reserveBalance

function reserveBalance(enum OfferType ba) public view returns (uint256 balance)

returns the amount of the router's that can be used by this contract, as well as local balance for the token offered for the offer type.

Parameters

Name
Type
Description

ba

enum OfferType

the offer type.

Return Values

Name
Type
Description

balance

uint256

the balance of the token.

lastLook

function __lastLook__(struct MgvLib.SingleOrder order) internal returns (bytes32)

Verifies, prior to pulling funds from the router, whether pull will be fetching funds on AAVE

lastLook should revert if trade is to be reneged on. If not, returned bytes32 are passed to makerPosthook in the makerData field.

Parameters

Name
Type
Description

order

struct MgvLib.SingleOrder

is a recall of the taker order that is at the origin of the current trade.

Return Values

Name
Type
Description

[0]

bytes32

posthookSuccess

function __posthookSuccess__(struct MgvLib.SingleOrder order, bytes32 makerData) internal returns (bytes32 repostStatus)

overrides and replaces Direct's posthook in order to push and supply on AAVE with a single call when offer logic is the first to pull funds from AAVE

PreviousKandelNextAaveKandelSeeder