AbstractRouter
Partial implementation and requirements for liquidity routers.
boundMakerContracts
the bound maker contracts which are allowed to call this router.
onlyBound
This modifier verifies that msg.sender
an allowed caller of this router.
boundOrAdmin
This modifier verifies that msg.sender
is the admin or an allowed caller of this router.
MakerBind
logging bound maker contract by emitting this data, an indexer will be able to keep track of what maker contracts are allowed to call this router.
Parameters
maker
address
the maker address. This is indexed, so that RPC calls can filter on it.
MakerUnbind
logging unbound maker contract by emitting this data, an indexer will be able to keep track of what maker contracts are allowed to call this router.
Parameters
maker
address
the maker address. This is indexed, so that RPC calls can filter on it.
isBound
getter for the makers: addr => bool
mapping
Parameters
mkr
address
the address of a maker contract
Return Values
[0]
bool
true if mkr
is authorized to call this router.
pull
pulls liquidity from the reserve and sends it to the calling maker contract.
Parameters
token
contract IERC20
is the ERC20 managing the pulled asset
reserveId
address
identifies the fund owner (router implementation dependent).
amount
uint256
of token
the maker contract wishes to pull from its reserve
strict
bool
when the calling maker contract accepts to receive more funds from reserve than required (this may happen for gas optimization)
Return Values
pulled
uint256
the amount that was successfully pulled.
pull
router-dependent implementation of the pull
function
Parameters
token
contract IERC20
Token to be transferred
reserveId
address
determines the location of the reserve (router implementation dependent).
amount
uint256
The amount of tokens to be transferred
strict
bool
wether the caller maker contract wishes to pull at most amount
tokens of owner.
Return Values
[0]
uint256
pulled The amount pulled if successful; otherwise, 0.
push
pushes assets from calling's maker contract to a reserve
Parameters
token
contract IERC20
is the asset the maker is pushing
reserveId
address
determines the location of the reserve (router implementation dependent).
amount
uint256
is the amount of asset that should be transferred from the calling maker contract
Return Values
pushed
uint256
fraction of amount
that was successfully pushed to reserve.
push
router-dependent implementation of the push
function
Parameters
token
contract IERC20
Token to be transferred
reserveId
address
determines the location of the reserve (router implementation dependent).
amount
uint256
The amount of tokens to be transferred
Return Values
pushed
uint256
The amount pushed if successful; otherwise, 0.
flush
iterative push
for the whole balance in a single call
Parameters
tokens
contract IERC20[]
to flush
reserveId
address
determines the location of the reserve (router implementation dependent).
bind
adds a maker contract address to the allowed makers of this router
this function is callable by router's admin to bootstrap, but later on an allowed maker contract can add another address
Parameters
makerContract
address
the maker contract address
_unbind
removes a maker contract address from the allowed makers of this router
Parameters
makerContract
address
the maker contract address
unbind
removes msg.sender
from the allowed makers of this router
unbind
removes a makerContract from the allowed makers of this router
Parameters
makerContract
address
the maker contract address
checkList
allows a makerContract to verify it is ready to use this
router for a particular reserve
checkList
returns normally if all needed approval are strictly positive. It reverts otherwise with a reason.
Parameters
token
contract IERC20
is the asset (and possibly its overlyings) whose approval must be checked
reserveId
address
of the tokens that are being pulled
checkList
router-dependent additional checks
Parameters
token
contract IERC20
is the asset (and possibly its overlyings) whose approval must be checked
reserveId
address
of the tokens that are being pulled
activate
performs necessary approval to activate router function on a particular asset
Parameters
token
contract IERC20
the asset one wishes to use the router for
activate
router-dependent implementation of the activate
function
Parameters
token
contract IERC20
the asset one wishes to use the router for
balanceOfReserve
Balance of a reserve
Parameters
token
contract IERC20
the asset one wishes to know the balance of
reserveId
address
the identifier of the reserve
Return Values
[0]
uint256
the balance of the reserve