Skip to main content

IMangrove

IMangrove​

DOMAIN_SEPARATOR​

function DOMAIN_SEPARATOR() external view returns (bytes32)

See {IERC20Permit-DOMAIN_SEPARATOR}.

Return Values​

NameTypeDescription
[0]bytes32the domain separator.

PERMIT_TYPEHASH​

function PERMIT_TYPEHASH() external pure returns (bytes32)

See {IERC20Permit-PERMIT_TYPEHASH}.

Return Values​

NameTypeDescription
[0]bytes32The permit type hash.

approve​

function approve(address outbound_tkn, address inbound_tkn, address spender, uint256 value) external returns (bool)

Approves the spender to spend the amount of tokens on behalf of the caller.

Parameters​

NameTypeDescription
outbound_tknaddressThe address of the (maker) outbound token.
inbound_tknaddressThe address of the (maker) inbound token.
spenderaddressThe address of the spender.
valueuint256The amount of tokens to approve.

Return Values​

NameTypeDescription
[0]booltrue If the approval succeeded; always true.

allowance​

function allowance(address outbound_tkn, address inbound_tkn, address owner, address spender) external view returns (uint256 amount)

Returns the allowance of the spender to spend tokens on behalf of the owner.

Parameters​

NameTypeDescription
outbound_tknaddressThe address of the (maker) outbound token.
inbound_tknaddressThe address of the (maker) inbound token.
owneraddressThe address of the owner.
spenderaddressThe address of the spender.

Return Values​

NameTypeDescription
amountuint256The amount of tokens the spender is allowed to spend on behalf of the owner.

permit​

