Skip to main content

SimpleRouter

SimpleRouter

SimpleRouter instances pull (push) liquidity directly from (to) the reserve

Maker contracts using this router must make sure that the reserve approves the router for all asset that will be pulled (outbound tokens) Thus a maker contract using a vault that is not an EOA must make sure this vault has approval capacities.

pull

function __pull__(contract IERC20 token, address reserve, address maker, uint256 amount, bool strict) internal virtual returns (uint256 pulled)

transfers an amount of tokens from the reserve to the maker.

requires approval from reserve for this to transfer token.

Parameters

NameTypeDescription
tokencontract IERC20Token to be transferred
reserveaddressThe address of the reserve, where the tokens will be transferred from
makeraddressAddress of the maker, where the tokens will be transferred to
amountuint256The amount of tokens to be transferred
strictboolwether the caller maker contract wishes to pull at most amount.

Return Values

NameTypeDescription
pulleduint256The amount pulled if successful (will be equal to amount); otherwise, 0.

push

function __push__(contract IERC20 token, address reserve, address maker, uint256 amount) internal virtual returns (uint256)

router-dependent implementation of the push function transfers an amount of tokens from the maker to the reserve.

requires approval from maker for this to transfer token. will revert if transfer fails

Parameters

NameTypeDescription
tokencontract IERC20Token to be transferred
reserveaddressThe address of the reserve, where the tokens will be transferred to
makeraddressAddress of the maker, where the tokens will be transferred from
amountuint256The amount of tokens to be transferred

reserveBalance

function reserveBalance(contract IERC20 token, address reserve) external view returns (uint256)

returns the amount of tokens that can be made available for pulling by the maker contract

when this router is pulling from a lender, this must return the amount of asset that can be withdrawn from reserve

Parameters

NameTypeDescription
tokencontract IERC20is the asset one wishes to know the balance of
reserveaddressis the address identifying the location of the assets

checkList

function __checkList__(contract IERC20 token, address reserve) internal view virtual

router-dependent implementation of the checkList function verifies all required approval involving this router (either as a spender or owner)

checkList returns normally if all needed approval are strictly positive. It reverts otherwise with a reason.

Parameters

NameTypeDescription
tokencontract IERC20is the asset whose approval must be checked
reserveaddressthe reserve that requires asset pulling/pushing