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
  • TakerOrder
  • Parameters
  • TakerOrderResult
  • Parameters
  • MangroveOrderStart
  • Parameters
  • MangroveOrderComplete
  • SetExpiry
  • Parameters
  • expiring
  • Parameters
  • Return Values
  • setExpiry
  • Parameters
  • take
  • Parameters
  • Return Values
  1. Strat Lib
  2. Technical references
  3. API preferences
  4. Strats
  5. SRC
  6. Strategies
  7. Interfaces

IOrderLogic

TakerOrder

Information for creating a market order with a GTC or FOK semantics.

Parameters

struct TakerOrder {
  struct OLKey olKey;
  bool fillOrKill;
  Tick tick;
  uint256 fillVolume;
  bool fillWants;
  bool restingOrder;
  uint256 expiryDate;
  uint256 offerId;
  uint256 restingOrderGasreq;
}

TakerOrderResult

Result of an order from the takers side.

Parameters

struct TakerOrderResult {
  uint256 takerGot;
  uint256 takerGave;
  uint256 bounty;
  uint256 fee;
  uint256 offerId;
  bytes32 offerWriteData;
}

MangroveOrderStart

event MangroveOrderStart(bytes32 olKeyHash, address taker, bool fillOrKill, Tick tick, uint256 fillVolume, bool fillWants, bool restingOrder, uint256 offerId)

Information about the order. By emitting this data, an indexer will be able to tell that we are in the context of an mangroveOrder and keep track of what parameters was use to start the order.

Parameters

Name
Type
Description

olKeyHash

bytes32

the hash of the offer list key. This could be found by the OrderStart event, but is needed for RPC call. This is indexed so that RPC calls can filter on it.

taker

address

The address of the taker. This could be found by the OrderStart event, but is needed for RPC call. This is indexed so that RPC calls can filter on it.

fillOrKill

bool

The fillOrKill that take was called with

tick

Tick

The tick of the order. This is not needed for an indexer, as it can get it from the OrderStart event. It is only emitted for RPC calls.

fillVolume

uint256

the volume to fill. This is not needed for an indexer, as it can get it from the OrderStart event. It is only emitted for RPC calls.

fillWants

bool

if true (buying), the market order stops when fillVolume units of olKey.outbound_tkn have been obtained (fee included); otherwise (selling), the market order stops when fillVolume units of olKey.inbound_tkn have been sold.

restingOrder

bool

The restingOrder boolean take was called with.

offerId

uint256

The optional offerId take was called with, 0 if not passed. This is not needed for an indexer. It is only emitted for RPC calls.

MangroveOrderComplete

event MangroveOrderComplete()

Indicates that the MangroveOrder has been completed. We only emit this, so that an indexer can know that the order is completed and can thereby keep a correct context

SetExpiry

event SetExpiry(bytes32 olKeyHash, uint256 offerId, uint256 date)

The expiry of the offer has been set By emitting this data, an indexer will be able to keep track of the expiry date of an offer.

Parameters

Name
Type
Description

olKeyHash

bytes32

the hash of the offer list key. It is indexed so RPC call can filter on it.

offerId

uint256

the Mangrove offer id.

date

uint256

in seconds since unix epoch

expiring

function expiring(bytes32 olKeyHash, uint256 offerId) external returns (uint256)

Timestamp beyond which the given offerId should renege on trade.

Parameters

Name
Type
Description

olKeyHash

bytes32

the hash of the offer list key.

offerId

uint256

The id of the offer to query for expiry for.

Return Values

Name
Type
Description

[0]

uint256

res The timestamp beyond which offerId on the olKey offer list should renege on trade. 0 means no expiry.

setExpiry

function setExpiry(bytes32 olKeyHash, uint256 offerId, uint256 date) external

Updates the expiry date for a specific offer.

If new date is in the past of the current block's timestamp, offer will renege on trade.

Parameters

Name
Type
Description

olKeyHash

bytes32

the hash of the offer list key.

offerId

uint256

The offer id whose expiry date is to be set.

date

uint256

in seconds since unix epoch

take

function take(struct IOrderLogic.TakerOrder tko) external payable returns (struct IOrderLogic.TakerOrderResult res)

Implements "Fill or kill" or "Good till cancelled" orders on a given offer list.

Parameters

Name
Type
Description

tko

struct IOrderLogic.TakerOrder

the arguments in memory of the taker order

Return Values

Name
Type
Description

res

struct IOrderLogic.TakerOrderResult

the result of the taker order. If offerId==0, no resting order was posted on msg.sender's behalf.

PreviousIOfferLogicNextOffer_forwarder