function permit(address outbound_tkn, address inbound_tkn, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external

Adapted from Uniswap v2 contract

Parameters​

NameTypeDescription
outbound_tknaddressThe address of the (maker) outbound token.
inbound_tknaddressThe address of the (maker) inbound token.
owneraddressThe address of the owner.
spenderaddressThe address of the spender.
valueuint256The amount of tokens to approve.
deadlineuint256The deadline after which the permit is no longer valid.
vuint8The signature v parameter.
rbytes32The signature r parameter.
sbytes32The signature s parameter.

nonces​

function nonces(address owner) external view returns (uint256 nonce)

See {IERC20Permit-nonces}.

Parameters​

NameTypeDescription
owneraddressThe address of the owner.

Return Values​

NameTypeDescription
nonceuint256The current nonce of the owner.

marketOrderByTick​

function marketOrderByTick(struct OLKey olKey, Tick maxTick, uint256 fillVolume, bool fillWants) external returns (uint256 takerGot, uint256 takerGave, uint256 bounty, uint256 feePaid)

Performs a market order on a specified offer list taking offers up to a limit price.

_The market order stops when there are no more offers at or below maxTick, when the end of the book has been reached, or:

  • If fillWants is true, the market order stops when fillVolume units of olKey.outbound_tkn have been obtained. To buy a specific volume of olKey.outbound_tkn at any price, set fillWants to true, set fillVolume to the volume you want to buy, and set maxTick to the MAX_TICK constant.
  • If fillWants is false, the market order stops when fillVolume units of olKey.inbound_tkn have been paid. To sell a specific volume of olKey.inbound_tkn at any price, set fillWants to false, set fillVolume to the volume you want to sell, and set maxTick to the MAX_TICK constant._

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
maxTickTickMust be >= MIN_TICK and <= MAX_TICK. The log of the limit price the taker is ready to pay (meaning: the log base 1.0001 of the ratio of inbound tokens over outbound tokens).
fillVolumeuint256Must be <= MAX_SAFE_VOLUME. If fillWants is true, the amount of olKey.outbound_tkn the taker wants to buy; otherwise, the amount of olKey.inbound_tkn the taker wants to sell.
fillWantsboolIf true, the matching engine tries to get the taker all they want; otherwise, the matching engine tries to sell all that the taker gives. In both cases subject to the price limit.

Return Values​

NameTypeDescription
takerGotuint256The amount of olKey.outbound_tkn the taker got.
takerGaveuint256The amount of olKey.inbound_tkn the taker gave.
bountyuint256The amount of native token the taker got as a bounty due to failing offers (in wei).
feePaiduint256The amount of olKey.outbound_tkn the taker paid as a fee to Mangrove.

marketOrderByTickCustom​

function marketOrderByTickCustom(struct OLKey olKey, Tick maxTick, uint256 fillVolume, bool fillWants, uint256 maxGasreqForFailingOffers) external returns (uint256 takerGot, uint256 takerGave, uint256 bounty, uint256 feePaid)

Performs a market order on a specified offer list taking offers up to a limit price, while allowing to specify a custom maxGasreqForFailingOffers.

Mangrove stops a market order after it has gone through failing offers such that their cumulative gasreq is greater than the global maxGasreqForFailingOffers parameter. This function can be used by the taker to override the default maxGasreqForFailingOffers parameter.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
maxTickTickMust be >= MIN_TICK and <= MAX_TICK. The log of the limit price the taker is ready to pay (meaning: the log base 1.0001 of the ratio of inbound tokens over outbound tokens).
fillVolumeuint256Must be <= MAX_SAFE_VOLUME. If fillWants is true, the amount of olKey.outbound_tkn the taker wants to buy; otherwise, the amount of olKey.inbound_tkn the taker wants to sell.
fillWantsboolIf true, the matching engine tries to get the taker all they want; otherwise, the matching engine tries to sell all that the taker gives. In both cases subject to the price limit.
maxGasreqForFailingOffersuint256The maximum allowed gas required for failing offers (in wei).

Return Values​

NameTypeDescription
takerGotuint256The amount of olKey.outbound_tkn the taker got.
takerGaveuint256The amount of olKey.inbound_tkn the taker gave.
bountyuint256The amount of native token the taker got as a bounty due to failing offers (in wei).
feePaiduint256The amount of olKey.outbound_tkn the taker paid as a fee to Mangrove.

marketOrderByVolume​

function marketOrderByVolume(struct OLKey olKey, uint256 takerWants, uint256 takerGives, bool fillWants) external returns (uint256 takerGot, uint256 takerGave, uint256 bounty, uint256 feePaid)

Performs a market order on a specified offer list taking offers up to a limit price defined by a ratio inbound_tkn/outbound_tkn of volumes.

This function is just a wrapper for marketOrderByTick, see that function for details. When deriving the tick, then takerWants = 0 has a special meaning and the tick for the highest possible ratio between wants and gives will be used, and if takerGives = 0 and takerWants != 0, then the tick for the lowest possible ratio will be used.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
takerWantsuint256Must be <= MAX_SAFE_VOLUME. The amount the taker wants. This is used along with takerGives to derive a max price (maxTick) which is the lowest allowed tick in the offer list such that log_1.0001(takerGives/takerWants) <= maxTick.
takerGivesuint256Must be <= MAX_SAFE_VOLUME. The amount the taker gives. This is used along with takerWants to derive a max price (maxTick) which is the lowest allowed tick in the offer list such that log_1.0001(takerGives/takerWants) <= maxTick.
fillWantsboolIf true, the matching engine tries to get the taker all they want; otherwise, the matching engine tries to sell all that the taker gives. In both cases subject to the price limit.

Return Values​

NameTypeDescription
takerGotuint256The amount of olKey.outbound_tkn the taker got.
takerGaveuint256The amount of olKey.inbound_tkn the taker gave.
bountyuint256The amount of native token the taker got as a bounty due to failing offers (in wei).
feePaiduint256The amount of olKey.outbound_tkn the taker paid as a fee to Mangrove.

marketOrderForByTick​

function marketOrderForByTick(struct OLKey olKey, Tick maxTick, uint256 fillVolume, bool fillWants, address taker) external returns (uint256 takerGot, uint256 takerGave, uint256 bounty, uint256 feePaid)

Performs a market order on a specified offer list taking offers up to a limit price for a specified taker.

The bounty will be sent to msg.sender but transfers will be for taker. Requires prior permission. See also marketOrderByTick.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
maxTickTickMust be >= MIN_TICK and <= MAX_TICK. The log of the limit price the taker is ready to pay (meaning: the log base 1.0001 of the ratio of inbound tokens over outbound tokens).
fillVolumeuint256Must be <= MAX_SAFE_VOLUME. If fillWants is true, the amount of olKey.outbound_tkn the taker wants to buy; otherwise, the amount of olKey.inbound_tkn the taker wants to sell.
fillWantsboolIf true, the matching engine tries to get the taker all they want; otherwise, the matching engine tries to sell all that the taker gives. In both cases subject to the price limit.
takeraddressThe taker from which amounts will be transferred from and to. If the msg.sender's allowance for the given olKey.outbound_tkn,olKey.inbound_tkn is strictly less than the total amount eventually spent by taker, the call will fail.

Return Values​

NameTypeDescription
takerGotuint256The amount of olKey.outbound_tkn the taker got.
takerGaveuint256The amount of olKey.inbound_tkn the taker gave.
bountyuint256The amount of native token the taker got as a bounty due to failing offers (in wei).
feePaiduint256The amount of olKey.outbound_tkn the taker paid as a fee to Mangrove.

marketOrderForByVolume​

function marketOrderForByVolume(struct OLKey olKey, uint256 takerWants, uint256 takerGives, bool fillWants, address taker) external returns (uint256 takerGot, uint256 takerGave, uint256 bounty, uint256 feePaid)

Performs a market order on a specified offer list taking offers up to a limit price defined by a ratio inbound_tkn/outbound_tkn of volumes for a specified taker.

The bounty will be send to msg.sender but transfers will be for taker. Requires prior permission. See also marketOrderByVolume.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
takerWantsuint256Must be <= MAX_SAFE_VOLUME. The amount the taker wants. This is used along with takerGives to derive a max price (maxTick) which is the lowest allowed tick in the offer list such that log_1.0001(takerGives/takerWants) <= maxTick.
takerGivesuint256Must be <= MAX_SAFE_VOLUME. The amount the taker gives. This is used along with takerGives to derive a max price (maxTick) which is the lowest allowed tick in the offer list such that log_1.0001(takerGives/takerWants) <= maxTick.
fillWantsboolIf true, the matching engine tries to get the taker all they want; otherwise, the matching engine tries to sell all that the taker gives. In both cases subject to the price limit.
takeraddressThe taker from which amounts will be transferred from and to the. If the msg.sender's allowance for the given olKey.outbound_tkn,olKey.inbound_tkn are strictly less than the total amount eventually spent by taker, the call will fail.

Return Values​

NameTypeDescription
takerGotuint256The amount of olKey.outbound_tkn the taker got.
takerGaveuint256The amount of olKey.inbound_tkn the taker gave.
bountyuint256The amount of native token the taker got as a bounty due to failing offers (in wei).
feePaiduint256The amount of native token the taker paid as a fee (in wei of olKey.outbound_tkn).

cleanByImpersonation​

function cleanByImpersonation(struct OLKey olKey, struct MgvLib.CleanTarget[] targets, address taker) external returns (uint256 successes, uint256 bounty)

Cleans multiple offers, i.e. executes them and removes them from the book if they fail, transferring the failure penalty as bounty to the caller.

_If an offer succeeds, the execution of that offer is reverted, it stays in the book, and no bounty is paid; The cleanByImpersonation function itself will not revert. Note that Mangrove won't attempt to execute an offer if the values in a target don't match its offer. To distinguish between a non-executed clean and a failed clean (due to the offer itself not failing), you must inspect the log (see MgvLib.sol) or check the received bounty. Any taker can be impersonated when cleaning because:

  • The function reverts if the offer succeeds, reverting any token transfers.
  • After a clean where the offer has failed, all ERC20 token transfers have also been reverted -- but the sender will still have received the bounty of the failing offers. */_

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
targetsstruct MgvLib.CleanTarget[]The offers to clean, identified by their (offerId, tick, gasreq, takerWants) that will make them fail.
takeraddressThe taker used for transfers (should be able to deliver token amounts).

Return Values​

NameTypeDescription
successesuint256The number of successfully cleaned offers.
bountyuint256The total bounty received by the caller.

receive​

receive() external payable

Adds funds to Mangrove for the caller (the maker) to use for provisioning offers.

fund​

function fund() external payable

Adds funds to Mangrove for the caller (the maker) to use for provisioning offers.

fund​

function fund(address maker) external payable

Adds funds to Mangrove for the maker to use for provisioning offers.

Parameters​

NameTypeDescription
makeraddressThe maker to add funds for.

withdraw​

function withdraw(uint256 amount) external returns (bool noRevert)

Withdraws the caller's (the maker's) free native tokens (funds for provisioning offers not locked by an offer) by transferring them to the caller.

