Skip to main content

IOfferLogic

IOfferLogic​

It is an IMaker for Mangrove.

LogIncident​

event LogIncident(bytes32 olKeyHash, uint256 offerId, bytes32 makerData, bytes32 mgvData)

Log incident (during post trade execution) By emitting this data, an indexer can keep track of what incidents has happened.

Parameters​

NameTypeDescription
olKeyHashbytes32the hash of the offer list key. This is indexed so that RPC calls can filter on it.
offerIduint256the Mangrove offer id. This is indexed so that RPC calls can filter on it.
makerDatabytes32from the maker.
mgvDatabytes32from Mangrove.

SetRouter​

event SetRouter(contract AbstractRouter router)

Logging change of router address By emitting this an indexer can keep track of what router is used.

Parameters​

NameTypeDescription
routercontract AbstractRouterthe new router address.

setRouter​

function setRouter(contract AbstractRouter router_) external

sets a new router to pull outbound tokens from contract's reserve to this and push inbound tokens to reserve.

new router needs to be approved by this to push funds to reserve (see activate function). It also needs to be approved by reserve to pull from it.

Parameters​

NameTypeDescription
router_contract AbstractRouterthe new router contract that this contract should use. Use NO_ROUTER for no router.

approve​

function approve(contract IERC20 token, address spender, uint256 amount) external returns (bool)

Approves a spender to transfer a certain amount of tokens on behalf of this.

admin may use this function to revoke specific approvals of this that are set after a call to activate.

Parameters​

NameTypeDescription
tokencontract IERC20the ERC20 token contract
spenderaddressthe approved spender
amountuint256the spending amount

Return Values​

NameTypeDescription
[0]boolresult of token approval.

provisionOf​

function provisionOf(struct OLKey olKey, uint256 offerId) external view returns (uint256 provision)

computes the amount of native tokens that can be redeemed when deprovisioning a given offer.

Parameters​

NameTypeDescription
olKeystruct OLKeythe offer list key.
offerIduint256the identifier of the offer in the offer list

Return Values​

NameTypeDescription
provisionuint256the amount of native tokens that can be redeemed when deprovisioning the offer

checkList​

function checkList(contract IERC20[] tokens) external view

verifies that this contract's current state is ready to be used to post offers on Mangrove

throws with a reason if something (e.g. an approval) is missing.

Parameters​

NameTypeDescription
tokenscontract IERC20[]the list of tokens that are traded by this contract

activate​

function activate(contract IERC20[] tokens) external

performs the required approvals so as to allow this to interact with Mangrove on a set of assets.

Parameters​

NameTypeDescription
tokenscontract IERC20[]the ERC20 this will approve to be able to trade on Mangrove's corresponding markets.

withdrawFromMangrove​

function withdrawFromMangrove(uint256 amount, address payable receiver) external

withdraws native tokens from this balance on Mangrove.

Since a call is made to the receiver, this function is subject to reentrancy.

Parameters​

NameTypeDescription
amountuint256the amount of WEI one wishes to withdraw.
receiveraddress payablethe address of the receiver of the funds.

OfferArgs​

Memory allocation for _new/updateOffer's arguments.

owner is required in Forwarder logics, when _newOffer or _updateOffer in called in a hook (msg.sender==MGV).

Parameters​

NameTypeDescription
struct OfferArgs {
struct OLKey olKey;
Tick tick;
uint256 gives;
uint256 gasreq;
uint256 gasprice;
uint256 fund;
bool noRevert;
}

router​

function router() external view returns (contract AbstractRouter)

Contract's router getter.

if contract has a no router, function returns NO_ROUTER.

Return Values​

NameTypeDescription
[0]contract AbstractRouterthe router.

MGV​

function MGV() external view returns (contract IMangrove)

Contract's Mangrove getter

Return Values​

NameTypeDescription
[0]contract IMangrovethe Mangrove contract.