IMangrove
Last updated
Last updated
See {IERC20Permit-DOMAIN_SEPARATOR}.
Return Values
[0]
bytes32
the domain separator.
See {IERC20Permit-PERMIT_TYPEHASH}.
Return Values
[0]
bytes32
The permit type hash.
Approves the spender to spend the amount of tokens on behalf of the caller.
Parameters
outbound_tkn
address
The address of the (maker) outbound token.
inbound_tkn
address
The address of the (maker) inbound token.
spender
address
The address of the spender.
value
uint256
The amount of tokens to approve.
[0]
bool
true If the approval succeeded; always true.
Returns the allowance of the spender to spend tokens on behalf of the owner.
outbound_tkn
address
The address of the (maker) outbound token.
inbound_tkn
address
The address of the (maker) inbound token.
owner
address
The address of the owner.
spender
address
The address of the spender.
amount
uint256
The amount of tokens the spender is allowed to spend on behalf of the owner.
outbound_tkn
address
The address of the (maker) outbound token.
inbound_tkn
address
The address of the (maker) inbound token.
owner
address
The address of the owner.
spender
address
The address of the spender.
value
uint256
The amount of tokens to approve.
deadline
uint256
The deadline after which the permit is no longer valid.
v
uint8
The signature v parameter.
r
bytes32
The signature r parameter.
s
bytes32
The signature s parameter.
See {IERC20Permit-nonces}.
owner
address
The address of the owner.
nonce
uint256
The current nonce of the owner.
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._
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
maxTick
Tick
Must 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).
fillVolume
uint256
Must 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.
fillWants
bool
If 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.
takerGot
uint256
The amount of olKey.outbound_tkn
the taker got.
takerGave
uint256
The amount of olKey.inbound_tkn
the taker gave.
bounty
uint256
The amount of native token the taker got as a bounty due to failing offers (in wei).
feePaid
uint256
The amount of olKey.outbound_tkn
the taker paid as a fee to Mangrove.
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.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
maxTick
Tick
Must 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).
fillVolume
uint256
Must 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.
fillWants
bool
If 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.
maxGasreqForFailingOffers
uint256
The maximum allowed gas required for failing offers (in wei).
takerGot
uint256
The amount of olKey.outbound_tkn
the taker got.
takerGave
uint256
The amount of olKey.inbound_tkn
the taker gave.
bounty
uint256
The amount of native token the taker got as a bounty due to failing offers (in wei).
feePaid
uint256
The amount of olKey.outbound_tkn
the taker paid as a fee to Mangrove.
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.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
takerWants
uint256
Must 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
.
takerGives
uint256
Must 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
.
fillWants
bool
If 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.
takerGot
uint256
The amount of olKey.outbound_tkn
the taker got.
takerGave
uint256
The amount of olKey.inbound_tkn
the taker gave.
bounty
uint256
The amount of native token the taker got as a bounty due to failing offers (in wei).
feePaid
uint256
The amount of olKey.outbound_tkn
the taker paid as a fee to Mangrove.
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
.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
maxTick
Tick
Must 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).
fillVolume
uint256
Must 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.
fillWants
bool
If 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.
taker
address
The 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.
takerGot
uint256
The amount of olKey.outbound_tkn
the taker got.
takerGave
uint256
The amount of olKey.inbound_tkn
the taker gave.
bounty
uint256
The amount of native token the taker got as a bounty due to failing offers (in wei).
feePaid
uint256
The amount of olKey.outbound_tkn
the taker paid as a fee to Mangrove.
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
.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
takerWants
uint256
Must 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
.
takerGives
uint256
Must 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
.
fillWants
bool
If 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.
taker
address
The 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.
takerGot
uint256
The amount of olKey.outbound_tkn
the taker got.
takerGave
uint256
The amount of olKey.inbound_tkn
the taker gave.
bounty
uint256
The amount of native token the taker got as a bounty due to failing offers (in wei).
feePaid
uint256
The amount of native token the taker paid as a fee (in wei of olKey.outbound_tkn
).
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. */_
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
targets
struct MgvLib.CleanTarget[]
The offers to clean, identified by their (offerId, tick, gasreq, takerWants
) that will make them fail.
taker
address
The taker used for transfers (should be able to deliver token amounts).
successes
uint256
The number of successfully cleaned offers.
bounty
uint256
The total bounty received by the caller.
Adds funds to Mangrove for the caller (the maker) to use for provisioning offers.
Adds funds to Mangrove for the caller (the maker) to use for provisioning offers.
Adds funds to Mangrove for the maker to use for provisioning offers.
maker
address
The maker to add funds for.
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.
amount
uint256
The amount to withdraw.
noRevert
bool
Whether the transfer succeeded.
Gets the maker's free balance of native tokens (funds for provisioning offers not locked by an offer).
maker
address
The maker to get the balance for.
balance
uint256
The maker's free balance of native tokens (funds for provisioning offers not locked by an offer).
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.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
tick
Tick
Must 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
.
gives
uint256
Must be <= MAX_SAFE_VOLUME
. The amount of olKey.outbound_tkn
the maker gives.
gasreq
uint256
The 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.
gasprice
uint256
The maximum gas price the maker is willing to pay a penalty for due to failing execution.
offerId
uint256
The id of the offer on Mangrove. Can be used to retract or update the offer (even to reuse a taken offer).
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.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
wants
uint256
Must 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
.
gives
uint256
Must 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.
gasreq
uint256
The 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.
gasprice
uint256
The maximum gas price the maker is willing to pay a penalty for due to failing execution.
offerId
uint256
The id of the offer on Mangrove. Can be used to retract or update the offer (even to reuse a taken offer).
Updates an existing offer on Mangrove, where the caller is the maker.
See newOfferByTick
for additional details.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
tick
Tick
Must 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
.
gives
uint256
The amount of olKey.outbound_tkn
the maker gives. Must be less than MAX_SAFE_VOLUME.
gasreq
uint256
The amount of gas required to execute the offer logic in the maker's IMaker
implementation.
gasprice
uint256
The maximum gas price the maker is willing to pay a penalty for due to failing execution.
offerId
uint256
The id of the offer on Mangrove.
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.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
wants
uint256
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
.
gives
uint256
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.
gasreq
uint256
The amount of gas required to execute the offer logic in the maker's IMaker
implementation.
gasprice
uint256
The maximum gas price the maker is willing to pay a penalty for due to failing execution.
offerId
uint256
The id of the offer on Mangrove.
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.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
offerId
uint256
The id of the offer on Mangrove.
deprovision
bool
Whether to deprovision the offer, i.e, return the provision to the maker's balance on Mangrove.
provision
uint256
The amount of native token deprovisioned for the offer (in wei).
Gets the global configuration for Mangrove.
_global
Global
The global configuration for Mangrove.
Gets the local configuration for a specific offer list.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
_local
Local
The local configuration for the offer list.
Gets the global configuration for Mangrove and local the configuration for a specific offer list.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
_global
Global
The global configuration for Mangrove.
_local
Local
The local configuration for the offer list.
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.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
[0]
bool
true If locked; otherwise, false.
Gets the offerId
of the best offer in the offer list.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
offerId
uint256
The offerId
of the best offer on the offer list.
Gets the offer list key with the given hash (if the offer list key has been activated at least once).
olKeyHash
bytes32
The hash of the offer list key.
olKey
struct OLKey
The olKey.
Gets an offer in packed format.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
offerId
uint256
The offerId
of the offer on the offer list.
offer
Offer
The offer in packed format.
Gets an offer's details in packed format.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
offerId
uint256
The offerId
of the offer on the offer list.
offerDetail
OfferDetail
The offer details in packed format.
Gets both an offer and its details in packed format.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
offerId
uint256
The offerId
of the offer on the offer list.
offer
Offer
The offer in packed format.
offerDetail
OfferDetail
The offer details in packed format.
Gets the governance address.
[0]
address
The governance address.
Activates an offer list.
If the flipped offer list is active then the offer lists are expected to have the same tickSpacing
.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
fee
uint256
In basis points, of olKey.outbound_tkn
given to the taker. This fee is sent to Mangrove. Fee is capped to ~2.5%.
density96X32
uint256
The density of the offer list used to define a minimum offer volume. See setDensity96X32
.
offer_gasbase
uint256
The gasbase of the offer list used to define a minimum provision necessary for offers. See setGasbase
.
Deactivates an offer list.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
Kills the Mangrove instance. A dead instance cannot have offers executed or funds received, but offers can be retracted and funds can be withdrawn.
Sets the density.
Useless if global.useOracle != 0
and oracle returns a valid density.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
density96X32
uint256
Is 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.
Sets the fee for the offer list.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
fee
uint256
In basis points, of olKey.outbound_tkn
given to the taker. This fee is sent to Mangrove. Fee is capped to ~2.5%.
Sets the gasbase for the offer list.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
offer_gasbase
uint256
The 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.
Sets the gasmax for Mangrove, the maximum amount of gas an offer can require to execute.
gasmax
uint256
The maximum amount of gas required to execute an offer. Must fit in 24 bits.
Sets the maximum number of times a market order can recursively execute offers. This is a protection against stack overflows.
maxRecursionDepth
uint256
The maximum number of times a market order can recursively execute offers.
Sets the maximum cumulative gasreq
for failing offers during a market order before doing a partial fill.
maxGasreqForFailingOffers
uint256
The maximum cumulative gasreq
for failing offers during a market order before doing a partial fill. 32 bits.
Sets the gasprice (in Mwei, 26 bits).
gasprice
uint256
The gasprice (in Mwei, 26 bits).
Sets a new governance address.
governanceAddress
address
The new governance address.
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.
monitor
address
The new monitor/oracle address.
Sets whether Mangrove notifies the Monitor when and offer is taken.
notify
bool
Whether Mangrove notifies the Monitor when and offer is taken.
Sets whether Mangrove uses the monitor as oracle for gasprice
and density
values.
useOracle
bool
Whether Mangrove uses the monitor as oracle for gasprice
and density
values.
Transfer ERC20 tokens to governance.
tokenAddress
address
The address of the ERC20 token.
value
uint256
The amount of tokens to transfer.
Gets a leaf.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
index
int256
The index.
[0]
Leaf
The leaf.
Gets a level 3 field.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
index
int256
The index.
[0]
Field
The field.
Gets a level 2 field.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
index
int256
The index.
[0]
Field
The field.
Gets a level 1 field.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
index
int256
The index.
[0]
Field
Yhe field.
Gets the root from local.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
[0]
Field
The root.
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.
sor
struct MgvLib.SingleOrder
Data about an order-offer match.
taker
address
The taker.
gasused
uint256
The amount of gas used for makerExecute
.
makerData
bytes32
The data returned by makerExecute
.
Internal function used to clean failing offers.
Not to be called externally - only external to be able to revert.
olKey
struct OLKey
The offer list key given by (maker) outbound_tkn
, (maker) inbound_tkn
, and tickSpacing
.
offerId
uint256
The id of the offer on Mangrove.
tick
Tick
Must 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
.
gasreq
uint256
The gas required for the offer.
takerWants
uint256
Must be <= MAX_SAFE_VOLUME
. The amount of olKey.outbound_tkn
the taker wants.
taker
address
The taker used for transfers (should be able to deliver token amounts).
bounty
uint256
The bounty paid.
Fall back function (forwards calls to MgvAppendix
).
callData
bytes
The call data.
[0]
bytes
The result.
[0]
bytes
The result.
Return Values
Parameters
Return Values
Adapted from
Parameters
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Parameters
Parameters
Return Values
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Return Values
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values
Parameters
Return Values