Parameters​

NameTypeDescription
amountuint256The amount to withdraw.

Return Values​

NameTypeDescription
noRevertboolWhether the transfer succeeded.

balanceOf​

function balanceOf(address maker) external view returns (uint256 balance)

Gets the maker's free balance of native tokens (funds for provisioning offers not locked by an offer).

Parameters​

NameTypeDescription
makeraddressThe maker to get the balance for.

Return Values​

NameTypeDescription
balanceuint256The maker's free balance of native tokens (funds for provisioning offers not locked by an offer).

newOfferByTick​

function newOfferByTick(struct OLKey olKey, Tick tick, uint256 gives, uint256 gasreq, uint256 gasprice) external payable returns (uint256 offerId)

Creates a new offer on Mangrove, where the caller is the maker. The maker can implement the IMaker interface to be called during offer execution.

The gasreq and gasprice are used to derive the provision which will be used to pay a penalty if the offer fails. This function is payable to enable delivery of the provision along with the offer creation.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
tickTickMust be >= MIN_TICK and <= MAX_TICK. The tick induces a price which is 1.0001^tick. The actual tick of the offer will be the smallest tick offerTick > tick that satisfies offerTick % tickSpacing == 0.
givesuint256Must be <= MAX_SAFE_VOLUME. The amount of olKey.outbound_tkn the maker gives.
gasrequint256The amount of gas required to execute the offer logic in the maker's IMaker implementation. This will limit the gas available, and the offer will fail if it spends more.
gaspriceuint256The maximum gas price the maker is willing to pay a penalty for due to failing execution.

