feat: update

This commit is contained in:
Shriya Tyagi 2024-01-10 22:04:11 +04:00
parent 19dd322655
commit 3981750ec9
7 changed files with 7638 additions and 1044 deletions

View File

@ -15,7 +15,7 @@ contract Events {
Id indexed id,
uint256 assets,
uint256 shares,
address onBehalf,
address indexed onBehalf,
uint256 getId,
uint256 setId
);
@ -30,7 +30,7 @@ contract Events {
event LogSupplyCollateralOnBehalf(
Id indexed id,
uint256 assets,
address onBehalf,
address indexed onBehalf,
uint256 getId,
uint256 setId
);
@ -47,8 +47,8 @@ contract Events {
Id indexed id,
uint256 amounts,
uint256 shares,
address onBehalf,
address receiver,
address indexed onBehalf,
address indexed receiver,
uint256 getId,
uint256 setId
);
@ -65,7 +65,7 @@ contract Events {
Id indexed id,
uint256 amounts,
uint256 shares,
address onBehalf,
address indexed onBehalf,
uint256 getId,
uint256 setId
);
@ -80,8 +80,8 @@ contract Events {
event LogWithdrawCollateralOnBehalf(
Id indexed id,
uint256 amounts,
address onBehalf,
address receiver,
address indexed onBehalf,
address indexed receiver,
uint256 getId,
uint256 setId
);
@ -98,7 +98,7 @@ contract Events {
Id indexed id,
uint256 amounts,
uint256 shares,
address onBehalf,
address indexed onBehalf,
uint256 getId,
uint256 setId
);

View File

@ -6,12 +6,14 @@ import "../../common/stores.sol";
import "../../common/basic.sol";
import "../../common/interfaces.sol";
import {MorphoBalancesLib} from "./libraries/periphery/MorphoBalancesLib.sol";
import {MorphoLib} from "./libraries/periphery/MorphoLib.sol";
import {UtilsLib} from "./libraries/UtilsLib.sol";
import {MarketParamsLib} from "./libraries/MarketParamsLib.sol";
import {SharesMathLib} from "./libraries/SharesMathLib.sol";
abstract contract Helpers is Stores, Basic {
using MorphoBalancesLib for IMorpho;
using MorphoLib for IMorpho;
using MarketParamsLib for MarketParams;
using UtilsLib for uint256;
using SharesMathLib for uint256;
@ -82,7 +84,7 @@ abstract contract Helpers is Stores, Basic {
// Perform eth to weth conversion if necessary
convertEthToWeth(
true,
_isEth,
_isModeCollateral
? TokenInterface(_marketParams.collateralToken)
: TokenInterface(_marketParams.loanToken),
@ -147,7 +149,7 @@ abstract contract Helpers is Stores, Basic {
// Perform ETH to WETH conversion if necessary
convertEthToWeth(
true,
_isEth,
TokenInterface(_marketParams.loanToken),
_assets
);
@ -161,9 +163,7 @@ abstract contract Helpers is Stores, Basic {
MarketParams memory _marketParams,
address _onBehalf
) internal view returns (uint256 _assets) {
uint256 _borrowedShareAmt = MORPHO_BLUE
.position(_id, _onBehalf)
.borrowShares;
uint256 _borrowedShareAmt = MORPHO_BLUE.borrowShares(_id, _onBehalf);
(, , uint256 totalBorrowAssets, uint256 totalBorrowShares) = MORPHO_BLUE
.expectedMarketBalances(_marketParams);

View File

@ -1,150 +0,0 @@
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;
import {Id, MarketParams} from "../interfaces/IMorpho.sol";
/// @title EventsLib
/// @author Morpho Labs
/// @custom:contact security@morpho.org
/// @notice Library exposing events.
library EventsLib {
/// @notice Emitted when setting a new owner.
/// @param newOwner The new owner of the contract.
event SetOwner(address indexed newOwner);
/// @notice Emitted when setting a new fee.
/// @param id The market id.
/// @param newFee The new fee.
event SetFee(Id indexed id, uint256 newFee);
/// @notice Emitted when setting a new fee recipient.
/// @param newFeeRecipient The new fee recipient.
event SetFeeRecipient(address indexed newFeeRecipient);
/// @notice Emitted when enabling an IRM.
/// @param irm The IRM that was enabled.
event EnableIrm(address indexed irm);
/// @notice Emitted when enabling an LLTV.
/// @param lltv The LLTV that was enabled.
event EnableLltv(uint256 lltv);
/// @notice Emitted when creating a market.
/// @param id The market id.
/// @param marketParams The market that was created.
event CreateMarket(Id indexed id, MarketParams marketParams);
/// @notice Emitted on supply of assets.
/// @dev Warning: `feeRecipient` receives some shares during interest accrual without any supply event emitted.
/// @param id The market id.
/// @param caller The caller.
/// @param onBehalf The owner of the modified position.
/// @param assets The amount of assets supplied.
/// @param shares The amount of shares minted.
event Supply(Id indexed id, address indexed caller, address indexed onBehalf, uint256 assets, uint256 shares);
/// @notice Emitted on withdrawal of assets.
/// @param id The market id.
/// @param caller The caller.
/// @param onBehalf The owner of the modified position.
/// @param receiver The address that received the withdrawn assets.
/// @param assets The amount of assets withdrawn.
/// @param shares The amount of shares burned.
event Withdraw(
Id indexed id,
address caller,
address indexed onBehalf,
address indexed receiver,
uint256 assets,
uint256 shares
);
/// @notice Emitted on borrow of assets.
/// @param id The market id.
/// @param caller The caller.
/// @param onBehalf The owner of the modified position.
/// @param receiver The address that received the borrowed assets.
/// @param assets The amount of assets borrowed.
/// @param shares The amount of shares minted.
event Borrow(
Id indexed id,
address caller,
address indexed onBehalf,
address indexed receiver,
uint256 assets,
uint256 shares
);
/// @notice Emitted on repayment of assets.
/// @param id The market id.
/// @param caller The caller.
/// @param onBehalf The owner of the modified position.
/// @param assets The amount of assets repaid. May be 1 over the corresponding market's `totalBorrowAssets`.
/// @param shares The amount of shares burned.
event Repay(Id indexed id, address indexed caller, address indexed onBehalf, uint256 assets, uint256 shares);
/// @notice Emitted on supply of collateral.
/// @param id The market id.
/// @param caller The caller.
/// @param onBehalf The owner of the modified position.
/// @param assets The amount of collateral supplied.
event SupplyCollateral(Id indexed id, address indexed caller, address indexed onBehalf, uint256 assets);
/// @notice Emitted on withdrawal of collateral.
/// @param id The market id.
/// @param caller The caller.
/// @param onBehalf The owner of the modified position.
/// @param receiver The address that received the withdrawn collateral.
/// @param assets The amount of collateral withdrawn.
event WithdrawCollateral(
Id indexed id, address caller, address indexed onBehalf, address indexed receiver, uint256 assets
);
/// @notice Emitted on liquidation of a position.
/// @param id The market id.
/// @param caller The caller.
/// @param borrower The borrower of the position.
/// @param repaidAssets The amount of assets repaid. May be 1 over the corresponding market's `totalBorrowAssets`.
/// @param repaidShares The amount of shares burned.
/// @param seizedAssets The amount of collateral seized.
/// @param badDebtAssets The amount of assets of bad debt realized.
/// @param badDebtShares The amount of borrow shares of bad debt realized.
event Liquidate(
Id indexed id,
address indexed caller,
address indexed borrower,
uint256 repaidAssets,
uint256 repaidShares,
uint256 seizedAssets,
uint256 badDebtAssets,
uint256 badDebtShares
);
/// @notice Emitted on flash loan.
/// @param caller The caller.
/// @param token The token that was flash loaned.
/// @param assets The amount that was flash loaned.
event FlashLoan(address indexed caller, address indexed token, uint256 assets);
/// @notice Emitted when setting an authorization.
/// @param caller The caller.
/// @param authorizer The authorizer address.
/// @param authorized The authorized address.
/// @param newIsAuthorized The new authorization status.
event SetAuthorization(
address indexed caller, address indexed authorizer, address indexed authorized, bool newIsAuthorized
);
/// @notice Emitted when setting an authorization with a signature.
/// @param caller The caller.
/// @param authorizer The authorizer address.
/// @param usedNonce The nonce that was used.
event IncrementNonce(address indexed caller, address indexed authorizer, uint256 usedNonce);
/// @notice Emitted when accruing interest.
/// @param id The market id.
/// @param prevBorrowRate The previous borrow rate.
/// @param interest The amount of interest accrued.
/// @param feeShares The amount of shares minted as fee.
event AccrueInterest(Id indexed id, uint256 prevBorrowRate, uint256 interest, uint256 feeShares);
}

View File

@ -1,36 +0,0 @@
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;
import {IERC20} from "../interfaces/IERC20.sol";
import {ErrorsLib} from "../libraries/ErrorsLib.sol";
interface IERC20Internal {
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
/// @title SafeTransferLib
/// @author Morpho Labs
/// @custom:contact security@morpho.org
/// @notice Library to manage transfers of tokens, even if calls to the transfer or transferFrom functions are not
/// returning a boolean.
library SafeTransferLib {
function safeTransfer(IERC20 token, address to, uint256 value) internal {
require(address(token).code.length > 0, ErrorsLib.NO_CODE);
(bool success, bytes memory returndata) =
address(token).call(abi.encodeCall(IERC20Internal.transfer, (to, value)));
require(success, ErrorsLib.TRANSFER_REVERTED);
require(returndata.length == 0 || abi.decode(returndata, (bool)), ErrorsLib.TRANSFER_RETURNED_FALSE);
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
require(address(token).code.length > 0, ErrorsLib.NO_CODE);
(bool success, bytes memory returndata) =
address(token).call(abi.encodeCall(IERC20Internal.transferFrom, (from, to, value)));
require(success, ErrorsLib.TRANSFER_FROM_REVERTED);
require(returndata.length == 0 || abi.decode(returndata, (bool)), ErrorsLib.TRANSFER_FROM_RETURNED_FALSE);
}
}

View File

@ -1,3 +1,8 @@
// import "@nomiclabs/hardhat-waffle";
// import "@nomiclabs/hardhat-ethers";
// import "@nomiclabs/hardhat-etherscan";
import "@nomicfoundation/hardhat-toolbox";
import "@typechain/hardhat";
import { resolve } from "path";
import { config as dotenvConfig } from "dotenv";
@ -65,7 +70,7 @@ const config: any = {
solidity: {
compilers: [
{
version: "0.8.22",
version: "0.8.2",
settings: {
optimizer: {
enabled: true,

8454
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -8,12 +8,13 @@
"typechain": "^8.3.2"
},
"dependencies": {
"@nomicfoundation/hardhat-toolbox": "^2.0.0",
"@nomiclabs/hardhat-web3": "^2.0.0",
"@openzeppelin/contracts": "^4.9.5",
"@typechain/ethers-v5": "^10.2.1",
"@typechain/hardhat": "^6.1.6",
"bignumber.js": "^4.0.4",
"dotenv": "^16.3.1",
"ts-node": "^10.9.2",
"web3": "^4.3.0"
"web3": "^1.10.3",
"ethers": "^5.4.7",
"@nomiclabs/hardhat-ethers": "^2.0.3"
}
}