Return Values​

NameTypeDescription
offerIduint256The id of the offer on Mangrove. Can be used to retract or update the offer (even to reuse a taken offer).

newOfferByVolume​

function newOfferByVolume(struct OLKey olKey, uint256 wants, uint256 gives, uint256 gasreq, uint256 gasprice) external payable returns (uint256 offerId)

Creates a new offer on Mangrove, where the caller is the maker. The maker can implement the IMaker interface to be called during offer execution.

This function is just a wrapper for newOfferByTick, see that function for details.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
wantsuint256Must be less than MAX_SAFE_VOLUME. The amount of olKey.inbound_tkn the maker wants. This is used along with gives to derive a tick (price). which is the lowest allowed tick in the offer list such that log_1.0001(takerGives/takerWants) <= maxTick.
givesuint256Must be less than MAX_SAFE_VOLUME. The amount of olKey.outbound_tkn the maker gives. This is used along with wants to derive a tick (price). which is the lowest allowed tick in the offer list such that log_1.0001(takerGives/takerWants) <= maxTick. Must be less than MAX_SAFE_VOLUME.
gasrequint256The amount of gas required to execute the offer logic in the maker's IMaker implementation. This will limit the gas available, and the offer will fail if it spends more.
gaspriceuint256The maximum gas price the maker is willing to pay a penalty for due to failing execution.

Return Values​

NameTypeDescription
offerIduint256The id of the offer on Mangrove. Can be used to retract or update the offer (even to reuse a taken offer).

updateOfferByTick​

function updateOfferByTick(struct OLKey olKey, Tick tick, uint256 gives, uint256 gasreq, uint256 gasprice, uint256 offerId) external payable

Updates an existing offer on Mangrove, where the caller is the maker.

See newOfferByTick for additional details.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
tickTickMust be >= MIN_TICK and <= MAX_TICK. The tick induces a price which is 1.0001^tick. The actual tick of the offer will be the smallest tick offerTick > tick that satisfies offerTick % tickSpacing == 0.
givesuint256The amount of olKey.outbound_tkn the maker gives. Must be less than MAX_SAFE_VOLUME.
gasrequint256The amount of gas required to execute the offer logic in the maker's IMaker implementation.
gaspriceuint256The maximum gas price the maker is willing to pay a penalty for due to failing execution.
offerIduint256The id of the offer on Mangrove.

updateOfferByVolume​

function updateOfferByVolume(struct OLKey olKey, uint256 wants, uint256 gives, uint256 gasreq, uint256 gasprice, uint256 offerId) external payable

Updates an existing, owned offer on Mangrove, where the caller is the maker.

This function is just a wrapper for updateOfferByTick, see that function for details.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
wantsuint256The amount of olKey.inbound_tkn the maker wants. This is used along with gives to derive a tick (price). which is the lowest allowed tick in the offer list such that log_1.0001(takerGives/takerWants) <= maxTick.
givesuint256The amount of olKey.outbound_tkn the maker gives. This is used along with wants to derive a tick (price). which is the lowest allowed tick in the offer list such that log_1.0001(takerGives/takerWants) <= maxTick. Must be less than MAX_SAFE_VOLUME.
gasrequint256The amount of gas required to execute the offer logic in the maker's IMaker implementation.
gaspriceuint256The maximum gas price the maker is willing to pay a penalty for due to failing execution.
offerIduint256The id of the offer on Mangrove.

retractOffer​

function retractOffer(struct OLKey olKey, uint256 offerId, bool deprovision) external returns (uint256 provision)

Retracts an offer from Mangrove, where the caller is the maker.

withdraw can be used to withdraw the funds after deprovisioning. Leaving funds provisioned can be used to save gas if offer is later updated.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
offerIduint256The id of the offer on Mangrove.
deprovisionboolWhether to deprovision the offer, i.e, return the provision to the maker's balance on Mangrove.

Return Values​

NameTypeDescription
provisionuint256The amount of native token deprovisioned for the offer (in wei).

global​

function global() external view returns (Global _global)

Gets the global configuration for Mangrove.

Return Values​

NameTypeDescription
_globalGlobalThe global configuration for Mangrove.

local​

function local(struct OLKey olKey) external view returns (Local _local)

Gets the local configuration for a specific offer list.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.

Return Values​

NameTypeDescription
_localLocalThe local configuration for the offer list.

config​

function config(struct OLKey olKey) external view returns (Global _global, Local _local)

Gets the global configuration for Mangrove and local the configuration for a specific offer list.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.

Return Values​

NameTypeDescription
_globalGlobalThe global configuration for Mangrove.
_localLocalThe local configuration for the offer list.

locked​

function locked(struct OLKey olKey) external view returns (bool)

Determines whether the reentrancy lock is in effect for the offer list.

The lock protects modifying or inspecting the offer list while an order is in progress.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.

Return Values​

NameTypeDescription
[0]booltrue If locked; otherwise, false.

best​

function best(struct OLKey olKey) external view returns (uint256 offerId)

Gets the offerId of the best offer in the offer list.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.

Return Values​

NameTypeDescription
offerIduint256The offerId of the best offer on the offer list.

olKeys​

function olKeys(bytes32 olKeyHash) external view returns (struct OLKey olKey)

Gets the offer list key with the given hash (if the offer list key has been activated at least once).

Parameters​

NameTypeDescription
olKeyHashbytes32The hash of the offer list key.

Return Values​

NameTypeDescription
olKeystruct OLKeyThe olKey.

offers​

function offers(struct OLKey olKey, uint256 offerId) external view returns (Offer offer)

Gets an offer in packed format.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
offerIduint256The offerId of the offer on the offer list.

Return Values​

NameTypeDescription
offerOfferThe offer in packed format.

offerDetails​

function offerDetails(struct OLKey olKey, uint256 offerId) external view returns (OfferDetail offerDetail)

Gets an offer's details in packed format.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
offerIduint256The offerId of the offer on the offer list.

Return Values​

NameTypeDescription
offerDetailOfferDetailThe offer details in packed format.

offerData​

function offerData(struct OLKey olKey, uint256 offerId) external view returns (Offer offer, OfferDetail offerDetail)

Gets both an offer and its details in packed format.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
offerIduint256The offerId of the offer on the offer list.

Return Values​

NameTypeDescription
offerOfferThe offer in packed format.
offerDetailOfferDetailThe offer details in packed format.

governance​

function governance() external view returns (address)

Gets the governance address.

Return Values​

NameTypeDescription
[0]addressThe governance address.

activate​

function activate(struct OLKey olKey, uint256 fee, uint256 density96X32, uint256 offer_gasbase) external

Activates an offer list.

If the flipped offer list is active then the offer lists are expected to have the same tickSpacing.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
feeuint256In basis points, of olKey.outbound_tkn given to the taker. This fee is sent to Mangrove. Fee is capped to ~2.5%.
density96X32uint256The density of the offer list used to define a minimum offer volume. See setDensity96X32.
offer_gasbaseuint256The gasbase of the offer list used to define a minimum provision necessary for offers. See setGasbase.

deactivate​

function deactivate(struct OLKey olKey) external

Deactivates an offer list.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.

kill​

function kill() external

Kills the Mangrove instance. A dead instance cannot have offers executed or funds received, but offers can be retracted and funds can be withdrawn.

setDensity96X32​

function setDensity96X32(struct OLKey olKey, uint256 density96X32) external

Sets the density.

Useless if global.useOracle != 0 and oracle returns a valid density.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
density96X32uint256Is given as a 96.32 fixed point number. It will be stored as a 9-bit float and be approximated towards 0. The maximum error is 20%. See DensityLib for more information.

setFee​

function setFee(struct OLKey olKey, uint256 fee) external

Sets the fee for the offer list.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
feeuint256In basis points, of olKey.outbound_tkn given to the taker. This fee is sent to Mangrove. Fee is capped to ~2.5%.

setGasbase​

function setGasbase(struct OLKey olKey, uint256 offer_gasbase) external

Sets the gasbase for the offer list.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
offer_gasbaseuint256The gasbase of the offer list used to define a minimum provision necessary for offers. Represents the gas overhead used by processing the offer inside Mangrove + the overhead of initiating an entire order. Stored in thousands in a maximum of 9 bits.

setGasmax​

function setGasmax(uint256 gasmax) external

Sets the gasmax for Mangrove, the maximum amount of gas an offer can require to execute.

Parameters​

NameTypeDescription
gasmaxuint256The maximum amount of gas required to execute an offer. Must fit in 24 bits.

setMaxRecursionDepth​

function setMaxRecursionDepth(uint256 maxRecursionDepth) external

Sets the maximum number of times a market order can recursively execute offers. This is a protection against stack overflows.

Parameters​

NameTypeDescription
maxRecursionDepthuint256The maximum number of times a market order can recursively execute offers.

setMaxGasreqForFailingOffers​

function setMaxGasreqForFailingOffers(uint256 maxGasreqForFailingOffers) external

Sets the maximum cumulative gasreq for failing offers during a market order before doing a partial fill.

Parameters​

NameTypeDescription
maxGasreqForFailingOffersuint256The maximum cumulative gasreq for failing offers during a market order before doing a partial fill. 32 bits.

setGasprice​

function setGasprice(uint256 gasprice) external

Sets the gasprice (in Mwei, 26 bits).

Parameters​

NameTypeDescription
gaspriceuint256The gasprice (in Mwei, 26 bits).

setGovernance​

function setGovernance(address governanceAddress) external

Sets a new governance address.

Parameters​

NameTypeDescription
governanceAddressaddressThe new governance address.

setMonitor​

function setMonitor(address monitor) external

Sets the monitor/oracle. The monitor/oracle can provide real-time values for gasprice and density to Mangrove. It can also receive liquidity event notifications.

Parameters​

NameTypeDescription
monitoraddressThe new monitor/oracle address.

setNotify​

function setNotify(bool notify) external

Sets whether Mangrove notifies the Monitor when and offer is taken.

Parameters​

NameTypeDescription
notifyboolWhether Mangrove notifies the Monitor when and offer is taken.

setUseOracle​

function setUseOracle(bool useOracle) external

Sets whether Mangrove uses the monitor as oracle for gasprice and density values.

Parameters​

NameTypeDescription
useOracleboolWhether Mangrove uses the monitor as oracle for gasprice and density values.

withdrawERC20​

function withdrawERC20(address tokenAddress, uint256 value) external

Transfer ERC20 tokens to governance.

Parameters​

NameTypeDescription
tokenAddressaddressThe address of the ERC20 token.
valueuint256The amount of tokens to transfer.

leafs​

function leafs(struct OLKey olKey, int256 index) external view returns (Leaf)

Gets a leaf.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
indexint256The index.

Return Values​

NameTypeDescription
[0]LeafThe leaf.

level3s​

function level3s(struct OLKey olKey, int256 index) external view returns (Field)

Gets a level 3 field.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
indexint256The index.

Return Values​

NameTypeDescription
[0]FieldThe field.

level2s​

function level2s(struct OLKey olKey, int256 index) external view returns (Field)

Gets a level 2 field.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
indexint256The index.

Return Values​

NameTypeDescription
[0]FieldThe field.

level1s​

function level1s(struct OLKey olKey, int256 index) external view returns (Field)

Gets a level 1 field.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
indexint256The index.

Return Values​

NameTypeDescription
[0]FieldYhe field.

root​

function root(struct OLKey olKey) external view returns (Field)

Gets the root from local.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.

Return Values​

NameTypeDescription
[0]FieldThe root.

flashloan​

function flashloan(struct MgvLib.SingleOrder sor, address taker) external returns (uint256 gasused, bytes32 makerData)

Internal function used to flashloan tokens from taker to maker, for maker to source the promised liquidity.

Not to be called externally - only external to be able to revert.

Parameters​

NameTypeDescription
sorstruct MgvLib.SingleOrderData about an order-offer match.
takeraddressThe taker.

Return Values​

NameTypeDescription
gasuseduint256The amount of gas used for makerExecute.
makerDatabytes32The data returned by makerExecute.

internalCleanByImpersonation​

function internalCleanByImpersonation(struct OLKey olKey, uint256 offerId, Tick tick, uint256 gasreq, uint256 takerWants, address taker) external returns (uint256 bounty)

Internal function used to clean failing offers.

Not to be called externally - only external to be able to revert.

Parameters​

NameTypeDescription
olKeystruct OLKeyThe offer list key given by (maker) outbound_tkn, (maker) inbound_tkn, and tickSpacing.
offerIduint256The id of the offer on Mangrove.
tickTickMust be >= MIN_TICK and <= MAX_TICK. The tick induces a price which is 1.0001^tick. The actual tick of the offer will be the smallest tick offerTick > tick that satisfies offerTick % tickSpacing == 0.
gasrequint256The gas required for the offer.
takerWantsuint256Must be <= MAX_SAFE_VOLUME. The amount of olKey.outbound_tkn the taker wants.
takeraddressThe taker used for transfers (should be able to deliver token amounts).

Return Values​

NameTypeDescription
bountyuint256The bounty paid.

fallback​

fallback(bytes callData) external returns (bytes)

Fall back function (forwards calls to MgvAppendix).

Parameters​

NameTypeDescription
callDatabytesThe call data.

Return Values​

NameTypeDescription
[0]bytesThe result.